数电课程设计简易计算器代码
时间: 2023-07-03 11:07:18 浏览: 128
简单的计算器设计代码
以下是一个简单的计算器代码,实现了加、减、乘、除和清零功能,你可以根据需要进行修改和完善。
```verilog
module calculator(
input clk,
input reset,
input [3:0] button,
output reg [7:0] display
);
reg [7:0] result;
reg [7:0] operand;
reg [1:0] operator;
always @(posedge clk) begin
if (reset) begin
result <= 8'b0;
operand <= 8'b0;
operator <= 2'b00;
display <= 8'b0;
end else begin
case (button)
4'd0: operand <= operand * 10 + 1; // digit 1
4'd1: operand <= operand * 10 + 2; // digit 2
4'd2: operand <= operand * 10 + 3; // digit 3
4'd3: operator <= 2'b01; // add
4'd4: operand <= operand * 10 + 4; // digit 4
4'd5: operand <= operand * 10 + 5; // digit 5
4'd6: operand <= operand * 10 + 6; // digit 6
4'd7: operator <= 2'b10; // subtract
4'd8: operand <= operand * 10 + 7; // digit 7
4'd9: operand <= operand * 10 + 8; // digit 8
4'd10: operand <= operand * 10 + 9; // digit 9
4'd11: operator <= 2'b11; // multiply
4'd12: operator <= 2'b00; // clear
4'd13: operand <= operand * 10 + 0; // digit 0
4'd14: begin // equals
case (operator)
2'b01: result <= result + operand;
2'b10: result <= result - operand;
2'b11: result <= result * operand;
default: result <= operand;
endcase
operand <= 8'b0;
operator <= 2'b00;
end
default: // do nothing
endcase
end
end
always @(posedge clk) begin
if (reset) begin
display <= 8'b0;
end else begin
case (operator)
2'b01: display <= result + operand;
2'b10: display <= result - operand;
2'b11: display <= result * operand;
default: display <= operand;
endcase
end
end
endmodule
```
该计算器的输入为一个 4 位二进制数,其中前 3 位表示数字键,第 4 位表示操作符键。输出为一个 8 位二进制数,表示当前显示的数值。
请注意,本设计仅供参考,可能存在错误和不足之处,请谨慎使用。
阅读全文