91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Xilinx FPGA中的混合模式時鐘管理器MMCME2_ADV詳解

FPGA技術(shù)江湖 ? 來源:FPGA開源工作室 ? 2026-04-10 11:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

來源:FPGA開源工作室

文 | 資深FPGA架構(gòu)師

在 FPGA 的浩瀚宇宙中,時鐘系統(tǒng)不僅是驅(qū)動邏輯運轉(zhuǎn)的“心臟”,更是決定系統(tǒng)穩(wěn)定性與性能上限的“指揮棒”。對于 Xilinx 7 系列 FPGA 開發(fā)者而言,如果僅滿足于使用 Clocking Wizard IP 核點點鼠標(biāo),往往會在面對復(fù)雜的時序收斂、動態(tài)頻點切換或低抖動需求時束手無策。

今天,我們將剝開 IP 核的外殼,深入到底層原語(Primitive)層面,全方位解析 Xilinx 7 系列中最強大的混合模式時鐘管理器——MMCME2_ADV。

一、 為什么你需要關(guān)注 MMCME2_ADV?

MMCME2_ADV(Mixed-Mode Clock Manager Advanced)是 Xilinx 7 系列 FPGA(Artix-7, Kintex-7, Virtex-7)中最高級的硬核時鐘資源。雖然 PLL(鎖相環(huán))也能實現(xiàn)分頻倍頻,但 MMCM 在功能豐富度上具有壓倒性優(yōu)勢。

核心能力清單:

極致的靈活性: 所有輸出時鐘共享同一個壓控振蕩器(VCO),但每個通道可獨立配置分頻、相位和占空比。

動態(tài)調(diào)整能力: 支持在系統(tǒng)運行過程中,通過 DRP 接口動態(tài)重配置時鐘參數(shù),或動態(tài)調(diào)整相位偏移。

信號完整性保障: 內(nèi)置去偏斜(Deskew)電路和抖動濾波器,能顯著優(yōu)化時鐘網(wǎng)絡(luò)質(zhì)量。

簡而言之,它是 FPGA 時鐘樹設(shè)計的核心模塊。理解它,是你從“寫代碼”進階到“設(shè)計系統(tǒng)”的必經(jīng)之路。

二、 庖丁解牛:核心端口詳解

要駕馭這個模塊,首先要讀懂它的“說明書”——端口列表。MMCME2_ADV 的端口眾多,但邏輯清晰。我們將按功能將其分類解析。

1. 時鐘輸入與控制

端口 方向 深度解析
CLKIN1 輸入 主參考時鐘輸入。絕大多數(shù)場景下的主時鐘源。
CLKIN2 輸入 輔助參考時鐘。用于雙時鐘冗余切換,需配合 CLKINSEL 使用。
CLKINSEL 輸入 時鐘源選擇。High=CLKIN1; Low=CLKIN2。支持動態(tài)切換。
RST 輸入 異步復(fù)位,高電平有效。輸入時鐘不穩(wěn)定時必須復(fù)位。
PWRDWN 輸入 低功耗控制。置 1 時模塊休眠,未用時務(wù)必接地。

2. 時鐘輸出與反饋

端口 深度解析
CLKOUT0~6 7 路獨立輸出。CLKOUT4 具備級聯(lián)能力。
CLKOUT0B~3B 僅前 4 路支持 180° 反相輸出,常用于 DDR 接口。
LOCKED 系統(tǒng)設(shè)計的生命線 。僅當(dāng)此信號拉高后,下游邏輯才能解除復(fù)位。
CLKFBOUT 反饋輸出,必須連接到 CLKFBIN。
CLKFBIN 反饋輸入,通過反饋回路實現(xiàn)相位的對齊和閉環(huán)控制。

3. 高級動態(tài)控制

動態(tài)相位偏移: (PSCLK, PSEN, PSINCDEC, PSDONE) 允許在不復(fù)位 MMCM 的情況下,微調(diào)輸出時鐘相位。

動態(tài)重配置 (DRP): (DADDR, DCLK, DEN, DWE, DI, DO, DRDY) 通過類似總線讀寫的方式,在線修改倍頻/分頻系數(shù),實現(xiàn)“變頻”功能。

bc0e7026-3323-11f1-90a1-92fbcf53809c.jpg

三、 核心屬性配置:數(shù)學(xué)與物理的平衡

在例化 MMCME2_ADV 時,參數(shù)配置直接決定了時鐘的質(zhì)量。這里涉及兩個核心公式:

