在FPGA設(shè)計中,我們遵循的原則之一是同步電路,即所有電路是在同一時鐘下同步地處理數(shù)據(jù)。這個概念可進一步展開,即不局限于同一時鐘,只要時鐘之間是同步關(guān)系(兩者之間有明確的相位延遲,例如同一個MMCM生成的時鐘),這是因為目前的芯片規(guī)模越來越大,設(shè)計越來越復(fù)雜,往往需要多個時鐘同時運算。
通常,我們說某個信號與指定時鐘同步,意味著這個信號是由該時鐘驅(qū)動的邏輯生成的,或者這個信號只有在時鐘有效沿(一般是上升沿有效)下才會被觸發(fā)。以復(fù)位信號為例,就有同步復(fù)位和異步復(fù)位之分。我們從HDL代碼角度看一下二者的區(qū)別。如下圖所示代碼,描述的是同步復(fù)位觸發(fā)器,左側(cè)為VHDL-2008版本的描述方式,右側(cè)為System Verilog版本的描述方式??梢钥吹矫舾凶兞苛斜恚ㄗ髠?cè)第15行,右側(cè)第8行)中只有時鐘clk,因此,進程中的狀態(tài)變化就依賴于時鐘的變化即時鐘有效沿。
我們再看看異步復(fù)位是如何描述的,如下圖所示。左側(cè)是VHDL-2008版本,右側(cè)是System Verilog版本??梢钥吹剑藭r敏感變量列表中除了時鐘clk之外還有復(fù)位信號rst。在VHDL版本中,可以明確地看到復(fù)位信號位于if條件分支,而時鐘有效沿位于elsif分支,優(yōu)先級低于復(fù)位信號。因此,這里只要復(fù)位有效,無論時鐘沿是否有效都會觸發(fā)操作。
進一步,我們從仿真角度看看這兩者的區(qū)別。同步復(fù)位觸發(fā)器的仿真結(jié)果如下圖所示??梢钥吹綇?fù)位信號只有在時鐘有效沿下才起作用。圖中第二個復(fù)位脈沖并沒有被時鐘有效沿采到,故不會導(dǎo)致觸發(fā)器復(fù)位。
異步復(fù)位觸發(fā)器仿真結(jié)果如下圖所示??梢钥吹降诙€復(fù)位脈沖盡管沒有在時鐘有效沿下,但仍促使觸發(fā)器復(fù)位。這正是異步的原理。
對比兩個仿真結(jié)果,我們可以看到同步復(fù)位的一個明顯的好處就是利用了時鐘的過濾功能,去除了復(fù)位信號上的毛刺,而異步復(fù)位下,如果復(fù)位信號有毛刺就會導(dǎo)致觸發(fā)器誤操作,這在狀態(tài)機電路中尤為嚴重,很有可能導(dǎo)致狀態(tài)機進入無效狀態(tài)。
編輯:lyn
-
仿真
+關(guān)注
關(guān)注
50文章
4083瀏覽量
133613 -
同步復(fù)位
+關(guān)注
關(guān)注
0文章
27瀏覽量
10720 -
異步復(fù)位
+關(guān)注
關(guān)注
0文章
47瀏覽量
13315
原文標題:同步復(fù)位與異步復(fù)位
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論