Maxim設計了一種易于構建的CDMA基帶調制發生器,用于對設計到蜂窩手機發射路徑中的各種產品進行電路評估。該設計結合了高密度可編程邏輯器件、晶體振蕩器和一對匹配的低通濾波器,以提供所需的正交輸出波形。復雜可編程邏輯器件(CPLD)中的數字電路基于IS95標準。4.9152MHz晶體振蕩器驅動CY37256 CPLD產生1.2288MHz數字輸出,從而為輸出低通濾波器提供精確的I/Q(同相和正交)比特流。通過在MAX2361發送器IC上測量ACPR,并將結果與使用安捷倫E4433B任意波形發生器作為參考信號源觀察到的ACPR進行比較,證實了性能。實驗室測量的ACPR被發現在0.5dB以內一致。
本應用筆記介紹了CDMA反向鏈路波形發生器的數字部分,并描述了一些設計問題及其處理方式。
介紹
Maxim設計了一種易于構建的CDMA基帶調制發生器,用于對設計到蜂窩手機發射路徑中的各種產品進行電路評估。該設計結合了高密度可編程邏輯器件、晶體振蕩器和一對匹配的低通濾波器,以提供所需的正交輸出波形。復雜可編程邏輯器件(CPLD)中的數字電路基于IS95標準。4.9152MHz晶體振蕩器驅動CY37256 CPLD產生1.2288MHz數字輸出,從而為輸出低通濾波器提供精確的I/Q(同相和正交)比特流。通過在MAX2361發送器IC上測量ACPR,并將結果與使用安捷倫E4433B任意波形發生器作為參考信號源觀察到的ACPR進行比較,證實了性能。實驗室測量的ACPR被發現在0.5dB以內一致。
本應用筆記介紹了CDMA反向鏈路波形發生器的數字部分,并描述了一些設計問題及其處理方式。
數字系統說明
教科書CDMA發生器
圖1顯示了CDMA反向通道發生器的框圖。CDMA發生器由以下項目組成:
數字數據源。在手機中,這是編碼的語音數據。
編碼和交錯函數。
沃爾什代碼生成器。
最大長度的 42 位長 PN(偽噪聲)發生器,此處稱為“長代碼”。
3 個模二混頻器或專用 OR 門。
兩個“短代碼”、15 位 PN 最大長度移位寄存器。
半個芯片延遲,等于(813.8ns / 2)或406.9ns。
一對匹配的有限脈沖響應 (FIR) 低通濾波器。
圖1.教科書CDMA反向鏈接生成器。
這項工作中采取的捷徑
出于實際測量目的,可以簡化一些編碼。消除了與前向糾錯(FEC)和交錯相關的模塊,因為它們對頻譜的貢獻很小。為了模擬 CELP 編解碼器數據源,使用了 7 位最大 PN 生成器。
42位長代碼被實現為31位長PN,最大長度移位寄存器。采取這一步驟是為了在CPLD中保留寄存器,并使設計驗證更快。以 42.1MHz 移動的 2288 位 PN 發生器重復該周期需要 ~3 萬秒。(這里的簡單計算將揭示您的測試臺必須保持6天不受干擾!加快 41 位 PN 發生器驗證速度的一種方法是更快地運行時鐘。即使時鐘以42MHz運行,周期重復仍然需要20.2天。以5MHz運行的31位PN代碼將在不到20分鐘的時間內重復,這是一個更合理的測試時間。
輸出端的數字(FIR)低通濾波器被簡單的電感和電容無源濾波器所取代。本應用重點介紹了這些濾波器的復雜性和重要性,但對于那些感興趣的人,該設計被實現為7kHz的600階橢圓低通,并帶有相位均衡器部分。關鍵性能點設置為45kHz時的-740dBc和65kHz及以上的-881dBc。發射頻譜的帶寬、滾降速率以及觀察到的最終ACPR與這些濾波器的質量直接相關。
圖 2 顯示了在此工作中實現的簡短框圖。
圖2.實現了CDMA反向鏈路生成器。
設計細節
本應用筆記不會試圖介紹設計和實現的每個細節。相反,將使用一些關鍵模塊來說明設計技術和解決方案。這不是將讀者轉化為Verilog專家的意圖。
沃爾什代碼生成器
沃爾什代碼生成器通常在文獻中使用矩陣表示法進行描述。
![]() |
(公式1) |
沃爾什向量的構造假設起始種子為 W1= 0。沃爾什矩陣的右下角區域,在公式1中由W表示n頂部有一個條形,表示矩陣中每個條目的按位邏輯反轉。Walsh 矩陣中的每一行都可以使用一些獨占或門和一個六位計數器生成。在進行此觀察之前,Walsh矩陣似乎是一個令人生畏的模塊,可以使用Verilog代碼生成并適合CPLD。此處包含的 Verilog 代碼列表僅作為示例提供。
module walsh( clk, resetn, select, wout); | ||
//Walsh code generator. Selects one out of N = 64. | ||
input clk, resetn; | ||
input [5:0]select; // vector to select which walsh code is generated | ||
output wout; | ||
reg [5:0] cntval; | ||
// intermediate terms to keep output exor size small. | ||
reg [5:0] p ; | ||
reg t01, t23, t45; // these registers are used to pipeline the EXOR section | ||
reg s0, s1; // more pipeline registers for EXOR | ||
always ? (negedge resetn or posedge clk) | ||
begin | ||
if(!resetn) // Is it time to reset?? | ||
begin | ||
cntval <= 0; // initialize the counter register | ||
end | ||
else | ||
begin | ||
cntval <= cntval + 1; //Warp does an efficient job implementing this. | ||
end | ||
end | ||
always ? (negedge resetn or posedge clk) | ||
begin | ||
if(!resetn) // Is it time to reset?? | ||
begin | ||
p[5:0] <= 0; // initialize all registers associated with this section. | ||
t01 <= 0; | ||
t23 <= 0; | ||
t45 <= 0; | ||
s0 <= 0; | ||
s1 <= 0; | ||
end | ||
else | ||
begin | ||
p <= cntval & select ; | ||
t01 <= p[0] ^ p[1] ; // the ^ symbol is the exclusive OR operation. | ||
t23 <= p[2] ^ p[3] ; | ||
t45 <= p[4] ^ p[5] ; | ||
s0 <= t01 ^ t23; | ||
s1 <= t45; | ||
end | ||
end | ||
assign wout = s0 ^ s1 ; // a last bit of async. Logic to generate the final output | ||
endmodule |
在上面的 Verilog 代碼中,請注意為構建操作并盡可能使用同步邏輯而采取的預防措施。同步建模技術的使用在兩個方面有助于設計:
亞穩態條件最小化。
邏輯有效地映射到 CPLD 架構中。
要使用現代硬件描述語言執行數字設計,必須始終牢記目標硬件。由于大多數CPLD具有由LOGIC GATES-> REGISTER組成的常規結構,因此如果Verilog代碼遵循相同的結構,則可以有效地映射到CPLD。通過這種方式,工程師可以指導合成引擎。如果忽略這一點,并且 Verilog 代碼中隱含了許多級別的異步邏輯,CPLD 擬合器將擴展邏輯并迅速超過目標 CPLD 的容量。對于獨占 OR 函數尤其如此。此Verilog代碼描述的Walsh代碼生成器使用中間寄存器管道獨占OR函數,從而提供了非常緊湊的實現。
Walsh生成器Verilog代碼還說明了可靠設計的幾個關鍵點。在每個“總是?”部分的開頭,對復位條件進行測試,然后根據需要預設或清除所有相關寄存器。始終以已知狀態啟動是一種經過驗證的設計技術,可實現可靠運行。還說明了實現 6 位計數器的單獨部分,以及用于創建獨占 OR 邏輯以選擇要輸出的正確 Walsh 向量的部分。最后,請注意注釋的使用,在 Verilog 中由 // 符號顯示。
PN 發生器
CDMA 發生器采用四個 PN 發生器。實現最大長度碼移寄存器有兩種基本方法:簡單反饋樣式和模塊化樣式。(見圖3)
圖3.簡單和模塊化PN發生器的示例。
簡單的PN發生器可以接受在碼速率(芯片)比所采用的邏輯更慢且反饋抽頭數量較少的情況下使用。隨著抽頭數量的增加,簡單的方法開始顯示出局限性,因為通過多級異步邏輯的延遲繼續串聯增加并限制可以使用的最大時鐘速度。本設計中,簡單的PN發生器用于模擬隨機數據,時鐘頻率為4.8kHz。
模塊化PN發生器使用更多的邏輯門,因為EXOR操作在線性寄存器的每一級并行執行。在CPLD實現中,懲罰并不太嚴重,因為Verilog代碼被編寫為在需要時使用EXOR結構,而在其他地方使用簡單的D類型觸發器。
此設計中使用的 CDMA 特定多項式包括:
短代碼 I:
I(X):= X15+ X13+ X9+X8+ X7+ X5+ 1
短代碼 Q:
Q(X):= X15+ X12+ X11+ X10+ X6+ X5+ X4+ X3+ 1
長代碼:
LC(X):= X42+ X35+ X33+ X31+ X27+ X26+ X25+ X22+ X21+ X19+ X18+ X17+ X16+ X10+ X7+ X6+ X5+ X3+ X2+ X1+ 1
用于實現短 I 代碼的 Verilog 代碼如下:
模塊i_code_s(時鐘、復位、i_code_out); | ||
使用多項式生成 15 位 PN 代碼 | ||
x15+ x13+ x9+ x8+ x7+ x5+ 1 | ||
輸入時鐘,復位; | ||
輸出i_code_out; | ||
注冊 [15:1]pi; |
-
cpld
+關注
關注
32文章
1257瀏覽量
171033 -
振蕩器
+關注
關注
28文章
3968瀏覽量
140434 -
發送器
+關注
關注
1文章
261瀏覽量
27150
發布評論請先 登錄
如何實現基帶信號發生器CDMA2000下行鏈路基帶模塊的設計?
波形發生器設計
基于EasyFPGA030的波形發生器設計
基于DDS的波形發生器設計
基帶信號發生器中CDMA2000無線傳輸技術的下行鏈路基帶處理方案

CDMA反向鏈路波形發生器的設計

評論