同步,異步復位問題

1.同步復位的基本原理是,復位信號僅在時鐘的有效邊沿影響或重置觸發器的狀態。

復位的主要目標之一是使 ASIC 在仿真時進入已知狀態。

由于復位樹的扇出較大,復位信號相對于時鐘周期可能成為 “晚到信號”。即使復位信號會通過復位緩沖樹進行緩沖,但在復位信號到達本地邏輯后,限制其必須經過的邏輯數量仍是明智之舉。

module ctr8sr (

output reg [7:0] q,

output reg co,

input [7:0] d,

input ld, clk, rst_n);

always @(posedge clk)

if (!rst_n) {co,q} <= 9'b0; // sync reset

else if (ld) {co,q} <= d; // sync load

else {co,q} <= q + 1'b1; // sync increment

endmodule

同步復位代碼:

module sync_resetFFstyle (

output reg q,

input d, clk, rst_n);

always @(posedge clk)

if (!rst_n) q <= 1'b0;

else q <= d;

endmodule

同步復位存在的一個問題是,綜合工具難以輕易區分復位信號與其他數據信號。

同步復位優點:

1.同步復位邏輯在綜合時生成的觸發器通常更小,特別是當復位信號與生成 d 輸入的邏輯共同作用時。但在這種情況下,組合邏輯的門數會增加,因此總體門數節省可能并不顯著。

2.?

同步復位通常可確保電路 100% 同步。同步復位確保復位僅在時鐘有效邊沿發生。時鐘可過濾小的復位毛刺;然而,如果這些毛刺發生在時鐘有效邊沿附近,觸發器可能進入亞穩態。這與其他數據輸入沒有區別,任何違反建立時間要求的信號都可能導致亞穩態。

在某些設計中,復位信號必須由一組內部條件生成。對于這類設計,建議使用同步復位,因為它可以過濾時鐘之間邏輯方程產生的毛刺。

3.通過使用同步復位并在復位過程中使用預定數量的時鐘,復位緩沖樹中可以使用觸發器,有助于使緩沖樹的時序保持在一個時鐘周期內。

同步復位缺點:

1.同步復位可能需要脈沖展寬器來保證復位脈沖寬度足夠寬,以確保在時鐘有效邊沿期間存在復位信號;

2.從本質上講,同步復位需要時鐘才能復位電路。這對某些設計風格可能不是缺點,但對另一些設計風格可能會很麻煩。例如,如果為了節省功耗而使用門控時鐘,則在斷言復位的同時時鐘可能被禁用。在這種情況下,只有異步復位才能工作,因為復位信號可能在時鐘恢復之前被撤銷。

異步復位:

異步復位最大的問題是復位釋放,也稱為復位撤銷。

敏感列表中只能包含時鐘和復位信號。如果包含其他信號(合法的 Verilog,但非法的 Verilog RTL 綜合編碼風格),則觸發器的仿真模型將不正確,并且 Synopsys 在讀取用于綜合的模型時會報告錯誤。

異步復位代碼:

module async_resetFFstyle (

output reg q,

input d, clk, rst_n);

always @(posedge clk or negedge rst_n)

if (!rst_n) q <= 1'b0;

else q <= d;

endmodule

異步復位的綜合方法

綜合異步復位的方法取決于設計者對復位緩沖樹的處理方式。如果復位信號直接由外部引腳驅動,通常對復位引腳執行set_drive 0命令,并對復位網絡執行set_dont_touch_network命令,可防止綜合工具修改該網絡

有時可能還需要對復位網絡執行set_resistance 0命令。另外,也可以創建一個電阻值為 0 的自定義線載模型,并使用以下命令將其應用于復位輸入端口:

set_wire_load -port_list reset

異步復位優點:

1.使用異步復位的最大優點在于,只要供應商庫中提供了支持異步復位的觸發器,數據路徑就能夠保證不受復位邏輯的影響。對于那些對數據路徑時序要求極高的設計而言,因處理同步復位而插入的邏輯所帶來的額外門延遲和網絡延遲是難以接受的。通過使用異步復位,設計人員可以確保復位邏輯不會被添加到數據路徑中。

