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

基于FPGA的简易计算器Verilog代码Quartus仿真

07/22 10:58
371
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24050Q63206419.doc

共1个文件

名称:基于FPGA的简易计算器Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

(1)完成 0~9999 之内的数的加减乘除计算,9999 的二进制表示为 1001100001111,在这一部分中,可以将每一个数均表示成 16 位二进制数统一进行运算,各个计算数之间的计算可以直接使用 VHDL 语言中的运算符来实现。

(2)在显示时,必须将个位、十位、百位,千位分开显示,设计时使用比较的方法来实现计算器的功能要求。

(3)按键必须包括 0-9 数字按键、加减乘除四键、等号键以及清零键,其余功能可自行添加。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 状态图

6. 仿真文件

7. 仿真图

管脚分配

部分代码展示:

//计算器
module?calculator(
input?clk,//时钟
input?esc,//清零键
input?add,//加
input?sub,//减
input?mul,//乘
input?div,//除
input?enter,//等于键
input?cancel,//回退键
//数字按键
input?key_0,
input?key_1,
input?key_2,
input?key_3,
input?key_4,
input?key_5,
input?key_6,
input?key_7,
input?key_8,
input?key_9,
output?[7:0]?bit_sel,//数码管位选
output?[7:0]?segment//数码管段选
);
wire?[2:0]?current_state;//当前状态
wire?[1:0]?calcul;//计算
wire?[15:0]?OP_A;//输入的操作数A
wire?[15:0]?OP_B;//输入的操作数B
wire?[31:0]?OP_Result;//结果
wire?key_0_p;
wire?key_1_p;
wire?key_2_p;
wire?key_3_p;
wire?key_4_p;
wire?key_5_p;
wire?key_6_p;
wire?key_7_p;
wire?key_8_p;
wire?key_9_p;
wire?cancel_p;
wire?clk_1KHz;
//分频模块,时钟分频到1KHz
div_1K?i_div_1K(
.?clk(clk),//50MHz
.?clk_1KHz(clk_1KHz)//时钟1KHz
);
//assign?clk_1KHz=clk;//仿真时用该句,取消分频可以加快仿真速度,实际上板需要加上分频,屏蔽该句
//按键上升沿模块
key_rise?i0_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_0),//按键输入
.?key_out(key_0_p)//按键上升沿
);
//按键上升沿模块
key_rise?i1_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_1),//按键输入
.?key_out(key_1_p)//按键上升沿
);
//按键上升沿模块
key_rise?i2_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_2),//按键输入
.?key_out(key_2_p)//按键上升沿
);
//按键上升沿模块
key_rise?i3_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_3),//按键输入
.?key_out(key_3_p)//按键上升沿
);
//按键上升沿模块
key_rise?i4_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_4),//按键输入
.?key_out(key_4_p)//按键上升沿
);
//按键上升沿模块
key_rise?i5_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_5),//按键输入
.?key_out(key_5_p)//按键上升沿
);
//按键上升沿模块
key_rise?i6_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_6),//按键输入
.?key_out(key_6_p)//按键上升沿
);
//按键上升沿模块
key_rise?i7_key_rise(
.?clk(clk_1KHz),//时钟
.?key_in(key_7),//按键输入
.?key_out(key_7_p)//按键上升沿

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=711

  • 2-24050Q63206419.doc
    下载

相关推荐