基于Verilog HDL語(yǔ)言的32X8 FIFO設計
硬件描述語(yǔ)言Verilog HDL是一種廣泛應用于集成電路設計的高層次描述語(yǔ)言,適合行為級、寄存器傳輸級和門(mén)級等多層次的設計和描述,并且具有簡(jiǎn)單、易讀、易修改和與工藝無(wú)關(guān)等優(yōu)點(diǎn)。因此利用Verilog HDL語(yǔ)言進(jìn)行電路設計可以節約開(kāi)發(fā)成本和周期。
此32X8FIFO各個(gè)部分均采用Verilog HDL代碼實(shí)現。限于篇幅,下面僅列出FIFOMemery模塊的程序清單。整個(gè)
32X8FIFO設計應用全球著(zhù)名EDA軟件供應商Synopsys公司的DesignCompiler進(jìn)行了邏輯綜合,并應用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 結語(yǔ)
本文通過(guò)兩個(gè)分立存儲器間的交替讀、寫(xiě)機制,實(shí)現32X8 FIFO的可同時(shí)讀、寫(xiě)功能,提高了數據存取的速度,并且提出了新穎的空、滿(mǎn)標志位的實(shí)現方法。采用Verilog HDL硬件描述語(yǔ)言進(jìn)行電路設計,應用Synopsys公司的DesignCompiler和VCS進(jìn)行電路綜合和仿真,電路功能得到驗證。
評論