F_VCO = F_CLKIN × (MULT_F / DIVIDE)

F_OUTx = F_VCO / OUTx_DIVIDE

屬性 配置指南
CLKFBOUT_MULT_F (2.0~64.0) VCO 的倍頻系數(shù)。專家提示:務(wù)必確保 F_VCO 落在器件手冊規(guī)定的范圍內(nèi)(通常為 600MHz~1200MHz)。
DIVCLK_DIVIDE (1~106) 輸入預(yù)分頻系數(shù)。通常設(shè)為 1 以降低抖動,除非輸入頻率過高。
CLKOUTx_DIVIDE (1~128) 各通道的輸出分頻系數(shù)。
BANDWIDTH OPTIMIZED: 默認推薦。
LOW:濾除輸入高頻抖動。
HIGH:快速跟蹤輸入變化。

四、 實戰(zhàn)代碼:VHDL 與 Verilog 例化模板

為了方便各位工程師直接 copy-paste 到工程中,以下提供了標(biāo)準(zhǔn)的例化模板。請根據(jù)實際需求修改參數(shù)。

1. VHDL 例化模板

-- MMCME2_ADV: 7系列高級混合模式時鐘管理器
MMCME2_ADV_inst : MMCME2_ADV
generic map (
 BANDWIDTH => "OPTIMIZED",
 CLKFBOUT_MULT_F => 5.0,   -- VCO設(shè)定為輸入頻率的5倍
 CLKFBOUT_PHASE => 0.0,
 CLKIN1_PERIOD => 10.0,   -- 極其重要!輸入時鐘周期10ns (100MHz)
 CLKOUT0_DIVIDE_F => 5.0,  -- 輸出分頻,最終頻率 = 100 * 5 / 5 = 100MHz
 CLKOUT0_DUTY_CYCLE => 0.5,
 CLKOUT0_PHASE => 0.0,
 DIVCLK_DIVIDE => 1,
 COMPENSATION => "ZHOLD"   -- 零延遲保持模式
)
port map (
 CLKOUT0 => CLKOUT0,     -- 主時鐘輸出
 LOCKED => LOCKED,      -- 鎖定信號,連接系統(tǒng)復(fù)位
 CLKIN1 => CLKIN1,      -- 輸入?yún)⒖紩r鐘
 RST => RST,         -- 復(fù)位信號
 PWRDWN => '0',       -- 始終使能
 CLKFBIN => CLKFBOUT,    -- 【關(guān)鍵】反饋環(huán)路閉合
 CLKFBOUT => CLKFBOUT
);

2. Verilog 例化模板

// MMCME2_ADV 基礎(chǔ)例化
MMCME2_ADV #(
 .BANDWIDTH("OPTIMIZED"),
 .CLKFBOUT_MULT_F(5.0),   // VCO倍頻系數(shù)
 .CLKIN1_PERIOD(10.0),    // 輸入時鐘周期 ns
 .CLKOUT0_DIVIDE_F(5.0),   // 輸出分頻系數(shù)
 .DIVCLK_DIVIDE(1),
 .COMPENSATION("ZHOLD")
)
MMCME2_ADV_inst (
 .CLKOUT0(CLKOUT0),     // 連接至 BUFG
 .LOCKED(LOCKED),      // 連接至 rst_n 生成邏輯
 .CLKIN1(CLKIN1),      // 物理管腳輸入或上一級時鐘
 .RST(RST),
 .PWRDWN(1'b0),
 .CLKFBIN(CLKFBOUT),     // 內(nèi)部反饋
 .CLKFBOUT(CLKFBOUT)
);

五、 典型應(yīng)用場景與案例

場景 1:基礎(chǔ)時鐘倍頻(100MHz → 200MHz)

策略:先將 VCO 頻率倍頻到一個較高的中間值(如 1000MHz),再分頻得到 200MHz。較高的 VCO 頻率通常能帶來更好的抖動性能。

MMCME2_ADV #(
  .CLKIN1_PERIOD(10.0),  // 輸入 100MHz
  .CLKFBOUT_MULT_F(10.0), // VCO = 100 * 10 = 1000MHz
  .DIVCLK_DIVIDE(1),
  .CLKOUT0_DIVIDE_F(5.0) // 輸出 = 1000 / 5 = 200MHz
) mmcm_inst ( ... );

