基于FPGA的算数计算器电路设计Verilog代码Quartus 实验箱

名称:基于FPGA的算数计算器电路设计Verilog代码Quartus  实验箱(文末获取)

软件:Quartus

语言:Verilog

代码功能:

(1)键盘作为运算数据输入

(2)不同位置的按键代表运算符

(3)2个数码管显示运算结果:

(4)支持连续运算

(5)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真,约束与综合、布局布线、下载验证等 

本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:

实验箱.jpg

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. Testbench

7. 仿真图

部分代码展示:

//硬件连接:键盘模块的J2连核心板P3,温度传感器板J3连接核心板P6
//计算器
module calculator(
input clk,//时钟
input reset,
//数字按键
input [3:0] L_row,//行
output [3:0] H_col,//列
output [2:0] ABC,//数码管位选
output [7:0] segment//数码管段选
);
wire [2:0] current_state;//当前状态
wire [1:0] calcul;//计算
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 esc;//ESC键
wire add;//加
wire sub;//减
wire mul;//乘
wire div;//除
wire enter;//Enter键
wire [15:0] OP_A;//输入的操作数A
wire [15:0] OP_B;//输入的操作数B
wire [15:0] OP_Result;//结果
wire [15:0] remainder;//余数
wire clk_500KHz;
//分频
div_clk i_div_clk(
. clk(clk),//50M
. clk_500KHz(clk_500KHz)//分频到500K
);
//输入模块
data_input i_data_input(
. clk_500KHz(clk_500KHz),//500KHZ 
. reset(reset),
. L_row(L_row),//行
. H_col(H_col),//列
. key_0_rise(key_0_p),
. key_1_rise(key_1_p),
. key_2_rise(key_2_p),
. key_3_rise(key_3_p),
. key_4_rise(key_4_p),
. key_5_rise(key_5_p),
. key_6_rise(key_6_p),
. key_7_rise(key_7_p),
. key_8_rise(key_8_p),
. key_9_rise(key_9_p),
. key_A_rise(add),
. key_B_rise(sub),
. key_C_rise(mul),
. key_D_rise(div),
. key_E_rise(esc),
. key_F_rise(enter)
);
//状态控制模块
state_ctrl i_state_ctrl(
. clk(clk_500KHz),//时钟
. esc(esc),//ESC键
. add(add),//加
. sub(sub),//减
. mul(mul),//乘
. div(div),//除
. enter(enter),//Enter键
. current_state(current_state),//当前状态
. calcul(calcul)//计算
);
//数字输入模块
num_in i_num_in(
. clk(clk_500KHz),//时钟
. esc(esc),//ESC键
. key_0(key_0_p),
. key_1(key_1_p),
. key_2(key_2_p),
. key_3(key_3_p),
. key_4(key_4_p),
. key_5(key_5_p),
. key_6(key_6_p),
. key_7(key_7_p),
. key_8(key_8_p),
. key_9(key_9_p),
. current_state(current_state),//当前状态
. calcul(calcul),//计算方式,//00表示加//01表示减//10表示乘//11表示除
. OP_A(OP_A),//输入的操作数A
. OP_B(OP_B),//输入的操作数B
. OP_Result(OP_Result),//结果
. remainder(remainder)//余数
);
//数码管显示模块
display i_display(
. clk_500KHz(clk_500KHz),//
. OP_A(OP_A),//输入的操作数A
. OP_B(OP_B),//输入的操作数B
. OP_Result(OP_Result),//结果
. ABC(ABC),//数码管位选
. segment(segment)//数码管段选
);
endmodule
源代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值