国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)

這篇具有很好參考價(jià)值的文章主要介紹了同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.同步和異步

  • 數(shù)字電路根據(jù)邏輯功能的不同特點(diǎn),可以分成兩大類:一類叫做組合邏輯電路,簡(jiǎn)稱組合電路或組合邏輯;另一類叫做時(shí)序邏輯電路,簡(jiǎn)稱時(shí)序電路或時(shí)序邏輯。

    • 如果數(shù)字電路滿足任意時(shí)刻的輸出僅僅取決于該時(shí)刻的輸入,那么該數(shù)字電路為組合邏輯電路。
    • 相反,如果數(shù)字電路任意時(shí)刻的輸出不僅取決于當(dāng)前時(shí)刻的輸入,而且還取決于數(shù)字電路原來(lái)的狀態(tài),那么該數(shù)字電路為時(shí)序邏輯電路
  • 這里和狀態(tài)機(jī)分類有點(diǎn)像,Moore型的輸出只與當(dāng)前狀態(tài)有關(guān),而Mealy型的輸出還與輸入相關(guān)


在Verilog中根據(jù)是否受同一個(gè)時(shí)鐘控制把電路分為兩類:同步時(shí)序電路和異步時(shí)序電路

  • 同步電路:

    • 電路中所有信號(hào)都受同一個(gè)時(shí)鐘控制的
    • 電路中有多個(gè)時(shí)鐘,但是其相位差是恒定的,也認(rèn)為是同步電路
    • 所有觸發(fā)器都在同一個(gè)時(shí)鐘控制下完成、所有觸發(fā)器的觸發(fā)方式(沿觸發(fā)/電平觸發(fā))和種類完全一致
  • 異步電路

    • 電路中有不受時(shí)鐘控制的信號(hào)
    • 電路中有多個(gè)時(shí)鐘,但是其相位差不是恒定的,是異步電路
  • 同步動(dòng)作:所有的信號(hào)都在一個(gè)時(shí)鐘下控制

  • 異步動(dòng)作:敏感信號(hào)列表中有不受時(shí)鐘控制的其他信號(hào),要遍歷clock信號(hào)和(reset)異步信號(hào),并且(reset)異步信號(hào)級(jí)別比clock信號(hào)高


2. 同步復(fù)位、異步復(fù)位、同步釋放

2.1 同步復(fù)位

  • 復(fù)位信號(hào)只在時(shí)鐘上升沿到來(lái)時(shí)才有效;
  • 能夠有效濾除高于時(shí)鐘頻率的毛刺;
  • 同步復(fù)位的優(yōu)點(diǎn)在于它只在時(shí)鐘信號(hào)clk的上升沿觸發(fā)進(jìn)行系統(tǒng)是否復(fù)位的判斷,這降低了亞穩(wěn)態(tài)出現(xiàn)的概率
  • 復(fù)位信號(hào)的有效時(shí)間必須大于時(shí)鐘周期才可以檢測(cè)到復(fù)位
  • 與異步復(fù)位相比,電路多使用一個(gè)選擇器,需要消耗更多的器件資源

2.1.1 Verilog code

module sync_reset(
  input      i_clk,
  input      i_rst_n,
  input      i_data,
  output reg o_data
);

always @(posedge i_clk)
  if(!i_rst_n)
    o_data <= 1'b0;
  else
    o_data <= i_data;
endmodule

2.1.2 Verdi waveform

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)


2.1.3 DC Synthesis

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)


2.2 異步復(fù)位

  • 無(wú)論時(shí)鐘有效沿是否有效,只要復(fù)位信號(hào)到來(lái),立即執(zhí)行復(fù)位操作
  • 復(fù)位信號(hào)釋放時(shí),如果不滿足時(shí)序要求,可能由復(fù)位引入亞穩(wěn)態(tài)
  • 采用異步復(fù)位的端口無(wú)需額外增加器件資源的消耗,直接利用觸發(fā)器的異步復(fù)位端,節(jié)省資源

2.2.1 Verilog code

module async_reset(
  input      i_clk,
  input      i_rst_n,
  input      i_data,
  output reg o_data
);

always @(posedge i_clk or negedge i_rst_n)
  if(!i_rst_n)
    o_data <= 1'b0;
  else
    o_data <= i_data;
endmodule

