衡阳派盒市场营销有限公司

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

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

3天內不再提示

動態時鐘的使用

OpenFPGA ? 來源:OpenFPGA ? 2023-07-05 09:05 ? 次閱讀

時鐘是每個 FPGA 設計的核心。如果我們正確地設計時鐘架構、沒有 CDC 問題并正確進行約束設計,就可以減少與工具斗爭的時間。

但對于某些應用,我們希望能夠更改某些IP中的時鐘頻率。其中一個例子是在圖像處理管道中,輸出分辨率可以動態變化,從而需要改變像素時鐘。

眾所周知,我們可以在 Zynq SoC 和 Zynq MPSoC 中使用結構時鐘并在運行時更改結構時鐘的頻率。但是,如果我們在 Zynq 或 ZYNQ MPSoC 中使用 FPGA 或 PL,我們仍然可以使用動態配置的時鐘向導在運行時更改頻率。

動態配置時鐘允許我們使用 AXI 接口在運行時更改時鐘頻率。

c0c858fc-1acb-11ee-962d-dac502259ad0.png

為了創建一個簡單的示例,我們將實例化PS并將動態配置時鐘IP連接到主 AXI 接口。我們將輸出時鐘連接到 IO 引腳,以便我們可以對其進行觀察并查看頻率的變化。

c0df5052-1acb-11ee-962d-dac502259ad0.png

上面的時鐘是我們打算使用的最大頻率,這樣可以確保時序約束和時序性能正確。下圖是我們這次demo的最終設計。

c0fb9730-1acb-11ee-962d-dac502259ad0.png

接下來我們將在 Vitis 中開發軟件,并且將在設計中的 IP 下看到相關驅動及文檔。

開發這個IP的驅動和其他 AXI Lite 接口一樣,需要對IP寄存器空間進行寫入和讀取。

要更改時鐘頻率輸出,我們有兩種選擇。如果只生成一個時鐘,我們可以使用名為 SetRate 的函數。該函數將通過AXI Lite總線傳遞到IP中,IP會給出我們所需的頻率輸出,并計算必要的分頻器、乘法器和相位參數實現所需的輸出頻率。

然而,如果我們有多個時鐘,那么我們需要分別計算這些寄存器的值并單獨更新時鐘寄存器(每個時鐘有兩個寄存器)。

這里有個注意點就是在進行時鐘更改前最好等待IP鎖定到之前的頻率后再進行新操作。

更改頻率的代碼還是比較簡單的,如下:

#include
#include"platform.h"
#include"xil_printf.h"

#include"xclk_wiz.h"

XClk_WizClkWiz_Dynamic;
XClk_Wiz_Config*CfgPtr_Dynamic;

#defineXCLK_WIZARD_DEVICE_IDXPAR_CLK_WIZ_0_DEVICE_ID
#defineXCLK_US_WIZ_RECONFIG_OFFSET0x0000025C
#defineCLK_LOCK1

