版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:
3 u' E9 e$ l- ~. p. D6 Gmodule adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);
3 z. M0 H8 D' R; y' U( X7 r# X input [7:0] cin_a;
E. o- }% I: F; [, Z5 s input [7:0] cin_b;, G( p& N+ N/ N% K
input c_in;
/ x1 F- b/ {& r! V. Y+ `, Q input clk;
7 P3 l6 @% k; t1 Z output c_out;. a- o: j) ?6 Z6 @; b; q# C0 B4 b
output [7:0] sum_out;2 b. f `: C: ?( O, z0 B k9 Z
! x" u( [0 B6 Q3 _ reg c_out;& q, I5 i: W' s7 {" g8 E9 i
reg c_out_t1, c_out_t2, c_out_t3;
" Y3 v. o$ h4 ], E6 k
W2 B# h [/ \6 L6 W reg [7:0] sum_out;# v$ V/ J+ W" Q( W1 H7 {7 E: M
reg [1:0] sum_out_t1;4 o& D/ X. N5 O4 P" N; m- }
reg [3:0] sum_out_t2;
) G& w/ U8 g2 v5 a. \; a2 n' }) ^% A reg [5:0] sum_out_t3;- v1 K' e! o* e8 J6 |
) \7 ]% n8 w Q* S9 i
always @(posedge clk) begin
* [! N, P% y; |" E1 K0 c1 `* @ {c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;
& n) k$ x/ X" G; H0 p' o end$ F. s5 T( Q" d1 [+ }0 s2 A
6 S) O" c: t- m! g always @(posedge clk) begin7 e1 R5 e; a6 R3 B
{c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};
* ?0 g; D( I) S end# n; O: ]6 {5 A
4 B Z4 B1 g0 ]9 Y$ B, ~
always @(posedge clk) begin
. T: m6 j X6 S8 G5 m ] C {c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};) ]; H( B7 s5 B( K6 O9 y
end2 ^1 u- O8 G6 G7 l0 T I4 U
7 t" N! n* |, `* @ g' f always @(posedge clk) begin
) o' C3 W0 @/ e7 S0 x, W$ J n {c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};9 a3 h1 x: y/ |8 ~
end
( W4 X5 _5 J$ V7 g4 H' B1 A6 F9 ~3 I* Z1 h
; U+ }+ E! Y; p9 A6 P2 A
endmodule
. ?3 w. Q. A+ E5 K8 b* a% R0 X, C, m/ o/ W, [$ J6 o" h
|
|