• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

FIFO设计16*8,verilog,数据显示在数码管

04/29 08:02
956
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-231020223010451.doc

共1个文件

名称: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模块仿真图

数码管显示模块仿真图

  • 1-231020223010451.doc
    下载

相关推荐