欢迎各位朋友关注“郝旭帅电子设计团队”,本篇为各位朋友介绍基于FPGA的计算器设计—第一版。
功能说明:
- 计算器的显示屏幕为数码管。
- 4x4矩阵键盘作为计算器的输入设备。
- 计算任意两位正整数的加减乘除。
- 当减法结果出现负数时(一个小的数字减去一个大的数字),数码管需要显示负数。
- 除法计算时,结果只输出商的整数,小数自动抹去。
注:矩阵键盘输入0-9,表示0-9;10表示加号(数码管显示A);11表示减号(数码管显示b);12表示乘号(数码管显示C);13表示除号(数码管显示d);14表示等于号。
使用平台:本次设计应用Altera的平台设计(芯片:EP4CE10F17C8N)。
作者QQ:746833924
说明:本篇设计中不涉及到IP和原语,代码在其他平台依然可以适用;当其他板卡电路不同时,会导致不同的现象出现,如有需要修改代码请联系作者;如需作者使用的板卡,请联系作者;
设计思想如下:
keyboard4x4_drive模块为4x4矩阵键盘的驱动模块,负责检测4x4矩阵键盘被按下的按键信息;cal_logic模块为计算逻辑和控制显示信息的逻辑,负责根据矩阵键盘传递的按键信息进行计算,根据计算的过程控制输出需要显示的信息;seven_tube_drive(七段数码管驱动)模块负责将产生的数字逻辑显示到数码管上。
keyboard4x4_drive模块的设计思想和具体设计可以参考本公众号,获取方式:关注本公众号,发送“FPGA矩阵键盘驱动第一版”。
cal_logic模块的设计思想:利用状态机设计进行实现。共有八个状态。
localparam STATE_IDLE = 8'b0000_0001;
localparam STATE_NUM1_1 = 8'b0000_0010;
localparam STATE_NUM1_2 = 8'b0000_0100;
localparam STATE_OPCODE = 8'b0000_1000;
localparam STATE_NUM2_1 = 8'b0001_0000;
localparam STATE_NUM2_2 = 8'b0010_0000;
localparam STATE_EQUAL = 8'b0100_0000;
localparam STATE_RESULT = 8'b1000_0000;
STATE_IDLE :空闲初始化状态;
STATE_NUM1_1 :输入第一个操作数的第一位。
STATE_NUM1_2 :输入第一个操作数的第二位。
STATE_OPCODE :输入操作符。
STATE_NUM2_1 :输入第二个操作数的第一位。
STATE_NUM2_2 :输入第二个操作数的第二位。
STATE_EQUAL :输入等于号。
STATE_RESULT :计算输出结果。