verilog中if與case語句必須完整,即if要加上else,case后要加上default語句,以防止鎖存器的發(fā)生,接下來就來說說其中原因。
鎖存器與觸發(fā)器最大的區(qū)別在于,鎖存器是電平觸發(fā),而觸發(fā)器是邊沿觸發(fā)。鎖存器在不鎖存數(shù)據(jù)時(shí),輸出隨輸入變化;但一旦數(shù)據(jù)鎖存時(shí),輸入對(duì)輸出不產(chǎn)生任何影響。
為什么語句的不完整會(huì)導(dǎo)致鎖存器的產(chǎn)生?

解:
老阮 (2014-10-21 19:30:10)
1、時(shí)序電路,生成觸發(fā)器,觸發(fā)器是有使能端的,使能端無效時(shí)數(shù)據(jù)不變,這是觸發(fā)器的特性。
2、組合邏輯,由于數(shù)據(jù)要保持不變,只能通過鎖存器來保存。
樓主位的第二個(gè)代碼就是在enable為低時(shí),數(shù)據(jù)不變,因此要生成鎖存器。 第一個(gè)代碼,由于是時(shí)序邏輯,生成的觸發(fā)器在enable無效時(shí)就可以保存數(shù)據(jù)。跟鎖存器無關(guān)。
walkman416
個(gè)人理解: 所謂生成latch其實(shí)是針對(duì)使用always語句描述一個(gè)組合邏輯而言,因?yàn)槿绻枋鰰r(shí)序邏輯總是使用時(shí)鐘或者時(shí)鐘+復(fù)位作為敏感列表?xiàng)l件,所生成的電路總是組合邏輯+DFF;如果是描述組合邏輯,敏感列表中必然沒有時(shí)鐘復(fù)位,而是組合邏輯的輸入信號(hào)。在FPGA設(shè)計(jì),避免使用latch,不利于時(shí)序分析和仿真。 樓上有提到latch比DFF省資源, 這個(gè)在FPGA設(shè)計(jì)中其實(shí)還好, 因?yàn)樵贔PGA中DFF就是一個(gè)專用的硬件資源,并且數(shù)量也比較多。
使用always描述組合邏輯時(shí),好的習(xí)慣是使用always @(*)作為敏感列表, 并且需要檢查每個(gè)分支都有明確的賦值,從而避免生成latch.
黎釋注
我是這么理解的,在一份資料看的,
時(shí)序電路=組合邏輯電路+儲(chǔ)存電路;
儲(chǔ)存電路有兩個(gè):鎖存器(latch)和觸發(fā)器;
邊沿觸發(fā)產(chǎn)生觸發(fā)器,
電平觸發(fā)產(chǎn)生鎖存器,
多個(gè)觸發(fā)器組成寄存器,
當(dāng)描述的是時(shí)序電路,寄存器變量對(duì)應(yīng)的寄存器,
描述的是完整的組合邏輯電路,對(duì)應(yīng)為硬件連線,
當(dāng)描述的是不完整組合邏輯,則寄存器對(duì)應(yīng)的是鎖存
總結(jié):
1,存儲(chǔ)單元按照觸發(fā)的方式分為電平觸發(fā)和邊沿觸發(fā),電平觸發(fā)的為鎖存器,邊沿觸發(fā)的觸發(fā)器。 2,對(duì)于if,case的完整性,@老阮已經(jīng)說的很清楚了,在FPGA建議使用觸發(fā)器。
-
存儲(chǔ)單元
+關(guān)注
關(guān)注
1文章
66瀏覽量
16685 -
時(shí)序電路
+關(guān)注
關(guān)注
1文章
114瀏覽量
22186 -
鎖存器
+關(guān)注
關(guān)注
8文章
952瀏覽量
43846 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2051瀏覽量
63043
發(fā)布評(píng)論請(qǐng)先 登錄
BMP解碼顯示圖片不完整
怎么實(shí)現(xiàn)二進(jìn)制計(jì)數(shù)器?
QT解決串口數(shù)據(jù)接收不完整問題
怎樣去解決stm32串口DMA數(shù)據(jù)接收不完整的問題呢
verilog中if與case語句不完整產(chǎn)生鎖存器的原因分析
不完整地址轉(zhuǎn)發(fā)表的拓?fù)浒l(fā)現(xiàn)方法
stm32串口DMA數(shù)據(jù)接收不完整問題說明
APM32F091RCT6_SPI_從機(jī)接收數(shù)據(jù)不完整
淺談C語言中的三種不完整類型
如何獲取ChatGPT回答不完整的內(nèi)容
C語言中的不完整類型是什么
Simulink模型測(cè)試典型問題分享-接口定義不完整

為什么語句的不完整會(huì)導(dǎo)致鎖存器的產(chǎn)生?
評(píng)論