Contents

西南交通大学计组实验1-四位全加器设计

Note
此笔记针对西南交通大学2023-2024学年上半学期开设的计组实验课。
Success
代码和输出已通过助教验收。

1 实验内容

设计四位加法器

2 代码/原理图

2.1 顶层文件

2.2 全加器

1
2
3
4
5
6
7
8
module full_adder(a,b,c0,s,c1);
	input a,b,c0;
	output wire s,c1;
	wire tmp1,tmp2,tmp3;
	half_adder ha1(a,b,tmp1,tmp2);
	half_adder ha2(tmp1,c0,s,tmp3);
	assign c1=tmp2|tmp3;
endmodule

2.3 半加器

1
2
3
4
5
6
module half_adder(a,b,s,c);
	input a,b;
	output wire s,c;
	assign s=a^b;
	assign c=a&b;
endmodule

2.4 7段数码管译码器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module segment_displays(num,seg);
	input [3:0] num;
	output reg [7:0] seg;
	always@(num)
	begin
		case(num)
			4'b0000:seg<=8'b00111111;	//"0"
			4'b0001:seg<=8'b00000110;	//"1"
			4'b0010:seg<=8'b01011011;	//"2"
			4'b0011:seg<=8'b01001111;	//"3”
			4'b0100:seg<=8'b01100110;	//"4"
			4'b0101:seg<=8'b01101101;	//"5"
			4'b0110:seg<=8'b01111101;	//"6"
			4'b0111:seg<=8'b00000111;	//"8"
			4'b1000:seg<=8'b01111111;	//"8"
			4'b1001:seg<=8'b01101111;	//"9"
			4'b1010:seg<=8'b01110111;	//"A"
			4'b1011:seg<=8'b01111100;	//"b"
			4'b1100:seg<=8'b00111001;	//"c"
			4'b1101:seg<=8'b01011110;	//"d"
			4'b1110:seg<=8'b01111001;	//"E"
			4'b1111:seg<=8'b01110001;	//"F"
			default:seg<=8'b00111111;	//"0"
		endcase
	end
endmodule

3 引脚分配

4 仿真波形

5 源码已上传github

github仓库: swjtu_computer_organization_exp_1_4digit_adder swjtu_computer_organization_exp_1_4digit_adder