場景 2:多相位時鐘生成(ADC/DDR 采樣)

在高速數(shù)據(jù)采集或 DDR 控制器設(shè)計中,常需要 0°、90°、180°、270° 四相時鐘。

MMCME2_ADV #(
  // ...
  // CLK0: 100MHz, 0度
  .CLKOUT0_DIVIDE_F(10.0),
  .CLKOUT0_PHASE(0.0),
  // CLK1: 100MHz, 90度
  .CLKOUT1_DIVIDE(10),
  .CLKOUT1_PHASE(90.0),
  // ...
) mmcm_inst ( ... );

場景 3:差分輸入與驅(qū)動能力

在實際板卡上,時鐘源往往是 LVDS 差分信號。此時 MMCME2_ADV 需配合IBUFDS使用。同時,MMCM 輸出可靈活驅(qū)動:

BUFG: 驅(qū)動全局邏輯。

BUFIO: 驅(qū)動 I/O Bank 內(nèi)的高速 SerDes。

BUFR: 驅(qū)動區(qū)域邏輯,降低功耗。

六、 進階話題:動態(tài)重配置(DRP)

MMCME2_ADV 提供了一組標(biāo)準(zhǔn)的 DRP 接口,允許用戶讀寫內(nèi)部寄存器。原理是通過修改分頻計數(shù)器(M, D, O)的寄存器值,改變頻率合成公式。

注意:修改參數(shù)后,必須復(fù)位 MMCM 才能使新參數(shù)生效。Xilinx 官方提供了 XAPP888 等文檔專門講解如何通過狀態(tài)機控制 DRP 接口,建議高階玩家深入研讀。

七、 總結(jié)與避坑指南

MMCME2_ADV 是 7 系列 FPGA 中功能最全面的時鐘管理單元。掌握它,你就掌握了 FPGA 時序設(shè)計的“內(nèi)功”。最后總結(jié)幾條避坑指南:

1. 反饋必須接: CLKFBIN 和 CLKFBOUT 必須連接,否則無法鎖定。

2. 等待 LOCKED: 永遠不要使用未鎖定的時鐘驅(qū)動邏輯。

3. VCO 范圍自檢: 手動計算 VCO 頻率是否在器件手冊規(guī)定的范圍內(nèi)。

4. 復(fù)位時機: 監(jiān)測時鐘丟失并在恢復(fù)后自動復(fù)位 MMCM。

*本文基于 Xilinx 7 Series FPGAs Clocking Resources User Guide (UG472) 整理。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1662

    文章

    22480

    瀏覽量

    638412
  • Xilinx
    +關(guān)注

    關(guān)注

    73

    文章

    2205

    瀏覽量

    131729
  • 時鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1998

    瀏覽量

    135193

