基於FPGA和PLL的倍分頻時鐘的實現

2021-01-09 電子發燒友
基於FPGA和PLL的倍分頻時鐘的實現

Triquinne 發表於 2012-11-19 17:07:02

  現今的FPGA設計大多採用時序邏輯,需要時鐘網絡才能工作,通常情況下,時鐘通過外部晶體振蕩器產生。雖然大多數情況下使用外部晶振是最好的選擇。然而,石英晶振對溫度漂移敏感、且易碎,對於一些惡劣場合,如導引頭制導電路、溫度驟變和高速振蕩使得應儘量避免使用晶體振蕩器。本文主要研究如何通過FPGA內部延遲單元構建閉合組合邏輯鏈產生自激振蕩,從而產生時鐘信號,並通過內部PLL鎖相環獲得倍分頻時鐘的方法。該方法可用於應避免使用時鐘的場合下代替外部晶體振蕩器使用。

  實現方法

  構建一個帶有長延遲的閉合反相器可以獲得一個自激振蕩的輸出信號。如圖1所示。

  

  產生自激振蕩需要滿足兩個條件,一個是要有足夠長的延遲鏈,另一個是要有反相器邏輯。足夠長的延遲鏈可以通過FPGA的內建延遲邏輯或者非門鏈條組成,對於Altera公司的FPGA而言,內部延遲單元為LCELL,將若干LCELL串聯即可組成延遲鏈。其Verilog HDL描述為;

  wire [WIDTH:0] gcBufChain /*synthesis syn_keep=1*/;

  assign gcBufChain[0] = ~gcBufChain[WIDTH];

  assign dout = gcBufChain[0];

  genvar j;

  generate

  for (j = 0; j < WIDTH; j = j + 1)

  begin: dc_loop

  LCELL AlteraBuf (.in(gcBufChain[j]), .out(gcBufChain[j+1]));

  end

  endgenerate

  注意,為了防止編譯器對延遲鏈的優化,必須在定義處註明synthesis syn_keep=1, 否則編譯器會按照邏輯將其優化為直連線,無法起到延遲的效果。鏈的長度WIDTH需要指明,WIDTH設置過大,會導致延遲鏈過長,輸出信號可能不穩定(Skew大),過小則會導致無法起振,根據經驗,可以先取一較大值,保證起振。之後減小,獲得相應的時鐘頻率。

  實驗採用Altera DE4平臺,器件為Stratix IV EP4SGX530KH40C2,WIDTH與自激振蕩頻率對應值如下:

