名称:基于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
源代码
扫描文章末尾的公众号二维码