基于FPGA的进制转换及显示Verilog代码Quartus仿真

名称:基于FPGA的进制转换及显示Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

将二进制信号通过电路进行转换,以二进制、八进制、十六进制和十进制四种方式显示在数码管上

输入信号:16bit二进制数据,2bit权重选择信号和27MHz时钟

输出信号:8位数码管

1. 工程文件

2. 程序文件

3. 程序综合

4. Testbench

5. 行为仿真

6. 综合后仿真

部分代码展示:

module display(switch, hex, clk, rst);
input [17:0] switch;//输入。高2位为权重,低16位为输入2进制数
input clk;//27M
input rst;
output [55:0] hex;//输出8个数码管,一个数码管7位,8个一共56位
reg [31:0] num;
reg [15:0] numreg;
reg [3:0] numreg10;
reg [1:0] weight;
reg [2:0] state;
reg [2:0] state1;
//reg [2:0] state2;
reg [3:0] deccode;
reg [6:0] segcode[7:0];
//输出8个数码管,一个数码管7位,8个一共56位
assign hex = {segcode[7], segcode[6], segcode[5], segcode[4], segcode[3], segcode[2], segcode[1], segcode[0]};
// 计数器及控制电路
always @ (posedge clk or negedge rst) begin
if (~rst) begin//复位
state <= 3'b000;
num <=32'b0;
numreg <= 16'b0;
numreg10 <= 4'b0000;
weight <= 2'b00;
end
// 计数器及控制电路
else if (state == 3'b111) begin
state <= 3'b000;//7回到0
num <= {16'b0, switch[15:0]};//高2位为权重,低16位为输入2进制数
numreg <= switch[15:0] / 4'd10;
numreg10 <= switch[15:0] % 4'd10;
weight <= switch[17:16];//高2位为权重,低16位为输入2进制数
end
else begin
state <= state + 3'b001;//递增
numreg <= numreg / 4'd10;//十位
numreg10 <= numreg % 4'd10;//个位
end
end
// 数据位选择
always @ (posedge clk) begin
state1 <= state;
case (weight)
2'b00: deccode <= num[{2'b00, state}];//输出二进制
2'b01: deccode <= {1'b0, num[3*state+2], num[3*state+1], num[3*state]}; //输出8进制
2'b10: deccode <= {num[4*state+3], num[4*state+2], num[4*state+1], num[4*state]}; //输出16进制
2'b11: deccode <= numreg10;//输出十进制
default: deccode <= 4'b0000; 
endcase  
end
源代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值