• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

07/24 08:49
586
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2405151U124A8.doc

共1个文件

名称:基于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

  • 2-2405151U124A8.doc
    下载

相关推荐