HDL 设计描述实例.pptVIP

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HDL 设计描述实例 ----FIFO设计 国防科技大学计算机学院微电子研究所610室 曾献君 FIFO类型 同步控制的FIFO FIFO的读写时钟相同。 异步控制的FIFO 用于跨时钟域的数据交换; FIFO的读写时钟不同、读写时钟之间不一定存在相位、周期方面的约束关系; 同步FIFO设计 同步FIFO存在3种状态: 空; 满; 非空非满 FIFO为空,不可从FIFO读数据,但可写; FIFO为满,不可向FIFO写数据,但可读; 非空非满时,FIFO可读、可写。 FIFO的读写受同一时钟控制; FIFO的大小为N字 同步FIFO的操作 1、 同步FIFO的外部接口信号 时钟信号clk:控制FIFO的读写; 写请求信号Wreq: 向FIFO发送写请求信号; 写数据WData[Size-1:0] : 写数据; 写有效信号WEn:WEn=1表示写有效,否则写无效,作废写请求,并使写请求等待; 读请求信号Rreq: 向FIFO发送读请求信号; 读数据RData[Size-1:0] : 读数据; 读有效信号REn:REn=1表示读有效,否则读无效,作废读请求,并使读请求等待; 同步FIFO的操作 1、 同步FIFO的操作 当FIFO不满且Wreq有效时,向FIFO写数据,并置写使能WEn有效; 当FIFO不空且Rreq有效时,从FIFO从读出数据并置读使能REn有效; 当FIFO满且Wreq有效时,置写使能WEn无效且作废此次写操作; 当FIFO空且Rreq有效时,置读使能REn无效且作废此次读操作。 同步FIFO的操作 问题: 如何判断FIFO为空、满? FIFO的读写操作的位置如何判定? 同步FIFO的操作 算法上的考虑: 设置一个Count计数器,用于计数FIFO中的元素的个数,Count=N; 设置FIFO的读指针Rptr,0=Rptr = N-1; 设置FIFO的写指针Wptr,0=Wptr = N-1; FIFO初始操作时,Count=0, Rptr = Wptr = 0. 同步FIFO的操作 FIFO的操作可用下述几个进程表示: 1)初始化进程: Count = Wptr = Rptr =0; 2)FIFO读进程: if (Rreq ==1 Count 0) begin RData = FIFO[Rptr]; Rptr = (Rptr +1 )mod N; REn = 1; end 同步FIFO的操作 3) FIFO 写进程 if (Wreq==1 Count N) begin FIFO[Wptr] = WData; Wptr = (Wptr +1) mod N; WEn = 1; end 4) Count 计数进程 if (Wreq ==1 Count N Rreq !=1) Count = Count +1; if (Rreq == 1 Count 0 Wreq !=1) Count = Count -1; 同步FIFO的操作 FIFO 的初始化只进行一次,FIFO的读进程、写进程、Count的计数进程相互之间并行。 如何将上述进程(算法)转化为相应的硬件实现? 同步FIFO设计 根据FIFO的大小N,决定Count、Wptr、Rptr的位宽?log2N?; 设置寄存器分别保存Count、Wptr、Rptr的值; 同步FIFO必须有异步Reset; 当FIFO复位时,Count=0,Wptr=0,Rptr=0; FIFO正常操作时,受时钟控制。 异步FIFO的设计 异步FIFO的数据读、写受不同时钟的控制; 异步FIFO的空、满状态不能依靠计数的方式进行,因为读、写均需要对计数器进行操作; 如何判断异步FIFO的空、满情形?如何操作? 如何判断异步FIFO的空、满? 异步FIFO为空条件: Reset情形下,异步FIFO为空; 在正常读、写情形,当读指针追上写指针,异步FIFO为空。 异步FIFO为满条件: 在正常读、写情形,读、写指针相同,且写指针追上读指针时。 读、写指针均相同时,FIFO到底是空还是满? 异步FIFO的设计 关于异步FIFO设计更多的资料 * module Synch_FIFO(clk,

您可能关注的文档

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档