Verilog 扫描数码管 5461BS 实验代码

编码速度明显提上去了,不到1个小时,竟然用Verilog HDL写了个数码管扫描的模块。实验十分顺利!

系统使用EP2C5T144C8 CycloneII FPGA,时钟为50MHz有源晶振。扫描频率为秒级,肉眼可观察,现象十分明显。

 

module led7seg(
	input i_clk,
	input i_rstn,
	output [7:0]o_data,
	output [3:0]o_com
);

reg [22:0] r_cnt ;
always @(posedge i_clk) begin
	if(!i_rstn)
		r_cnt <= 0;
	else
		r_cnt <= r_cnt + 23'd1;
end

reg [3:0]r_num;
reg [1:0] r_num2;
always @(posedge i_clk) begin
	if(!i_rstn) begin
		r_num <= 0;
	end else if(r_cnt == 23'd128) begin
		if(r_num<9)
			r_num <= r_num + 4'b1;
		else
			r_num <= 0 ;
		r_num2 <= r_num2 + 2'b1;
	end
end

reg [7:0] r_data;
always @(posedge i_clk) begin
	if(!i_rstn)
		r_data<= 8'b0;
	else
		casex(r_num)
			0:r_data<=8'hc0;
			1:r_data<=8'hf9;
			2:r_data<=8'ha4;
			3:r_data<=8'hb0;
			4:r_data<=8'h99;
			5:r_data<=8'h92;
			6:r_data<=8'h82;
			7:r_data<=8'hf8;
			8:r_data<=8'h80;
			9:r_data<=8'h90;
			default:
			  r_data<= 8'hff;
			
		endcase
end

reg [3:0] r_com ;
always @(posedge i_clk) begin
	if(!i_rstn) begin
		r_com<= 0;
	end else begin
		r_com <= 4'b1 << r_num2 ;
	end
end

assign o_data = r_data ;
assign o_com = r_com ;
endmodule

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanzhong104204

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值