異步FIFO原理及使用_第1頁
異步FIFO原理及使用_第2頁
異步FIFO原理及使用_第3頁
異步FIFO原理及使用_第4頁
異步FIFO原理及使用_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

異步FIFO原理及使用可以先配合異步FIFO基礎知識食用Part.1第一塊BinaryLogic:判斷二進制Pointer什么時候+1,生成ptr_bin_next信號assignwptr_bin_next=wptr_bin+(winc&(!wfull));Part.2第二塊GrayLogic:由BinaryPointer生成GaryPointer,其實這里根據(jù)經(jīng)典AFIFO論文[1]里應該是用新的wptr_bin_next生成wptr_gray_next,這樣wptr_bin和wptr_gray可以同步更新。(這里為了Pass??途W(wǎng)的測試案例,需要將wptr_bin_next改為wptr_bin生成,這樣格雷碼指針會比二進制指針慢一拍)assignwptr_gray_next=wptr_bin_next^(wptr_bin_next>>1);新態(tài)邏輯寫完后賦值給Reg變量{wptr_bin,wptr_gray}<={wptr_bin_next,wptr_gray_next};Part.3第三塊EmptyLogic:將wptr_gray在read時鐘域打2拍,做空判斷assignrempty=

rptr_gray==wptr_gray_rr2;Part.4第四塊FullLogic:將rptr_gray在write時鐘域打2拍,做滿判斷assignwfull=wptr_gray=={~rptr_gray_wr2[ADDR_WIDTH:ADDR_WIDTH-1],rptr_gray_wr2[ADDR_WIDTH-2:0]};Part.5第五塊FullLogic:例化RAM,addr為ptr_bin次高位到最低位最后添加一點點細節(jié),形成完整代碼`timescale1ns/1ns/***************************************RAM*****************************************/moduledual_port_RAM#(parameterDEPTH=16,parameterWIDTH=8)(inputwclk,inputwenc,input[$clog2(DEPTH)-1:0]waddr//深度對2取對數(shù),得到地址的位寬。,input[WIDTH-1:0]wdata//數(shù)據(jù)寫入,inputrclk,inputrenc,input[$clog2(DEPTH)-1:0]raddr//深度對2取對數(shù),得到地址的位寬。,outputreg[WIDTH-1:0]rdata//數(shù)據(jù)輸出);reg[WIDTH-1:0]RAM_MEM[0:DEPTH-1];always@(posedgewclk)beginif(wenc)RAM_MEM[waddr]<=wdata;endalways@(posedgerclk)beginif(renc)rdata<=RAM_MEM[raddr];endendmodule/***************************************AFIFO*****************************************/moduleasyn_fifo#(parameterWIDTH=8,parameterDEPTH=16)(inputwclk,inputrclk,inputwrstn,inputrrstn,inputwinc,inputrinc,input[WIDTH-1:0]wdata,outputwirewfull,outputwirerempty,outputwire[WIDTH-1:0]rdata);parameterADDR_WIDTH=$clog2(DEPTH);/***************************************BinLogic*****************************************/reg[ADDR_WIDTH:0]wptr_bin;reg[ADDR_WIDTH:0]rptr_bin;wire[ADDR_WIDTH:0]wptr_bin_next;wire[ADDR_WIDTH:0]rptr_bin_next;assignwptr_bin_next=wptr_bin+(winc&(!wfull));assignrptr_bin_next=rptr_bin+(rinc&(!rempty));/***************************************GrayLogic*****************************************/reg[ADDR_WIDTH:0]wptr_gray;reg[ADDR_WIDTH:0]rptr_gray;wire[ADDR_WIDTH:0]wptr_gray_next;wire[ADDR_WIDTH:0]rptr_gray_next;assignwptr_gray_next=wptr_bin_next^(wptr_bin_next>>1);assignrptr_gray_next=rptr_bin_next^(rptr_bin_next>>1);always@(posedgewclkornegedgewrstn)beginif(!wrstn)begin{wptr_bin,wptr_gray}<='d0;endelse{wptr_bin,wptr_gray}<={wptr_bin_next,wptr_gray_next};endalways@(posedgerclkornegedgerrstn)beginif(!rrstn)begin{rptr_bin,rptr_gray}<='d0;endelse{rptr_bin,rptr_gray}<={rptr_bin_next,rptr_gray_next};end/***************************************FullLogic*****************************************/reg[ADDR_WIDTH:0]rptr_gray_wr,rptr_gray_wr2;always@(posedgewclkornegedgewrstn)beginif(!wrstn)begin{rptr_gray_wr,rptr_gray_wr2}<='d0;endelse{rptr_gray_wr2,rptr_gray_wr}<={rptr_gray_wr,rptr_gray};endassignwfull=wptr_gray=={~rptr_gray_wr2[ADDR_WIDTH:ADDR_WIDTH-1],rptr_gray_wr2[ADDR_WIDTH-2:0]};/***************************************EmptyLogic*****************************************/reg[ADDR_WIDTH:0]wptr_gray_rr,wptr_gray_rr2;always@(posedgerclkornegedgerrstn)beginif(!rrstn)begin{wptr_gray_rr2,wptr_gray_rr}<='d0;endelse{wptr_gray_rr2,wptr_gray_rr}<={wptr_gray_rr,wptr_gray};endassignrempty=rptr_gray==wptr_gray_rr2;/***************************************DualRAM*****************************************/wirewenc,renc;wire[ADDR_WIDTH-1:0]raddr,waddr;assignwenc=winc&!wfull;assignrenc=rinc&!rempty;assignraddr=rptr_bin[ADDR_WIDTH-1:0];assignwaddr=wptr_bin[ADDR_WIDTH-1:0];dual_port_RAM#(.DEPTH(DEPTH),.WIDTH(WIDTH))u_dual_port_RAM(.wclk(wclk),.rclk(rclk),.wenc(wenc),.renc(renc),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論