基于Verilog HDL語言的32X8 FIFO設(shè)計(jì)
2 32X8FIFO系統(tǒng)結(jié)構(gòu)
本文介紹的32X8FIFO設(shè)計(jì)采用了雙體存儲器(FIFOMemory)結(jié)構(gòu)(如圖2)。每個(gè)FIFOMemery中都有一個(gè)16X8的RAM,rd-cntr3: 和wr-cntr3: 分別作為讀、寫地址,rd-cntr和wr-cntr分別作為讀、寫狀態(tài)位。對整個(gè)系統(tǒng),當(dāng)寫信號(wrN)有效,數(shù)據(jù)將寫入FIFO,且交替寫入這兩個(gè)分立的存儲器。當(dāng)讀信號(rdN)有效,數(shù)據(jù)將被讀出FIFO,且交替從這兩個(gè)分立的存儲器讀出。對基于單體存儲器的FIFO,在讀操作的同時(shí)不能有任何的寫操作,只能在讀操作結(jié)束后再進(jìn)行寫操作。本文應(yīng)用的交替讀寫機(jī)制使得32X8 FIFO具有可以同時(shí)讀寫的能力,即對一個(gè)存儲器讀操作的同時(shí)可以對另一個(gè)存儲器寫操作;對一個(gè)存儲器寫操作的同時(shí)可以對另一個(gè)存儲器讀操作。32X8 FIFO Data Path的結(jié)構(gòu)框圖如圖3所示。其結(jié)構(gòu)中有兩個(gè)分立的存儲器FIFOmem(even)和FIFOmem(odd)。FIFO cntrl模塊控制對這兩個(gè)分立存儲器的讀、寫操作。而整個(gè)系統(tǒng)的空、滿標(biāo)志位分別由FIFOmem(even)和FIFOmem(odd)中的空、滿標(biāo)志位mem_full_even、mem_empty_even、mem_full_odd和mem_empty_odd來實(shí)現(xiàn)。其中rdN和wrN為整個(gè)系統(tǒng)的讀寫控制信號,rstN為FIFO復(fù)位信號。同時(shí)可以看出32X8 FIFO共有3個(gè)周期的延時(shí):輸入寄存器,FIFOMemery和輸出寄存器延時(shí),存取速度快。
圖2 FIFOMemory結(jié)構(gòu)框圖
圖3 32X8FIFODataPath結(jié)構(gòu)框圖
評論