- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种新型异步FIFO的设计
一种新型异步FIFO的设计 ? 摘要:本文详细说明了一种新型异步FIFO的设计方法。该异步FIFO的宽度为8位,深度为16,支持深度为1的buffer模式。水位可编程。它具有四种FIFO状态,对于DMA和中断的支持非常有用。
关键词: 异步FIFO;水位;Verilog
引言
FIFO (先入先出队列)是一种在电子系统中得到广范应用的器件。FIFO可以分为同步FIFO和异步FIFO。同步FIFO只在一个时钟域里工作,比较简单。而异步FIFO是工作在两个时钟域里的FIFO。两个时钟域的频率和相位不同,在一个时钟域里向FIFO写数据,在另一个时钟域里把FIFO中的数据读走。本文设计的异步FIFO包含Buffer模式和水位可编程等新的想法,能够满足使用需求。
异步FIFO的主要特性
本文设计的异步FIFO的深度为16,宽度为8位。可以根据具体的应用而改变。
该异步FIFO有两种工作模式:FIFO模式和Buffer模式。当FIFO使能(fifo_en 置为1)时工作在FIFO模式,当FIFO不使能(fifo_en 置为0)时工作在Buffer模式。在FIFO模式时,FIFO的深度为16;在Buffer模式时,FIFO的深度为1。增加Buffer模式可以使该异步FIFO的应用范围更加广泛,使用时更加灵活。
该异步FIFO的水位是可编程的,支持1/8,1/4,1/2,3/4和7/8五种水位。水位的具体含义是:当FIFO中的数据量达到或超过水位时,FIFO的状态为OVERMARK。例如:在水位配置为1/2的情况下,当FIFO中的数据个数大于或等于8(8为水位与FIFO深度的乘积)时,FIFO的状态为OVERMARK。这样,DMA就可以根据FIFO的状态一次在FIFO中取走一定量的数据。对于支持DMA的外设,该项特性非常有用。
该异步FIFO在FIFO模式下可以输出四种FIFO状态,即FIFO_EMPTY、FIFO_NON_OVERMARK、FIFO_OVERMARK和FIFO_FULL。其中FIFO_NON_OVERMARK是当FIFO中的数据量低于水位时的FIFO状态。在Buffer模式下只有两种FIFO状态,即FIFO_EMPTY和FIFO_FULL。
异步FIFO的接口设计
wclk为写时钟,wreset_n为写时钟域里的复位信号,低电平有效。rclk为读时钟,rreset_n为读时钟域里的复位信号,低电平有效。write为写使能信号,高电平有效。read为读使能信号,高电平有效。empty和full为FIFO的空满状态。water_level为FIFO的水位。fifo_states为FIFO的状态。wdata和rdata分别为写数据线和读数据线。
异步FIFO模块的划分
本文采用自顶向下的方法,将设计划分为5个模块:DPRAM模块、WCTL模块,RCTL模块、W2R模块和R2W模块。
其中DPRAM模块、WCTL模块和R2W模块在写时钟(wclk)域里;RCTL模块和W2R模块在读时钟(rclk)域里。R2W模块和W2P模块为同步模块,R2W将读时钟域里的信号同步到写时钟域里,W2P将写时钟域里的信号同步到读时钟域里。
异步FIFO的关键部分设计
空满状态的判断
对于异步FIFO来说,空满状态的设计非常重要。要防止在FIFO已经满的情况下还对FIFO进行写操作,同时也要注意不要在 FIFO已经空的情况下还对其进行读操作。
采用将写指针和读指针相比较的方法可以更有效地判断FIFO的空满状态。写指针表示将要对FIFO进行写操作的写地址,读指针表示正在对FIFO进行读操作时的读地址。由于本FIFO的深度为16,所以可以将写指针和读指针设计为5位的位宽。其中低四位表示地址,最高位表示状态。
为了能更及时地显示FIFO的空和满状态,设定在WCTL模块进行满状态的判断,在RCTL模块进行空状态的判断。将RCTL模块输出的读指针rptr经R2W模块同步到写时钟域后为rptr_r2w,将rptr_r2w和WCTL模块中的写指针比较,若两个指针的低四位相同而最高位不同,则FIFO为满。将WCTL的读指针wptr经W2R模块同步到读时钟域后为wptr_w2r,将wptr_w2r和RCTL模块中的读指针比较,若两个指针相同,则FIFO为空。
rptr和wptr都用格雷码编码,由于相邻的两个格雷码之间只有一位不同,这样就可以避免在进行信号同步时,由于在同一个时钟沿有多个信号变化而引起的问题。
由于同步后的rptr_r2w比rptr有一定的延时,同步后的wptr_w2r比wptr也有一定的延时。因此,不会出现在FIFO已经满的情况下还对FIFO进行写操作和在 FIFO已经空
您可能关注的文档
- 《烟叶收购管理规范》.docx
- 《物体的浮沉条件及应用》巩固练习及答案.docx
- 《爷爷一定有办法》教案.doc
- 《材料科学基础》实验指导书(2001级)1.doc
- 《环境分析化学实验》实验报告格式.doc
- 《猎杀恶魔熔炉》第二章隐藏物品地点图文攻略.doc
- 《材料科学基础》实验指导书(2001级)2.doc
- 《瑶族舞曲》教学设计五年音乐上辽海版.doc
- 《生物医学伦理学》考试卷答案.doc
- 《生理学及病理生理学》模拟卷答案.doc
- 白皮书2025年产业政策与产业链协同发展方案.docx
- 机械装配图明细栏、标题栏.pptx
- 难点详解苏科版九年级物理下册《电功和电热》同步测评试题(含答案及解析).docx
- 难点详解苏科版九年级物理下册《电功和电热》同步测评练习题(解析版).docx
- 难点详解苏科版九年级物理下册《电功和电热》单元测试试题(解析卷).docx
- AI技术时代高校图书馆生态演化研究:智能服务系统构建与用户价值链重构.docx
- 难点详解苏科版九年级物理下册《电功和电热》单元测试试卷(含答案解析).docx
- 人工智能的社会影响与未来发展.pptx
- 难点详解苏科版九年级物理下册《电功和电热》专题练习试卷(解析版).docx
- 难点详解苏科版九年级物理下册《电功和电热》单元测评试题(含解析).docx
文档评论(0)