网站大量收购独家精品文档,联系QQ:2885784924

关于ALTERA提供的FIFO核使用原理.doc

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

关于ALTERA提供的FIFO核使用原理ALTERA提供了LPM_FIFO参数宏模块,可以在代码中例化使用。 FIFO有两种工作模式:(1)SCFIFO指读写用一个时钟进行同步,可以支持同时读写的功能。(2)DCFIFO指读写使用不同的时钟进行同步,这在设计多时钟系统中相当有用,可用于不同时钟同步信号之间的同步调整。 首先看看DCFIFO模式下的几个比较重要的信号: [A]在写端,主要有以下几个信号: ?????? (1) data[n-1:0]:写入数据信号总线; ?????? (2) wrreq:写入请求信号,高有效 ?????? (2) wrclk:写入同步时钟; ?????? (3) wrfull, wrempty:用于指示写端FIFO为空或者满的状态; ?????? (4) wrusedw[log2(SIZE_FIFO)-1:0] :写入的数据个数,按写入个数递增; 上述信号都与写入时钟rclk同步; [B]在读端,主要有以下几个信号: ?????? (1) q[n-1:0]:读取数据信号总线; ?????? (2) rdreq:读取请求/确认信号,高有效 ?????? (2) rdclk:读取同步时钟; ?????? (3) rdfull, rdempty:用于指示读端FIFO为空或者满的状态; ?????? (4) rdusedw[log2(SIZE_FIFO)-1:0] :读取的数据个数,按读取顺序递减; FIFO主要有两种工作模式: (1) Legacy?mode(Legacy synchronous FIFO?mode?) 此模式下参数lpm_showahead为OFF,只有当rdreq为高时,q才有数据读出,rdreq为低时没有数据。 在Legacy mode,读端的rdreq信号作为读取FIFO的请求信号(REQ),读取数据在rdreq置位后的第二个时钟周期有效。(2) Show-ahead?mode(Show-ahead synchronous FIFO mode) 在此模式下,只要有数写入,就马上读出第一个数,但是不读第二个数,当rdreq为高时继续读取。 在Show-ahead mode,读端的rdreq信号作为读取FIFO的确认信号(ACK),读取数据在rdreq置位后立即有效,不要额外的读取周期。下面分别给出Legacy mode和Show-ahead mode的读写时序: [A] Legacy mode [B] Show-ahead mode? ? 由上述时序可以看出两种模式的区别。 值得注意的是: 读端在读取数据的时候,必须等待写端数据准备好,即rdempty为低之后开始读取数据,为高期间表明FIFO状态为空,写端写入数据未有效。 相应的在写端如果wrfull为高,则表明FIFO状态以满,不能再写入数据,此时写入的数据无效。 下面给出一个FIFO操作的具体实例:完成将10MHz同步输入的总线同步缓冲到72MHz+6MHz的同步组合输出。 `define PLME_RESET_IND (4b1001) `define CCA_RESET_IND (4b1010) `define TxSTARTreq_IND (4b1011) `define TxMPDU_IND (4b1100) module CNGI_PLCP2TxPHY_SyncProc( reset, //poewer on reset PLCP2TxPHY_clk, PLCP2TxPHY_ind, PLCP2TxPHY_msg, // clk, //Tx PHY Local(此处不区分原语和MPDU直接采用数据的基带时钟读取) clk_ena, // LENGTH, syncPLCP2TxPHY_ind, syncPLCP2TxPHY_msg ); // input wire reset; input wire PLCP2TxPHY_clk; input wire [3:0] PLCP2TxPHY_ind; input wire [7:0] PLCP2TxPHY_msg; // input wire clk,clk_ena; input wire [11:0] LENGTH; // output wire [3:0] syncPLCP2TxPHY_ind; output wire [7:0] syncPLCP2TxPHY_msg; //Generate wrreq reg fifo_wrreq; reg [11:0] fifo_wrdata; always @(posedge PLCP2TxPHY_clk or posedge reset)be

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档