作者zxvc (修行)
看板Electronics
標題Re: [問題] 關於verilog signal&varieble問題
時間Thu Apr 16 05:46:42 2009
※ 引述《Acme ( )》之銘言:
: ※ 引述《sasako (只想把你留在心中)》之銘言:
: : 我這樣分,是希望在coding style大家能保持良好的習慣,
: : 把sequential和combinational作分開,這樣在debug的時候
: : 會比較容易..
: : 至於你上面寫的這個例子,個人認為就是一個bad example,
: : c可以知道會合出DFF,且會是一個簡單的conuter..
: : 至於d他是一個combinational的電路,你將sequential和combinational
: : 混在同一個always底下,的確還是可以合成,只是當在寫大電路時,
: 基本上 d 並不是 combinational 電路
: 而是一個 有 clk 的 DFF,因為有寫了 posedge clock
: 不信的話,您可以合成看看....一定會有 clk
: combinational ckt 與 sequential ckt 分開,是很好的 coding style
: 但是,有時候,並不一定會比較好閱讀
: 下面這個電路,其實兩個還是合在一起
: ///////////
: always @( posedge clk or negedge rst)
: if(!rst) test <= 0 ;
: else test <= test +1 ;
: ///////////
: 下面這個,才真的分開
: ///////////
: always @(posedge clk or negedge rst)
: if(!rst) test <= 0;
: else test <= test_pre ;
: assign test_pre = test +1 ;
: ////////////
: 強制分開的話,我覺得對新人很好
: 因為可以避免有人把他當成 c 語言來寫....
: 如果心中先有電路,再把他描述出來,(或是有先紙上作業)
: 基本上,會有多少DFF,心中早就知道了
: 而且,combitional ckt 該怎樣,其實也早就知道了...
: 所以這兩個分開的寫法,會比較像是 : 心中有電路 --> coding
我覺得心中有電路,哪一種寫法都沒差。
即使是想要用上面第二種分開的寫法,
初學者也不一定都分得清哪裡是combinational/sequential circuits,
三不五時還是來給你個combinational+sequential circuits。
如果都能分別哪些是combinational/sequential circuits,
我想用一個always寫也沒差。
用一個always寫的好處在於可以避免Verilog race condition
(simulation-synthesis mismatch)、方便。
我目前只是個學生,沒去過業界。
如果說業界真得就是習慣combinational從sequential circuits分離的寫法,
我也認了。
: : 這就會造成debug上的困擾,至少我在初學者的時候,我曾經也是這樣
: : ,後來當程式寫得越多越大時,就會發現這樣的style實在是不好的...
: : 或許剛開始大家可能為了交作業,只想function對就行了,但往後
: : 程式開始複雜時,學長、老師的要求就會是整齊,把每個訊號分清楚,
: : 加上註解,這樣以後再回頭看,自己還記得當初在寫什麼,交接學弟
: : 時,至少不會讓人閱讀起來很痛苦...
: : 而回到原作者一開始的問題,我覺得可以去參考一下CIC design compiler
: : 那本教科書,他甚至舉完例子,還畫出了合成的示意圖,非常容易瞭解..
: : 而坊間的書多半都是解釋"<=" 就是在同時間一起動作,"="則是有次序的
: : 動作,雖然是有次序,但在Wave上是看不出來,不過我的經驗是有時候寫
: : a=a+1; 與 b=a+1; 結果會是不一樣的...
: : b=a+1; a=a+1;
: : 我相信這每個人都會遲早會碰到..一開始會覺得很奇怪,不過等遇到時就
: : 會開始注意,只能說debug真的是在累積錯誤的經驗...呵呵
--
西方三聖:
http://p8.p.pixnet.net/albums/userpics/8/3/553683/1193661731.jpg
《佛說阿彌陀經》
http://web.cc.ncu.edu.tw/~93501025/amtf.doc
十一面觀音咒:
http://file.buda.idv.tw/music/DBZFY04.mp3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.220.219
推 pierreqq:你依ksmrt0123大提供那份文件的rule就沒錯了 04/16 09:15
→ pierreqq:你們之間其實有共識,感覺是討論上的誤會... 哈哈 04/16 09:16
→ zxvc:是啊,我有看k大那分文件。Guideline 12有說如何把 04/16 10:12
→ zxvc:combinational circuits從sequential circuits分離出來,但它 04/16 10:13
→ zxvc:沒說一定要這樣做才是一個good style。它還說有時寫在一起很 04/16 10:14
→ zxvc:方便。那分文件也說分開來寫會有Verilog race的問題。 04/16 10:15
推 pierreqq:嗯,你們倆的誤會就是這呀.. :D 沒強制限定哪種寫法的 04/16 10:25
→ pierreqq:避開上面說的bad coding style就好了 04/16 10:26