vivado XMP使用

vivado XMP使用


文章目錄

  • vivado XMP使用
  • 前言
  • 一、xpm_cdc_async_rst
  • 二、XPM_CDC_ARRAY_SINGLE
  • 三、XPM_CDC_PULSE
  • 四、 XPM_CDC_SINGLE
  • 五、 xpm_cdc_sync_rst
  • 總結


前言


使用XMP做跨時鐘域,方便的是官方認證,好用且不會爆時序問題,懶得寫 set flase。
這里不給時序了,參數和使用方法都比較簡單,看手冊即可
鏈接如下:
UG974

一、xpm_cdc_async_rst

在這里插入圖片描述

   xpm_cdc_async_rst #(.DEST_SYNC_FF(4),    // DECIMAL; range: 2-10.INIT_SYNC_FF(0),    // DECIMAL; 0=disable simulation init values, 1=enable simulation init values.RST_ACTIVE_HIGH(0)  // DECIMAL; 0=active low reset, 1=active high reset)xpm_cdc_async_rst_inst (.dest_arst(dest_arst), // 1-bit output: src_arst asynchronous reset signal synchronized to destination// clock domain. This output is registered. NOTE: Signal asserts asynchronously// but deasserts synchronously to dest_clk. Width of the reset signal is at least// (DEST_SYNC_FF*dest_clk) period..dest_clk(dest_clk),   // 1-bit input: Destination clock..src_arst(src_arst)    // 1-bit input: Source asynchronous reset signal.);

此宏將異步復位信號同步到目標時鐘域。生成的復位輸出將保證相對于輸入異步斷言,但輸出的斷言始終與目標時鐘域同步。您可以定義復位信號的極性和宏斷言時的最小輸出脈沖寬度。后者通過定義同步器中使用的寄存器級數來控制。注意:最小輸入脈沖斷言取決于寄存器復位或置位引腳的建立時間和保持時間要求。

  • 和同步復位跨時鐘域的區別在于斷言,異步的是跨時鐘之后的復位還是異步斷言,但是取消斷言是和目標時鐘是同步的
  • 要保證復位的長度能夠足夠被目標時鐘域采集到,也就是說快采集慢的時鐘,復位信號長度一定是兩倍以上。否則有問題

二、XPM_CDC_ARRAY_SINGLE

在這里插入圖片描述

   xpm_cdc_array_single #(.DEST_SYNC_FF(4),   // DECIMAL; range: 2-10.INIT_SYNC_FF(0),   // DECIMAL; 0=disable simulation init values, 1=enable simulation init values.SIM_ASSERT_CHK(0), // DECIMAL; 0=disable simulation messages, 1=enable simulation messages.SRC_INPUT_REG(1),  // DECIMAL; 0=do not register input, 1=register input.WIDTH(2)           // DECIMAL; range: 1-1024)xpm_cdc_array_single_inst (.dest_out(dest_out), // WIDTH-bit output: src_in synchronized to the destination clock domain. This// output is registered..dest_clk(dest_clk), // 1-bit input: Clock signal for the destination clock domain..src_clk(src_clk),   // 1-bit input: optional; required when SRC_INPUT_REG = 1.src_in(src_in)      // WIDTH-bit input: Input single-bit array to be synchronized to destination clock// domain. It is assumed that each bit of the array is unrelated to the others. This// is reflected in the constraints applied to this macro. To transfer a binary value// losslessly across the two clock domains, use the XPM_CDC_GRAY macro instead.);

此宏從源時鐘域合成一個單比特信號數組到目標時鐘域。為了正常工作,輸入數據必須被目標時鐘采樣兩次或更多次。您可以定義同步器中使用的寄存器級數。可選的輸入寄存器可以在輸入在源時鐘域中同步之前對其進行注冊。您還可以啟用仿真功能以生成消息報告宏的任何潛在誤用。注意:此宏假定源數組的每一位都是獨立的,沒有需要保留的關系。

  • 自己嘗試過不相關數據合并,其中一個數據只保持一個原時鐘域的脈沖,這樣可能會同步不到目標時鐘域
  • 需要保證被目標時鐘域采樣兩次或者更多

使用場景:跨時鐘域之后,每一個單bit不再變化,類似于對于跨時鐘域的配置數據。

三、XPM_CDC_PULSE

在這里插入圖片描述

