名稱:Quartus同步FIFO設(shè)計(jì)verilog代碼
軟件:Quartus
語(yǔ)言:Verilog
代碼功能:
同步FIFO設(shè)計(jì)。
內(nèi)容及要求:
完成3bit寬、360深的同步FIFO。
(1)存儲(chǔ)器可以采用片內(nèi)SRAM或者用觸發(fā)器替代;
(2)輸入數(shù)據(jù)片內(nèi)生成,輸出側(cè)由ISA時(shí)序讀操作進(jìn)行;
(3)滿、空指示驅(qū)動(dòng)LED;
(4)SRAM雙口;
(5)讀寫信號(hào)同步于工作時(shí)鐘,工作時(shí)鐘100M;
(6)使用實(shí)驗(yàn)室的開發(fā)箱或自備開發(fā)板完成設(shè)計(jì);
(7)完成全部流程:設(shè)計(jì)規(guī)范文檔、模塊設(shè)計(jì)、代碼輸入、功能仿真、約束與綜合、時(shí)序仿真、下載驗(yàn)證等。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 模塊圖
6. Testebnch
7. 仿真圖
仿真圖依次仿真了如下功能:
具體功能1/2/3對(duì)應(yīng)如下:
1.寫FIFO 4次,再讀4次,F(xiàn)IFO讀空
2.寫FIFO 350次,然后同時(shí)讀寫5次,最后讀5次,F(xiàn)IFO剩余345個(gè)空間
3.連續(xù)寫FIFO 15次,F(xiàn)IFO寫滿
部分代碼展示:
//fifo?testbench module?fifo_test(); reg?clk; reg?rst_n; reg?[2:0]?data_in; reg?wr_en; reg?rd_en; wire?empty; wire?full; wire?[2:0]?data_out;//讀數(shù)據(jù) //FIFO深度為360,數(shù)據(jù)寬度為3 fifo_top?i_fifo_top ( .?clk???(clk??),//時(shí)鐘 .?rst_n???(rst_n??),//復(fù)位 .?data_in???(data_in??),//fifo寫數(shù)據(jù) .?wr_en?(wr_en),//寫使能 .?rd_en?(rd_en),//讀使能 .?data_out??(data_out?),//讀數(shù)據(jù) .?empty?(empty),//空信號(hào) .?full??(full?)?//滿信號(hào) ); initial?begin $monitor("empty=%b?,?full=%b",?empty,full);//檢測(cè)空滿信號(hào) end initial?begin rst_n=0; data_in='d0; wr_en=0; rd_en=0; #100; rst_n=1; #100; repeat(4)begin//寫4次 data_in=data_in+'d1; wr_en=1; #20; wr_en=0; #1000; end #100; repeat(4)begin//讀4次 rd_en=1; #20; rd_en=0; #1000; end repeat(350)begin//寫350次 data_in=data_in+'d1; wr_en=1; #20; wr_en=0; #1000; end repeat(5)begin//讀寫5次 data_in=data_in+'d1; wr_en=1; rd_en=1; #20; wr_en=0; rd_en=0; #1000; end #100; repeat(5)begin//讀5次 rd_en=1; #20; rd_en=0; #1000; end repeat(15)begin//寫15次 data_in=data_in+64'd1; wr_en=1; #20; wr_en=0; #1000; end end //產(chǎn)生時(shí)鐘 always?begin clk=1; #10; clk=0; #10; end endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=408