名称:FIFO设计16*8,数据显示在数码管(代码在文末付费下载)
软件:Quartus
语言:Verilog
代码功能:
使用verilog语言设计一个16*8的FIFO,深度16,宽度为8。可对FIFO进行写和读,并将FIFO读出的数据显示到数码管。
演示视频:
FPGA代码资源下载网:hdlcode.com
部分代码展示
//fifo?16×8fifo module?fifo_top ( input?clk, input?rst, input?[7:0]?din,//fifo写数据 input?wr_en,//写使能 input?rd_en,//读使能 output?empty,//空信号 output?full,//满信号 output?[7:0]?bit_select,//数码管位选,高电平选通 output?[7:0]?seg_select//数码管段选,低电平点亮 ); wire?[7:0]?dout;//读数据 //fifo模块 a_fifo?i_a_fifo ( .?clk(clk), .?rst(rst), .?din(din),//fifo写数据 .?wr_en(wr_en),//写使能 .?rd_en(rd_en),//读使能 .?dout(dout),//读数据 .?empty(empty),//空信号 .?full(full)//满信号 ); //数码管显示模块 display?i_display( .?clk(clk), .?din(din),//fifo写数据 .?dout(dout),//读数据 .?bit_select(bit_select),//数码管位选,高电平选中 .?seg_select(seg_select)//数码管段选 ); endmodule //fifo?16×8fifo module?a_fifo ( input?clk, input?rst, input?[7:0]?din,//fifo写数据 input?wr_en,//写使能 input?rd_en,//读使能 output?reg?[7:0]?dout,//读数据 output?empty,//空信号 output?full//满信号 ); reg?[7:0]?ram?[15:0];//RAM。深度16,宽度8 reg?[6:0]?count=7'd0; reg?[6:0]?rp=7'd0; reg?[6:0]?wp=7'd0; integer?i; always@(posedge?clk) if(rst)begin//复位 wp<=7'd0; rp<=7'd0; dout<=8'd0; count<=7'd0; for(i=0;i<16;i=i+1) ram[i]<=8'b00000000;//清零 end else case({rd_en,wr_en}) 2'b00:count<=count; 2'b01://单写FIFO if(~full)begin//未满 ram[wp]<=din;//存入fifo if(wp>=7'd15) wp<=7'd0;//写地址循环累加 else wp<=wp+7'd1; count<=count+7'd1; rp<=rp; end 2'b10://单读FIFO if(~empty)begin//未空 dout<=ram[rp];//读fifo
设计文档:
1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图
整体仿真图






Fifo模块仿真图


数码管显示模块仿真图



阅读全文
731