1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 杭电计算机组成实验2(二)超前进位加法器设计实验

杭电计算机组成实验2(二)超前进位加法器设计实验

时间:2019-11-14 17:10:05

相关推荐

杭电计算机组成实验2(二)超前进位加法器设计实验

实验内容

掌握运用Verilog HDL进行数据流描述与建模的技巧和方法,掌握模块调用与实例引用的方法掌握超前进位加法器的原理与设计方法

解决方法

分析4位的二进制全加器的输入输出,内部为超前进位逻辑首先,要知道超前进位逻辑与行波进位加法器的区别行波进位加法器需要像链子一样,等第一位算完,再算第二位,而超前进位加法器是四位同时,第二位包括了第一位的计算部分,从而达到消除依赖的关系代码展示:

顶层模块

module second_experiment_first(A,B,F,C4,C0);

input [3:0]A,B;

input C0;

output [3:0]F;

output C4;

assign G0 = A[0] & B[0];

assign P0 = A[0] | B[0];

assign G1 = A[1] & B[1];

assign P1 = A[1] | B[1];

assign G2 = A[2] & B[2];

assign P2 = A[2] | B[2];

assign G3 = A[3] & B[3];

assign P3 = A[3] | B[3];

assign C1 = G0 | P0&C0;

assign C2 = G1 | P1&G0 | P0&P1&C0;

assign C3 = G2 | P2&G1 | P2&P1&G0 | P2&P1&P0&C0;

assign C4 = G3 | P3&G2 | P3&P2&G1 | P3&P2&P1&G0 | P3&P2&P1&P0&C0;

assign F[0] = A[0]B[0]C0;

assign F[1] = A[1]B[1]C1;

assign F[2] = A[2]B[2]C2;

assign F[3] = A[3]B[3]C3;

endmodule

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

测试模块

module second_experiment_test;

// Inputs

reg [3:0] A;

reg [3:0] B;

reg C0;

// Outputs

wire [3:0] F;

wire C4;

second_experiment_first uut (

.A(A),

.B(B),

.F(F),

.C4(C4),

.C0(C0)

);

initial begin

A = 4’b1000;

B = 4’b1000;

C0 = 1;

#100;

A = 4’b1001;

B = 4’b1001;

C0 = 1;

#100;

A = 4’b1011;

B = 4’b1011;

C0 = 1;

end

endmodule

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

27

28

29

特别注意

题主在网上看到一份报告中的代码并不是把所有的运算拿过来的,而是把C1赋给C2这样做的,assign这种组合逻辑电路,是并行执行,这样的方法不一定可行

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。