0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Verilog HDL語言與雙體存儲器的交替讀寫機制實現(xiàn)32X8 FIFO設(shè)計

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2018-12-30 10:29 ? 次閱讀

對基于單體存儲器的FIFO,作為一種數(shù)據(jù)緩沖器,其數(shù)據(jù)存放結(jié)構(gòu)和RAM是一致的,只是存取方式有所不同。因RAM中的各存儲單元可被隨機讀寫,故FIFO的隊首位置及隊列長度均可浮動。為此,需要用兩個地址寄存器,分別存儲讀地址(即隊首元素地址)和寫地址(即隊尾元素地址加1)。在讀寫過程中FIFO所存儲的信息并不移動,而是通過改變讀地址或?qū)懙刂穪碇甘娟犑钻犖病?/span>

本32X8 FIFO的設(shè)計,采用了雙體存儲器的交替讀寫機制,使得在對其中一個存儲器寫操作的同時可以對另一個存儲器進行讀操作;對其中一個存儲器讀操作的同時可以對另一個存儲器進行寫操作。實現(xiàn)了高速數(shù)據(jù)緩沖,速度比單體存儲器的FIFO提高了一倍。

1指針以及滿空信號的產(chǎn)生

空/滿標(biāo)志的產(chǎn)生是FIFO的核心部分。如何正確設(shè)計此部分的邏輯,直接影響到FIFO的性能。

對于同步FIFO,讀寫指針都指向一個內(nèi)存的初始位置,每進行一次讀寫操作,相應(yīng)的指針就遞增一次,指向下一個內(nèi)存位置。當(dāng)指針移動到了內(nèi)存的最后一個位置時,它又重新跳回初始位置。在FIFO非滿或非空的情況下,這個過程將隨著讀寫控制信號的變化一直進行下去。如果FIFO處于空的狀態(tài),下一個讀動作將會導(dǎo)致向下溢出(underflow),一個無效的數(shù)據(jù)被讀出;同樣,對于一個滿了的FIFO,進行寫動作將會導(dǎo)致向上溢出(overflow),一個有用的數(shù)據(jù)被新寫入的數(shù)據(jù)覆蓋。這兩種情況都屬于誤動作,因此需要設(shè)置滿和空兩個信號,對滿信號置位表示FIFO處于滿狀態(tài),對滿信號復(fù)位表示FIFO非滿,還有空間可以寫入數(shù)據(jù);對空信號置位表示FIFO處于空狀態(tài),對空信號復(fù)位表示FIFO非空,還有有效的數(shù)據(jù)可以讀出。當(dāng)讀指針和寫指針相等也就是指向同一個內(nèi)存位置的時候,FIFO可能處于滿或空兩種狀態(tài)??梢酝ㄟ^不同的方法判斷或區(qū)分FIFO究竟是處于滿狀態(tài)還是空狀態(tài),也就是究竟是寫指針從后趕上了讀指針,還是讀指針從后趕上了寫指針。

本文所應(yīng)用的方法是分別將讀、寫地址寄存器擴展一位,將最高位設(shè)置為狀態(tài)位,其余低位作為地址位,指針由地址位以及狀態(tài)位組成。巧妙地應(yīng)用地址位和狀態(tài)位的結(jié)合實現(xiàn)對空、滿標(biāo)志位的控制。當(dāng)讀寫指針的地址位和狀態(tài)位全部吻合的時候,讀寫指針經(jīng)歷了相同次數(shù)的循環(huán)移動,也就是說,FIFO處于空狀態(tài)(圖1(a));如果讀寫指針的地址位相同而狀態(tài)位相反,寫指針比讀指針多循環(huán)一次,標(biāo)志FIFO處于滿狀態(tài)(圖1(b))。

基于Verilog HDL語言與雙體存儲器的交替讀寫機制實現(xiàn)32X8 FIFO設(shè)計

圖1FIFO處于的狀態(tài)

232X8FIFO系統(tǒng)結(jié)構(gòu)

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

基于Verilog HDL語言與雙體存儲器的交替讀寫機制實現(xiàn)32X8 FIFO設(shè)計

圖2FIFOMemory結(jié)構(gòu)框圖

基于Verilog HDL語言與雙體存儲器的交替讀寫機制實現(xiàn)32X8 FIFO設(shè)計

圖332X8FIFODataPath結(jié)構(gòu)框圖

332X8FIFO的Verilog HDL實現(xiàn)

硬件描述語言Verilog HDL是一種廣泛應(yīng)用于集成電路設(shè)計的高層次描述語言,適合行為級、寄存器傳輸級和門級等多層次的設(shè)計和描述,并且具有簡單、易讀、易修改和與工藝無關(guān)等優(yōu)點。因此利用Verilog HDL語言進行電路設(shè)計可以節(jié)約開發(fā)成本和周期。

此32X8FIFO各個部分均采用Verilog HDL代碼實現(xiàn)。限于篇幅,下面僅列出FIFOMemery模塊的程序清單。整個

32X8FIFO設(shè)計應(yīng)用全球著名EDA軟件供應(yīng)商Synopsys公司的DesignCompiler進行了邏輯綜合,并應(yīng)用Synopsys公司的仿真軟件VCS做了仿真驗證。(VCS是Synopsys公司的VerilogHDL仿真軟件) FIFO Memery模塊程序清單如下:

module fifo_mem(data,clk,rstN,wrN,rdN,empty,full);

inout [7:0] data;

