赞
踩
名称:VIVADO显示模块verilog代码Nexys4开发板(文末获取)
软件:VIVADO
语言:Verilog
代码功能:
拨动右边的 8 个开关,右边的四个数码管可以显示
8 位二进制对应的十进制数,这里的二进制要求是补码(最高为是 1 的话会输出负数)。
本代码已在Nexys4开发板验证,Nexys4开发板如下,其他开发板可以修改管脚适配:
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
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。