版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:
5 I, j; W5 y3 w5 S7 y) E; Rmodule adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);. E8 _9 _& k& ]/ s
input [7:0] cin_a;8 n) n, K, a0 @3 w) C6 I% T" U
input [7:0] cin_b;
: { e; x& ?( o input c_in;
! [% ~- T5 m: ~ input clk;0 }( s0 J q8 T% f I4 v. x
output c_out;4 P" s: U, e) w% a0 V% E# R
output [7:0] sum_out;2 ?3 r1 E' D! e: W# b' a- b0 G
# w: Z' h9 m1 h( o y* } reg c_out;. Q# i& Z6 g: e
reg c_out_t1, c_out_t2, c_out_t3;
; m) F% k. z# N* Z$ _ ' J6 _ O \- [6 ?
reg [7:0] sum_out;- R# c4 s9 X: l$ `( }% z- |- _+ Z
reg [1:0] sum_out_t1;2 ?: k% x6 ] H( c
reg [3:0] sum_out_t2;
# {, R4 Y0 \$ F Z# m& B5 t4 \ reg [5:0] sum_out_t3;5 F9 U2 W. E9 z' Q4 w% m! h# p
, D8 M) ^# Q) P6 b
always @(posedge clk) begin; ^7 l' T8 R4 h7 N. ~& w
{c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;, I4 j* M1 d: a/ u( B. @
end( o! U, X% q/ n! D
+ j% f6 b2 c, Z; z$ l/ c* r
always @(posedge clk) begin7 @ @! I' O9 Q+ N; L4 a- ]. N
{c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};
4 e! l2 N1 a( z9 d* L; N end
8 W" w* p8 q& o3 s
6 b: {% ~, C6 | always @(posedge clk) begin
* J8 |5 ^. V% D% d& @, `& w {c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};
4 B) ^; J7 o0 U; |9 d* r end
0 h9 l, v. |5 ]. H* s. M7 b ! ?( ?5 N( w# D" _# ?# j8 W
always @(posedge clk) begin& H0 {! R4 }4 {
{c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};
6 ]) a; U0 C/ |% A4 h/ W i end [2 X% }7 P# u% Y) k
" C8 [0 R% ~$ k( q2 u- h: E7 P, R; s7 }+ E7 [: \, f7 z- _
endmodule
: y+ [+ I) j5 K# }3 e0 Z" V7 {3 O- F) K( v0 ^$ c: X: v' z5 P
|
|