VIVADO技巧_BUFGMUX時序優化


1.版本說明

日期作者版本說明
2025xxxx風釋雪初始版本

2.概述

基于VIVADO時序約束,BUFGMUX多路時鐘選擇原語的設計


3.原語介紹

7系列FPGA/UltraSCale/UltraSCale+

   BUFGMUX_CTRL BUFGMUX_CTRL_inst (.O(O),   // 1-bit output: Clock output.I0(I0), // 1-bit input: Clock input (S=0).I1(I1), // 1-bit input: Clock input (S=1).S(S)    // 1-bit input: Clock select);BUFGMUX #(.CLK_SEL_TYPE("SYNC")  // ASYNC, SYNC) BUFGMUX_inst (.O(O),   // 1-bit output: Clock output.I0(I0), // 1-bit input: Clock input (S=0).I1(I1), // 1-bit input: Clock input (S=1).S(S)    // 1-bit input: Clock select);

4.使用場景

  • 簡單舉例
時鐘使用兩個固定頻率晶振產生,經過IO口進入FPGA內部,通過BUFGMUX選擇作為全局時鐘驅動邏輯;

在這里插入圖片描述

  • 復雜舉例
時鐘使用兩個固定頻率晶振產生,經過IO口進入FPGA內部,通過BUFGMUX選擇MMCM源,
MMCM產生三路時鐘, 74.25(74.1758)、148.5(148.3516)、297(296.703),
經過2個BUFGMUX實現3選1的功能,然后作為全局時鐘驅動邏輯;

在這里插入圖片描述


5.時序問題

當使用BUFGMUX的時候,VIVADO會分析兩個輸入時鐘之間的關系,會導致大量的時序錯誤,
但是實際情況,兩個輸入時鐘,并不會同時工作,不需要分析兩個時鐘之間的

6.時序設計

  • create_generated_clock + set_clock_groups
create_generated_clock -name CLKI0 \-divide_by 1 \-source [get_pins INST_BUFGMUX/I0] \-master_clock [get_clocks -of_objects [get_pins INST_BUFGMUX/I0]] \[get_pins INST_BUFGMUX/O] -addcreate_generated_clock -name CLKI1 \-divide_by 1 \-source [get_pins INST_BUFGMUX/I1] \-master_clock [get_clocks -of_objects [get_pins INST_BUFGMUX/I1]] \[get_pins INST_BUFGMUX/O] -addset_clock_groups -logically_exclusive \-group [get_clocks -include_generated_clocks {CLKI0}] \-group [get_clocks -include_generated_clocks {CLKI1}]
  • set_case_analysis
時序分析時,選擇頻率最高的一路時鐘,進行分析,其余路不分析
set_case_analysis 1 [get_pins INST_BUFGMUX/S]

7.實戰

  • 代碼
genlock_clkwiz inst_genlock_clkwiz
(.clk_in1                                    ( VID_SYNCCLK_148M5_148M3516),.clk_out1                                   ( VID_SYNCCLK_297M_296M7032 ),.clk_out2                                   ( VID_SYNCCLK_74M25_74M1758 )
);BUFGMUX #(.CLK_SEL_TYPE("ASYNC")) BUFGMUX_GENLOCK_0
(.O                                          ( VID_SYNCCLK_148M5_148M3516),.I0                                         ( LMH1983_CLK3_148M3516     ),.I1                                         ( LMH1983_CLK2_148M5        ),.S                                          ( select_freq_en[0]         )
);BUFGMUX #(.CLK_SEL_TYPE("ASYNC")) BUFGMUX_GENLOCK_1
(.O                                          ( VID_SYNCCLK_OUT1          ),.I0                                         ( VID_SYNCCLK_74M25_74M1758 ),.I1                                         ( VID_SYNCCLK_148M5_148M3516),.S                                          ( select_freq_en[1]         )
);BUFGMUX #(.CLK_SEL_TYPE("ASYNC")) BUFGMUX_GENLOCK_2
(.O                                          ( SDI_SYNCCLK               ),.I0                                         ( VID_SYNCCLK_OUT1          ),.I1                                         ( VID_SYNCCLK_297M_296M7032 ),.S                                          ( select_freq_en[2]         )
);
  • 約束
set_case_analysis 1 [get_pins inst_core/inst_genlock/BUFGMUX_GENLOCK_0/S]
set_case_analysis 1 [get_pins inst_core/inst_genlock/BUFGMUX_GENLOCK_1/S]
set_case_analysis 1 [get_pins inst_core/inst_genlock/BUFGMUX_GENLOCK_2/S]
  • 約束前

在這里插入圖片描述

  • 約束后
    時序正常!!!

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

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

相關文章

服務器系統時間不準確怎么辦?

服務器系統時間不準確可能會導致日志錯亂、任務調度失敗、SSL證書校驗錯誤等問題。以下是解決辦法:🌐 一、同步系統時間的方法1. 使用 timedatectl 命令(適用于 systemd 系統)timedatectl set-ntp true # 開啟自動同步 timedatect…

零信任產品聯合寧盾泛終端網絡準入,打造隨需而變、精準貼合業務的網絡安全訪問體系

零信任網絡訪問控制(Zero Trust Network Access,ZTNA,文中零信任皆指 ZTNA)基于“永不信任,持續驗證”的理念,打破了企業基于傳統網絡邊界進行防護的固有模式。在當前日趨復雜的網絡環境下,內部…

【未限制消息消費導致數據庫CPU告警問題排查及解決方案】

一、背景 某天下午,上游系統同一時間突然下了三個大合同數據,平均每個合同數據實例在6萬以上的量級,短短幾分鐘內瞬間有20萬左右的流量涌入系統。 而在正常情況下,系統1天處理的流量也不過2千量級,當時數據庫指標監控告…

iOS開發 Swift 速記2:三種集合類型 Array Set Dictionary

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

Apache基礎配置

一、Apache安裝# 安裝apache [rootwebserver ~]# yum install httpd -y# 在防火墻中放行web服務 [rootwebserver ~]# firewall-cmd --permanent --add-servicehttp success [rootwebserver ~]# firewall-cmd --permanent --add-servicehttps success# 開啟服務 [rootwebserver …

Python100個庫分享第37個—BeautifulSoup(爬蟲篇)

目錄專欄導讀📚 庫簡介🎯 主要特點🛠? 安裝方法🚀 快速入門基本使用流程解析器選擇🔍 核心功能詳解1. 基本查找方法find() 和 find_all()CSS選擇器2. 屬性操作3. 文本提取🕷? 實戰爬蟲案例案例1&#xff…

石子入水波紋效果:頂點擾動著色器實現

水面波紋的真實模擬是計算機圖形學中一個經典且重要的課題,廣泛應用于游戲、影視和虛擬現實等領域。本文將從技術原理和實現細節出發,系統介紹如何利用**頂點擾動(Vertex Displacement)**技術,結合多種輔助方法,打造既真實又高效的水面波紋效果。 一、頂點擾動的核心思想…

【FFmpeg 快速入門】本地播放器 項目

目錄 🌈前言🌈 📁 整體架構 詳細流程 📁 數據流向? 📁 隊列設計?編輯 📁 線程設計 📁 音視頻同步 📁 音頻輸出設計 📁 視頻輸出設計 📁 總結 …

Maven dependencyManagement標簽 properties標簽

dependencyManagement標簽properties標簽

前端埋坑之element Ui 組件el-progress display:flex后不顯示進度條解決方案

項目適用場景&#xff1a; <divs style"display&#xff1a;flex"> <span>這里是進度條前標題說明</span> <el-progress :percentage"50"></el-progress> </div> 問題呈現&#xff1a; el-progress進度條沒啦&#xf…

嵌入式學習-土堆PyTorch(7)-day23

損失函數的調用import torch from torch import nn from torch.nn import L1Lossinputs torch.tensor([1.0,2.0,3.0]) target torch.tensor([1.0,2.0,5.0])inputs torch.reshape(inputs, (1, 1, 1, 3)) target torch.reshape(target, (1, 1, 1, 3)) #損失函數 loss L1Loss…

【2025最新】使用neo4j實現GraphRAG所需的向量檢索

學習筆記&#xff0c;比較混亂&#xff0c;介意慎點。 背景 在將UMLS或者LightRAG構造的數據庫存入neo4j之后&#xff0c;我開始將知識圖譜運用到實際場景的使用中、例如查詢、推理。然而&#xff0c;由于字符串匹配導致大量術語在檢索時出現缺失。導致檢索效果不佳。我們需要…

【AI深究】隨機森林(Random Forest)全網最詳細全流程詳解與案例(附Python代碼演示)|集成學習|數學原理、案例流程、代碼演示及結果解讀|參數與調優、工程啟示、單棵決策樹的對比、優缺點

大家好&#xff0c;我是愛醬。本篇將會系統地講解隨機森林&#xff08;Random Forest&#xff09;的原理、核心思想、數學表達、算法流程、代碼實現與工程應用。內容適合初學者和進階讀者&#xff0c;配合公式和可視化示例。 注&#xff1a;本文章含大量數學算式、詳細例子說明…

6.String、StringBuffer、StringBuilder區別及使用場景

String固定長度&#xff0c;引用的字符串內容無法改變例如&#xff0c;String s abc;s def;那么 s 字符串對應的地址已經改變了StringBuider 聲明一個對象時&#xff0c;指向堆中的一塊空間&#xff0c;包括兩個屬性 value 和 count其中 value 屬性類似動態數組&#xff0c;可…

Qualcomm Linux 藍牙指南學習--驗證 Fluoride 協議棧的功能(2)

前言 Qualcomm Technologies推出的Linux藍牙指南詳細介紹了基于Qualcomm RB3 Gen 2和IQ-9100 Beta開發套件的藍牙解決方案。該文檔涵蓋BlueZ和Fluoride協議棧的功能驗證流程,支持藍牙5.2核心規范,包括WCN6750/WCN6856/QCA6698AQ芯片組的特性。主要內容分為三部分: ?1. 功…

Spring Boot中REST與gRPC并存架構設計與性能優化實踐指南

Spring Boot中REST與gRPC并存架構設計與性能優化實踐指南 在微服務架構日益復雜的當下&#xff0c;單一協議往往難以滿足高并發低延遲與生態兼容的雙重需求。本文基于真實生產環境的項目經驗&#xff0c;分享了如何在Spring Boot中同時提供RESTful API和gRPC接口的架構設計、性…

Simulink仿真-model Setting關鍵配置

1.概述 Simulink 的仿真設置&#xff08;Model Settings&#xff09;是確保仿真準確性的關鍵配置&#xff0c;主要包括仿真時間、步長、解法器選擇等核心參數的設定。 ?可以通過快捷鍵?CtrlE?打開仿真設置界面2.核心參數 2.1 求解器Solver配置 時間范圍&#xff1a;設置仿真…

內網與外網是通過什么進行傳輸的?內外網文件傳輸的安全方法

在當前企業信息化建設日益深入的背景下&#xff0c;出于安全防護與合規管理的需要&#xff0c;很多單位將網絡劃分為內網&#xff08;辦公網/生產網&#xff09;與外網&#xff08;互聯網/DMZ區&#xff09;。這種網絡隔離策略雖然提升了安全性&#xff0c;但也帶來了內外網文件…

RabbitMQ面試精講 Day 4:Queue屬性與消息特性

【RabbitMQ面試精講 Day 4】Queue屬性與消息特性 開篇 歡迎來到"RabbitMQ面試精講"系列的第4天&#xff01;今天我們將深入探討RabbitMQ中Queue的屬性配置與消息特性&#xff0c;這是理解和優化RabbitMQ使用的關鍵知識點。掌握這些內容不僅能幫助你在面試中展現深厚…