找回密码
 注册
关于网站域名变更的通知
查看: 392|回复: 2
打印 上一主题 下一主题

转——FPGA Verilog中计数器的两种写法对比

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-13 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——FPGA Verilog中计数器的两种写法对比

7 v- R3 @+ Y# t. O2 Z! b. N. J# G1 M, b5 G% }" q7 ]
功能是,计数记到24,清零,重新计数….
$ R1 Y: X4 [% r0 }' k8 X/ v5 R* x2 i* H% c. w1 B
第一种写法:* ^6 S+ F; w1 h$ h
) A( ~  Z7 u; g. k" U. G+ Q
module   count_debug        (0 ^! @8 }+ M1 B9 ?7 i, \4 ]  M" y
0 f! v2 |! y6 w) J  @
                                     clk,
0 {6 P1 j) ^, B" O4 V  E# B: b4 |, a) M1 K3 z
                                     rst_n,/ r9 J+ u; O2 V, x( {* T  Z

  D- Q$ \7 {/ L8 o9 n* {' N                                     dout
+ O4 q& F  ]9 ]6 a% ]8 o7 F. S9 j# C/ j2 {* Z
                                     );
0 K7 \, X9 V6 ^! V1 B
% `3 [6 H; x* D9 s  i$ F- f9 o# Tinput                    clk;
1 G4 y8 Y0 i/ D' D# J; ~
3 F  l- ^; H- n! finput                    rst_n;# F) d5 M: g+ p7 S# S0 c
  X$ d! V4 P2 ~; `; _) g% M% s7 I1 m6 ]
output         [4:0]  dout;% I/ _: l* _4 q; ]& N! E

0 O' l* B/ P0 g5 T- |; @reg              [4:0]  cnt;
0 W5 T$ E& l3 S/ u/ Y. \* z8 D" `5 q8 b3 B
always @(posedgeclk or negedge rst_n) begin
8 V0 v" F2 |/ X" n- X2 u
+ D0 z5 n0 a, P; m7 L         if(rst_n == 1'b0) begin
4 {. S0 k! Q) p4 `7 [5 s9 ]- F& m1 G! e
                   cnt <= {5{1'b0}};
9 A9 \$ J1 t. s+ r- V1 w8 H$ ~7 _) y+ ^1 _# e2 h1 m2 s+ Y
         end else if(cnt == 5'd24)begin
4 e6 R% X: l4 h
8 v7 w9 Z  z2 W( x1 @8 p                   cnt <= {5{1'b0}};
$ W& V- J0 |- z
# u* X+ w1 d# V2 ]         end else begin
+ Q: n8 v, ~1 n  D! T
9 S$ K! b7 r$ _6 \- `) ?6 u                   cnt <= cnt + 1'b1;
, d$ H) U, P* {( J, M( ^3 h0 Y) `' [9 Y0 b
         end. v* G  A% t0 b, z
0 h8 G# @4 K* Z' Y" E# L% d
end
: |4 o* T" t5 |  a7 U  i0 C! w$ Q6 v6 `1 v
assign                  dout = cnt;
* q) e. F* i& a* G8 m9 P. P2 C0 z. c/ S& l
endmodule6 D# F' N7 k# \5 S" G3 X; m! g
9 A3 x) a" [9 {0 \
         这种写法是我常用的方式,现在来看看消耗的逻辑单元
6 E2 `& h9 N0 ~" Y; ~) _) O
6 b" s5 i/ ~& N, K3 |
" O* L" G& O4 L: s1 H) A
  f$ a: Q9 ^+ \; t" h! [; t; Family                             ; Cyclone II                                    ;6 t* n  j- m/ V4 M3 [" E
! x2 T$ R& Y8 p; ^- R6 C& H
; Device                             ; EP2C8Q208C8                                 ;6 R  B' T' V3 [0 x2 C7 k' q0 A
4 G; C+ _$ S* J* ]; w
; TimingModels                      ; Final                                           ;
6 n, u7 X% Q6 |# ?9 `" U9 Z, z" p7 ^& U" y2 E( X2 U$ ]1 [
; Total logicelements               ; 9 / 8,256 ( <1 % )                     ;6 q( F, O1 J0 s0 b/ W) O4 ^

