第一章FIFO配置全攻略1.1如何配置自己需要的FIFO配置FIFO的方法有两种:一种是通过QUARTUSII中TOOLS下的MegaWizardPlug-InManager中选择FIFO参数编辑器来搭建自己需要的FIFO,这是自动生成FIFO的方法二通过手动编写HDL来实现需要的FIFO,这里主要第一种方法,因为本人也是菜鸟1.2输出输出端口表一中列出FIFO中各个IO的详细描述端口类型是否必选描述clockinputYes上升沿触发时钟wrclkinputYse上升沿触发时钟,下列信号与之同步:datawrreqwrfullwremptywrusedwrdclkinputYes上升沿触发时钟,下列信号与之同步:qrdreqrdfullrdemptyrdusedwdatainputYes当wrreq有效时数据线上的数据通过DATA端口被写入FIFO中wrreqinputYes写请求信号,激发写入操作。1.当full(对于SCFIFO)或wrfull(对于DCFIFO)有效时,不能激活wrreq信号,参数overflow_checking设置为ON,即在full状态下FIFO会自动无视写请求;2.不能再aclr有效期间激活wrreq信号;3.使用Stratix和Cyclone系列器件(除了Stratix,StratixGX,和Cyclone系列以外)需要将write_aclr_synch参数选择位ON,确保符合限制条件。rdreqinputYes读请求信号,激发读出操作。1.该信号的作用在正常模式下和在预读模式下的作用有很多不同(详情见后文);2.当empty(对于SCFIFO)或rdempty(对于DCFIFO)有效时,不能激活rdreq信号,参数underflow_checking设置为ON,即在full状态下FIFO会自动无视读请求;sclraclrinputNo清零端口,详情见后文qoutputyes输出由读操作而从FIFO中读出的数据。1.SCFIFO和DCFIFO中,输入输出数据的位宽必须相同;2.DCFIFO_MIXED_WIDTHS型FIFO输入输出位宽可以不同,但是根据使用RAM的类型不同,输入输出位宽比率有不同的限制;fullwrfullrdfulloutputNo当该信号有效时,FIFO会被认为已经装满,此时不能再进行写操作;emptywremptyrdemptyoutputNo当该信号有效时,FIFO会被认为已经读空,此时不能再进行读操作;almost_fulloutputNo准装满信号,当usedw大于参数almost_full_value或相同时,该信号被激活,即是full信号被激活的预示;almost_emptyoutputNo准读空信号,当usedw小于参数almost_empty_value或相同时,该信号被激活,即是empty信号被激活的预示;usedwwrusedwrdusedwoutputNo显示当前FIFO中数据存量表一1.3时序要求1.如果设置了溢出保护电路或设置overflow_checking参数为ON,则在FIFO满时会自动无视wrreq信号,FIFO空时同理;2.如果没有做上述两种措施中的任意一种,则当FIFO在装满时的同一时钟周期内不能对wrreq信号做出相应,即在此期间不能拉高wrreq,FIFO空时同理。3.下面通过两幅时序图来具体说明:1.4输出状态标记和潜伏期对于DCFIFO,输出潜伏期如下图所示: