国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

異步復位與同步復位的綜合后電路圖講解

454398 ? 來源:博客園 ? 作者: IC_learner ? 2020-11-14 11:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這里來記錄一下相似代碼之間的不同差異,比如同步復位與異步復位觸發器的對比,上升沿復位和下降沿復位的對比等等。這里主要使用ISE的綜合引擎。直接附上代碼和綜合后電路圖,有些會有部分講解。

一、異步復位與同步復位

我在復位電路里面講解了同步復位和異步復位的區別,這里就不詳細介紹了,鏈接如下:http://www.cnblogs.com/IClearner/p/6683100.html

(1)異步復位

異步復位的代碼如下所示:

module DFF1(
  input clk,
  input rst_n,
  input d,
  output reg q
);

always@(posedge clk or negedge rst_n)
  if(!rst_n)
    q <= 0; //異步清 0,低電平有效
  else
    q <= d;

endmodule

綜合得到的電路圖如下所示:

可以看到使用了一個反相器單元和一個觸發器單元;從代碼中我們可以推斷出,這是一個高電平有效的、異步復位觸發器。

(2)同步復位

同步復位觸發器代碼如下所示,注意黑體部分

module DFF2(
  input clk,
  input rst_n,
  input d,
  output reg q
);

always@(posedge clk )//注意這里有所不同
  if(!rst_n)
    q <= 0; //同步清 0,低電平有效
  else
    q <= d;

endmodule

綜合得到的電路如下所示:

我們可以看到,也是由一個反向器單元和一個觸發器單元構成,注意,這里的觸發器跟上面的觸發器顯然不是同一個類型的觸發器,管腳名稱改變了;結合代碼我們可以知道,這個觸發器是高電平觸發、同步復位的觸發器(由于是輸入信號是低電平有效,所以加了個反相器)。

二、不同電平之間的復位差異

(1)高電平觸發的異步復位VS低電平觸發的異步復位

①高電平觸發的異步復位(異步置位)

綜合得到的電路如下所示:

根據代碼,容易推斷得出這是一個高電平觸發、異步復位的觸發器(或者叫異步置位),這也與前面的內容相符合(高電平觸發復位,所以不用加反相器)。

②低電平觸發的異步復位

代碼和電路跟 一(1)的代碼和電路相同,這里不進行重述。

(2)高電平觸發的同步復位VS低電平觸發的同步復位

①高電平觸發的同步復位

