版主
主题
帖子
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-10-30 13:34
|
显示全部楼层
注意:这里在always块内只能用阻塞赋值方式,否则会出现逻辑上的错误!(3)4级流水线实现方式:( x6 w7 |, O A" v
module adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out); }$ J& |6 c1 ] g w7 ~1 C% c
input [7:0] cin_a;- ^. [7 [- ? A- F, a, I7 O5 V: J4 N
input [7:0] cin_b;
* G6 V9 ?6 [* H input c_in;4 q- t" P2 q! T% B b" x2 r
input clk;+ I1 H+ J4 H+ k. c) V5 W
output c_out;6 ^' L1 E2 r0 e6 y% h2 \8 T q H' U- O
output [7:0] sum_out;
2 o+ K" y& S/ }6 ~: F8 K6 l# N% K ~" W# X: m' H% V5 v3 U" h \
reg c_out;
- U+ X ]/ g( g* Z* a h i8 L reg c_out_t1, c_out_t2, c_out_t3;. u$ ?; X( U4 a3 d
# o, _" C+ A) C9 r- r: C
reg [7:0] sum_out;% @# A, O! _, M" e: g9 w7 T
reg [1:0] sum_out_t1;0 E6 ]. |# Q& ?% U
reg [3:0] sum_out_t2;# E R5 W5 ^/ m) Q9 U( `$ \
reg [5:0] sum_out_t3;* | U, h/ W# K2 W; h, k
2 l0 z1 y3 q5 }* C1 ] always @(posedge clk) begin
5 `- a5 }# K& J9 e: @ {c_out_t1, sum_out_t1} = {1'b0, cin_a[1:0]} + {1'b0, cin_b[1:0]} + c_in;
7 u" b+ x6 s1 F, O: [ end! Y8 \+ {: B* q0 e: H) D( |; C
* m `1 m8 W0 D3 `
always @(posedge clk) begin
: v2 D" t8 E0 |3 Z. a g$ B/ }$ u) S9 E {c_out_t2, sum_out_t2} = {{1'b0, cin_a[3:2]} + {1'b0, cin_b[3:2]} + c_out_t1, sum_out_t1};6 u# K7 a8 }6 C, b
end" ]' g8 t% v. N3 y/ C
# j. ^: \* Z% @; g always @(posedge clk) begin8 A/ t4 Q: }0 [& M1 i
{c_out_t3, sum_out_t3} = {{1'b0, cin_a[5:4]} + {1'b0, cin_b[5:4]} + c_out_t2, sum_out_t2};
8 \8 d) D+ _' z- @# S# M end' P& l9 g& t+ b0 i& A1 E
4 Q# T) ?; t. P; ?) H! g3 F) R
always @(posedge clk) begin
, R7 F. E0 v2 K {c_out, sum_out} = {{1'b0, cin_a[7:6]} + {1'b0, cin_b[7:6]} + c_out_t3, sum_out_t3};
/ S% ~( y, \+ D+ U* d. A8 w end
+ F& Z$ y+ y! c% l) o$ x( H8 o: B/ T4 v8 M% P6 T: D
2 w: G9 o" B+ d5 O6 X2 Eendmodule4 W3 z1 r* G/ U
, O( ^6 w7 ]2 ]8 H
|
|