一个异步FIFO的设计示例

上传人:汽*** 文档编号:509579165 上传时间:2023-08-27 格式:DOCX 页数:26 大小:36.90KB
返回 下载 相关 举报
一个异步FIFO的设计示例_第1页
第1页 / 共26页
一个异步FIFO的设计示例_第2页
第2页 / 共26页
一个异步FIFO的设计示例_第3页
第3页 / 共26页
一个异步FIFO的设计示例_第4页
第4页 / 共26页
一个异步FIFO的设计示例_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《一个异步FIFO的设计示例》由会员分享,可在线阅读,更多相关《一个异步FIFO的设计示例(26页珍藏版)》请在金锄头文库上搜索。

1、 一、异步FIO技术规范1. 总体描述1.1. 功能定义异步IFO (Fr In irt O)指的是在两个互相独立的时钟域下, 数据从一种时钟域写入FIO而另一种时钟域又从这个FFO中将数据读出。本设计用8*256的RAM实现异步FIO。具体功能:1 写使能有效,且IFO不为满时,在写时钟的上升沿向FIFO中写入数据。2 读使能有效,且FIF不为空时,在读时钟的上升沿从FIF中读出数据。3 当FIFO写满时产生满信号,当FFO读空时产生空信号。1.2. 应用范畴异步FI是用来作为缓冲的存储器, 它能对数据进行迅速、顺序的存储和发送,重要用来解决不同速率器件间的速率匹配问题。2. 引脚描述图2.

2、1. 引脚功能描述信号名输入/输出功能描述r_clk输入读数据时钟信号w_ck输入写数据时钟信号data_:0输入8位的输入数据r_n输入读使能,高电平有效,在FIFO非空时,ck上升沿读入数据;w_e输入写使能,高电平有效,在FIF非满时,clk上升沿写入数据;rst输入异步清零,低电平有效,低电平时读地址,写地址,计数器都清零。emt输出空信号,高电平有效,当FIFO读空时其值为1full输出满信号,高电平有效,当IFO写满时其值为1da_ou7:0输出8位的输出数据2.2. 引脚时序描述当写满时ful由低变高,当读空时empy由低变高。只要不为满full就为低,不为空empty就为低。3

3、. 顶层模块划分图顶层模块阐明:1 ram_fio:存储器模块,用于寄存及输出数据;2 w_adr_r : 保存访问RAM的写地址;3 _dd_reg :保存访问RAM的读地址;4 waddr_adder : 计算RAM下一种写地址;5 r_addradde: 计算RAM下一种读地址;6 c : 将读地址和写地址进行比较产生空满标志。设计思想阐明:FIFO满空的鉴定:当读地址的值加之后等于写地址的值时,表白IFO写满,当写地址的值加一之后等于读地址的值时,表白FIFO读空。在初始状态时FI的读地址在RAM的中间位置,写地址在RAM的开始位置,因此初始状态F不满也不空。空满信号的产生由组合电路产

4、生。4. 功能模块描述4.1. a_fi模块rfifo:AM存储器。用8*2双口AM实现。4.2. w_dr_reg模块 w_add_reg模块:写地址寄存器。用来寄存写地址加法器输出的地址。4.3. raddr_reg模块 r_add_reg模块:读地址寄存器。用来寄存读地址加法器输出的地址。4.4. _addr_adr模块 w_addader模块:写地址加法器。把写地址寄存器的输出加一,即表达目前写 地址的下一地址位。当we为低时停止累加。4.5. r_addr_ader模块raddradde模块:读地址加法器。把读地址寄存器的输出加一,即表达目前读地址的下一地址位。当r_en为低时停止累

5、加。4.6. cp模块 cmp模块:读地址和写地址进行比较,产生满空标志。二、异步FIFO总体设计方案1. 概述 异步FIFO有高速、可靠性好等特点。由于异步FIFO 在两个不同步钟系统之间可以迅速而以便地传播实时数据, 因此在网络接口、图像解决等方面, 异步IFO得到了广泛的应用。异步IFO指的是在两个互相独立的时钟域下, 数据从一种时钟域写入FIFO 而另一种时钟域又从这个FO 中将数据读出。异步IO 一般被用来将数据从一种时钟域安全地传送到此外一时钟域。2. 功能模块设计2.1. m_ff模块2.1.1. ram_fifo模块描述ram_fifo:AM存储器。用8*256双口RA实现。2

