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

七段数码管控制器设计Verilog代码VIVADO仿真

08/05 09:23
440
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24061QJ53JX.doc

共1个文件

名称:七段数码管控制器设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

七段数码管控制器

(1)公共部分: 在八个七段数码管上显示相同的数字,11111111。

(2)设计计数器,并以10进制BCD码的形式显示在七段数码管上,计数频率5Hz, 计数范围002-254。

(3)附加功能,计数满254后亮一次led_507表示进位,显示相同的数字按下BTN1按键显示数据加1。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1.工程文件

2.程序设计

3.管脚约束

4.程序运行

5.仿真testbench

6.仿真图

部分代码展示:

`timescale?1ns?/?1ps
//////////////////////////////////////////////////////////////////////////////////
//?Company:?
//?Engineer:?
//?
//?Create?Date:?2018/12/26?22:19:37
//?Design?Name:?
//?Module?Name:?shumaguan
//?Project?Name:?
//?Target?Devices:?
//?Tool?Versions:?
//?Description:?
//?
//?Dependencies:?
//?
//?Revision:
//?Revision?0.01?-?File?Created
//?Additional?Comments:
//(1)公共部分:?在八个七段数码管上显示相同的数字,11111111。(分值65分)
//(2)?设计计数器,并以10进制BCD码的形式显示在七段数码管上,计数频率5Hz(分值25分)
//?自实,?计数范围002-254;
//?(3)?附加功能,计数满254后亮一次led_507表示进位,显示相同的数字按下BTN1按键显示数据加1
//////////////////////////////////////////////////////////////////////////////////
module?shumaguan(
????input?clk_507,//100M
????input?reset_n_507,//BTN0,按下低电平
????input?BTN1_n_507,//BTN1,按下低电平
????input?switch_507,//显示切换开关
????output?led_507,//高亮
????output?reg[7:0]?duanxuan_507,//低电平
????output?reg[7:0]?weixuan_507//高电平
????);
reg?[31:0]?div_cnt_5Hz_507=32'd0;//5Hz
//产生5Hz
reg?clk_507_5Hz_507=0;
always@(posedge?clk_507)
????if(div_cnt_5Hz_507>=32'd20000000)?begin//100000000Hz分频到5Hz,20000000,仿真时为减小仿真时间将32'd20000000改小为32'd200
???????div_cnt_5Hz_507<=?32'd0;
???????clk_507_5Hz_507<=1;
???????end
????else?begin
???????div_cnt_5Hz_507<=div_cnt_5Hz_507?+?32'd1;?
???????clk_507_5Hz_507<=0;
???????end
reg?[7:0]?count_507=8'd0;//定义计数器
always@(posedge?clk_507)
????if(!reset_n_507)
????????count_507<=8'd2;
????else?if(clk_507_5Hz_507)//计数频率5Hz
????????????if(count_507>=8'd254)
????????????????count_507<=8'd2;//计数范围002-254
????????????else
????????????????count_507<=count_507+8'd1;
?????????else
????????????count_507<=count_507;
assign?led_507=(count_507>=8'd254)?1'b1:1'b0;
wire?[3:0]?count_data_507_hun;//BCD码百位
wire?[3:0]?count_data_507_ten;//BCD码十位
wire?[3:0]?count_data_507_one;//BCD码个位
//count转为BCD码
BCD?U_BCD(
????.?clk_507(clk_507),
????.?binary_507(count_507),//二进制计数值输入
????.?Huns_507(count_data_507_hun),//输出十进制百位
????.?Tens_507(count_data_507_ten),//输出十进制百位
????.?Ones_507(count_data_507_one)//输出十进制百位
????);
????
reg?[3:0]?data_5071=4'd0;
reg?[3:0]?data_5072=4'd0;
reg?[3:0]?data_5073=4'd0;
reg?[3:0]?data_5074=4'd0;
reg?[3:0]?data_5075=4'd0;
reg?[3:0]?data_5076=4'd0;
reg?[3:0]?data_5077=4'd0;
reg?[3:0]?data_5078=4'd0;
reg?[3:0]?data_reg_507=4'd1;
always@(posedge?clk_507)
????if(!reset_n_507)?
????????data_reg_507<=4'd1;
????else?
????????if(clk_507_5Hz_507?&&?~BTN1_n_507)//按下BTN1按键显示数据加1
????????????if(data_reg_507>=4'd9)
????????????????data_reg_507<=4'd1;
????????????else
????????????????data_reg_507<=data_reg_507+4'd1;
????????else
????????????data_reg_507<=data_reg_507;
always@(posedge?clk_507)
if(!reset_n_507)?begin
????data_5071<=4'd0;
????data_5072<=4'd0;
????data_5073<=4'd0;
????data_5074<=4'd0;
????data_5075<=4'd0;
????data_5076<=4'd0;
????data_5077<=4'd0;
????data_5078<=4'd0;
end
else?if(switch_507==1)begin//显示11111111
????????data_5071<=data_reg_507;
????????data_5072<=data_reg_507;
????????data_5073<=data_reg_507;
????????data_5074<=data_reg_507;
????????data_5075<=data_reg_507;
????????data_5076<=data_reg_507;
????????data_5077<=data_reg_507;
????????data_5078<=data_reg_507;
????????end

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=881

  • 2-24061QJ53JX.doc
    下载

相关推荐