输入两个数令数码管显示数字并显示加法和
实验器材:de2-115
实验要求:利用开关输入数字并在数码管上显示,将两段数码管显示的数字的加法和显示在第三段数码管上。
电路图如下:
实验原理:
这里用两个译码器将输入的二进制数转换为十进制并输出,然后设置一个加法器求和,再用译码器输出,两位数要注意个位和十位要分别转换,因为做的比较简单,所以只能实现0~9的加法,也就是和的最大数是18
实验代码:
`简单译码器
`timescale 1ns/1ps
module my_fpga (a,dr);
input[3:0]a;
output[6:0]dr;
assign dr=(a==4'b0000)?7'b1000000://0
(a==4'b0001)?7'b1111001://1
(a==4'b0010)?7'b0100100://2
(a==4'b0011)?7'b0110000://3
(a==4'b0100)?7'b0011001://4
(a==4'b0101)?7'b0010010://5
(a==4'b0110)?7'b0000010://6
(a==4'b0111)?7'b1111000://7
(a==4'b1000)?7'b0000000://8
(a==4'b1001)?7'b0010000://9
(a==4'b1010)?7'b1111111: dr;
endmodule
`加法器
module add1(a1,a2,add_out);
input[3:0]a1;
input [3:0]a2;
output [5:0]add_out;
assign add_out=a1+a2;
endmodule
module BOT2(add_out,a4,a5);
input[5:0]add_out;
output[3:0]a4;
output[3:0]a5;
assign a4= (add_out<6'd10)? add_out:
(add_out<6'd20)? add_out-4'd10:a4;
// (T<6'd20)? T-6'd10:
// (T<6'd30)? T-6'd20:
// (T<6'd40)? T-6'd30:
// (T<6'd50)? T-6'd40:
// (T<6'd60)? T-6'd50:
// (T<7'd70)? T-6'd60:
assign a5=(add_out<6'd10)?4'd0:
(add_out<6'd20)? 4'd1:a5;
/*a1=(close==1'b1)?4'd10:
(T<6'd10)? 4'd0:
(T<6'd20)? 4'd1:
(T<6'd30)? 4'd2:
(T<6'd40)? 4'd3:
(T<6'd50)? 4'd4:
(T<6'd60)? 4'd5:
(T<7'd70)? 4'd6:a1;*/
endmodule
管脚配置: