Maxim設計了一種易于構建的CDMA基帶調制發(fā)生器,用于對設計到蜂窩手機發(fā)射路徑中的各種產品進行電路評估。該設計結合了高密度可編程邏輯器件、晶體振蕩器和一對匹配的低通濾波器,以提供所需的正交輸出波形。復雜可編程邏輯器件(CPLD)中的數(shù)字電路基于IS95標準。4.9152MHz晶體振蕩器驅動CY37256 CPLD產生1.2288MHz數(shù)字輸出,從而為輸出低通濾波器提供精確的I/Q(同相和正交)比特流。通過在MAX2361發(fā)送器IC上測量ACPR,并將結果與使用安捷倫E4433B任意波形發(fā)生器作為參考信號源觀察到的ACPR進行比較,證實了性能。實驗室測量的ACPR被發(fā)現(xiàn)在0.5dB以內一致。
本應用筆記介紹了CDMA反向鏈路波形發(fā)生器的數(shù)字部分,并描述了一些設計問題及其處理方式。
介紹
Maxim設計了一種易于構建的CDMA基帶調制發(fā)生器,用于對設計到蜂窩手機發(fā)射路徑中的各種產品進行電路評估。該設計結合了高密度可編程邏輯器件、晶體振蕩器和一對匹配的低通濾波器,以提供所需的正交輸出波形。復雜可編程邏輯器件(CPLD)中的數(shù)字電路基于IS95標準。4.9152MHz晶體振蕩器驅動CY37256 CPLD產生1.2288MHz數(shù)字輸出,從而為輸出低通濾波器提供精確的I/Q(同相和正交)比特流。通過在MAX2361發(fā)送器IC上測量ACPR,并將結果與使用安捷倫E4433B任意波形發(fā)生器作為參考信號源觀察到的ACPR進行比較,證實了性能。實驗室測量的ACPR被發(fā)現(xiàn)在0.5dB以內一致。
本應用筆記介紹了CDMA反向鏈路波形發(fā)生器的數(shù)字部分,并描述了一些設計問題及其處理方式。
數(shù)字系統(tǒng)說明
教科書CDMA發(fā)生器
圖1顯示了CDMA反向通道發(fā)生器的框圖。CDMA發(fā)生器由以下項目組成:
數(shù)字數(shù)據(jù)源。在手機中,這是編碼的語音數(shù)據(jù)。
編碼和交錯函數(shù)。
沃爾什代碼生成器。
最大長度的 42 位長 PN(偽噪聲)發(fā)生器,此處稱為“長代碼”。
3 個模二混頻器或專用 OR 門。
兩個“短代碼”、15 位 PN 最大長度移位寄存器。
半個芯片延遲,等于(813.8ns / 2)或406.9ns。
一對匹配的有限脈沖響應 (FIR) 低通濾波器。
圖1.教科書CDMA反向鏈接生成器。
這項工作中采取的捷徑
出于實際測量目的,可以簡化一些編碼。消除了與前向糾錯(FEC)和交錯相關的模塊,因為它們對頻譜的貢獻很小。為了模擬 CELP 編解碼器數(shù)據(jù)源,使用了 7 位最大 PN 生成器。
42位長代碼被實現(xiàn)為31位長PN,最大長度移位寄存器。采取這一步驟是為了在CPLD中保留寄存器,并使設計驗證更快。以 42.1MHz 移動的 2288 位 PN 發(fā)生器重復該周期需要 ~3 萬秒。(這里的簡單計算將揭示您的測試臺必須保持6天不受干擾!加快 41 位 PN 發(fā)生器驗證速度的一種方法是更快地運行時鐘。即使時鐘以42MHz運行,周期重復仍然需要20.2天。以5MHz運行的31位PN代碼將在不到20分鐘的時間內重復,這是一個更合理的測試時間。
輸出端的數(shù)字(FIR)低通濾波器被簡單的電感和電容無源濾波器所取代。本應用重點介紹了這些濾波器的復雜性和重要性,但對于那些感興趣的人,該設計被實現(xiàn)為7kHz的600階橢圓低通,并帶有相位均衡器部分。關鍵性能點設置為45kHz時的-740dBc和65kHz及以上的-881dBc。發(fā)射頻譜的帶寬、滾降速率以及觀察到的最終ACPR與這些濾波器的質量直接相關。
圖 2 顯示了在此工作中實現(xiàn)的簡短框圖。
圖2.實現(xiàn)了CDMA反向鏈路生成器。
設計細節(jié)
本應用筆記不會試圖介紹設計和實現(xiàn)的每個細節(jié)。相反,將使用一些關鍵模塊來說明設計技術和解決方案。這不是將讀者轉化為Verilog專家的意圖。
沃爾什代碼生成器
沃爾什代碼生成器通常在文獻中使用矩陣表示法進行描述。
![]() |
(公式1) |
沃爾什向量的構造假設起始種子為 W1= 0。沃爾什矩陣的右下角區(qū)域,在公式1中由W表示n頂部有一個條形,表示矩陣中每個條目的按位邏輯反轉。Walsh 矩陣中的每一行都可以使用一些獨占或門和一個六位計數(shù)器生成。在進行此觀察之前,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 代碼中,請注意為構建操作并盡可能使用同步邏輯而采取的預防措施。同步建模技術的使用在兩個方面有助于設計:
亞穩(wěn)態(tài)條件最小化。
邏輯有效地映射到 CPLD 架構中。
要使用現(xiàn)代硬件描述語言執(zhí)行數(shù)字設計,必須始終牢記目標硬件。由于大多數(shù)CPLD具有由LOGIC GATES-> REGISTER組成的常規(guī)結構,因此如果Verilog代碼遵循相同的結構,則可以有效地映射到CPLD。通過這種方式,工程師可以指導合成引擎。如果忽略這一點,并且 Verilog 代碼中隱含了許多級別的異步邏輯,CPLD 擬合器將擴展邏輯并迅速超過目標 CPLD 的容量。對于獨占 OR 函數(shù)尤其如此。此Verilog代碼描述的Walsh代碼生成器使用中間寄存器管道獨占OR函數(shù),從而提供了非常緊湊的實現(xiàn)。
Walsh生成器Verilog代碼還說明了可靠設計的幾個關鍵點。在每個“總是?”部分的開頭,對復位條件進行測試,然后根據(jù)需要預設或清除所有相關寄存器。始終以已知狀態(tài)啟動是一種經過驗證的設計技術,可實現(xiàn)可靠運行。還說明了實現(xiàn) 6 位計數(shù)器的單獨部分,以及用于創(chuàng)建獨占 OR 邏輯以選擇要輸出的正確 Walsh 向量的部分。最后,請注意注釋的使用,在 Verilog 中由 // 符號顯示。
PN 發(fā)生器
CDMA 發(fā)生器采用四個 PN 發(fā)生器。實現(xiàn)最大長度碼移寄存器有兩種基本方法:簡單反饋樣式和模塊化樣式。(見圖3)
圖3.簡單和模塊化PN發(fā)生器的示例。
簡單的PN發(fā)生器可以接受在碼速率(芯片)比所采用的邏輯更慢且反饋抽頭數(shù)量較少的情況下使用。隨著抽頭數(shù)量的增加,簡單的方法開始顯示出局限性,因為通過多級異步邏輯的延遲繼續(xù)串聯(lián)增加并限制可以使用的最大時鐘速度。本設計中,簡單的PN發(fā)生器用于模擬隨機數(shù)據(jù),時鐘頻率為4.8kHz。
模塊化PN發(fā)生器使用更多的邏輯門,因為EXOR操作在線性寄存器的每一級并行執(zhí)行。在CPLD實現(xiàn)中,懲罰并不太嚴重,因為Verilog代碼被編寫為在需要時使用EXOR結構,而在其他地方使用簡單的D類型觸發(fā)器。
此設計中使用的 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
用于實現(xiàn)短 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文章
1258瀏覽量
172789 -
振蕩器
+關注
關注
28文章
4104瀏覽量
141936 -
發(fā)送器
+關注
關注
1文章
261瀏覽量
27548
發(fā)布評論請先 登錄
怎么設計CDMA反向鏈路波形發(fā)生器?
實現(xiàn)CDMA2000系統(tǒng)前向鏈路卷積編碼器的方法有哪些?
如何實現(xiàn)基帶信號發(fā)生器CDMA2000下行鏈路基帶模塊的設計?
波形發(fā)生器設計
基于EasyFPGA030的波形發(fā)生器設計
基于DDS的波形發(fā)生器設計
基帶信號發(fā)生器中CDMA2000無線傳輸技術的下行鏈路基帶處理方案

CDMA反向鏈路波形發(fā)生器的設計

評論