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

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

07/20 13:25
261
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24050Q6101O05.doc

共1个文件

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

软件:Quartus

语言:Verilog

代码功能:

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

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

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

(4)支持连续运算;

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

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

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

实验箱.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

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

  • 2-24050Q6101O05.doc
    下载

相关推荐