6、.1.2. 管脚描述信号名称输入 输出源功能描述w_cl输入IN写时钟信号w_输入N写使能信号w_adr7:0输入adrreg写地址信号输入PI读时钟信号rn输入PIN读使能信号r_adr7:0输入_adreg读地址信号ata_i7:输入PIN输入数据dt_out7:0输出输出数据表22.1.3. 实现阐明应使用双口RAM,双地址输入,并且带有读写使能,异步的读写时钟。AM宽度为8bit,深度为256个存储单元。2.2. w_dd_模块2.2.1. wadd_reg模块描述 w_ddrreg模块:写地址寄存器。用来寄存写地址加法器输出的地址。2.2.2. 管脚描述信号名称输入 / 输出源目的功

7、能描述W_cl输入PN写时钟信号Rt输入PIN复位信号,低电平有效W_add_nt7:0输入_ad_adr输入数据_ad:0 输出RAMaddr输出数据表2.2.3. 实现阐明在时钟的上升沿将8位的输入数据锁存输出。2.3. radr_rg模块2.3.1. _addre模块描述 r_dd_rg模块:读地址寄存器。用来寄存读地址加法器输出的地址。2.3.2. 管脚描述信号名称输入/输出源目的功能描述R_lk输入PI读时钟信号R输入PIN复位信号,低电平有效R_adr n:0输入R_dr_dder输入数据R_dr7:0 输出RR_dd输出数据表42.3.3. 实现阐明在时钟的上升沿将8位的输入数据

8、所存输出。2.4. w_adadder模块2.4.1. wadd_ader模块描述 w_addadder模块:写地址加法器。把写地址寄存器的输出加一,即表达目前写地址的下一地址位。当为低时停止累加。2.4.2. 管脚描述信号名称输入 / 输出源目的功能描述w_en 输入PI1容许地址加1;0严禁地址加1;w_adr7:0输入W_adr_reg输入数据Wddr_t7:0 输出_addrre加一后输出数据表2.4.3. 实现阐明以_addr为输入,输出为 w_adr1。2.5. r_add_de模块2.5.1. raddrdr模块描述r_ddr_ader模块:读地址加法器。把读地址寄存器的输出加一

9、,即表达目前读地址的下一地址位。当r_en为低时停止累加。2.5.2. 管脚描述信号名称输入 / 输出源目的功能描述r_en 输入P1容许地址加1;0严禁地址加1;r_addr:0输入r_arg输入数据_adr_t7:0 输出r_add_eg加一后输出数据表62.5.3. 实现阐明以r_dd为输入,输出为 _addr+。2.6. cm模块2.6.1. cp模块描述m模块:读地址和写地址进行比较,产生满空标志。2.6.2. 管脚描述信号名称输入 / 输出源目的功能描述Waddr:输入Waddr_regFIFO目前的写地址R_addr7:输入_addrreF目前的读地址emty输出PI0FIFO未

10、空1-FIFO读空ful输出PIN0FFO未满-F写满表72.6.3. 实现阐明将wr加一与r_addr对比,相等则fl为1否则为;将rdr加一与w_adr对比,相等则empty为否则为;三、异步IO验证方案总体验证方案1.1. 测试FIFO在正常状态下,与否能写入和读出;l和empt的标志位均为0;1.2. 测试FFO在写满时,ll与否能变为高;当满时读出一种数,ll能否由高变低。1.3. 测试FIFO在读空时,ety与否能变为高;当空时写入一种数,empty能否由高变低。1.4. 异步复位后,FFO与否可以正常工作。此外,在编写鼓励时,FIFO读空后,则将读使能严禁,IFO写满后,则将写使

11、能严禁,以保证读出和写入数据的对的性。四、电路设计源代码及仿真鼓励(1)异步源代码:moulefifo( dat_i, data_out, en, w_en, r_clk, w_clk, ful, epty, rs ); input 7:0data_in;put r_en;pt w_en;ipu _clk;inut _clk;ut rt;output :0daaout;otpt emt;ouut ul;ie 7:0w_adr;wire :r_ddr;e :0addr_t;wre :0r_addr_t;am u1( .ata_out(dtaut), .dta_i(dta_in), .wk(_clk), r_cl(r_clk), wn(_n), r_en(r_n), .wdr(w_adr), .r_addr(r_add) );w_ade u( w_dr(_ar)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号