xpm_cdc_pulse #(.DEST_SYNC_FF(4),   // DECIMAL; range: 2-10.INIT_SYNC_FF(0),   // DECIMAL; 0=disable simulation init values, 1=enable simulation init values.REG_OUTPUT(0),     // DECIMAL; 0=disable registered output, 1=enable registered output.RST_USED(1),       // DECIMAL; 0=no reset, 1=implement reset.SIM_ASSERT_CHK(0)  // DECIMAL; 0=disable simulation messages, 1=enable simulation messages)xpm_cdc_pulse_inst (.dest_pulse(dest_pulse), // 1-bit output: Outputs a pulse the size of one dest_clk period when a pulse// transfer is correctly initiated on src_pulse input. This output is// combinatorial unless REG_OUTPUT is set to 1..dest_clk(dest_clk),     // 1-bit input: Destination clock..dest_rst(dest_rst),     // 1-bit input: optional; required when RST_USED = 1.src_clk(src_clk),       // 1-bit input: Source clock..src_pulse(src_pulse),   // 1-bit input: Rising edge of this signal initiates a pulse transfer to the// destination clock domain. The minimum gap between each pulse transfer must be// at the minimum 2*(larger(src_clk period, dest_clk period)). This is measured// between the falling edge of a src_pulse to the rising edge of the next// src_pulse. This minimum gap will guarantee that each rising edge of src_pulse// will generate a pulse the size of one dest_clk period in the destination// clock domain. When RST_USED = 1, pulse transfers will not be guaranteed while// src_rst and/or dest_rst are asserted..src_rst(src_rst)        // 1-bit input: optional; required when RST_USED = 1);

此宏將源時鐘域中的脈沖同步到目標時鐘域。源時鐘域中任意大小的脈沖,如果正確啟動,將生成一個與單個目標時鐘周期相同大小的脈沖。為了正常工作,輸入數據必須被目標時鐘采樣兩次或更多次。您可以定義同步器中使用的寄存器級數。可選的源和目標復位可用于重置脈沖傳輸邏輯。您還可以啟用仿真功能,生成報告宏可能被濫用的消息。此宏的實現需要一些反饋邏輯。在沒有可選復位信號的情況下模擬宏時,輸入脈沖信號(src_pulse)必須始終定義,因為沒有復位邏輯可以從宏中傳播的未定義或‘x’恢復。

最小間隔是測量src_pulse的下降沿到下一個src_pulse的上升沿之間的距離。這個最小間隔將保證每個src_pulse的上升沿將在目標時鐘域生成一個dest_clk周期大小的脈沖。
在這里插入圖片描述

  • 脈沖之間是有一定間隔才能正常工作
  • 保證被目標時鐘域采樣兩次(猜測里面是使用脈沖展寬,因為我沒有小于兩次也生成了目標時鐘域的脈沖,還是聽官方的吧,這樣才能靠譜的正常工作)

四、 XPM_CDC_SINGLE

在這里插入圖片描述

   xpm_cdc_single #(.DEST_SYNC_FF(4),   // DECIMAL; range: 2-10.INIT_SYNC_FF(0),   // DECIMAL; 0=disable simulation init values, 1=enable simulation init values.SIM_ASSERT_CHK(0), // DECIMAL; 0=disable simulation messages, 1=enable simulation messages.SRC_INPUT_REG(1)   // DECIMAL; 0=do not register input, 1=register input)xpm_cdc_single_inst (.dest_out(dest_out), // 1-bit output: src_in synchronized to the destination clock domain. This output is// registered..dest_clk(dest_clk), // 1-bit input: Clock signal for the destination clock domain..src_clk(src_clk),   // 1-bit input: optional; required when SRC_INPUT_REG = 1.src_in(src_in)      // 1-bit input: Input signal to be synchronized to dest_clk domain.);

此宏將一個比特信號從源時鐘域同步到目標時鐘域。為了正常工作,輸入數據必須被目標時鐘采樣兩次或更多次。您可以定義同步器中使用的寄存器級數。可選的輸入寄存器可用于在同步之前對源時鐘域中的輸入進行寄存。

  • 電平信號一般也能被采樣兩次,只要滿足都可以使用這個來做跨時鐘

五、 xpm_cdc_sync_rst

在這里插入圖片描述

   xpm_cdc_sync_rst #(.DEST_SYNC_FF(4),   // DECIMAL; range: 2-10.INIT(1),           // DECIMAL; 0=initialize synchronization registers to 0, 1=initialize synchronization// registers to 1.INIT_SYNC_FF(0),   // DECIMAL; 0=disable simulation init values, 1=enable simulation init values.SIM_ASSERT_CHK(0)  // DECIMAL; 0=disable simulation messages, 1=enable simulation messages)xpm_cdc_sync_rst_inst (.dest_rst(dest_rst), // 1-bit output: src_rst synchronized to the destination clock domain. This output// is registered..dest_clk(dest_clk), // 1-bit input: Destination clock..src_rst(src_rst)    // 1-bit input: Source reset signal.);

