同步FIFO设计概要课件

上传人:仙*** 文档编号:243905076 上传时间:2024-10-01 格式:PPT 页数:16 大小:95.65KB
返回 下载 相关 举报
同步FIFO设计概要课件_第1页
第1页 / 共16页
同步FIFO设计概要课件_第2页
第2页 / 共16页
同步FIFO设计概要课件_第3页
第3页 / 共16页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,FIFO,概念,FIFO,是英文,First In First Out,的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加,1,完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。,FIFO 概念FIFO是英文First In First O,FIFO,用法,FIFO,一般用于不同时钟域之间的数据传输,比如,FIFO,的一端时,AD,数据采集,另一端时计算机的,PCI,总线,假设其,AD,采集的速率为,16,位,100K SPS,,那么每秒的数据量为,100K16bit=1.6Mbps,而,PCI,总线的速度为,33MHz,,总线宽度,32bit,其最大传输速率为,1056Mbps,在两个不同的时钟域间就可以采用,FIFO,来作为数据缓冲。另外对于不同宽度的数据接口也可以用,FIFO,,例如单片机为,8,位数据输出,而,DSP,可能是,16,位数据输入,在单片机与,DSP,连接时就可以使用,FIFO,来达到数据匹配的目的。,FIFO 用法FIFO一般用于不同时钟域之间的数据传输,比如,FIFO,的一些重要参数,FIFO,的宽度:也就是英文资料里常看到的,THE WIDTH,,它只的是,FIFO,一次读写操作的数据位,就像,MCU,有,8,位和,16,位,,ARM 32,位等等,,FIFO,的宽度在单片成品,IC,中是固定的,也有可选择的,如果用,FPGA,自己实现一个,FIFO,,其数据位,也就是宽度是可以自己定义的。,FIFO的一些重要参数 FIFO的宽度:也就是英文资料里常看,FIFO,的一些重要参数,FIFO,的深度:,THE DEEPTH,,它指的是,FIFO,可以存储多少个,N,位的数据(如果宽度为,N,)。如一个,8,位的,FIFO,,若深度为,8,,它可以存储,8,个,8,位的数据,深度为,12,,就可以存储,12,个,8,位的数据,,FIFO,的深度可大可小,,FIFO,深度的计算并无一个固定的公式。,在,FIFO,实际工作中,其数据的满,/,空标志可以控制数据的继续写入或读出。在一个具体的应用中也不可能由一些参数算数精确的所需,FIFO,深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的,FIFO,深度往往要大于计算值。一般来说根据电路的具体情况,在兼顾系统性能和,FIFO,成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,,FIFO,的深度要根据读出的数据结构和读出数据的由那些具体的要求来确定。,FIFO的一些重要参数 FIFO的深度:THE DEEPTH,FIFO,的一些重要参数,满标志,:,FIFO,已满或将要满时由,FIFO,的状态电路送出的一个信号,以阻止,FIFO,的写操作继续向,FIFO,中写数据而造成溢出(,overflow,)。,空标志,:,FIFO,已空或将要空时由,FIFO,的状态电路送出的一个信号,以阻止,FIFO,的读操作继续从,FIFO,中读出数据而造成无效数据的读出(,underflow,)。,读时钟,:读操作所遵循的时钟,在每个时钟沿来临时读数据。,写时钟,:写操作所遵循的时钟,在每个时钟沿来临时写数据。,读指针,:指向下一个读出地址。读完后自动加,1,。,写指针,:指向下一个要写入的地址的,写完自动加,1,。读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。,FIFO的一些重要参数,FIFO,的分类,根据,FIFO,工作的时钟域,可以将,FIFO,分为同步,FIFO,和异步,FIFO,。同步,FIFO,是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步,FIFO,是指读写时钟不一致,读写时钟是互相独立的。,FIFO的分类,FIFO,设计的难点,FIFO,设计的难点在于怎样判断,FIFO,的空,/,满状态。为了保证数据正确的写入或读出,而不发生溢出或读空的状态出现,必须保证,FIFO,在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断,FIFO,的满,/,空就成了,FIFO,设计的核心问题。,在用到触发器的设计中,不可避免的会遇到亚稳态的问题。在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概率将到最低。,FIFO设计的难点,同步,FIFO,功能定义,用,64*8 RAM,实现一个同步先进先出(,FIFO,)队列设计。由写使能端控制该数据流的写入,FIFO,,并由读使能控制,FIFO,中数据的读出。写入和读出的操作由时钟的上升沿触发。当,FIFO,的数据满和空的时候分别设置相应的高电平加以指示。,同步FIFO功能定义,顶层信号定义:,信号名称,I/O,功能描述,源,/,目标,备注,Rst,In,全局复位(低有效),管脚,Clk,In,全局时钟,管脚,频率,10Mhz;,占空比:,50%,Wr_en,In,低有效写使能,管脚,Rd_en,In,低有效读使能,管脚,Data_in7,:,0,In,数据输入端,管脚,Data_out7,:,0,Out,数据输出端,管脚,Empty,Out,空指示信号,管脚,为高时表示,fifo,空,Full,Out,满指示信号,管脚,为高时表示,fifo,满,顶层信号定义:信号名称I/O功能描述源/目标备注RstIn全,顶层模块划分及功能实现,该同步,fifo,可划分为如下四个模块,如图,1,所示:,存储器模块(,RAM,),用于存放及输出数据;,读地址模块,(rd_addr),用于读地址的产生;,写地址模块(,wr_addr,),用于写地址的产生,标志模块(,flag_gen,),-,用于产生,FIFO,当前空满状态。,顶层模块划分及功能实现该同步fifo可划分为如下四个模块,如,同步,FIFO,的模块划分,同步FIFO的模块划分,顶层模块划分及功能实现,RAM,模块,本设计中的,FIFO,采用采用,64*8,双口,RAM,,以循环读写的方式实现;,根据,rd_addr_gen,模块产生的读地址,在读使能,(rd_en),为高电平的时候,将,RAM,中,rd_addr3:0,地址中的对应单元的数据在时钟上升沿到来的时候,读出到,data_out7:0,中。,根据,wr_addr_gen,产生的写地址和在写使能,(wr_en),为高电平的时候,将输入数据,(data_in7:0),在时钟上升沿到来的时候,写入,wr_addr3:0,地址对应的单元。,顶层模块划分及功能实现RAM模块,顶层模块划分及功能实现,wr_addr_gen,:,该模块用于产生,FIFO,写数据时所用的地址。由于,64,个,RAM,单元可以用,6,位地址线寻址。本模块用,6,位计数器,(wr_addr5:0),实现写地址的产生。,在复位时,(rst=0),,写地址值为,0,。,如果,FIFO,未满,(full),且有写使能,(wr_en,)有效,则,wr_addr5:0,加,1,;否则不变。,顶层模块划分及功能实现wr_addr_gen:,顶层模块划分及功能实现,rd_addr_gen,:,该模块用于产生,FIFO,读数据时所用的地址。由于,64,个,RAM,单元可以用,6,位地址线寻址。本模块用,6,位计数器,(rd_addr5:0),实现读地址的产生。,在复位时,(rst=0),,读地址值为,0,。,如果,FIFO,未空(,empty,)且有读使能,(rd_en,)有效,则,rd_addr5:0,加,1,;否则不变。,顶层模块划分及功能实现rd_addr_gen:,顶层模块划分及功能实现,flag_gen,模块,flag_gen,模块产生,FIFO,空满标志。本模块设计并不用读写地址判定,FIFO,是否空满。设计一个计数器,该计数器,(pt_cnt),用于指示当前周期中,FIFO,中数据的个数。由于,FIFO,中最多只有,64,个数据,因此采用,6,位计数器来指示,FIFO,中数据个数。具体计算如下:,复位的时候,,pt_cnt=0,;,如果,wr_en,和,rd_en,同时有效的时候,,pt_cnt,不加也不减;表示同时对,FIFO,进行读写操作的时候,,FIFO,中的数据个数不变。,如果,wr_en,有效且,full=0,,则,pt_cont+1;,表示写操作且,FIFO,未满时候,,FIFO,中的数据个数增加了,1,;,如果,rd_en,有效且,empty=0,,则,pt_cont-1;,表示读操作且,FIFO,未满时候,,FIFO,中的数据个数减少了,1,;,如果,pt_cnt=0,的时候,表示,FIFO,空,需要设置,empty=1;,如果,pt_cnt=64,的时候,表示,FIFO,现在已经满,需要设置,full=1,。,顶层模块划分及功能实现 flag_gen模块,验证方案,1,)测试用例,1,:测试,FIFO,在正常状态下,是否能写入和读出;,full,和,empty,的标志位均为,0,;,2,)测试用例,2,:测试,FIFO,在满的情况下,是否将,full,标志位置为,1,;在满的情况下读,,full,标志是否被复位到,0,;,3,)测试用例,3,:测试,FIFO,在空的情况下,是否将,empty,标志位置为,1,;在空的情况下读,,empty,标志是否被复位到,0,;,4,)测试用例,4,:异步复位后,,FIFO,是否可以正常工作;,验证方案1)测试用例1:测试FIFO在正常状态下,是否能写入,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!