赞
踩
名称:基于FPGA的算数计算器电路设计Verilog代码Quartus 实验箱(文末获取)
软件:Quartus
语言:Verilog
代码功能:
(1)键盘作为运算数据输入
(2)不同位置的按键代表运算符
(3)2个数码管显示运算结果:
(4)支持连续运算
(5)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真,约束与综合、布局布线、下载验证等
本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:
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
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。