此宏將復位信號同步到目標時鐘域。與XPM_CDC_ASYNC_RST宏不同,生成的輸出將在目標時鐘域中同步斷言和解除斷言。為了正常工作,輸入數據必須被目標時鐘采樣兩次或更多次。您可以定義同步器中使用的寄存器級數以及配置后的初始寄存器值。您還可以啟用仿真功能,以生成報告宏可能被誤用的消息。

總結

對于上面所有的xpm,都是輸入數據必須被目標時鐘采樣兩次或更多次,也就是快到慢的跨時鐘,最好就要時鐘單獨的脈沖展寬或者握手信號,或者是做fifo或者ram緩沖等手段來做跨時鐘。

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

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

相關文章

P3416-圖論-法1.BFS / 法2.Floyd

這道題雖然標簽有floyd但是直接bfs也能過 其實事實證明還是bfs快,因為bfs只需要遍歷特定的點,但是floyd需要考慮遍歷所有可能的中介點 法1.BFS 用字典存儲每個點所能普及的范圍,然后用對每個點bfs進行拓展 nint(input())temp[]#xmax0;yma…

科普動畫短視頻制作:角色塑造的魅力法則

寶子們,在科普動畫短視頻的世界里,角色塑造可是讓作品出彩的關鍵!今天就來和大家嘮嘮那些超實用的角色塑造法則,還會給大家推薦一款超好用的工具哦~ 一、獨特外形,吸睛第一步 在科普動畫短視頻制作中,角色…

代理模式(Proxy Pattern)詳解:以延遲加載圖片為例

在日常開發中,是否遇到過以下問題: “程序啟動時圖片太多,加載太慢!” “用戶還沒看到圖片就已經開始加載了,性能浪費!” 此時,代理模式(Proxy Pattern)便派上了用場。本…

C++學習筆記(三十六)——STL之排序算法

一、STL 算法 C的STL&#xff08;Standard Template Library&#xff09; 提供了一組高效、通用的算法&#xff0c;這些算法適用于各種容器&#xff08;如 vector、list、set、map&#xff09;。 這些算法主要位于 <algorithm> 和 <numeric> 頭文件中。 通用性&a…

Java基于SpringBoot的企業車輛管理系統,附源碼+文檔說明

博主介紹&#xff1a;?Java老徐、7年大廠程序員經歷。全網粉絲12w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&…

el-date-picker時間范圍 賦值報錯問題

問題&#xff1a; 點擊時間范圍組件右邊清除圖標&#xff0c;點擊近6小時會把設置好的時間賦值給時間范圍組件 但是出現報錯 原因&#xff1a; 嘗試對null值進行屬性設置操作&#xff1a;修改一個數組的元素&#xff0c;但此時這個數組是null&#xff0c;而不是預期的數組類型…

STM32 中斷系統深度剖析

在嵌入式系統開發領域&#xff0c;STM32 系列微控制器憑借其強大的性能和豐富的資源被廣泛應用。中斷系統作為 STM32 的關鍵特性之一&#xff0c;能夠極大地提升系統的實時響應能力和多任務處理效率。本文將基于 STM32F4 系列芯片&#xff0c;深入剖析中斷與外設中斷的原理、配…

1.3 本書結構概覽:從理論基礎到實踐案例的系統闡述

本書采用由淺入深、理論聯系實踐的結構設計&#xff0c;旨在為讀者提供一個關于大模型與智能代理(Agent)技術的全面認知框架與實施路徑。全書共分為十章&#xff0c;系統性地覆蓋了從技術基礎到企業落地的完整知識鏈條&#xff0c;現概述如下&#xff1a; 首先&#xff0c;第一…

小白訓練日記——2025/4/22

實驗描述 將GobalM模塊加入到changerEx的stage2中。 下面展示一些內聯片段&#xff1a; model dict(backbonedict(interaction_cfg(None,dict(typeGlobalM, embed_dim128,num_heads32,axial_strategyrow),dict(typeChannelExchange, p1/2),dict(typeChannelExchange, p1/2))…

【上位機——MFC】MFC入門

