版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:
1 J4 Z9 U* H1 p/ B( g7 Z+ b9 smodule adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);
9 B/ o% d) x5 W7 M- ]7 F# N input [7:0] cin_a;; ]8 ~* D4 A ^4 V+ \; a
input [7:0] cin_b;
- G9 k1 C$ m: b6 J& e& h( ]% W input c_in;
8 [7 K# A7 R* L m* d; [ input clk;& b0 e; j( c0 }! ?& O B- j$ @
output c_out;" w5 L; T3 k4 f2 x. m
output [7:0] sum_out;: _7 f' {" D2 y8 W2 r
: h+ t' I8 b& U reg c_out;
; A" }0 A. H2 h, P) N6 m reg c_out_t1, c_out_t2, c_out_t3;
P. y1 p- T- @% F* y# J U3 m: K$ S
) e" @* M5 \; Z/ e& n( R; Q# H reg [7:0] sum_out;3 w0 S" ~; A, g) j+ z% l5 o Z$ S8 f/ B) J
reg [1:0] sum_out_t1;
1 P5 s& h" _* y, ] reg [3:0] sum_out_t2;
2 ?/ t5 ^% o7 q. R9 m$ s( r reg [5:0] sum_out_t3;
! C, v* J4 e6 {8 k
/ k/ D1 P5 y R- Z4 R( w# ^4 [8 L0 y H always @(posedge clk) begin% j. O& ]2 s; l* a5 k
{c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;9 a' i2 c2 l. }/ I( \' `
end1 r! F. l! B) I. U7 j% \( V
) s8 e3 Y" P; Z( @; D: q# W always @(posedge clk) begin
8 M1 T4 R. O, i% ^ {c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};& c3 ^2 R- O' r. P
end
1 c2 E! N$ K; C: E3 } , g) U/ F* C3 D4 b+ A
always @(posedge clk) begin
3 r6 ^0 K/ c i3 |7 r8 n/ { {c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};$ C9 n3 }- J4 [; I+ u% Q
end0 x: F! E. o( u; q1 P
1 G9 t/ n5 j; L3 G; h* z2 A always @(posedge clk) begin
M0 a6 w7 C- O$ _ {c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};4 i9 f4 I! u0 a R- _
end
$ l8 t3 z) D- ^8 Z
& }4 X6 ^) n9 K" q) O4 R; L2 N5 x8 k# i' i4 M
endmodule
; [% r+ p4 U! ?1 i+ e) X/ y* L/ Q5 X
! D$ H! u) T& m" y4 z( ` |
|