將受控振蕩器所需的頻率調諧范圍分成離散頻帶是一種常用技術。擁有多個頻段的優勢在于可以覆蓋較寬的調諧范圍,同時在每個頻段內保持相對較低的壓控振蕩器 (VCO) 增益。低 VCO 增益有利于實現低 VCO 相位噪聲。要求頻段重疊。調諧波段隨數字波段控制信號而改變。
當在鎖相環 (PLL) 中使用具有離散調諧頻帶的振蕩器時,必須在 PLL 進入鎖相之前選擇所需的頻帶。這個必要的步驟有很多名稱(頻段校準、自動頻段選擇、頻段選擇等),但思路是一樣的:在允許 PLL 鎖定之前選擇正確的頻段。
校準頻帶的一種直接方法是讓兩個計數器同步,一個用參考時鐘計時,另一個用反饋時鐘計時,反饋時鐘是 VCO 輸出的分頻版本。分頻發生在稱為多模分頻器 (MMD) 的模塊中。
計數器被強制同時啟動并允許計數到預定值。達到該值的計數器被標記為獲勝者;因此,該時鐘的頻率更高。
使用有關哪個計數器獲勝的信息,可以增加或減少 VCO 的頻帶控制以使頻率更接近。該算法在帶校準塊 (BCAL) 中實現。無需等待包括整個 PLL 和其他電路的昂貴的 ASIC 制造運行,您可以實施頻段校準算法并在 FPGA 上對其進行測試。這篇文章告訴你如何。
VCO 頻帶校準 (BCAL)
在通信芯片中,頻率合成器是無處不在的功能塊。頻率合成器被寬泛地定義為產生與參考頻率成正比的輸出頻率的 PLL。比例常數是整數或實數的特定子集,具體取決于合成器的實現。
合成器在接收機前端的一種用途是創建本地振蕩器輸入到混頻器,混頻器將接收到的射頻 (RF) 信號下變頻為中頻。通道選擇是通過設置合成器的比例常數來實現的。一般來說,RF = Ndiv * REF,其中RF為輸出頻率,Ndiv為比例常數,REF為參考頻率。
Ndiv 可以是整數比,N/R,其中 N 是 VCO 輸出的整數分頻值,R 是用于對參考振蕩器進行分頻的另一個整數分頻比。如果需要更精細的頻率分辨率,可以將 N 值添加到 sigma-delta 調制代碼,該代碼抖動分頻器函數并提供 REF/2^(# sigma-delta 累加器位) 的小數分辨率。
頻率合成器將固定頻率的晶體振蕩器乘以所需的頻率。PLL 充當閉環負反饋系統來實現這種乘法。MMD 的工作是將 VCO 輸出的頻率除以整數值 N。
將該信號的相位與參考信號的相位進行比較,對相位差進行濾波以去除高頻分量。過濾后的信號用作 VCO 的電壓控制。如果 MMD 的輸出與參考之間存在任何相位差,VCO 上的控制電壓將進行調整以校正該相位差。
對于手頭的應用,合成器需要產生 3,000 至 4,000 MHz 的頻率。VCO 的連續調諧是通過改變作為并聯電感-電容 (LC) 諧振電路一部分的變容二極管兩端的偏置電壓來實現的。制造技術將控制電壓限制在大約 1.5 V 的變化范圍內。很難制造一個變容二極管,其電抗變化足以引起 1,000 MHz 的頻率變化,而控制電壓變化僅為 1.5 V。
此外,1,000 MHz/1.5 V 的大 VCO 增益會使 PLL 容易受到高相位噪聲的影響。由于這些原因,調諧范圍被分成離散的頻段。離散頻帶是通過將二進制加權電容器添加到并聯 LC 儲能電路來實現的。它們根據數字頻段設置打開或關閉。必須先設置頻帶,然后才能允許 PLL 以連續方式鎖定和跟蹤。
BCAL 電路作為第二個反饋環路運行,通過其頻帶輸入控制 VCO。在波段校準期間,VCO 控制電壓固定在一個方便的電壓,通常是其允許控制電壓范圍的中點。相位檢測器在波段校準期間也被禁用。
我的目標是設計和測試頻段校準算法,然后再將其與 RF 接收器 ASIC 上的 PLL 集成。為此,一個類似于 PLL 的系統在進行頻帶校準時完全由可以在 FPGA 上實現的電路構建。由于 VCO 和 MMD 集總在一起充當可編程振蕩器,輸出頻率在參考頻率附近,因此它們的功能可以通過數控振蕩器 (NCO) 建模,如圖 1所示。
為了使合成器具有低相位噪聲,晶體生成頻率參考。參考頻率通常為數十 MHz,遠低于當今 FPGA 上可實現的邏輯速度。BCAL算法本身可以用數字技術來描述和設計。
在簡單的情況下,它的輸入是兩個時鐘,即 NCO 的參考和輸出;它的輸出是 NCO 的頻帶信號。頻帶校準、NCO 和外部應用的參考信號的組合形成了一個帶負反饋的閉環系統,類似于在其頻帶校準模式下運行的 PLL,所有這些都可以在 RTL 中編碼,然后在 FPGA 上進行測試花錢制造 ASIC。
你需要什么
1. FPGA 及其編程軟件
3、產生參考時鐘的信號源,如10~15MHz
4.調試用示波器一臺
我使用Matlab/Simulink 進入初始設計和testbench。Fixed-Point Toolbox 和 Simulink Fixed Point 對定點數的支持有助于使模型準確反映 RTL 中的實現。RTL 代碼用 verilog 編寫,并在 Altera 的 Stratix II DSP 開發套件上運行。
在 Altera 的 Quartus II 軟件中,FPGA 的所有功能都可以完成:設計輸入、功能仿真、時序仿真、綜合、適配、使用設計配置 FPGA 和調試。當我實時測試波段校準時,我使用了信號源和示波器。
設計和原型制作過程 設計
和原型制作過程是以下熟悉步驟的迭代:1. 設計輸入;2.測試;3、調試;4. 轉至 2。此循環根據需要重復多次,直到達到所需的功能。
首先,我將 NCO 構建為 Simulink 子系統。NCO Simulink 模型是從我在www.mindspring.com/~tcoonan/nco.v網站上找到的 NCO 的 verilog 逆向工程得到的。NCO 基于可編程模計數器。其輸出頻率等于Fs*(BAND+STEP)/MOD 其中STEP和MOD為固定值,BAND為8位頻帶信號。
NCO 的功能通過使用 Fs=11MHz 運行瞬態仿真并掃描 0 至 255 的 BAND 值并計算終輸出頻率來驗證。由此產生的輸出頻率與 BAND 或頻帶調諧曲線是單調的,但不是完全線性的。由于它是單調的,因此被認為可以在 BCAL 的閉環測試設置中使用。
在確定 NCO 具有單調調諧曲線并且可以產生 10 到 14 MHz 范圍內的頻率(大約是 PLL 的參考頻率)之后,我構建了 BCAL 模型。BCAL 算法通過競爭兩個相同的 10 位計數器來工作。一個計數器由參考計時;NCO 為對方計時。
由于它們都從 0 開始,個達到常量 HIT_VALUE 的計數器由較高的頻率計時。為了確定哪個計數器先到達 HIT_VALUE,每個計數值不斷與 HIT_VALUE 進行比較,并且兩個比較結果的異或用于將“1”輸入 D 觸發器。
當兩個計數值都小于 HIT_VALUE 時,比較器都輸出 0,XOR 結果為 0。在其中一個值超過 HIT_VALUE 的瞬間,XOR 輸出轉換為 1 并在 DFF 輸出上捕獲 1。此后的某個時間,另一個計數值將達到 HIT_VALUE,并且 XOR 結果返回 0。
另一個比較器用于將參考計數器與常量 RESET_VALUE 進行比較,當計數超過此值時,兩個計數器都將重置為 0,比賽重新開始。如果 HIT_VALUE 為 230,則合理的 RESET_VALUE 為 240。同時,有關哪個時鐘更快的信息位用作二進制搜索塊的輸入。
二進制搜索塊保存當前波段輸出值,并根據贏得比賽的時鐘確定下一個波段值。二進制搜索塊從其當前輸出中添加或減去適當的二進制加權值。對于 8 位頻段,初始頻段值為 128 的中間值,連續進行七次比賽以填充從 MSB 到 LSB 的 8 位。圖 2顯示了 BCAL 算法的示例運行。
在 Simulink 中根據邏輯門、比較器、寄存器、延遲和查找表構建頻帶校準算法后,將設計輸入到 Quartus II 軟件中。為了使調試更容易,Simulink 模型中的每條線都被命名。
在翻譯過程中,我在 Verilog 代碼中對信號使用了相同的名稱。如果信號源自 Simulink 模型中的寄存器(或觸發子系統中的延遲),我將其設為 Verilog 中的寄存器;否則信號是電線。因此,從 Simulink 原始子系統到 Verilog 的設計入口非常簡單。
以類似于在 Simulink 中完成的測試的方式,所有子模塊都在 Quartus II 中進行了仿真和驗證。在確認子模塊的功能后,制作了整個 BCAL 的測試原理圖。測試原理圖包括由 BCAL 頻帶輸出控制的 NCO。
為了完成循環,NCO 輸出用作 BCAL 的時鐘輸入之一。BCAL 參考輸入通過其中一個 FPGA 引腳連接到電路板上的 SMA 連接器,因此它可以使用外部信號源計時。
BCAL測試平臺綜合擬合,時序網表仿真。很明顯,設計中存在錯誤,因為某些頻帶位進入未定義狀態,在 Quartus II 中顯示為“U”。
該錯誤來自計數器值與 HIT_VALUE 的異步比較。在注冊這些比較結果并將異步數據路徑重新定時到參考時鐘之后,設計功能在仿真中是正常的。下一步是將設計加載到 FPGA 上并通過測量進行驗證。
通過以大約 100 kHz 的增量將信號源生成的參考頻率從 10 MHz 更改為 14 MHz 來進行測試。測試設置如圖 3所示。在每個參考頻率,頻段校準由與按鈕相關的重置啟動。開關去抖動本來可以使測試臺更干凈,但不是必需的。
開關彈跳引起的多次復位導致算法反復重新開始;當開關停止彈動時,BCAL 正常工作。8 位波段值映射到 FPGA 板上的兩個 7 段顯示器,以十六進制顯示終波段值。
BCAL 算法在 146 μs (= 7*230/11 MHz) 內完成,因此人類觀察者只會看到終值。讀數便于與 Simulink 模型的理論值進行比較。通過這種方式,BCAL 算法針對從其到頻帶值的 50 個可能頻率進行了通過/失敗測試。
潛在的陷阱和技巧
這種特殊設計的挑戰之一是它的異步特性。NCO 時鐘的頻率在頻帶校準期間發生變化,BCAL 中的一些邏輯元件取決于該時鐘邊沿的時序。同樣,其他邏輯元件與參考時鐘邊沿同步變化。
FPGA設計軟件不利于異步設計。進行異步設計并非不可能,但如果您必須查看有關警告集合的文檔以確定您的代碼是否按預期進行,請不要感到驚訝。由于參考頻率永遠不會改變,因此修改了設計以使所有數據路徑與參考時鐘同步。
當數據路徑需要跳轉時鐘域時,它會使用級聯寄存器重新定時,以限度地減少亞穩態。同樣,另一個陷阱是沒有注冊組合比較器輸出。這些都是實際硬件中出現的問題示例,但可能不會出現在 Simulink 的理想模型中,除非您將它們顯式添加到您的模型中。
為了簡化 Simulink 模型到 RTL 的遷移,請嘗試使用在您選擇的 RTL 語言中作為原語的 Simulink 功能塊。例如,XOR、AND 和大于等邏輯函數直接從 Simulink 映射到 Verilog。Simulink 中的延遲或顯式 DFF 在 Verilog 中建模為寄存器。
我還建議為 Simulink 模型中的所有信號命名,并在 Verilog 代碼中使用相同的名稱。在 Simulink 中首先使用浮點數據類型構建模型是可以的,但如果您將浮點設計遷移到定點,它將簡化編碼過程并使設計更易于調試。
終結果
在 FPGA 上運行 RTL 代碼并根據測量數據判斷設計功能正常并滿足規范后,就可以在 ASIC 上實現代碼了。邏輯綜合和布局是用 Cadence 的 Encounter 軟件完成的。作為的檢查,我模擬了生成的邏輯網表以及提取的帶有寄生電阻器和電容器的布局網表,以確保在 Encounter 的綜合和布局布線后功能仍然正常。
在這些模擬中,功能檢查正常。從那時起,包括頻率合成器的 RF 接收器 ASIC 被制造出來,芯片的測量顯示頻率合成器在其可能的輸出頻率范圍內鎖相。這意味著波段校準功能正常。因此,設計團隊可以專注于從 ASIC 的模擬部分中獲得更好的性能。
在將設計提交到 ASIC 之前,在 FPGA 上對設計進行原型設計的過程不僅有助于驗證目的,而且對于它為算法實驗提供的可能性也很有用。如果算法的上下文可以在 FPGA 上復制,就像它出現在 ASIC 上一樣,則可以嘗試任意數量的算法實現,并在面積效率、電流消耗或速度方面進行比較。快樂的原型制作!
精彩推薦 至芯科技-FPGA就業培訓來襲!你的選擇開啟你的高薪之路!3月28號北京中心開課、歡迎咨詢! 使用數字電源模塊為 FPGA 供電 FPGA設計工程師努力的方向?數字IC設計師常見面試題!掃碼加微信邀請您加入FPGA學習交流群
歡迎加入至芯科技FPGA微信學習交流群,這里有一群優秀的FPGA工程師、學生、老師、這里FPGA技術交流學習氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
點個在看你最好看
原文標題:如何使用 FPGA 測試 PLL 頻帶校準算法
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1630文章
21798瀏覽量
606051
原文標題:如何使用 FPGA 測試 PLL 頻帶校準算法
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論