MFC庫中相關類簡介 CObject MFC類庫中絕大部分類的父類&#xff0c;提供了MFC類庫中一些基本的機制。 對運行時類信息的支持。對動態創建的支持。對序列化的支持。 CWinApp 應用程序類&#xff0c;封裝了應用程序、線程等信息。 CDocument 文檔類&#xff0c;管理數據 F…

代碼隨想錄第三十七天|華為秋季筆試真題230823

刷題小記&#xff1a; 主要偏向扎實編碼基礎的考察&#xff0c;但貌似近些年題目難度有所提高&#xff0c;僅供參考。 卡碼網136.獲取連通的相鄰節點列表&#xff08;卡碼網136.獲取連通的相鄰節點列表&#xff09; 題目分析&#xff1a; 題目描述&#xff1a; 存在N個轉發…

計算機視覺cv2入門之實時手勢檢測

前邊我們已經講解了使用cv2進行圖像預處理以及針對實時視頻流文件的操作方法&#xff0c;這里我們通過實時手勢檢測這一案例來學習和實操一下。 大致思路 根據手勢的種類以及指定手勢圖片數量來構建一個自己的手勢圖片數據集CNN模型訓練手勢圖片數據集使用訓練好的模型進行實時…

Java 安全:如何防止 SQL 注入與 XSS 攻擊?

Java 安全&#xff1a;如何防止 SQL 注入與 XSS 攻擊&#xff1f; 在 Java 開發領域&#xff0c;安全問題至關重要&#xff0c;而 SQL 注入和 XSS 攻擊是兩種常見的安全威脅。本文將深入探討如何有效防止這兩種攻擊&#xff0c;通過詳細代碼實例為您呈現解決方案。 一、SQL 注…

Itext進行PDF的編輯開發

這周寫了一周的需求&#xff0c;是制作一個PDF生成功能&#xff0c;其中用到了Itext來制作PDF的視覺效果。其中一些功能不是很懂&#xff0c;僅作記錄&#xff0c;若要學習請仔細甄別正確與否。 開始之前&#xff0c;我還是想說&#xff0c;這傻福需求怎么想出來的&#xff0c…

android編譯使用共享緩存

注意 服務器端與客戶端系統的版本號需為Ubuntu20.04ccache版本不能低于4.4執行用戶需要為sudo權限服務器端nfs目錄權限必須為nobody:nogroup 一、服務端配置&#xff1a; 在服務器192.168.60.142上配置 NFS 共享 1.安裝 NFS 服務器&#xff1a; 1 sudo apt-get install nfs…

工作中sql總結

sql總結 場景1分組后失敗的成功數據帶入場景2完全性質的一對一匹配場景3虛擬戶的特殊匹配場景4多對多匹配場景5一對一匹配場景6 一對多匹配 場景1分組后失敗的成功數據帶入 現有一批交易表的數據&#xff0c;根據戶名&#xff0c;日期&#xff0c;金額分組&#xff0c;存在TRA…

QML FontDialog:使用FontDialog實現字體選擇功能

目錄 引言相關閱讀FontDialog基本介紹字體屬性 實例演示項目結構代碼實現Main.qmlmain.cpp 代碼解析運行效果 總結 引言 在桌面應用程序開發中&#xff0c;字體選擇是一個常見的需求。Qt Quick提供了FontDialog組件來實現這一功能。本文將介紹如何在Qt Quick應用程序中使用Fon…

MCP(3):在CherryStudio中使用MCPServer

上一文章講述了如何新建一個MCP Server&#xff0c;并在MCP Inspector完成測試。本文講述如何在CherryStudio中進行測試。 Cherry Studio 是一款由 CherryHQ 開發的多模型支持的 AI 桌面助手&#xff0c;兼容 Windows、Linux 和 macOS 系統&#xff0c;旨在為用戶提供更便捷、…

面試題-鏈表(2)

1.合并兩個有序鏈表&#xff1a; 21. 合并兩個有序鏈表 - 力扣&#xff08;LeetCode&#xff09; public ListNode mergeTwoLists(ListNode headA, ListNode headB){ListNode newheadnew ListNode(-1);ListNode curnewhead;while(headA!null&&headB!null){if(headA.va…

微軟Entra新安全功能引發大規模賬戶鎖定事件

誤報觸發大規模鎖定 多家機構的Windows管理員報告稱&#xff0c;微軟Entra ID新推出的"MACE"&#xff08;泄露憑證檢測應用&#xff09;功能在部署過程中產生大量誤報&#xff0c;導致用戶賬戶被大規模鎖定。這些警報和鎖定始于昨夜&#xff0c;部分管理員認為屬于誤…