异步FIFO的设计文档.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
异步FIFO的设计文档

异步FIFO的设计 版本v1.0 2011-05-06 异步FIFO的设计 功能描述 本设计用16*8 RAM实现一个异步FIFO,具体功能定义如下: 1. 异步复位。 2. FIFO不为满时,当写使能有效时,在写时钟的上升沿向FIFO中写入数据。 3. FIFO不为空时,当读使能有效时,在读时钟的上升沿从FIFO中读出数据。 4. 当FIFO写满的时候,产生满信号;当FIFO读空的时候,产生空信号。 5. FIFO一旦空或者满时候,复位FIFO; 二.输入输出信号描述 信号名 输入/输出 目标/源 功能描述 Rclk Input Pin 读时钟频率,10M ,占空比1:1。 Wclk Input Pin 写时钟,频率10M ,占空比1:1。 data_in[7:0] Input Pin 8位的输入数据 rd_en Input Pin 读使能,高电平有效,在FIFO非空时,CLK上升沿读入数据; wr_en Input Pin 写使能,高电平有效,在FIFO非满时,CLK上升沿写入数据; Rst Input Pin 异步清零,低电平有效,低电平时读地址,写地址,计数器都清零。 Empty Output Pin 空信号,高电平有效,当FIFO读空时其值为1 full Output Pin 满信号,高电平有效,当FIFO写满时其值为1 data_out[7:0] Output Pin 8位的输出数据 三 顶层划分 图1 系统框图 顶层模块说明: RAM :存储器模块,用于存放及输出数据; Waddr_Reg : 保存访问RAM的写地址; Raddr_Reg : 保存访问RAM的写地址; Wbin_addr : 计算RAM下一个写地址; Rbin_addr : 计算RAM下一个读地址; Gwaddr_reg : 将写地址的二进制编码转换成格雷码,并保存; Graddr_reg : 将读地址的二进制编码转换成格雷码,并保存; Syn_Rfield : 将写地址同步到读时钟域,并产生空标志; Syn_Wfield : 将读地址同步到写时钟域,并产生满标志; 10、Reset_Unit : 复位信号产生单元 设计思想说明: 1、由于实现的异步FIFO,分别用不同的读、写时钟产生读写地址,因此FIFO的判空和判满是本设计中的一个难点。判空和判满可以采用地址是否相同确定,地址相同时,即可以表示满,也可以表示空。为了对满时的地址和空时的地址加以区分,为读写地址分别增加了一个附加位。对于深度为16的FIFO,可以用4位地址进行寻址,增加附加位后,地址变成了5位。如果读地址赶上写地址,五位地址应该相同。如果是写地址赶上读地址,那么低四位地址相同,而最高位地址是不同的。 2、由于两个时钟域操作,因此在判断空满的时候,应该将读写地址同步到某个时钟域进行,然后进行判定。如果读写地址采用二进制编码的方式,那么地址有可能发生多位的变化,例如从0111(1000,四位地址变化的过程中,有可能采样的值变成1111或者1100等其它值,这可能会引起空满的判定的结果不正确。为了避免这种情况,本设计中采用格雷码,相邻的两个编码之间只有一位不同,那么同步的时候,只有一位发生变化,这样空满的判定只有一个单位。 四、子模块描述 4.1 RAM 模块描述 1、功能描述 本设计中的FIFO采用采用16*8双口RAM,以循环读写的方式实现。 2、管脚描述 信号名称 输入 / 输出 源 目标 功能描述 wrclk 输入 PIN 写时钟,50%占空比, 19.44Mhz; rdclk 输入 PIN 读时钟,50%占空比, 19.44Mhz; wr_addr[4:0] 输入 Waddr_Reg 写地址 wr_en 输入 PIN 写使能 rd_en 输入 PIM 读时能 wr_addr[4:0] 输入 Raddr_Reg 读地址 din[7:0] 输入 PIN 写入FIFO的数据 dou[7:0] 输出 PIN 从FIFO中读出的数据 3、实现说明: 根据读地址rd_addr[3:0],在读使能(rd_en)为高电平的时候,将RAM中rd_addr[3:0]地址中的对应单元的数据在读时钟rdclk上升沿到来的时候,读出到dout[7:0]中。 根据写地址rd_addr[3:0], 在写使能(wr_en)为高电平的时候,将输入数据(din[7:0]) 在写时钟wrclk上升沿到来的时候,写入wr_addr[3:0]地址对应的单元。 4、验证方案 正常的FIFO读写功能;

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档