時鐘的相關概念

2022-01-23 17:37:30 字數 2963 閱讀 3196

前言

主要是pll、dcm:  

pll,即鎖相環。是 fpga 中的重要資源。由於乙個複雜的 fpga 系統往往需要多個不同頻率,相位的時鐘訊號。所以,乙個 fpga 晶元中 pll 的數量是衡量 fpga 晶元能力的重要指標。fpga 的設計中,時鐘系統的 fpga 高速的設計極其重要。

dcm(digital clock manager)是較高階fpga產品中整合的專門用於時鐘綜合、消除時鐘偏斜和進行時鐘相位調整的韌體資源,利用dcm完成時鐘倍頻、分頻、相移十分方便。

本文參考:維基百科。

一、pll基本概念鎖相環(pll: phase-locked loops)是一種利用反饋(feedback)控制原理實現的頻率及相位的同步技術,其作用是將電路輸出的時鐘與其外部的參考時鐘保持同步。當參考時鐘的頻率或相位發生改變時,鎖相環會檢測到這種變化,並且通過其內部的反饋系統來調節輸出頻率,直到兩者重新同步,這種同步又稱為「鎖相」(phase-locked)。

pll全稱phase locked loop,意思是「相位」的鎖定。

這就說明,通過鎖相環得到的訊號通常有乙個clk輸入,可能會有如下輸出:

用pll是為了生產一系列跟輸入時鐘有一定關聯的時鐘,不同的輸出供給系統不同的模組,但每個模組的時鐘都可以預知。

二、pll基本組成

乙個鎖相環電路通常由以下模組構成:

a-鑑相器

鑒頻鑑相器(phase frequency detector)是一種能將兩種輸入訊號的相位進行比較並輸出頻率誤差和相位誤差資訊的裝置,它有兩個不同的輸入訊號。在鎖相環中,輸入訊號通常乙個來自壓控振盪器,另乙個由外部訊號源提供,其輸出訊號將指導後續環路如何調整來繼續鎖相。

b-低通濾波器

將pfd中生成的差異訊號的高頻成分濾除,保留直流部分。

c-壓控振盪器

根據輸入電壓,輸出對應頻率的週期訊號。利用變容二極體(偏置電壓的變化會改變耗盡層的厚度,從而影響電容大小)與電感構成的lc諧振電路構成,提高變容二極體的逆向偏壓,二極體內耗盡層變大,電容變小,lc電路的諧振頻率提高,反之,降低逆向偏壓時,二極體內電容變大,頻率降低。

d-反饋迴路

通常由乙個分頻器實現。將vco的輸出降低到與基準訊號相同級別的頻率才能在pfd中比較

spartan-6中的pll結構:

總結一下——

pll工作的基本原理就是將壓控振盪器的輸出經過分頻後與基準訊號輸入pfd,pfd通過比較這兩個訊號的頻率差,輸出乙個代表兩者差異的訊號,再經過低通濾波器轉變成乙個直流脈衝電壓去控制vco使它的頻率改變。這樣經過乙個很短的時間,vco的輸出就會穩定下來。

三、dcm基本概念

數字時鐘管理器(dcm)是一種用於管理時鐘架構並有助於時鐘訊號成形和操控的模組。dcm 內含乙個延遲鎖相環(dll),可根據輸入時鐘訊號,去除 dcm 輸出時鐘

訊號的歪斜,從而避免時鐘分配延遲。dll 內含乙個延遲元件和控制邏輯鏈路。延遲元件的輸出是輸入時鐘延遲所得。延遲時間取決於延遲元件在延遲鏈路中的位置。這種延遲體現為針對原始時鐘的相位改變或相移,這就是所謂的「數字相移」。dcm 內部的功能框圖如下圖所示:

其他

程式中新增了乙個 oddr2,使得 pll_ip 的bufg 輸出的時鐘訊號能夠輸出到 fpga 的普通 io。因為如果直接從 bufg 上連線到 obuf上,在編譯器 map 的過程中就會出現錯誤, 為避免這個錯誤,另一種方法就是在約束檔案中加上一條約束,讓編譯器忽略時序約束的要求,直接通過普通邏輯資源連線。但這樣 clock輸出的時延和 jitter 都會變差。

///////////////呼叫 oddr2 使時鐘訊號通過普通 io 輸出////////////////// 

oddr2 #(

.ddr_alignment("none"), // sets output alignment to "none", "c0" or "c1"

.init(1'b0), // sets initial state of the q output to 1'b0 or 1'b1

.srtype("sync") // specifies "sync" or "async" set/reset

) oddr2_inst (

.q(clk_out), // 1-bit ddr output data

.c0(pll_clk_o), // 1-bit clock input

.c1(~pll_clk_o), // 1-bit clock input

.ce(1'b1), // 1-bit clock enable input

.d0(1'b1), // 1-bit data input (associated with c0)

.d1(1'b0), // 1-bit data input (associated with c1)

.r(1'b0), // 1-bit reset input

.s(1'b0) // 1-bit set input

);

時鐘抖動相關概念

抖動定義為訊號距離其理想位置的偏離。本文將重點研究時鐘抖動,並 下面幾種型別的時鐘抖動 相鄰週期抖動 週期抖動 時間間隔誤差 tie 抖動 相位雜訊及相位抖動。時鐘抖動簡介 時鐘抖動是時鐘沿距離其理想位置的偏離。在應用中理解時鐘抖動非常重要,因為它在系統時序預算方面肩負關鍵角色。它還能幫助系統設計人...

Linux中的時鐘概念Linux中的時鐘概念

linux的時鐘中斷中涉及至二個全域性變數乙個是xtime,另乙個則是jiffies。有乙個與時間有關的時鐘 實時時鐘 rtc 這是乙個硬體時鐘,用來持久存放系統時間,系統關閉後靠主機板上的微型電池保持計時。系統啟動時,核心 通過讀取rtc來初始化wall time,並存放在xtime變數中,即xt...

時鐘脈衝概念

常看到說,時鐘訊號是用來 同步 系統各器件 cpu 記憶體 匯流排等 的工作的。但是這裡的 同步 實在是太籠統了。什麼是 同步 各器件為什麼要同步?以下內容為個個學習總結出來的觀點,不保證其正確性 下面舉儲存器的例子來說明。先要了解到 儲存器 是用觸發器 flip flop 或電容器 capacit...