表 WIDTH與自激振蕩頻率對應值

  

  

  通過調節延遲鏈的LCELL個數可以對輸出頻率進行調節。雖然可以通過時序邏輯分析軟體對延遲進行預估計,但準確度並不高,因此,建議採用實測調整。

  上述時鐘產生的方法可以獲得較低頻率的時鐘信號,然而大多數FPGA設計需要更高的時鐘,為了獲得高頻穩定的時鐘源,需要藉助FPGA內部的PLL對時鐘信號進行瑣相跟蹤。通過MegaCore嚮導可以訂製一個ALTPLL鎖相環,在輸入時鐘信號頻率上填寫實測的自激振蕩頻率,在輸出頻率上可以自行計算。本實驗對128LCELLs產生的6.84Mhz信號進行倍分頻,獲得512Mhz的時鐘。由於高頻時鐘不容易測量,因此將此時鐘用來更新計數器,計數器實現64分頻。由於PLL需要從外部時鐘輸入PIN直接引入,因此需要將原先的輸出dout與時鐘輸入端dclk在硬體上連接。從而將其作為輸入時鐘。

  // Quartus II Verilog Template

  // Unsigned Adder

  module delay

  #(parameter WIDTH = 128)

  (

  output dout,

  input dclk,

  output dpllout,

  output dplldiv,

  output lock

  );

  wire [WIDTH:0] gcBufChain /*synthesis syn_keep=1*/;

  reg [5:0] counter;

  assign gcBufChain[0] = ~gcBufChain[WIDTH];

  assign dout = gcBufChain[0];

  genvar j;

  generate

  for (j = 0; j < WIDTH; j = j + 1)

  begin: dc_loop

  LCELL AlteraBuf (.in(gcBufChain[j]), .out(gcBufChain[j+1]));

  end

  endgenerate

  always @(posedge dpllout)

  begin

  counter<= counter + 1;

  end

  PLL pllclk(.inclk0(dclk), .c0(dpllout), .locked(lock));

  assign dplldiv = counter[5];

  endmodule

  

  可以從示波器上觀測到穩定的8Mhz的方波信號,同時也可觀察到PLL鎖定指示高電平(有效)。

  總結:當外部晶振無法正常工作時,可以嘗試採用通過組合邏輯延遲產生的自激振蕩作為時鐘。然而要注意的是,某些低端器件,如Cyclone II,輸出的信號可能穩定性不高,Skew較大,高端器件性能較為穩定。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 基於FPGA的伺服驅動器分周比設計與實現
    要實現對電動機的精確位置控制,轉子的位置必須能夠被精確的檢測出來。光電編碼器是目前最常用的檢測器件。光電編碼器分為增量式、絕對式和混合式。其中,增量式以其構造簡單,機械壽命長,易實現高解析度等優點,已被廣泛採用。增量式光電編碼器輸出有A,B,Z三相信號,其中A相和B相相位相差90°,Z相是編碼器的「零位」,每轉只輸出一個脈衝。在應用中,經常需要對A相、B相正交脈衝按照一定的比例,即分周比進行分頻。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    一個體積小、低功耗、高速度能完成特定範圍語音識別和動作指令的機器人系統的研製具有很大的實際意義。 2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。
  • 基於FPGA的實時中值濾波器硬體實現
    文獻[3]、[4]提出了鄰域圖像幀存的存儲結構,該結構充分利用了圖像幀存的數據結構轉換特性,並行高速提供鄰域圖像數據,配以FPGA作為並行處理器,高速實時地實現了中值濾波。但是以上研究都是基於標清圖像的中值濾波器,處理的圖像大小一般為256×256、512×512的灰度圖等,很少有實現高清圖像的中值濾波器。
  • 基於FPGA的複數浮點協方差矩陣實現
    為了保證算法的實現,必須對中間運算數據進行截斷,將每次累加的結果除2(可以通過移位運算來實現),以避免溢出。 此外,在應用MUSIC算法時,各種計算都是複數運算。 接收陣元模型可分為任意離散陣、均勻圓弧陣、均勻圓陣和均勻線陣。在實際應用中,比較常見的是均勻線陣和均勻圓陣。每種陣列模型都有各自的特點,加之陣元數目的取值不同,也會導致陣列流型的對稱性變化。針對不同的陣元模型和陣元數,數據預處理的方法也會有所不同。 對於數據預處理的研究,目前已經有了一些比較成熟的算法。
  • 基於FPGA IP核的FFT實現
    目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。而FPGA廠商Altera公司和Xilinx公司都研製了FFT IP核,性能非常優越。在FFT的硬體實現中,需要考慮的不僅僅是算法運算量,更重要的是算法的複雜性、規整性和模塊化,而有關利用FFT IP核實現FFT算法卻涉及不多。
  • 基於DSP和FPGA的磁浮列車同步485通信方式研究
    基於以上考慮,本文提出了基於DSP和FPGA的磁浮列車同步485通信方式的研究,以解決上述挑戰。同步485的FPGA設計主要是基於Verilog硬體描述語言,所使用的EDA工具包括ISE(含其內部集成工具)、Modelsim。 時鐘及定時信號的的產生 車載無線電控制單元需要產生速率為512k的時鐘信號與20ms一次的ANF信號。另外,該單元在串行接收定位數據時接收時鐘應為512k(波特率時鐘)的16倍,即8M。
  • 基於FPGA的並行掃頻DDS的實現
    並行處理的主要目的是節省大型和複雜問題的解決時間。為使用並行處理,首先需要對程序進行並行化處理,也就是說將工作各部分分配到不同處理機中。而主要問題是並行是一個相互依靠性問題,而不能自動實現。此外,並行也不能保證加速。但是一個在 n 個處理機上執行的程序速度可能會是在單一處理機上執行的速度的 n 倍。
  • 基於源級耦合結構的正交二分頻電路
    摘 要: 設計了一種基於源級耦合結構的正交二分頻電路,由兩個完全相同的源級耦合D觸發器級聯構成,交替工作於觸發和鎖存模式。對傳統的源級耦合結構做了適當改進,採用動態負載,通過對PMOS管的開關控制很好地解決了電路工作速度和輸出擺幅間的矛盾;且時鐘開關PMOS和NMOS採用不同直流偏置,便於低電源電壓下直流工作點的選取。
  • 基於Verilog HDL的SPWM全數字算法的FPGA實現
    Fushion器件內部具有2 Mbit到8 Mbit不等的用戶可用的Flash存儲器;30個通道、最高12位精度、最高600 kS/s採樣率的ADC;片內100 MHz的RC振蕩器與PLL(鎖相環)共同為FPGA提供時鐘;Fushion內部40 bit的RTC除支持典型的RTC應用外,還可以控制片內1.5 V的電壓調整器以實現低功耗的睡眠和喚醒模式。
  • 基於FPGA的VGA顯示模式和像素頻率的識別
    而傳統的視頻採集卡硬體實現複雜,難於向便攜、嵌入的方向發展。因此,設計一種硬體簡單、使用方便、便於嵌入到系統中的視頻信號採集電路具有重要的意義。隨著FPGA(現場可編程門陣列)集成度的增加、功耗和價格的不斷降低,現在的視頻採集卡的實現可以由FPGA來實現。
  • 基於FPGA的同步測周期高精度數字頻率計的設計
    關鍵詞:頻率計;VHDL;FPGA;周期測量在現代數字電路設計中,採用FPGA結合硬體描述語言VHDL可以設計出各種複雜的時序和邏輯電路,具有設計靈活、可編程、高性能等優點。本文將介紹一種基於FPGA,採用同步測周期的方法來實現寬頻段高精度數字頻率計的設計。
  • 一種基於FPGA的實時紅外圖像預處理方法
    針對這一問題,提出一種基於FPGA的實時紅外圖像預處理方法。該方法採用了流水線技術來並行完成非均勻校正、空間濾波、直方圖統計等多個紅外圖像預處理算法,對系統結構進行了改進和優化。經過實驗測試驗證,該方法合理可行,能夠實時高效地完成紅外圖像預處理任務。與DSP圖像預處理系統相比可以節約將近50%的處理時間。
  • 基於FPGA的RCN226絕對式編碼器通信接口設計
    絕對式編碼器廠家大多為其編碼器配套了接收晶片,實現串行編碼到並行編碼的轉換,便於控制器的讀取操作。但是此類晶片通常價格比較昂貴,大約佔絕對式編碼器價格的四分之一。目前國內外高端交流伺服系統中普遍採用FPGA+DSP結構。
  • 基於壓控振蕩器(VCO)的高性能鎖相環(PLL)設
    PLL通常用在無線電接收機或發射機中,主要提供「本振」(LO)功能;也可用於時鐘信號分配和降噪,而且越來越多地用作高採樣速率模數(A/D)轉換的時鐘源。隨著集成電路加工中功能器件的尺寸縮小,器件電源電壓也呈下降趨勢,包括PLL和其它混合信號功能所用的電源。然而,PLL的關鍵元件——「壓控振蕩器」(VCO)的實用技術要求並未隨之大幅降低。
  • 二分頻分頻點簡單計算,二分頻器製作電路圖
    分頻點 分頻點是分頻器分配給每個揚聲器單元所承擔的頻響範圍的標記,是根據揚聲器單元的音頻表現能力(單元振膜有效直徑決定的邊界頻率)而定的;例如高頻單元和中頻單元的分頻點通常是3000Hz~4000Hz,中頻單元和低頻單元的分頻點通常是400Hz左右,重低音單元的分頻點通常在150Hz甚至更低。
  • 如何在FPGA中實現狀態機
    FPGA常常用於執行基於序列和控制的行動,比如實現一個簡單的通信協議。對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。
  • 基於Spartan-6 FPGA的Sinc3 Filter設計
    Sinck結構的濾波器適合Σ-Δ調製器使用,可有效濾除高頻噪聲,且其實現不需要乘法即可完成。其原理結構如圖1所示。  fs調製器的時鐘頻率即採樣頻率fs、抽取率M和輸出數據的頻率fdata之間的關係為:
  • 基於FPGA+MATLAB的串行多階FIR濾波器設計
    為說明使用FPGA實現FIR的靈活性,文中列舉了一個多階串行FIR濾波器實例,並給出主要的原始碼和相關模塊的時序和功能說明,最後使用Matlab和Quartusii聯合仿真驗證了FPGA硬濾波器工程的正確性。
  • 基於FPGA的結構光圖像中心線提取
    編者按:在線結構光視覺三維測量系統中,為了實現對結構光圖像線條紋中心的實時高精度提取,本文採用了極值法、閾值法和灰度重心法相結合的中心線提取方法。利用現場可編程門陣列器件(FPGA)的流水線技術以及並行技術的硬體設計來完成運算,保證了光條紋中心點的實時準確提取。
  • 完美的時序:用抖動與相位噪聲測量做時鐘分頻
    本文描述了一些實用的方式,用於將較高頻率VCO(壓控振蕩器)的時鐘信號做分頻處理。 大多數用於測量抖動的現代設備都可以劃分到兩大類中的一個:時域或頻域。時域設備通常是一種高速數字示波器的形式,有高的單次採樣帶寬。頻域設備一般的形式是頻譜分析儀、帶相位噪聲測量功能的頻譜分析儀,或相位噪聲分析儀。這兩大類中,每一類設備都有自己的優點與缺點。