上位機知識篇---時鐘分頻


文章目錄

  • 前言


前言

本文簡單介紹了一下時鐘分頻。時鐘分頻(Clock Division)是數字電路設計中常見的技術,用于將高頻時鐘信號轉換為較低頻率的時鐘信號,以滿足不同模塊的時序需求。它在處理器、FPGA、SoC(片上系統)和嵌入式系統中廣泛應用。


  1. 時鐘分頻的基本概念
    (1) 什么是時鐘分頻?
    時鐘分頻是指通過硬件或軟件方式降低輸入時鐘頻率,生成一個頻率較低的時鐘信號。

例如,將 100MHz 的時鐘分頻為 50MHz(2分頻)或 25MHz(4分頻)。

(2) 為什么需要時鐘分頻?
降低功耗:高頻時鐘會增加動態功耗(
𝑃

𝑓
?
𝑉
2
P∝f?V
2
),分頻可減少功耗。

匹配外設需求:某些外設(如UART、I2C)需要較低時鐘頻率。

時序約束:某些邏輯電路無法在過高頻率下穩定工作。

多時鐘域設計:不同模塊可能需要不同時鐘頻率。

  1. 時鐘分頻的實現方式
    (1) 硬件分頻(計數器分頻)
    最常見的方式是使用計數器(Counter),通過計數輸入時鐘的邊沿來生成分頻時鐘。

偶數分頻(50%占空比)
適用于 2、4、6、8… 分頻。

實現方法:

計數器在上升沿計數,達到
𝑁
/
2
N/2 時翻轉輸出時鐘。

Verilog 示例(2分頻):

verilog
reg clk_div;
always @(posedge clk) begin
clk_div <= ~clk_div; // 每個上升沿翻轉,實現2分頻
end
波形示例:

clk: | ̄|| ̄|| ̄|| ̄|| ̄|
clk_div:|ˉˉˉ||ˉˉˉ|_|ˉˉˉ
奇數分頻(非50%占空比)
適用于 3、5、7… 分頻。

實現方法:

使用兩個計數器(上升沿和下降沿觸發),組合生成分頻時鐘。

Verilog 示例(3分頻):

verilog
reg [1:0] cnt;
reg clk_div;

always @(posedge clk) begin
if (cnt == 2) begin
cnt <= 0;
clk_div <= ~clk_div;
end else begin
cnt <= cnt + 1;
end
end
波形示例:

clk: | ̄|| ̄|| ̄|| ̄|| ̄|| ̄|_
clk_div:_|ˉˉˉˉˉ||ˉˉˉˉˉ|
(2) 鎖相環(PLL)分頻
PLL(Phase-Locked Loop) 可以生成精確的分頻/倍頻時鐘。

優點:

可編程分頻系數(如1.5、2.5等非整數分頻)。

低抖動(jitter),適合高速應用。

FPGA 示例(Xilinx PLL):

verilog
// 在FPGA中通常通過IP核配置
clk_wiz_0 pll_inst (
.clk_in1(clk_100MHz),
.clk_out1(clk_50MHz), // 2分頻
.clk_out2(clk_25MHz) // 4分頻
);
(3) 軟件分頻(微控制器)
在MCU(如STM32)中,可通過定時器(Timer)實現分頻:

c
// STM32 HAL 庫示例:定時器2分頻
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 1; // 輸入時鐘 / (1+1) = 2分頻
htim2.Init.Period = 1000; // 自動重裝載值
HAL_TIM_Base_Init(&htim2);
3. 時鐘分頻的關鍵問題
(1) 時鐘抖動(Jitter)
硬件分頻可能引入抖動,PLL 分頻更穩定。

解決方案:使用低抖動時鐘源或PLL。

(2) 時鐘偏移(Skew)
分頻后的時鐘可能因路徑延遲不同步。

解決方案:使用全局時鐘緩沖器(BUFG)。

(3) 跨時鐘域(CDC, Clock Domain Crossing)
分頻后可能涉及不同時鐘域的數據傳輸,導致亞穩態。

解決方案:

使用 雙觸發器同步(2-FF Synchronizer)。

使用 異步 FIFO 處理高速數據。

  1. 典型應用場景
    應用 分頻方式 說明
    CPU核心時鐘 PLL分頻 動態調整主頻(如1GHz→500MHz)
    UART通信 計數器分頻 生成波特率時鐘(如115200Hz)
    PWM信號生成 定時器分頻 調節占空比和頻率
    低功耗模式 降頻分頻 降低時鐘頻率以省電
  2. 總結
    時鐘分頻 是數字系統設計中的關鍵技術,用于生成不同頻率的時鐘信號。

