版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:
/ `' {: {( P% L8 n! S4 I; lmodule adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);& J; v9 H6 A$ H1 n6 {8 z4 y! M
input [7:0] cin_a;
6 J) q& A8 [8 x: t/ S: l& Z( m input [7:0] cin_b;
) u5 d) B7 X( K/ V3 ?# k2 G input c_in;
" a7 W8 r4 j$ W: p input clk;7 c6 c( O, y- X! p5 F; t/ e+ N+ p
output c_out;5 O* C W5 }; Z3 x# L; o
output [7:0] sum_out;
5 m* A* K* l& b/ ~* G+ ?/ p ) j( `9 M- ?3 o3 j6 t' V* i+ A
reg c_out;5 {* l8 j) T# Q( L/ e7 e# W
reg c_out_t1, c_out_t2, c_out_t3;
9 y" _9 N$ i+ n. N+ O, g5 { ) l% r) I2 e L" l( Y& a
reg [7:0] sum_out;
+ J; J# R7 T: b- k) S+ {; x reg [1:0] sum_out_t1;! y2 A/ a1 m; c8 L
reg [3:0] sum_out_t2;9 `; c9 o) ~( j% k* p! [5 |' ]& }
reg [5:0] sum_out_t3;9 N0 T& A4 N3 I6 J" `! I `
! l5 C" L( L- G
always @(posedge clk) begin
& x$ |! R2 S4 f/ `. Z! j {c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;
! b) I; c9 m/ Y8 V. H0 v9 X1 M end
# z' }( R: k m/ T: ]
+ V4 G+ ^' E5 e; W1 l$ m always @(posedge clk) begin
% }% G v: U% |' F+ A4 ] {c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};
, c9 [ U' g Q, j end9 w2 V9 d0 `, j8 o2 Y: R, N
6 q% s, y6 |& w: O3 |& J
always @(posedge clk) begin
6 h. k5 J' `' x4 R {c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};
, d7 i: e$ A* C& i6 K" Q6 L end
3 S1 J. h, s0 Y: B4 g- M
& R, `! C0 r& d- H. ~3 ` always @(posedge clk) begin
) z9 q/ s5 `& j" O5 Q' Z4 c) V% { {c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};
# ]# d# z- |( G" t end( L3 f. H: m" g! D
* d. k. J' o8 l
j# \8 i# @& J5 c6 a& b. H% w0 _endmodule
: H6 \. i' g' P7 B- i9 L, S3 G5 g
|
|