2.3 同步釋放(異步信號(hào)和CLK信號(hào)存在時(shí)序檢查、Recover time&Removel time)

  • 如果復(fù)位信號(hào)正好在時(shí)鐘信號(hào)的有效沿撤銷,這時(shí)候的輸出就是亞穩(wěn)態(tài)
  • 使用兩級(jí)觸發(fā)器同步釋放(留一個(gè)周期的裕量),大大減小亞穩(wěn)態(tài)出現(xiàn)的概率,萬(wàn)一出現(xiàn)亞穩(wěn)態(tài)只要在(周期T-Tsetup)這個(gè)時(shí)間恢復(fù)穩(wěn)定即可
  • 兩級(jí)觸發(fā)器同步后,第二級(jí)觸發(fā)器的輸出基本上是穩(wěn)定值。后續(xù)邏輯根據(jù)穩(wěn)定值,會(huì)有穩(wěn)定的行為。這就是追求的系統(tǒng)穩(wěn)定性。
  • 異步復(fù)位、同步釋放其最顯著特征是既保留了異步復(fù)位的功能,又避免了異步復(fù)位釋放時(shí)所面臨的recovery或者removal違例問(wèn)題

2.4 異步復(fù)位、同步釋放

2.4.1 Verilog code

module reset_gen (
   output rst_sync_n,
   input  clk, rst_async_n);

reg rst_s1, rst_s2;

always @(posedge clk, negedge rst_async_n)
   if (!rst_async_n) begin
      rst_s1 <= 1'b0;
      rst_s2 <= 1'b0;
      end
   else begin
      rst_s1 <= 1'b1;
      rst_s2 <= rst_s1;
      end
assign rst_sync_n = rst_s2;
endmodule

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)

2.4.2 Verdi waveform

  • 如上圖所示,低電平有效的異步復(fù)位信號(hào) rst_async_n 變?yōu)榈碗娖綍r(shí),將導(dǎo)致觸發(fā)器清零,使得連接至 rst_sync_n 的系統(tǒng)觸發(fā)器清零
    同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)
    同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)

  • 然后,當(dāng)rst_async_n解除復(fù)位(變?yōu)楦唠娖剑r(shí),第一個(gè)觸發(fā)器對(duì)輸入的 VCC 信號(hào)進(jìn)行同步輸出rst_s1為VCC,再經(jīng)過(guò)第二個(gè)觸發(fā)器同步后移除復(fù)位信號(hào)rst_sync_n
    同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)

  • 我們?cè)贕vim中更改了代碼,VCS編譯后,Verdi中還是舊的代碼,這時(shí)候在Verdi中進(jìn)行刷新(shift+L),新的代碼以及波形圖都會(huì)在Veridi中更新

  • 假設(shè)rst_async_nclk的上升沿時(shí)撤除,那么第一級(jí)觸發(fā)器處于亞穩(wěn)態(tài),但是由于兩級(jí)觸發(fā)器的緩沖作用,第二級(jí)觸發(fā)器的輸入為clk到來(lái)前第一級(jí)觸發(fā)器的輸出,即為低電平。因此,此時(shí)第二級(jí)觸發(fā)器的輸出一定是穩(wěn)定的低電平,方框左中觸發(fā)器仍然處于復(fù)位狀態(tài)。在下一個(gè)clk到來(lái)時(shí),第一級(jí)觸發(fā)器的輸出已經(jīng)是穩(wěn)定的高電平了,故rst_sync_n已經(jīng)是穩(wěn)定的高電平,此時(shí)復(fù)位釋放,也就是同步釋放。

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)


2.4.3 DC Synthesis

# DC tcl cmd
start_gui
set top_module_name "async_rst_syns_clr"
read_file -format verilog "./rtl/$top_module_name.v"
link
write -hier -f ddc -out "unmapped/$top_module_name.ddc"
#Constraints are not considered
compile_ultra
write -hier -f ddc -out "mapped/$top_module_name.ddc"
write_file -hier -f verilog -out "mapped/$top_module_name.gv"
#Makefile
dc:
	dc_shell-t -64bit -topo -f test.tcl

clean:
	rm -rf MY_DESIGN_LIB *.log *.svf *.swp ./mapped/* ./unmapped/*

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)


2.5 典型的異步復(fù)位同步釋放的verilog電路設(shè)計(jì)

同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-513509.html

  • 保證輸出s_rst_d1時(shí)穩(wěn)定的
module async_reset_sync_done(
  input      i_clk,
  input      i_rst_n,
  input      i_data,
  output reg o_data
);

reg s_rst_d0;
reg s_rst_d1;

always @(posedge i_clk or negedge i_rst_n)
  if(!i_rst_n)
    begin
      s_rst_d0 <= 1'b0;
      s_rst_d1 <= 1'b0;
    end
  else
    begin
      s_rst_d0 <= 1'b1;
      s_rst_d1 <= s_rst_d0;
    end

always @(posedge i_clk or negedge s_rst_d1)
  if(!s_rst_d1)
    o_data <= 1'b0;
  else
    o_data <= i_data;
endmodule

到了這里,關(guān)于同步和異步、同步復(fù)位、異步復(fù)位、同步釋放(Verilog、Verdi、DC綜合)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包