Chip123 科技應用創新平台

標題: verilog clock generator question [打印本頁]

作者: jyunwei    時間: 2013-10-29 04:14 PM
標題: verilog clock generator question
Hi ; O6 d7 a# N1 M6 @; s
% V8 ^% I" F) \1 c2 {" \
My clock generator is as follow. P6 `; O% g  b1 S' }

5 Q/ k  ^) g" p! U% k$ D`timescale 1ns/10ps
$ C  J1 T3 }8 N
/ f. T. Z. A7 M6 ]/ M7 k`define period 15
$ o0 h  l- B. F5 f' Y7 A6 a' O4 X8 c. f# f# C
module test();& r1 V& {$ g$ j# g7 B) G: {. D
reg clk;
+ h# U% W+ ~$ S% L* w# v3 D2 [) |; r8 h2 U* r* G$ D
initial begin
! {9 b' ~3 G3 |; B! ^- T& F' ?9 u5 Wclk = 0;8 F( \: |& }8 E' Y# E- L4 Y
forever #(`period/2) clk = ~clk;
' Q5 ~: u2 T- t' c1 O/ Jend1 q( a7 T, h  P- W
2 `6 |# T' t3 n2 d: F  ?+ C

/ q- J6 S3 K7 T) L+ ZBut i check the waveform the clock period is always 14ns." }" d9 n% A" h' B1 D' i

5 G" G0 g! P/ h8 d5 U$ u2 o# }4 [# \5 ?% BCould anyone help me the question ?
2 v& L( M. r9 ~+ _( \2 x
# M$ B# O9 [7 R6 m; ?6 U: nThanks: r( ~+ a& y$ n0 y  |
2 q0 D1 {8 _+ D. @' [3 \1 k
endmodule
作者: card_4_girt    時間: 2013-11-16 01:04 PM
本帖最後由 card_4_girt 於 2013-11-16 01:21 PM 編輯 + q% {! ^  _/ A$ ?1 D- B/ z

8 v' w4 Z: |, N& U# d; f9 [7 S4 Tverilog好像不能這麼做
4 Y7 R3 Y& K* K  U- @3 Z# [因為你的period = 15- g" b& A% \, ?' j0 x( u# }8 Y" J4 k
當使用period/2時,他也只能取最接近整數
& T& w! Q% c2 r' v9 P所以就會造成你說的這個現象(period/2 = 7而不是7.5)( J$ p. v" A5 H5 u; |

& V+ A- R3 a$ v% _/ D網路上是有人做過週期2N+1的波形
% L2 B. M6 o6 B& u建議你先去爬文看看
- [) E6 b+ U: h1 z這種半週期N+1/2因為含有半整數1/2的部分,要事先做處理/ Y( T1 r; @" V1 X& Q) m; y* g1 l

5 Q( V% v9 ~# ~+ M3 t% \或是就乾脆改程period=14也比較簡單) s( }5 x+ o9 x+ h8 V! J5 Q

; M5 n' j' o5 L8 n9 n不知大大有何理由一定要讓period=15不可?
作者: card_4_girt    時間: 2013-11-16 03:06 PM
抱歉!
- q0 D; }/ n5 `' P. w+ Q! _; W我好像誤解了你的問題) a/ X4 x" J& f1 {* c$ U) Z& ~, N
真正原因應該是x/2的分母是整數,所以結果也會是個整數( g$ N) S0 o5 c) w4 }
剛跑個例子試過' q" I9 [( G5 H
也許應該要改成
4 Z. x8 p! a/ I: _& }0 m+ N) ?forever #(period/2.0) clk = ~clk;
+ q; I; `% K; z+ ]' [9 L6 y' j
# P' m; b$ K) m0 N8 H8 F8 r6 J$ Mforever #(0.5*period) clk = ~clk;# A+ W+ \, _$ Y5 C& |- S: k

: |& D) ~% e9 d" f) @不過精準度應該調到100ps就可以了,不用10ps
0 |0 @  A) b) w) n. h, r2 b' C也就是 `timescale 1ns/100ps5 V* I) E+ d0 k9 S. U" a( J

, ]* H9 t' K8 W7 q如果還是沒辦法解決,就去找看看怎麼定義半整數,或是就乾脆改成period/2是整數的格式




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2