實現方式:

硬件分頻(計數器):簡單,適用于整數分頻。

PLL分頻:精確,支持非整數分頻。

軟件分頻(MCU):靈活,適用于可編程系統。

關鍵問題:抖動、偏移、跨時鐘域同步需特別注意。

掌握時鐘分頻技術,可以優化系統性能、降低功耗,并提高設計的靈活性。


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

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

相關文章

推薦幾個免費提取音視頻文案的工具(SRT格式、通義千問、飛書妙記、VideoCaptioner、AsrTools)

文章目錄 1. 前言2. SRT格式2.1 SRT 格式的特點2.2 SRT 文件的組成2.3 SRT 文件示例 3. 通義千問3.1 官網3.2 上傳音視頻文件3.3 導出文案 4. 飛書妙記4.1 官網4.2 上傳音視頻文件4.3 導出文案4.4 缺點 5. VideoCaptioner5.1 GitHub地址5.2 下載5.2.1 通過GitHub下載5.2.2 通過…

Linux深度探索:進程管理與系統架構

1.馮諾依曼體系結構 我們常見的計算機&#xff0c;如筆記本。我們不常見的計算機&#xff0c;如服務器&#xff0c;大部分都遵守馮諾依曼體系。 截至目前&#xff0c;我們所認識的計算機&#xff0c;都是由?個個的硬件組件組成。 輸入設備&#xff1a;鍵盤&#xff0c;鼠標…

觀察者模式 (Observer Pattern)

觀察者模式(Observer Pattern)是一種行為型設計模式。它定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。當主題對象的狀態發生變化時,會自動通知所有觀察者對象,使它們能夠自動更新自己的狀態。 一、基礎 1. 意圖 核心目的:定義對象間的一種一對…

Network.framework 的引入,不是為了取代 URLSession

Network.framework 的引入&#xff0c;不是為了取代 URLSession 如果你感覺 Network.framework 的引入, 可能是為了取代 URLSession, 那你就大錯特錯了&#xff01;這里需要非常準確地區分一下&#xff1a; &#x1f535; Network.framework 不是為了取代 URLSession。 &…

Redis 數據分片三大方案深度解析與 Java 實戰

Redis 數據分片是將數據分散存儲在多個 Redis 實例上的技術&#xff0c;以解決單個 Redis 實例在存儲容量、性能和可用性上的限制。常見的 Redis 數據分片方案包括客戶端分片、代理分片和Redis Cluster&#xff08;集群分片&#xff09;&#xff0c;以下為你詳細介紹&#xff1…

FreeBSD可以不經過windows服務器訪問windows機器上的共享文件嗎?

答案是&#xff1a;當然可以&#xff01; 使用sharity-light 軟件 可以使用sharity-light 軟件&#xff0c;直接不用安裝samba等軟件&#xff0c;直接訪問windows機器上的共享文件。 但是可惜的是&#xff0c;sharity-light在FreeBSD的ports里棄用了。看來是從FreeBSD 8 就開…

主流 LLM 部署框架

主流 LLM 部署框架 框架主要特點適用場景vLLM- 超快推理&#xff08;高吞吐&#xff09; - 動態批處理 - 支持 HuggingFace Transformer - 支持 PagedAttention高并發、低延遲在線推理TGI (Text Generation Inference)- Huggingface官方出品 - 多模型管理 - 支持動態量化 - 支持…

在 Vue 3 setup() 函數中使用 TypeScript 處理 null 和 undefined 的最佳實踐

在 Vue 3 中使用 setup() 函數和 TypeScript 時&#xff0c;null 和 undefined 是兩個需要特別關注的類型。雖然它們看起來都表示“沒有值”&#xff0c;但它們在 JavaScript 和 TypeScript 中有著不同的含義和使用場景。如果不小心處理它們&#xff0c;可能會導致潛在的 bug 或…

在 UniApp 中獲取當前頁面地址

在 UniApp 中獲取當前頁面地址&#xff0c;可以通過以下步驟實現&#xff1a; 方法說明&#xff1a; 獲取當前頁面實例&#xff1a;使用 getCurrentPages() 獲取頁面棧數組&#xff0c;最后一個元素即為當前頁面實例。 提取頁面路徑和參數&#xff1a;從頁面實例的 route 屬性…

【華為】防火墻雙擊熱備-之-主備模式-單外網線路-分享