* i, _8 \5 |- h/ H) D  g; h; e+ s;     Total combinational functions  ; 9 / 8,256 ( < 1 % )           ;
4 g3 c+ Z3 A# o. y. Z9 n* }, Z+ m  j" D& x" S2 Y9 t
;     Dedicated logic registers      ; 5 / 8,256 ( < 1 % )               ;, x: I( T' S9 `2 M" b, _1 e0 s
7 t* Z9 n+ a$ [* \: `
; Totalregisters                    ; 5                                              ;4 s4 O( V. b$ G$ K! K+ o7 n
! D: ?6 c( W8 q! w/ l* n3 A, c7 {
; Total pins                         ; 7 / 138 ( 5 % )                                ;
1 A" @+ a+ Q( ]# f- s& r* \7 ]7 y/ T' A& D# W0 g
; Total virtualpins                 ; 0                                              ;- d# `: O, a) h2 i+ m% |6 l0 a, s+ l
7 K3 i$ [  t5 Y
; Total memorybits                  ; 0 / 165,888 ( 0 %)                    ;. `3 C* N8 W; Q- B  |

2 z& ~" ?+ y, L2 Z3 j; EmbeddedMultiplier 9-bit elements ; 0 / 36 ( 0 % )              ;
1 ^6 S* K  Q2 [2 L- Y/ X4 V1 a$ h8 g" O0 m# i
RTL图如下:3 `$ s: K* l: v! F  g" h8 o
0 u( G  w4 @; `. H8 O& L: Z

* C% Z4 ~; q/ N6 L; g+ @' U第二种写法:
2 [" U; G* z5 ?7 C% P2 @+ p: V/ c8 o, S- w" m" `* H  K
module   count_debug        (
0 H  `( L, Y2 H4 P/ }, {$ @7 h
" u  s' i" ?0 x2 V: h7 e                                      clk,
& U/ b1 ?/ V! p
5 U4 Q" q, N' K8 E                                   rst_n,4 k9 ^: l/ G, m& @" z5 s# o0 P+ g( W

  \. i/ J' O/ m: H5 y7 N                                         dout
, ~, w; j& x, y2 k0 I4 i
) o& z4 g8 F! J                                     );8 J- w6 S3 _$ P" I" h) k: I
2 L" H8 }; n* T$ }: E
- J' i6 s) w$ Y% q) T& h
" {: a4 Z4 G- v1 B) s' j* v3 R
input                    clk;! ?/ V6 ^0 t8 V" R4 P
+ a5 ], E- Q0 [+ y' Z
input                    rst_n;7 R" K# _, B$ H
; t! A' ~9 y( b& q
output         [4:0]  dout;
1 B* u: w; j0 ~1 d7 Q3 n" ?9 l: ^) G% R" P/ ~  {' d+ T" \
reg              [4:0]  cnt;
. D! D+ v0 `1 T; m" A
8 u' s$ V. C1 @& J3 \7 V+ i( T* @always @(posedgeclk or negedge rst_n) begin
! }4 B2 ]$ R( Y" G6 Y
/ p9 u: ^, `# g7 ?# x9 y" Q         if(rst_n == 1'b0) begin: ^! B' D7 P- a1 T
* H$ V7 `6 h. U* X3 Y2 E: S
                   cnt <= {5{1'b0}};+ c- A" x8 ~0 t- L: o% r
7 g, n) ?: G, o1 T" D$ P
         end else if(cnt < 5'd24)begin
9 I$ T, Y$ H  \9 ~* E+ _, c& D# y" e& ]: J8 V, t1 v& f- R
                   cnt <= cnt + 1'b1;
8 `$ o* E9 g0 Y7 ^3 n
' M* W5 G  P5 }: R6 s" I: s( m! w         end else begin% x9 d! k! T0 \" R1 ], H

) ^: u7 p: L2 a4 ?" W                   cnt <= {5{1'b0}};2 h( e7 i" r  X

6 D7 K8 |, u8 [( ?3 q1 [% m         end
3 t5 ~/ y' @: h0 V) A2 V  ?
; E" B9 H7 r! ^% e  Cend
& f$ s* _% Z6 L. x, I. c1 n: j+ y) ~3 r) H8 X( N3 R
assign                  dout = cnt;
, M7 I4 [& Z* K* l
8 L* _4 T; p, n! rendmodule
, j( p/ X0 J+ @7 C7 {5 {0 z' x" p4 ?- O' A
消耗的逻辑单元:
, x4 Q* y& A: e! R4 I0 g7 K; x, }
; Family                             ; Cyclone II                                    ;
5 M" b" v9 L6 X1 Z$ C: a# Z0 l$ ?/ H: U$ {6 ^' L
; Device                             ; EP2C8Q208C8                                 ;6 _- h( i" y7 S2 ?& E8 J

" o$ s9 ~4 n# {# x4 j; TimingModels                      ; Final                                           ;6 R* }* C$ ]& Z. q7 @/ F
7 W0 k& V1 z) k+ p5 w, h
; Met timingrequirements            ; Yes                                         ;
/ F9 w; g+ b6 C! ~5 j4 i- C. H* a
- @- s3 Q, \: {- d( U4 n' H; Total logicelements               ; 6 / 8,256 ( <1 % )                      ;
& e! j8 p6 A% u! m; F4 c2 }5 u) B- J9 E
;     Total combinational functions  ; 6 / 8,256 ( < 1 % )            ;
. P" X' N6 n9 V; Z6 g. [0 O
0 E) k: t& i6 m) w9 C;     Dedicated logic registers      ; 5 / 8,256 ( < 1 % )                ;$ n: q/ M9 g4 W$ P' i

" P  x6 A: e3 y; ?8 V' O' G; Totalregisters                    ; 5                                                ;7 ]- Z# X1 h" j  [/ q1 y
" D, s1 q' M! T* D! ~! S; Q4 m( ?
; Total pins                         ; 7 / 138 ( 5 % )                                  ;0 f  L- V3 u7 W! ]0 {* i
* H7 K- a% s- s: V3 G
; Total virtualpins                 ; 0                                                ;
, _( t' ?/ d; G! I' I% r
  D; A( F" x; W! z! ]% r6 L; Total memorybits                  ; 0 / 165,888 ( 0 %)                       ;' f1 q4 z) S0 s' [  R, M- a1 s

4 G" W( ?3 }6 j# d" S7 r6 D; EmbeddedMultiplier 9-bit elements ; 0 / 36 ( 0 % )                 ;* H8 x# {0 Y# C1 J+ Y! G
% _. Y4 D" {' c4 M
$ s) r* p; ]* b8 N
RTL图如下:. r* e! o! ~( R" i* Z2 D! m! I  {1 i

4 e3 G* z' P. Z' B/ z* _$ z 3 ?4 C& V* A* X* [8 v3 k
( J* N* b2 v. y, z  }0 [2 T
第一种写法比第二种写法多耗了3个逻辑单元。# q5 R! K9 R; w9 k/ J
; J# }  H9 o& z3 K! k  Y
从上面的逻辑单元和RTL图对比,在用计数器实现相同的功能时,可以看出  ==  COUNT 消耗的逻辑单元比   <   COUNT  消耗的逻辑单元要多。
" V" V! j6 C/ W0 \# `+ l; \
2 O& f; Z% n6 L8 }, p0 T% B! b这只是从例子上看出来的,那具体其他情况是不是,就不知道了。目前我在学习中,  c$ E/ Z0 A( k5 [6 a" A
& M- w  ]7 t, x& }1 C
以上结论仅供参考。
+ b1 ]- D  u) Y  x' S& c& ]; i: S. e7 |/ D& g" Y$ B8 r

6 {2 Y6 a" y: g9 g仿真波形如下:( j9 A' ~+ S4 q: _9 x! }
0 v/ h, K. S3 F

8 w& n) v8 _& Y  M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 18:29 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表