版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:
' y/ o5 @% I( b; h3 n% }6 Bmodule adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);
$ ?3 I& k8 \8 f input [7:0] cin_a;0 O9 x; F+ w) @& J8 b
input [7:0] cin_b;
. U+ ]" ^; s5 n$ O! i input c_in;
& B- D- W- j" u2 S# R K) q( R input clk;' G! ?0 a" e" e$ p% g
output c_out;2 \ a4 F3 y: `* b( H4 i
output [7:0] sum_out;8 O) E9 @- q# b9 P0 z3 E9 s
$ A. ]% n1 `( T' b" A n reg c_out;
& `, _4 E: L8 a- S& T: ` reg c_out_t1, c_out_t2, c_out_t3;
/ k- N5 B2 l; h8 w1 Z; J 6 F% u0 c2 s; W+ }9 J' G
reg [7:0] sum_out;$ x; G; M% c, X! s7 Z" ?6 @$ b
reg [1:0] sum_out_t1;9 c) ?: c( Q5 s4 j
reg [3:0] sum_out_t2;
7 s3 f( V+ E. @+ f reg [5:0] sum_out_t3;
8 p: {6 l; _$ g) H, x3 ^% v4 ?0 U, l
) P8 Q8 ^! m8 | E/ v always @(posedge clk) begin+ T) ~! I* Z% b' P/ R! r, @( T
{c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;- N5 j5 }/ C% ]5 E2 D. y" s
end
5 l, g& n% U( h `1 z/ r/ c
2 C8 f+ [3 p5 _* w8 O6 m% Q always @(posedge clk) begin
; O% H5 g! a1 t$ u6 K {c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};& S& K6 w$ a# A
end
% I0 L+ u: g. M
. ^9 Y: N8 ^% O) v4 J* R2 S) F always @(posedge clk) begin
; }$ c# D0 S1 w' P {c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};
5 F |( A. X" q- L; B end' f$ M* c, h1 K7 }
' X; `: p) M% l8 ^( C5 r% E0 C
always @(posedge clk) begin" o7 H1 W N% z8 j8 i
{c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};
5 I C! o X b6 {" r. a end
& P! E0 w7 z" ]
7 p+ S( `! s7 w! J' a9 K c5 r6 Q- z9 `
endmodule' O+ W+ g# ^6 H/ w& C W& f6 X
( k! p0 i7 j) U2 A8 c8 Q$ l
|
|