FW1和FW2的業務接口都工作在三層&#xff0c;上行連接二層交換機。上行交換機連接運營商的接入點&#xff0c;運營商為企業分配的IP地址為100.100.100.2。現在希望FW1和FW2以主備備份方式工作。正常情況下&#xff0c;流量通過FW1轉發&#xff1b;當FW1出現故障時&#xff0c;流…

crossOriginLoading使用說明

1. 說明 此配置用于控制 Webpack 動態加載的代碼塊&#xff08;chunk&#xff09;&#xff08;例如代碼分割或懶加載的模塊&#xff09;在跨域&#xff08;不同域名&#xff09;加載時的行為。它通過為動態生成的 <script>標簽添加 crossorigin 屬性&#xff0c;確保符合…

windows中安裝VMware Workstation Pro虛擬機和ubuntu

目錄 一、安裝 VMware Workstation Pro 虛擬機 1、官網下載VMware Workstation Pro 1.1 選中 "VMware Workstation Pro for PC" 的 "DOWNLOAD NOW" 1.2 跳轉到broadcom登錄頁面 1.3 注冊賬號 1.4 輸入給郵箱收到的驗證碼信息&#xff0c;然后點擊”Verify…

如何快速輕松地恢復未保存的 Word 文檔:簡短指南

文字處理器已經存在了幾十年&#xff0c;其中許多已經變得非常擅長防止問題。丟失未保存的數據是一個常見問題&#xff0c;因此辦公軟件通常帶有恢復文件的方法。在本文中&#xff0c;我們將介紹如何恢復 Word 文檔&#xff0c;即使您尚未保存它。 確保數據安全的最佳方法是保…

JavaScript原生實現簡單虛擬列表(列表不定高)

本文首發在我的個人博客上&#xff1a;JavaScript原生實現簡單虛擬列表(列表不定高)https://www.brandhuang.com/article/1745637125513 前言 之前實現了一個定高版本的虛擬列表&#xff0c;今天在定高版本的基礎上稍作調整&#xff0c;來實現不定高版本&#xff0c;之前的版本…

redis數據類型-位域bitfield

redis數據類型-位域bitfield 文檔 redis單機安裝redis常用的五種數據類型redis數據類型-位圖bitmapredis數據類型-基數統計HyperLogLogredis數據類型-地理空間GEOredis數據類型-流Stream 官方文檔 官網操作命令指南頁面&#xff1a;https://redis.io/docs/latest/commands/…

pandas讀取MySQL中的數據

使用pandas讀取MySQL中的數據 1、導入庫 pip install pandas pip install sqlalchemy2、示例代碼 # -*- coding: utf-8 -*-import pandas as pd import re from sqlalchemy import create_engine# 清洗文本 def clean_text(text):text

MyBatis緩存配置的完整示例,包含一級緩存、二級緩存、自定義緩存策略等核心場景,并附詳細注釋和總結表格

以下是MyBatis緩存配置的完整示例&#xff0c;包含一級緩存、二級緩存、自定義緩存策略等核心場景&#xff0c;并附詳細注釋和總結表格&#xff1a; 1. 一級緩存&#xff08;默認開啟&#xff09; // 使用同一SqlSession執行兩次查詢&#xff0c;自動命中一級緩存 try (SqlSe…

深入解析 C++17 中的std::variant與std::visit:從原理到實踐

引言 什么是std::variant 在 C17 之前&#xff0c;如果你想在一個變量中存儲多種可能的類型&#xff0c;通常會使用 union 或 void* 指針。然而&#xff0c;這些方法都有明顯的缺點。 使用 union 時&#xff0c;類型信息會丟失&#xff0c;使得代碼容易出錯。 void* 指針則需…

Dijkstra算法對比圖神經網絡(GNN)

什么是AI模型? AI模型(人工智能模型)是一類模仿人類智能行為的數學模型或算法。它們通過從大量數據中學習,識別模式、做出預測或決策。常見的AI模型包括機器學習模型(如決策樹、神經網絡、支持向量機)和深度學習模型(如卷積神經網絡CNN、循環神經網絡RNN)。簡單來說,…

Yarn 安裝與使用教程

Yarn 安裝與使用教程 Yarn 是一個由 Facebook 開發的 JavaScript 包管理工具&#xff0c;它比傳統的 npm 更加高效、可靠&#xff0c;并且在性能上有所提升。Yarn 主要解決了 npm 安裝速度慢、并發性差、緩存機制不完善等問題&#xff0c;它提供了更快的安裝速度、更穩定的依賴…