原文標(biāo)題:硬核干貨 | Xilinx FPGA 時鐘之心:MMCME2_ADV 全面詳解

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何把握FPGA的數(shù)字時鐘管理器

    ,什么時候用DCM、PLL、PMCD和MMCM四大類型的哪一種,讓他們頗為困惑。賽靈思現(xiàn)有的FPGA沒有一款同時包含這四種資源(見表1)。 這四大類的每一種都針對特定的應(yīng)用。例如
    的頭像 發(fā)表于 02-13 17:02 ?3291次閱讀
    如何把握<b class='flag-5'>FPGA</b>的數(shù)字<b class='flag-5'>時鐘</b><b class='flag-5'>管理器</b>

    XILINX FPGA IP之MMCM PLL DRP時鐘動態(tài)重配詳解

    上文XILINX FPGA IP之Clocking Wizard詳解說到時鐘IP的支持動態(tài)重配的,本節(jié)介紹通過DRP進行MMCM PLL的重新配置。
    發(fā)表于 06-12 18:24 ?1.8w次閱讀
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> IP之MMCM PLL DRP<b class='flag-5'>時鐘</b>動態(tài)重配<b class='flag-5'>詳解</b>

    Xilinx FPGA的GTx的參考時鐘

    本文主要介紹Xilinx FPGA的GTx的參考時鐘。下面就從參考時鐘模式、參考時鐘的選擇等方
    發(fā)表于 09-15 09:14 ?5366次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的GTx的參考<b class='flag-5'>時鐘</b>

    FPGACPLD設(shè)計工具──Xilinx+ISE使用詳解

    本帖最后由 lee_st 于 2017-11-2 15:01 編輯 《FPGACPLD設(shè)計工具──Xilinx+ISE使用詳解》第 1 章 ISE 系統(tǒng)簡介
    發(fā)表于 11-02 10:02

    MMCM的雙時鐘在比特流生成期間導(dǎo)致錯誤

    )V7_MMCM_SET_COMPENSATION0- 類型為“MMCME2_ADV”的單元clk_gen_i / inst / mmcm_adv_inst具有從不同源類型驅(qū)動的CLKIN1和CLKIN2
    發(fā)表于 10-18 14:25

    關(guān)于KintexMMCM的時鐘和反饋輸出的不同BUFFERS的警告

    你好,我的Kintex實現(xiàn)收到以下MAP警告:PhysDesignRules:2400-MMCME2_ADV塊引腳不會驅(qū)動與其他CLKOUT引腳相同的BUFFER負載。來自不同緩沖類型的路由將不
    發(fā)表于 10-23 10:18

    級聯(lián)模式下的Xilinx DCM數(shù)字時鐘管理器無法滿足時序約束

    嗨,我在級聯(lián)模式下使用Xilinx DCM(數(shù)字時鐘管理器),使用6.144 MHz時鐘生成48 kHz
    發(fā)表于 03-25 14:09

    MMCM CLKOUTx_DIVIDE動態(tài)配置限制是怎么回事

    從在MMCME2_ADV原語和thanx到DRP寄存上鏈接的MMCM_DRP verilog組件(XAPP888),我能夠動態(tài)重新配置輸出時鐘Frequency.ClkRegX位圖DRP寄存
    發(fā)表于 06-15 08:52

    如何在xc7k355t FPGA實例化20個GTX收發(fā)?

    MMCME2_ADV單元。該設(shè)計需要20種這樣的單元類型,但目標(biāo)設(shè)備只有6個兼容的站點可用。請分析您的綜合結(jié)果和約束,以確保設(shè)計按預(yù)期映射到Xilinx原語。如果是這樣,請考慮定位更大的設(shè)備。在示例設(shè)計
    發(fā)表于 08-20 13:39

    在7系列FPGA,MMCM和PLL之間是否有專用的CMT路由?

    實驗,我使用PLL來驅(qū)動MMCM,如下圖所示。此方法不起作用,并且有兩個錯誤: 錯誤:PhysDesignRules:2256 - 不支持的MMCME2_ADV配置。具有補償模式ZHOLD
    發(fā)表于 08-21 09:16

    時鐘路徑和目的時鐘路徑延時不一致

    這樣。例如MMCME2_ADV這個元件,Vivado分析源時鐘路徑時這個元件的延時為-7.378ns,分析目的時鐘路徑時這個元件的延時為-6,292ns。
    發(fā)表于 04-24 10:32

    Xilinx可編程邏輯器件設(shè)計與開發(fā)(基礎(chǔ)篇)連載22:Spartan

    PLL),再到Virtex-6基于PLL的新型混合模式時鐘管理器MMCM(Mixed-Mode Clock Manager),實現(xiàn)了最低的抖動和抖動濾波,為高性能的
    發(fā)表于 02-11 09:14 ?1673次閱讀
    <b class='flag-5'>Xilinx</b>可編程邏輯器件設(shè)計與開發(fā)(基礎(chǔ)篇)連載22:Spartan

    GTX/GTH收發(fā)時鐘架構(gòu)應(yīng)用

    在PCIe模式,PCLK是FPGA邏輯接口,用來同步并行接口數(shù)據(jù)傳輸。在Gen1應(yīng)用推薦的PCLK時鐘為125MHz,在Gen
    的頭像 發(fā)表于 07-05 10:08 ?4858次閱讀

    用于 Linux 管理 API 手冊的 PTP 時鐘管理器

    用于 Linux 管理 API 手冊的 PTP 時鐘管理器
    發(fā)表于 02-02 18:44 ?1次下載
    用于 Linux <b class='flag-5'>管理</b> API 手冊的 PTP <b class='flag-5'>時鐘</b><b class='flag-5'>管理器</b>

    用于 Linux 管理 API 手冊的 PTP 時鐘管理器

    用于 Linux 管理 API 手冊的 PTP 時鐘管理器
    發(fā)表于 07-04 18:31 ?1次下載
    用于 Linux <b class='flag-5'>管理</b> API 手冊的 PTP <b class='flag-5'>時鐘</b><b class='flag-5'>管理器</b>