版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:
# J- H' K9 Z' \% w( \; ^" p/ xmodule adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);8 _3 v4 P: ]3 V% f
input [7:0] cin_a;+ G; y: A$ M9 C/ r* g) N! P3 a
input [7:0] cin_b;1 A/ V1 A/ p0 R, E1 S7 P/ e
input c_in;
3 M" k5 }+ L5 s: ?. w) t/ p input clk;
6 L% h2 `1 f* B' t$ ^9 ` output c_out;1 E/ B- e3 b }
output [7:0] sum_out;* ^: Q, r) S* M
5 B/ J6 [$ K) o5 G; {
reg c_out;, n; f! K- m, ?/ u" ]4 C6 {6 F
reg c_out_t1, c_out_t2, c_out_t3;
/ {- @! b F, ~3 M1 f
7 _3 |2 D, n$ Q reg [7:0] sum_out;
+ G. j5 t8 A7 `: o( z9 z reg [1:0] sum_out_t1;
+ X( Y0 H0 t F [ N2 O2 @' |: j reg [3:0] sum_out_t2;
0 F1 u9 ~6 F4 a& m: y reg [5:0] sum_out_t3;7 M: D8 R3 s3 h' W" E0 s4 G) x h' j
& v$ s" G& Z1 l; t- q, A
always @(posedge clk) begin0 R; J7 M R" |: C3 w
{c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;
1 w3 a/ j) d) N: U; u end7 b2 ^9 N0 e( ]# i3 p& y* `
6 A4 t, W1 K9 W( d+ v- S always @(posedge clk) begin
# N1 t* ^6 u5 Y" W {c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};' q0 K1 Q) O7 Z3 `5 l! D$ T
end
/ l/ w% K" Q5 S+ I A, s
3 w, H! ~! T6 X/ V/ D$ a2 ~# F always @(posedge clk) begin& J2 n- @7 ]6 S! u4 A# B
{c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};
; \" a3 ]" A) k$ F! L end
2 l C( F5 t( y- j
( f4 V- y* R. H0 w9 E" f( [6 O always @(posedge clk) begin
- @4 ^9 _: z2 q/ ` {c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};# k9 y% U) F' `
end
! i6 ?9 f4 T4 m9 `( R
M0 P& I$ S/ z$ W1 \, e' O9 i8 |2 D9 ?9 [
endmodule4 e2 d* a% Q8 d! {; e* S
+ k1 R$ d2 J& P5 l5 a
|
|