名称:基于FPGA的进制转换及显示Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
将二进制信号通过电路进行转换,以二进制、八进制、十六进制和十进制四种方式显示在数码管上。
输入信号:16bit二进制数据,2bit权重选择信号和27MHz时钟。
输出信号:8位数码管。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
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
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=747
阅读全文
586