代碼如下所示:

 1 module DFF4(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 
 8 always@(posedge clk )
 9   if(rst_r)
10     q <= 0; 
11   else
12     q <= d;
13 
14 endmodule

綜合得到的電路如下所示:

可以知道,這是一個高電平有效、同步復位的觸發器單元。

②低電平觸發的同步復位

代碼和電路同一(2),這里不進行重述

三、阻塞賦值和非阻塞賦值

(1)阻塞賦值綜合的觸發器

代碼如下所示,這里為了使用高電平觸發的觸發器單元,寫出高電平復位:

 1 module DFF_chain(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 reg reg_m ;
 8 always @(posedge clk )//high level reset,synchronization
 9   if(rst_r)begin
10         reg_m = 0;//block
11        q = 0; 
12   end   else begin
13         reg_m = d;
14         q = reg_m ;
15   end
16 endmodule

綜合得到的電路如下所示:

可以看到,綜合得到只有一個觸發器,中間的觸發器變量reg_m被優化掉了,只剩下q這個觸發器。

(2)換個順序的非阻塞賦值的觸發器

把后面的這兩個語句對調一下,同時把中間的變量改個名字,改成reg_block(這里改名字只是為了區分后面的非阻塞賦值的情況)

即要綜合的代碼如下所示:

 1 module DFF_chain(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 reg reg_block ;
 8 always @(posedge clk )//high level reset,synchronization
 9   if(rst_r)begin//block
10         reg_block = 0;
11        q = 0; 
12   end   else begin //here has changed
13         q = reg_block ;
14         reg_block = d;        
15   end
16 endmodule

綜合得到的電路如下所示:

可以看到,調換順序之后,得到了我們我們想要的觸發器鏈。

結論:描述時序邏輯使用阻塞賦值可能得到正確的結果,也可以得到不正確的結果,因此時序邏輯不建議使用阻塞賦值。

(3)非阻塞賦值綜合的觸發器

代碼如下所示:

 1 module DFF_chain(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 reg reg_m ;
 8 always @(posedge clk )//high level reset,synchronization
 9   if(rst_r)begin
10         reg_m <= 0;//non block 
11        q <= 0; 
12   end   else begin
13         reg_m <= d;
14         q <= reg_m ;
15   end
16 endmodule

綜合得到的電路如下所示:

從電路圖中可以看到,綜合得到了兩個觸發器,中間的觸發器reg_m被保留下來了,達到了我們預想中的觸發器鏈。

(4)換個順序后的非阻塞賦值

跟前面的阻塞賦值一樣,我們換一下順序,代碼如下所示:

 1 module DFF_chain(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 reg reg_nonblock ;
 8 always @(posedge clk )//high level reset,synchronization
 9   if(rst_r)begin//non block
10         reg_nonblock <= 0;
11        q <= 0; 
12   end   else begin
13         q <= reg_nonblock ;
14         reg_nonblock <= d;        
15   end
16 endmodule

綜合得到的電路如下所示:

從電路中可以看到,即使調換了順序,電路還是我們需要的觸發器鏈。

結論:描述時序邏輯,使用非阻塞賦值可以得到正確的結果,因此時序邏輯推薦使用非阻塞賦值

(5)描述組合邏輯電路時的阻塞賦值和非阻塞賦值

阻塞賦值描述組合邏輯(加法器),代碼如下所示:

 1 module Adder(
 2   input a,
 3   input b,
 4   input c,
 5   output reg q
 6 );
 7 reg sum_block ;
 8 always @(* )
 9    begin
10         sum_block = a + b  ;
11         q = sum_block + c;        
12    end
13 endmodule

綜合得到電路如下所示:

綜合得到的電路是一個加法器。

我們改成非阻塞賦值看看,代碼如下所示:

 1 module Adder(
 2   input a,
 3   input b,
 4   input c,
 5   output reg q
 6 );
 7 reg sum_block ;
 8 always @(* )
 9    begin
10         sum_block <= a + b  ;
11         q <= sum_block + c;        
12    end
13 endmodule

綜合得到的電路:

綜合得到的電路也是一個加法器。

因此可以冒險地得到一個結論,無論是阻塞賦值還是非阻塞賦值,都可以描述組合邏輯,但是一般情況下,我們推薦使用阻塞賦值,一方面是對仿真有用,另一方面是區別于描述時序邏輯的非阻塞賦值。

最后我嘗試著在同一個塊中使用阻塞賦值和非阻塞賦值,ISE的綜合器報錯。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 觸發器
    +關注

    關注

    14

    文章

    2056

    瀏覽量

    63397
  • 同步復位
    +關注

    關注

    0

    文章

    27

    瀏覽量

    10984
  • 異步復位
    +關注

    關注

    0

    文章

    47

    瀏覽量

    13684
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    探索DS1811:經濟高效的電源監控復位芯片

    方面表現出色,能為我們的設計帶來諸多便利。 文件下載: DS1811.pdf 一、DS1811的特性亮點 1. 自動重啟與復位保持 DS1811能夠在電源故障自動重啟微處理器,并且在 (V_{CC}) 恢復到正常范圍,會保持
    的頭像 發表于 02-27 16:20 ?116次閱讀

    MAX6467/MAX6468:微處理器監控復位電路新選擇

    MAX6467/MAX6468:微處理器監控復位電路新選擇 在電子設備的設計中,微處理器的穩定運行至關重要,而監控復位電路則是保障其穩定的關鍵組件。今天就來和大家詳細介紹一下Analo
    的頭像 發表于 02-27 15:05 ?113次閱讀

    MAX6443–MAX6452:具備長手動復位設置周期的微處理器復位電路

    MAX6443–MAX6452:具備長手動復位設置周期的微處理器復位電路 在電子設備的設計中,微處理器復位電路起著至關重要的作用,它能確保設
    的頭像 發表于 02-27 14:45 ?88次閱讀

    深入剖析ADPL63164:微處理器復位電路的理想之選

    深入剖析ADPL63164:微處理器復位電路的理想之選 在微處理器系統設計中,復位電路和看門狗定時器起著至關重要的作用,它們能確保系統在各種異常情況下穩定運行。今天,我們就來深入剖析A
    的頭像 發表于 02-26 16:00 ?65次閱讀

    MAX6412 - MAX6420:低功耗單/雙電壓μP復位電路的深度剖析

    MAX6412 - MAX6420:低功耗單/雙電壓μP復位電路的深度剖析 在電子設計領域,微處理器(μP)的穩定運行至關重要,而復位電路則是保障其穩定的關鍵環節。今天,我們就來深入探
    的頭像 發表于 01-16 17:25 ?870次閱讀

    工程師必看:MAX6443–MAX6452 μP復位電路深度解析

    工程師必看:MAX6443–MAX6452 μP復位電路深度解析 在電子設備的設計中,微處理器(μP)的復位電路至關重要,它能確保系統在各種情況下都能穩定、可靠地運行。今天我們就來深入
    的頭像 發表于 01-13 17:30 ?636次閱讀

    如何用外部復位電路對MCU系列芯片進行復位?

    怎么樣用外部復位電路對MCU系列芯片進行復位
    發表于 01-12 09:05

    用于穩定電源設計的復位IC應用實例

    現代電子設備正面臨電壓波動、浪涌電壓以及輸入電源不穩定等問題。如果缺乏適當的電壓監測與復位保護功能,系統可能會出現誤動作、異常復位,甚至導致硬件損壞。
    的頭像 發表于 12-08 09:41 ?645次閱讀
    用于穩定電源設計的<b class='flag-5'>復位</b>IC應用實例

    GraniStudio:軸復位例程

    1.文件運行 導入工程 雙擊運行桌面GraniStudio.exe。 通過引導界面導入軸復位例程,點擊導入按鈕。 打開軸復位運動例程所在路徑,選中軸復位運動.gsp文件,點擊打開,完成導入。 2.
    的頭像 發表于 08-22 16:05 ?664次閱讀
    GraniStudio:軸<b class='flag-5'>復位</b>例程

    GraniStudio零代碼平臺軸復位算子支持多少個軸同時復位,有哪些回零模式?

    GraniStudio平臺在軸復位的功能上未對同時復位的軸數進行硬性限制,理論上支持任意數量軸同步復位,需要考慮的是在做多軸同步
    的頭像 發表于 07-07 18:02 ?662次閱讀
    GraniStudio零代碼平臺軸<b class='flag-5'>復位</b>算子支持多少個軸同時<b class='flag-5'>復位</b>,有哪些回零模式?

    復位電路的核心功能和主要類型

    復位電路(Reset Circuit) 是數字系統中的關鍵功能模塊,用于確保設備在上電、電壓波動或異常狀態下可靠復位至初始狀態。其設計直接影響系統的穩定性和抗干擾能力。
    的頭像 發表于 06-30 14:24 ?1480次閱讀
    <b class='flag-5'>復位</b><b class='flag-5'>電路</b>的核心功能和主要類型

    單片機各種復位電路原理

    使用哪種類型的單片機,總要涉及到單片機復位電路的設計。而單片機復位電路設計的好壞,直接影響到整個系統工作的可靠性。許多用戶在設計完單片機系統,并在實驗室調試成功
    發表于 05-30 16:53

    《電子懶人的基礎硬件電路圖講解

    包含了簡單的,基礎的單元電路圖。積累這些基礎的電路圖,對分析一個復雜的電路很有幫助。因為一個復雜的電路圖可以按照功能來劃分成不同的模塊,再對模塊進行分解成不同的單元
    發表于 04-24 16:40

    LM3724系列 低功率電壓監控和復位IC,帶手動復位功能數據手冊

    LM3722/LM3723/LM3724 微處理器監控電路可監控電源 在微處理器和數字系統中。它們在上電期間為微處理器提供復位, 掉電、掉電條件和手動復位。 LM3722/LM3723
    的頭像 發表于 04-12 11:11 ?1028次閱讀
    LM3724系列 低功率電壓監控和<b class='flag-5'>復位</b>IC,帶手動<b class='flag-5'>復位</b>功能數據手冊

    復位電路的作用、控制方式和類型

    復位電路也是數字邏輯設計中常用的電路,不管是 FPGA 還是 ASIC 設計,都會涉及到復位,一般 FPGA或者 ASIC 的復位需要我們自
    的頭像 發表于 03-12 13:54 ?3955次閱讀
    <b class='flag-5'>復位</b><b class='flag-5'>電路</b>的作用、控制方式和類型