使用Quartus II进行FPGA实验之Numbers and Displays


这是一个设计组合电路的练习,可以显示二十转换器和二进制编码的十进制(BCD)加法。

part5:2位BCD数加法器

设计一个BCD加法器即是将加法器和显示电路结合起来。显示电路比较简单,只需要输入一个bcd数,我们就可以在数码管上显示这个bcd数,用简单的case语句即可实现:

module decoder(
	input [3:0]in2,
	output reg[6:0]display
);
always@(*) begin
    display = 7'b1111111;

    case(in2)
    0 : display = 7'b0000001;
    1 : display = 7'b1001111;
    2 : display = 7'b0010010;
    3 : display = 7'b0000110;
    4 : display = 7'b1001100;
    5 : display = 7'b0100100;
    6 : display = 7'b0100000;
    7 : display = 7'b0001111;
    8 : display = 7'b0000000;
    9 : display = 7'b0000100;
    endcase
end
endmodule

 再然后是bcd加法器,因为是两位bcd加法器,所以要考虑进位cin和cout,我们可以实例化两个一位的bcd加法器,可以直接采用全加器的方式,将a+b+cin的值进行判断是否大于9,若大于9即进位,2个1位的bcd数相加应该放在2位也就是8bit寄存器里,同理,2个2位bcd数相加的结果应该放在3位也就是12bit寄存器里:

module BCDadder(
	input [3:0]a,b,
	input cin,
	output reg[3:0]sum,
	output reg cout
);
always@(*)

if( a+b+cin > 9 ) begin
	cout <= 1;
	sum <= a + b + cin - 10;
end
else begin
	cout <= 0;
	sum <= a + b + cin;
end
endmodule

最后我们只需要将bcd加法器和显示电路组合起来即可得到2位bcd加法器电路,首先我们将2个2位bcd数显示在4个数码管上,然后用两个加法器分别加个位和十位,将个位的进位cout连接到十位的cin上即可组合成为一个2位的bcd加法器电路,最后再将等于号=、十位上的加法器的进位ct1、十位上的和、个位的和,这4个显示到数码管上即可。

module lab2(
	input [15:0]SW,//A1 A0 B1 B0
	output [0:6]HEX7_D,HEX6_D,HEX5_D,HEX4_D,//A1 A0 B1 B0
			HEX2_D,HEX1_D,HEX0_D,//=sum
	output [0:6]HEX3_D
);
	wire ct0,ct1;
	wire [3:0]sum0,sum1;

	decoder u1(SW[15:12],HEX7_D);//A1
	decoder u2(SW[11: 8],HEX6_D);//A0
	decoder u3(SW[ 7: 4],HEX5_D);//B1
	decoder u4(SW[ 3: 0],HEX4_D);//B0
	
	assign HEX3_D = 7'b1110110;  //=
		
	BCDadder u5(SW[11: 8],SW[ 3: 0],0,sum0,ct0);
	BCDadder u6(SW[15:12],SW[ 7: 4],ct0,sum1,ct1);
	
	decoder u7(ct1,HEX2_D);
	decoder u8(sum1,HEX1_D);
	decoder u9(sum0,HEX0_D);//sum

endmodule

下图是在板子上两个加法验证,在验证过程中发现问题:用开关控制大于9的数时,由于在代码中大于9的不显示,但是却没有将加法器也禁止相加,所以还是会计算相加,在显示和的数码管上也会显示出诸如F+F的值。

 

 

使用Quartus II进行FPGA实验之Numbers and Displays_第1张图片

在DE2板子上做FPGA实验很有趣,但是由于时间关系,在仅有的几次上机时间里无法完成10个实验,等以后有机会再做完剩下的实验。


引脚分配

我们可以在官方的引脚分配csv文件中将实验所用到的引脚和对应位置直接复制出来,中间用逗号分隔,保存成txt文件,即可直接在Quartus II中导入这个txt文件来分配引脚。

使用Quartus II进行FPGA实验之Numbers and Displays_第2张图片

使用Quartus II进行FPGA实验之Numbers and Displays_第3张图片

 

 

你可能感兴趣的:(FPGA实验)