•将三组3位二进制按值求和,结果用2位数码管显示(数码管均按10进制显示值) DE1-SoC板上SW2、SW1、SW0作为输入,按下KEY3复位后(数码管显示清0),KEY0第一次、第二次、第三次按下时,各采样SW2、SW1、SWO当前值作为一组3位二进制数,数码管显示采样值,KEYO第四次按下,显示前三次采样值的和;再次按下KEYO,等同一个复位操作。
时间: 2023-07-15 14:10:36 浏览: 124
DE1-SoC-MTL2_User_Manual
这是一个数字电路设计题目,需要使用Verilog语言进行实现。
首先,我们需要定义三个3位的输入信号SW2、SW1和SW0,一个2位的输出信号display,以及一个复位信号reset和一个计数信号count。
然后,在Verilog中,我们可以使用always块来实现按键的检测和采样功能。当KEY0被按下时,我们将当前的SW值存储到一个变量中,并将count加1。当count等于3时,我们将三个采样值相加并显示在数码管上,同时将count和display清零。当KEY3被按下时,我们将reset信号置为1,使display清零,并将count和reset也清零。
最终的Verilog代码如下:
```
module binary_adder(
input wire clk,
input wire KEY0,
input wire KEY3,
input wire [2:0] SW,
output reg [1:0] display
);
reg [2:0] sample[0:2];
reg [1:0] sum;
reg [1:0] temp;
reg count;
reg reset;
always @(posedge clk) begin
if (reset) begin
display <= 2'b00;
count <= 0;
reset <= 0;
end else begin
if (KEY0) begin
sample[count] <= SW;
count <= count + 1;
temp <= {1'b0, sample[count-1]};
case (temp)
2'b00: display <= 2'b00;
2'b01: display <= 2'b01;
2'b10: display <= 2'b10;
2'b11: begin
sum <= sample[0] + sample[1] + sample[2];
case (sum)
2'b00: display <= 2'b00;
2'b01: display <= 2'b01;
2'b10: display <= 2'b10;
2'b11: display <= 2'b11;
endcase
count <= 0;
end
endcase
end
if (KEY3) reset <= 1;
end
end
endmodule
```
阅读全文