input clk,rstN,wrN,rdN;

output empty,full;

reg [4:0] _cntr,rd_cntr;

wire [3:0] add;

ram16X8 ram(.data(data),.addr(addr),.wrN(wrN),.oe(wrN));

always @(posedge clk or negedge rstN)

if(!rstN) wr_cntr<=0;

else if (!wrN) wr_cntr<=wr_cntr+1;

always @ (posedge clk or negedge rstN)

if(!rstN) rd_cntr<=0;

else if(!rdN) rd_cntr<=rd_cntr+1;

assign addr=wrN?rd_cntr [3:0]: wr_cntr [3:0];

assign empty=(wr_cntr [3:0] == rd_cntr [3:0])&&!(wr_cntr[4]^rd_cntr[4]);

assign full=(wr_cntr [3:0] ==rd_cntr [3:0])&&(wr_cntr[4]^rd_cntr[4]);

endmodule

4結(jié)語

本文通過兩個分立存儲器間的交替讀、寫機制,實現(xiàn)32X8 FIFO的可同時讀、寫功能,提高了數(shù)據(jù)存取的速度,并且提出了新穎的空、滿標(biāo)志位的實現(xiàn)方法。采用Verilog HDL硬件描述語言進行電路設(shè)計,應(yīng)用Synopsys公司的DesignCompiler和VCS進行電路綜合和仿真,電路功能得到驗證。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9321

    瀏覽量

    375382
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7637

    瀏覽量

    166529
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    2037

    瀏覽量

    46687
收藏 0人收藏

    評論

    相關(guān)推薦
    熱點推薦

    【FPGA學(xué)習(xí)】Verilog HDL有哪些特點

    Verilog HDL 的特點Verilog HDL 語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。使用這種
    發(fā)表于 09-18 09:33

    求一種基于Verilog HDL語言32X8 FIFO設(shè)計

    32X8 FIFO的設(shè)計,采用了存儲器交替讀寫
    發(fā)表于 04-26 06:54

    Verilog HDL語言是什么

    嵌入式開發(fā)Verilog教程(二)——Verilog HDL設(shè)計方法概述前言一、Verilog HDL
    發(fā)表于 11-08 09:30

    X-HDL v3.2.55 VHDL/Verilog語言翻譯

    X-HDL:軟件簡介—SoftWare Description: X-HDL v3.2.55 VHDL/Verilog語言翻譯
    發(fā)表于 03-25 12:00 ?356次下載

    基于Verilog HDL語言的FPGA設(shè)計

    采用 Verilog HDL 語言在Altera 公司的FPGA 芯片上實現(xiàn)了RISC_CPU 的關(guān)鍵部件狀態(tài)控制的設(shè)計,以及在與其它各種
    發(fā)表于 08-21 10:50 ?69次下載

    Verilog HDL華為入門教程

    Verilog HDL 華為入門教程 本文主要介紹了Verilog HDL 語言的一些基本知識,目的是使初學(xué)者能夠迅速掌握
    發(fā)表于 02-11 08:35 ?141次下載

    Verilog HDL語言實現(xiàn)時序邏輯電路

    Verilog HDL語言實現(xiàn)時序邏輯電路 在Verilog HDL語言中,時序邏輯電路使用a
    發(fā)表于 02-08 11:46 ?4891次閱讀

    Verilog HDL語言簡介

    Verilog HDL語言簡介 1.什么是Verilog HDLVerilog HDL是硬件描述語言
    發(fā)表于 02-09 08:59 ?4031次閱讀

    VHDL和Verilog HDL語言對比

    VHDL和Verilog HDL語言對比 Verilog HDL和VHDL都是用于邏輯設(shè)計的硬件描述
    發(fā)表于 02-09 09:01 ?1.1w次閱讀

    Verilog HDL程序設(shè)計與實踐

    Verilog HDL程序設(shè)計與實踐著重介紹了Verilog HDL語言
    發(fā)表于 10-29 14:45 ?21次下載

    Verilog HDL硬件描述語言簡介

    本章介紹Verilog HDL語言的發(fā)展歷史和它的主要能力。verilog相關(guān)教程材料,有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-25 16:09 ?14次下載

    基于FPGA Verilog-HDL語言的串口設(shè)計

    基于FPGA Verilog-HDL語言的串口設(shè)計
    發(fā)表于 02-16 00:08 ?35次下載

    Verilog HDL語言技術(shù)要點

    的是硬件描述語言。最為流行的硬件描述語言有兩種Verilog HDL/VHDL,均為IEEE標(biāo)準(zhǔn)。Verilog
    的頭像 發(fā)表于 09-01 11:47 ?4646次閱讀
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b><b class='flag-5'>語言</b>技術(shù)要點

    使用單片機實現(xiàn)SPI接口存儲器AT25F1024讀寫與顯示的C語言實例

    本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)SPI接口存儲器AT25F1024讀寫與顯示的C語言實例免費下載。
    發(fā)表于 03-31 16:31 ?17次下載

    二十進制編碼Verilog HDL描述 Verilog HDL程序的基本結(jié)構(gòu)及特點

    節(jié)通過硬件描述語言Verilog HDL對二十進制編碼的描述,介紹Verilog HDL程序的
    的頭像 發(fā)表于 08-28 09:54 ?3501次閱讀
    二十進制編碼<b class='flag-5'>器</b>及<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>描述 <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>程序的基本結(jié)構(gòu)及特點

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品