看板 Electronics 關於我們 聯絡資訊
※ 引述《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