有群友提問(wèn),下面的代碼為什么在DC里可以綜合成DFF,而在FPGA上卻綜合成了latch。
always@(posedgeclk,negedgerstn,negedgesetn) if(!rstn) a <= 1'b0; ??else?if(!setn) ????a?<=?1'b1; ??else ?? a <= a;
我們可以看到這段代碼有兩個(gè)特別之處:
同時(shí)有異步復(fù)位和異步置位
除了復(fù)位和置位,數(shù)據(jù)要保持
我們可以畫(huà)出這段代碼的邏輯圖,如下圖。這圖也就是DC綜合出來(lái)的結(jié)果。
那在FPGA上為什么會(huì)變成latch呢?有人說(shuō)FPGA平臺(tái)沒(méi)有l(wèi)atch,但quartus里確實(shí)報(bào)了生成latch的warning。我們來(lái)試著把電路等價(jià)變換,先把setn端簡(jiǎn)化掉:
我們看到上圖左邊dff的邏輯,當(dāng)rstn==0時(shí),dff輸出0,否則就保持。這不就是latch的邏輯嗎?整理出下圖:
由此可見(jiàn)FPGA平臺(tái)綜合成latch也是有可能的。
后來(lái)讓群友直接看看FPGA平臺(tái)綜合出來(lái)的電路圖,看看究竟是什么樣的電路。群友回復(fù)如下:
哎,真是神奇!時(shí)鐘都優(yōu)化沒(méi)了,直接用了一個(gè)帶復(fù)位和置位的latch。看了這個(gè)電路的邏輯,確實(shí)與一開(kāi)頭的RTL等價(jià)的,并且還不需要數(shù)據(jù)loop了,挺簡(jiǎn)潔的。
所以得出結(jié)論,F(xiàn)PGA平臺(tái)之所以與DC有差異,只是綜合策略或者說(shuō)是綜合引擎優(yōu)化算法的問(wèn)題。綜合結(jié)果都是可以用的。
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1643文章
21966瀏覽量
614151 -
時(shí)序電路
+關(guān)注
關(guān)注
1文章
114瀏覽量
21874 -
異步復(fù)位
+關(guān)注
關(guān)注
0文章
47瀏覽量
13471 -
dff
+關(guān)注
關(guān)注
0文章
26瀏覽量
3582
原文標(biāo)題:時(shí)序電路為什么綜合成了latch
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)字電路之時(shí)序電路

時(shí)序電路的分析與設(shè)計(jì)方法
什么是時(shí)序電路

基于FPGA技術(shù)的RS232接口時(shí)序電路設(shè)計(jì)方案
FPGA的設(shè)計(jì)主要是以時(shí)序電路為主嗎?
組合電路和時(shí)序電路的講解
時(shí)序電路基本組件及時(shí)序邏輯電路應(yīng)用實(shí)例

時(shí)序電路基本介紹

什么是時(shí)序電路?

什么是同步時(shí)序電路和異步時(shí)序電路,同步和異步電路的區(qū)別?

評(píng)論