作者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
1F:推 pierreqq:你依ksmrt0123大提供那份文件的rule就没错了 04/16 09:15
2F:→ pierreqq:你们之间其实有共识,感觉是讨论上的误会... 哈哈 04/16 09:16
3F:→ zxvc:是啊,我有看k大那分文件。Guideline 12有说如何把 04/16 10:12
4F:→ zxvc:combinational circuits从sequential circuits分离出来,但它 04/16 10:13
5F:→ zxvc:没说一定要这样做才是一个good style。它还说有时写在一起很 04/16 10:14
6F:→ zxvc:方便。那分文件也说分开来写会有Verilog race的问题。 04/16 10:15
7F:推 pierreqq:嗯,你们俩的误会就是这呀.. :D 没强制限定哪种写法的 04/16 10:25
8F:→ pierreqq:避开上面说的bad coding style就好了 04/16 10:26