intmain()
{
init_platform();
intStatus;
print("HelloWorld

");

CfgPtr_Dynamic=XClk_Wiz_LookupConfig(XCLK_WIZARD_DEVICE_ID);
XClk_Wiz_CfgInitialize(&ClkWiz_Dynamic,CfgPtr_Dynamic,
CfgPtr_Dynamic->BaseAddr);

while(1){
XClk_Wiz_WriteReg(CfgPtr_Dynamic->BaseAddr,
XCLK_WIZ_REG25_OFFSET,0);
XClk_Wiz_SetRate(&ClkWiz_Dynamic,10);
XClk_Wiz_WriteReg(CfgPtr_Dynamic->BaseAddr,
XCLK_US_WIZ_RECONFIG_OFFSET,
(XCLK_WIZ_RECONFIG_LOAD|
XCLK_WIZ_RECONFIG_SADDR));
Status=XClk_Wiz_WaitForLock(&ClkWiz_Dynamic);
usleep(10000000);
XClk_Wiz_WriteReg(CfgPtr_Dynamic->BaseAddr,
XCLK_WIZ_REG25_OFFSET,0);
XClk_Wiz_SetRate(&ClkWiz_Dynamic,14);
XClk_Wiz_WriteReg(CfgPtr_Dynamic->BaseAddr,
XCLK_US_WIZ_RECONFIG_OFFSET,
(XCLK_WIZ_RECONFIG_LOAD|
XCLK_WIZ_RECONFIG_SADDR));
Status=XClk_Wiz_WaitForLock(&ClkWiz_Dynamic);
usleep(10000000);
}
cleanup_platform();
return0;
}

當然,我們也可以使用類似的方法,通過將時鐘頻率降低來實現不同功耗模式下 FPGA 的功耗,從而實現降低功耗的功能。

c12269a0-1acb-11ee-962d-dac502259ad0.pngc13cb7c4-1acb-11ee-962d-dac502259ad0.png






審核編輯:劉清

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

    關注

    9

    文章

    428

    瀏覽量

    26632
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121194
  • CDC
    CDC
    +關注

    關注

    0

    文章

    57

    瀏覽量

    17857
  • AXI總線
    +關注

    關注

    0

    文章

    66

    瀏覽量

    14315
  • 動態時鐘
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6970

原文標題:【Vivado那些事兒】動態時鐘的使用

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    動態時鐘配置下的SoC低功耗管理詳解

    SoC中CMOS電路功耗有:一是靜態功耗,主要是由靜電流、漏電流等因素造成的;二是動態功耗,主要是由電路中信號變換時造成的瞬態開路電流(crowbar current)和負載電流(load current)等因素造成的,它是SoC芯片中功耗的主要來源。
    發表于 02-12 17:31 ?3320次閱讀
    <b class='flag-5'>動態</b><b class='flag-5'>時鐘</b>配置下的SoC低功耗管理詳解

    12864帶字庫串口怎么顯示時鐘

    求助大神,我買了一塊12864串口的液晶,在網上找了好多例程都是并口的,串口的到底怎么寫動態時鐘啊。。。下面我附上我程序結構,看下怎么在這里添加動態時鐘
    發表于 12-04 12:39

    LCD顯示動態時鐘原理是什么?

    哪位大神可以告訴我圖片中的顯示原理
    發表于 01-13 23:06

    TMS320C2809 SPI 動態時鐘速率是多少?

    。我可不可以通過 SPIBRR 寄存器動態地更改 SPI 時鐘速率,以使其在發送模式下為 25MHz,在接收模式下為 12.5MHz?(這符合從芯片的規范,因為它最高可以工作在 26MHz)。如果我能夠
    發表于 05-12 09:21

    請問怎樣平滑無誤地實現時鐘切換?

    常用的冗余時鐘方案有哪些?動態時鐘切換與基于DCXO的時鐘切換各有什么優缺點?參考時鐘和晶振之間的動態
    發表于 04-19 07:32

    動態時鐘配置下的SoC低功耗管理 電子資料

    摘要:隨著芯片集成度的提高,對一些功能復雜的系統芯片功耗的管理,已經引起大家越來越多的重視,如何控制好SoC的功耗將成為芯片能否成功的重要因素。本文提出一種通過動態管理時鐘的策略,達到降低整個So...
    發表于 04-22 06:00

    動態時鐘配置下的SoC低功耗管理

    摘要:隨著芯片集成度的提高,對一些功能復雜的系統芯片功耗的管理,已
    發表于 04-16 23:32 ?1212次閱讀
    <b class='flag-5'>動態</b><b class='flag-5'>時鐘</b>配置下的SoC低功耗管理

    低功耗MCU動態時鐘分析

    文結合MSP430系列微處理器,詳細論述了通過控制改變MCU的時鐘頻率來降低功耗的設計方法。
    發表于 04-15 11:11 ?2271次閱讀
    低功耗MCU<b class='flag-5'>動態</b><b class='flag-5'>時鐘</b>分析

    低功耗MCU動態時鐘分析與應用

    地影響著芯片的尺寸、成本和性能。本文結合MSP430系列微處理器,詳細論述了通過控制改變MCU的時鐘頻率來降低功耗的設計方法。 1 功耗產生的原因 在CMOS電路中,功耗損失主要包括靜態功耗損失和動態功耗損失兩部分。其中靜態功耗
    發表于 12-01 17:39 ?521次閱讀
     低功耗MCU<b class='flag-5'>動態</b><b class='flag-5'>時鐘</b>分析與應用

    動態時鐘停止重啟太快,可通過編程LPDDR2控制器解決

    在沒有內存事務處理執行以及如果接收到內存請求重啟時鐘時,用戶可通過編程 LPDDR2 控制器來停止 DRAM 時鐘
    發表于 06-23 08:53 ?1503次閱讀

    Linux時間子系統之一:動態時鐘框架(CONFIG_NO_HZ、tickless)

    動態時鐘正確工作之前,系統需要切換至動態時鐘模式,而要切換至動態時鐘模式,需要一些前提條件,最
    發表于 05-12 09:09 ?2080次閱讀

    基于51單片機數碼管動態時鐘電路圖原理圖

    SEG數碼管4個共陰極(小編用的共陽極的)、10k排阻(小編沒有直接做了個)、51單片機、按鈕、30p電容、12MHz晶振、10k電阻、10uf電容、插針、74ls245(小編用三極管代替了)。
    的頭像 發表于 09-17 09:36 ?1.6w次閱讀

    Flash淘汰導致Fliqlo崩潰的修復方法

    Fliqlo 是很多人都喜歡的一款屏保軟件,由于酷似 MacOS 里的動態時鐘屏保,點擊率很高。不過很多網友發現,這兩天 Fliqlo 貌似出問題了,沒有了酷酷的翻頁時鐘,而是下面這個鬼樣子!顯然,這是 Flash Player
    的頭像 發表于 01-25 09:24 ?1.3w次閱讀

    藍橋杯51單片機之數碼管從點亮到動態時鐘的實現【單片機開發初學者必掌握】

    51單片機最基礎的是流水燈,入門看的就是數碼管,本篇文章便是對數碼管的各種操作。從點亮一位數碼管,到程序中斷的實現,最后就是完成一個動態時鐘
    發表于 11-23 16:36 ?1次下載
    藍橋杯51單片機之數碼管從點亮到<b class='flag-5'>動態</b><b class='flag-5'>時鐘</b>的實現【單片機開發初學者必掌握】

    FPGA設計中動態時鐘的使用方法

    時鐘是每個 FPGA 設計的核心。如果我們正確地設計時鐘架構、沒有 CDC 問題并正確進行約束設計,就可以減少與工具斗爭的時間。
    發表于 07-12 11:17 ?1245次閱讀
    FPGA設計中<b class='flag-5'>動態</b><b class='flag-5'>時鐘</b>的使用方法
    金彩百家乐官网的玩法技巧和规则| 百家乐趋势图怎么看| 百家乐喜牛| 网络真人赌场| 马德里百家乐官网的玩法技巧和规则| 百家乐连锁| 百家乐官网现金网平台| 百家乐游戏机出千| 新全讯| 星期8百家乐官网的玩法技巧和规则 | 百家乐赢钱好公式| 大发888官网df888| 百家乐官网长胜攻略| 云鼎百家乐代理| 博E百百家乐官网娱乐城| 百家乐下| 百家乐官网娱乐城博彩| 线上百家乐网站| 万博88真人娱乐城| 百家乐桌蓝盾在线| 天马娱乐城| 百家乐太阳城怎么样| 通江县| 百家乐楼梯缆| 百家乐官网经验之谈| 百家乐游戏规则介绍| 利辛县| 沙龙百家乐娱乐平台| 百家乐官网5式直缆打法| 百利宫百家乐的玩法技巧和规则| 赌场百家乐官网玩法介绍| 威尼斯人娱乐城真钱赌博| 娱乐网百家乐官网补丁| 大发888注册 大发888官网| 百家乐官网那里最好| 赤水市| 百家乐破解秘籍| 百家乐官网的桌布| 大发888提款| 百家乐怎么开户| 蒙阴县|