名称:VIVADO显示模块verilog代码Nexys4开发板
软件:VIVADO
语言:Verilog
代码功能:
显示模块,拨动右边的 8 个开关,右边的四个数码管可以显示。
8 位二进制对应的十进制数,这里的二进制要求是补码(最高为是 1 的话会输出负数)。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在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
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=371
阅读全文
1297