作者WizardRush (插很大)
看板Electronics
標題Re: [問題] veriog撰寫問題
時間Thu Aug 6 00:54:45 2009
事實上,我比較在意原PO本來的寫法為什麼有錯誤?
在我的想法中,只要將mod_n寫成DFF的形式,可以解
決原PO推文中的問題...
always(posedge) begin
if(reset)
mod_n <= 13'd2000 ;
else begin
if(state==s1) mod_n <= mod_n+13'd10;
if(state==s2) mod_n <= mod_n-13'd10;
end
end
對於latch的寫法,說真的我不會使用,之前有位朋友
跟我說,latch在成本上比DFF還要省..
但是在課程的訓練中,他們幾乎都教導我,在code一定
要避免latch的寫法,甚至在坊間的書也都有類似的講法..
可是當原PO提出了用latch方式,我還真是疑惑...
究竟latch在此能否使用,若是可以,又該如何描述...
而在此設計中,面積佔最大也就是這個mod_n 13 bits register..
所以latch若是真能取代,面積應該會小一些才是...
--
又賺了一篇..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.103.42
※ 編輯: WizardRush 來自: 220.135.103.42 (08/06 00:55)
1F:推 felghana:印象中上課老師是說 若是某個變數在某個case下沒被assign 08/06 01:12
2F:→ felghana:值 合成軟體會幫你加上latch 至於這樣好不好要看你的設計 08/06 01:12
3F:→ felghana:因為latch這種東西 容易讓電路不穩定 08/06 01:13
4F:→ felghana:其實我本來最想來問的是有沒有不加latch還能維持值的方法 08/06 01:16
5F:→ felghana:因為我猜 我的電路就是錯在那邊 08/06 01:16
6F:→ WizardRush:ㄏㄏ..latch說真的有很多種 印象中合成器好像下指令 08/06 01:21
7F:→ WizardRush:就可以取代 不過我也沒去查過 我是懶鬼.. 08/06 01:22
8F:推 bighead319:latch不是不能用,而是要很小心,除非你能很確定控制住 08/06 22:30
9F:→ bighead319:一切的行為,否則因為latch造成的bug很難抓,因此一般 08/06 22:31
10F:→ bighead319:不會鼓勵使用latch,尤其是初學者,大都會被禁止使用。 08/06 22:32
11F:→ WizardRush:那我想請教一下 假如想要學latch的使用方式 我該參考些 08/06 22:52
12F:→ WizardRush:什麼文件比較合適呢?可否給點建議..謝謝 08/06 22:53
13F:推 bighead319:你先去瞭解一下latch的行為吧,以及他的構造,這在一些 08/06 23:09
14F:→ bighead319:數位IC的書都會有,你就知道為啥latch要小心,以及為啥 08/06 23:10
15F:→ bighead319:latch比一般DFF小 08/06 23:11
16F:推 pow:重點是 你的硬體設計裡面如果原本沒有latch 為什麼要讓他合成 08/06 23:48
17F:→ pow:除非學硬體描述語言 不用知道硬體是什麼... 08/06 23:49
18F:→ WizardRush:因為latch若是可以取代DFF在我設計中的作用 我會想嘗試 08/07 00:19
19F:→ WizardRush:看看..畢竟我從來沒有想過如何使用latch 08/07 00:19
20F:→ WizardRush:數位IC的書 不好意思 可以的話 可以介紹一下 08/07 00:22
21F:→ WizardRush:因為坊間我只買過關於verilog的書 請問你指的是這一類 08/07 00:23
22F:→ WizardRush:的嗎?bighead板友 08/07 00:23
23F:→ WizardRush:重新溫習一下板上相關latch的文章 現在比較想瞭解 08/07 00:53
24F:→ WizardRush:在某些特定的時機(設計) 是否可以做取代..? 08/07 00:53
25F:→ WizardRush:或許改天寫寫程式自己測試一下吧...感謝各位先進 08/07 00:55
26F:推 bighead319:latch你用RTL去測沒有用,你要能保證做成真正電路後 08/07 13:56
27F:→ bighead319:因為delay造成的擾動所產生的誤觸發,你要能保證這行為 08/07 13:57
28F:→ WizardRush:若是我的post-sim正確 也沒有辦法證明tape-out後會正確 08/07 20:54
29F:→ WizardRush:嗎? 08/07 20:55
30F:推 pow:post-sim如果正確是因為glitch的寬度很小或者發生時機剛好 08/09 07:49
31F:→ pow:那很有可能tape-out之後 glitch寬度變大 或者時機(delay)變 08/09 07:49
32F:→ pow:造成有error發生 continuous system在digital domain通常 08/09 07:49
33F:→ pow:會有這方面的問題 這也就是clock會考慮jitter的原因 08/09 07:50