当前位置:   article > 正文

VIVADO显示模块verilog代码Nexys4开发板_vivado verilog 开关语句

vivado verilog 开关语句

名称:VIVADO显示模块verilog代码Nexys4开发板(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

显示模块

拨动右边的 8 个开关,右边的四个数码管可以显示

8 位二进制对应的十进制数,这里的二进制要求是补码(最高为是 1 的话会输出负数)。

本代码已在Nexys4开发板验证,Nexys4开发板如下,其他开发板可以修改管脚适配:

nexys4_ddr开发板.png

1. 工程文件

2. 程序文件

3. 程序编译

4. Xdc约束文件

部分代码展示:

//显示模块
//拨动右边的 8 个开关,右边的四个数码管可以显示
//8 位二进制对应的十进制数,这里的二进制要求是补码(最高为是 1 的话会输出负数)。
module display
(
input clk,
input [7:0] SW,//右边的 8 个开关
output reg [7:0] bit_select,//数码管位选
output reg [7:0] seg_select//数码管段选
);
//二进制转十进制
wire [3:0]signed_flag;//负号指示
assign signed_flag=(SW[7])? 4'hA : 4'hF;//负号
wire [7:0] data;
assign data=(SW[7]==0)? SW : ~(SW - 1);//正数是本身,负数减1再取反
wire [3:0] data_hun;//百位
wire [3:0] data_ten;//十位
wire [3:0] data_one;//个位
assign data_hun=data/100;//百位
assign data_ten=data/10%10;//十位
assign data_one=data%10;//个位
reg [31:0] count_num=32'd0;
位选
always @(posedge clk )  //扫描频率
begin
if(count_num == 32'd99_999)  
begin
count_num <= 32'd0; 
end 
else begin
count_num <=count_num +1'd1; //扫描频率计时数字
end
end
reg [2:0] shumaguan_num=3'd0;
always @(posedge clk )  
begin
if(count_num == 32'd99_999)
begin
if(shumaguan_num == 3'd3)
begin
shumaguan_num <= 3'd0;//计数0~3,共4个数码管显示
end
else begin
shumaguan_num <= shumaguan_num + 1'd1;    //扫描那个管子的指示位
end
end
end

完整代码

 扫描文章末尾的公众号二维码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/641342
推荐阅读
相关标签
  

闽ICP备14008679号