2.無論時鐘是否存在,電路都能被復位。

異步復位缺點:

1.如果異步復位不是直接由 I/O 引腳驅動,那么在進行 DFT 掃描和測試時,必須禁用來自復位驅動器的復位網絡。

2.對于使用異步復位的設計,靜態時序分析非常困難。無論是同步復位還是異步復位,都必須對復位樹進行時序分析,以確保復位釋放能夠在一個時鐘周期內完成。復位樹的時序分析必須在布局后進行,以確保滿足這一時序要求。

3.異步復位最大的問題在于其 “異步性”,無論是在復位信號有效還是無效時都存在這個問題。復位信號有效時通常不會有問題,問題主要出在復位信號無效時。如果異步復位在觸發器的時鐘有效邊沿或其附近釋放,觸發器的輸出可能會進入亞穩態,從而導致 ASIC 的復位狀態丟失。

4.異步復位還可能存在另一個問題,具體取決于其來源,即由于電路板或系統復位上的噪聲或毛刺而導致的虛假復位。

然而,同步復位也存在類似但不同的問題:如果這些虛假復位脈沖在時鐘邊沿附近發生,觸發器仍然可能進入亞穩態(任何違反建立時間要求的數據輸入都會出現這種情況)

5.異步復位信號的釋放與時鐘信號是異步的。這種情況存在兩個潛在問題:(1)違反復位恢復時間要求;(2)不同的時序元件在不同的時鐘周期釋放復位信號。

異步復位需要注意:

必須特別注意復位信號的釋放過程,以防止芯片在復位釋放時進入亞穩態的未知狀態。

當使用同步復位時,復位信號的上升沿和下降沿都必須遠離時鐘的有效邊沿。

異步復位信號的釋放與時鐘信號是異步的。這種情況存在兩個潛在問題:(1)違反復位恢復時間要求;(2)不同的時序元件在不同的時鐘周期釋放復位信號。

恢復時間也可以看作是一種建立時間(tsu),其形式為 “PRE 或 CLR 信號在 CLK 上升沿之前的無效建立時間”[1]。

如果不滿足恢復時間要求,可能會導致寄存器數據輸出的信號完整性問題或亞穩態問題。

采用復位同步器解決:

復位同步器的第一個觸發器確實存在潛在的亞穩態問題,因為其輸入固定為高電平,輸出被異步復位為 0,并且復位信號可能在觸發器規定的復位恢復時間內釋放(復位信號可能在太接近同一觸發器時鐘輸入上升沿時變為高電平)。這就是需要第二個觸發器的原因。

復位同步器的第二個觸發器不會受到恢復時間亞穩態的影響,因為當復位信號釋放時,該觸發器的輸入和輸出均為低電平。由于觸發器的輸入和輸出之間沒有邏輯差異,因此輸出不可能在兩個不同的邏輯值之間振蕩。

module async_resetFFstyle2 (

output reg rst_n,

input clk, asyncrst_n);

reg rff1;

always @(posedge clk or negedge asyncrst_n)

if (!asyncrst_n) {rst_n,rff1} <= 2'b0;

