扫码加入

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

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

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

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
    下载

相关推荐