else {rst_n,rff1} <= {rff1,1'b1};

endmodule

always @ (posedge clk or negedge rst_n)

if (!rst_n) q <= 0;

else q <= d;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90493.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數組和指針回顧,練習與解析

代碼見&#xff1a;登錄 - Gitee.com 1.數組和指針練習與解析 1.1數組名 1.sizeof(數組名)&#xff0c;這里的數組名表示整個數組&#xff0c;計算的是整個數組的大小。 2.&數組名&#xff0c;這里的數組名表示整個數組&#xff0c;取出的是整個數組的地址。 3.除此之…

【牛客刷題】活動安排

文章目錄一、題目介紹二、解題思路2.1 核心問題2.2 貪心策略2.3 正確性證明三、算法分析3.1 為什么按結束時間排序&#xff1f;3.2 復雜度分析3.3 算法流程圖解3.3.1 流程圖說明3.3.2 關鍵步驟說明四、模擬演練五、完整代碼一、題目介紹 活動安排 題目描述 給定 nnn 個活動&am…

第1講:C語言常見概念

目錄 一、什么是C語言&#xff1f; 二、C語言的歷史與成就 三、編譯器選擇&#xff08;VS2022&#xff09; 1、編譯與鏈接 2、編譯器對比 3、VS2022的優缺點 四、VS項目與源文件、頭文件介紹 五、第一個C語言程序 六、main函數 七、printf和庫函數 八、關鍵字介紹 …

WinUI3入門18:從APP打開商店鏈接以及實現內購

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

BI布局拖拽 (1) 深入react-gird-layout源碼

因為有個拖拉拽的需求&#xff0c;類似于quickBi那樣的效果。在網上調研了一下發現react-grid-layout實現效果類似&#xff0c;但其也有局限性&#xff0c;比如不支持嵌套&#xff0c;不支持在多個gridLyaout之間互相拖拽。 要求&#xff1a;基于react-grid-layout的思路&#…

CentOS環境搭建-快速升級G++版本

在CentOS環境中快速升級G編譯器版本&#xff0c;對于追求最新語言特性的開發者來說至關重要。由于CentOS默認的軟件倉庫可能不提供G的最新版本&#xff0c;我們通常需要借助第三方軟件源&#xff0c;如Developer Toolset或使用Spack等包管理器來完成這一任務。下面將詳細介紹兩…

分布式接口冪等性的演進和最佳實踐,含springBoot 實現(Java版本)

一、背景&#xff1a;為什么需要冪等性 在微服務、分布式架構下&#xff0c;網絡不可靠、請求重試機制&#xff08;如前端超時重發、客戶端重發、網關重試、消息消費失敗重試等&#xff09;會帶來重復請求&#xff0c;如果接口沒有冪等性&#xff0c;可能導致&#xff1a; 重復…

OGRE 3D----6. 背景圖片渲染實現詳解

1. 背景圖片渲染原理 1.1 渲染隊列機制 Ogre3D 使用渲染隊列(Render Queue)來控制對象的渲染順序。背景圖片需要在所有其他對象之前渲染,因此我們將其設置為 RENDER_QUEUE_BACKGROUND。 1.2 視圖變換控制 為了讓背景圖片始終保持在場景的最遠處,我們需要: 使用單位投影…

K線連續漲跌統計與分析工具

K線連續漲跌統計與分析工具 1. 概述 本工具是一個用于分析金融時間序列數據(特別是K線數據)的Python腳本,主要功能是統計連續n根同方向K線后,第n+1根K線的漲跌情況。該工具不僅提供統計分析功能,還支持圖形化標記以驗證結果,幫助交易者和量化分析師識別市場中的特定模式…

jQuery EasyUI 簡介

jQuery EasyUI 簡介 引言 隨著互聯網技術的飛速發展,前端開發變得越來越重要。jQuery EasyUI 作為一款流行的前端UI框架,極大地簡化了前端開發的工作流程,提高了開發效率。本文將詳細介紹 jQuery EasyUI 的起源、特點、使用方法以及在實際項目中的應用。 一、jQuery Easy…

《測試開發:從技術角度提升測試效率與質量》

測試開發的核心工作內容與職責解析 一、測試開發的定位與核心價值 測試開發&#xff08;Test Development&#xff0c;簡稱 TestDev 或 SDET&#xff09;是融合軟件開發能力與測試工程思維的復合型崗位&#xff0c;不同于傳統測試工程師&#xff0c;其核心目標是通過技術手段提…

20250710解決KickPi的K7開發板刷機之后出現DDR異常:ch:1 dq0 fail,write:0x1,read:0x20300

20250710解決KickPi的K7開發板刷機之后出現DDR異常&#xff1a;ch:1 dq0 fail,write:0x1,read:0x20300 2025/7/10 20:36[BEGIN] 2025/7/10 19:29:03 /DDR 2f85f4b2d4 cym 25/03/04-14:38.55,fwver: v1.09 In ch0 ttot10 ch0 ttot10 ch1 ttot10 ch0 ttot18 LPDDR4, 2112MHz chan…

Ansible:強大的自動部署工具

文章目錄零、Ansible介紹一、安裝 ansible二、配置SSH密鑰1.檢查密鑰是否存在2.兩邊的機器要互相有對方的密鑰三、自動部署1.傳輸文件(1)inventory.ini(2)sync_blt.yml(3)執行命令2.安裝軟件(1)inventory.ini(2)install_efvs.yml(3)執行命令零、Ansible介紹 Ansible 是一個開源…

Nacos的基本功能以及使用Feign進行微服務間的通信

Nacos是Dynamic Naming and Configuration Service的縮寫。What’s Nacos? 下面結合SpringBoot項目&#xff0c;為你介紹Nacos的基本功能以及如何使用Feign進行微服務間的通信。 一、Nacos的基本功能 Nacos是阿里巴巴開源的一個更易于構建云原生應用的動態服務發現、配置管…

C1編譯器和C2編譯器Test01

在HotSpot VM中內嵌有兩個JIT編譯器&#xff0c;分別為Client Compiler和Server Compiler&#xff0c;通常簡稱為C1編譯器和C2編譯器。開發人員可以通過如下命令顯式指定JVM在運行時到底使用哪一種即時編譯器。(1)-client&#xff1a;指定JVM運行在Client模式下&#xff0c;并使…

MongoDB與Spring Boot完整使用指南

目錄 1. MongoDB基礎概念 什么是MongoDB? 核心概念對比 文檔結構示例 2. MongoDB的特點與優勢 主要特點 適用場景 3. MongoDB基本操作 基本CRUD操作 插入文檔 查詢文檔 更新文檔 刪除文檔 4. Spring Boot集成MongoDB 步驟1:添加依賴 步驟2:配置數據庫連接 …

swift開發,關于應用、頁面、視圖的生命周期

目錄一、應用生命周期&#xff08;App Lifecycle&#xff09;UIKit (AppDelegate)SwiftUI (使用 ScenePhase)二、頁面生命周期&#xff08;ViewController Lifecycle&#xff09;三、視圖生命周期&#xff08;UIView Lifecycle&#xff09;四、SwiftUI 視圖生命周期五、關鍵對比…

借助HarmonyOS SDK,《NBA巔峰對決》實現“分鐘級啟動”到“秒級進場”

《NBA巔峰對決》是由望塵科技推出的國內首個真實還原5V5王朝模式的操作籃球手游&#xff0c;提供流暢操作手感和真實籃球賽場體驗。豐富的玩法在為玩家帶來高質游戲體驗的同時&#xff0c;間接帶來了啟動流程冗長的問題&#xff0c;資源更新階段的等待感尤為突出。 “我們發現&…

HT-LINK ICE:海速芯32Gbps信號調理芯片,40dB補償+國產自主,打破高速互聯瓶頸!

HT-LINK ICE&#xff08;TENX海速芯&#xff09;產品解析與推廣文案一、產品定位HT-LINK ICE是TENX海速芯推出的高速信號調理芯片&#xff0c;專為PCIe 5.0/6.0、USB4、Thunderbolt等超高速接口設計&#xff0c;提供信號完整性增強和時鐘恢復功能&#xff0c;適用于數據中心、A…

深入剖析 ADL:C++ 中的依賴查找機制及其編譯錯誤案例分析

一、ADL 的定義與背景&#xff08;一&#xff09;ADL 的定義ADL&#xff08;Argument-Dependent Lookup&#xff0c;依賴查找&#xff09;是 C 中一種特殊的名稱查找機制&#xff0c;用于在調用函數時&#xff0c;根據函數參數的類型來確定查找的命名空間范圍。ADL 的核心思想是…