Maxim設(shè)計(jì)了一個(gè)容易實(shí)現(xiàn)的CDMA基帶調(diào)制發(fā)生器用于對其蜂窩手機(jī)發(fā)射通道中的各種產(chǎn)品進(jìn)行電路評估。此設(shè)計(jì)包含一個(gè)高密度的可編程邏輯器件、一個(gè)晶體振蕩器和一對匹配的低通濾波器提供所需的正交輸出波形。由復(fù)雜可編程邏輯器件(CPLD)實(shí)現(xiàn)的數(shù)字電路是基于IS95標(biāo)準(zhǔn)的。使用4.9152MHz晶振驅(qū)動CY37256 CPLD產(chǎn)生1.2288MHz的數(shù)字信號輸出,可以為輸出低通濾波器提供精確的I/Q (同相和正交)比特流。測量MAX2361發(fā)射機(jī)IC的ACPR,將結(jié)果與使用Agilent E4433B任意波形發(fā)生器作為參考信號源時(shí)觀察到的ACPR進(jìn)行比較就可以證實(shí)波形發(fā)生系統(tǒng)的性能。使用上述兩種方案的ACPR試驗(yàn)室測量結(jié)果的一致程度保持在0.5dB以內(nèi)。
概述
Maxim設(shè)計(jì)了一個(gè)容易實(shí)現(xiàn)的CDMA基帶調(diào)制發(fā)生器用于對其蜂窩手機(jī)發(fā)射通道中的各種產(chǎn)品進(jìn)行電路評估。此設(shè)計(jì)包含一個(gè)高密度的可編程邏輯器件、一個(gè)晶體振蕩器和一對匹配的低通濾波器提供所需的正交輸出波形。由復(fù)雜可編程邏輯器件(CPLD)實(shí)現(xiàn)的數(shù)字電路是基于IS95標(biāo)準(zhǔn)的。使用4.9152MHz晶振驅(qū)動CY37256 CPLD產(chǎn)生1.2288MHz的數(shù)字信號輸出,可以給輸出低通濾波器提供精確的I/Q (同相和正交)比特流。測量MAX2361發(fā)射機(jī)IC的ACPR,將結(jié)果與使用Agilent E4433B任意波形發(fā)生器作為參考信號源時(shí)觀察到的ACPR進(jìn)行比較就可以證實(shí)波形發(fā)生系統(tǒng)的性能。使用上述兩種方案的ACPR試驗(yàn)室測量結(jié)果的一致程度保持在0.5dB以內(nèi)。
本文提供了CDMA反向鏈路波形發(fā)生器的數(shù)字部分,描述了設(shè)計(jì)中的一些問題及解決方法。
數(shù)字系統(tǒng)描述
標(biāo)準(zhǔn)的CDMA信號發(fā)生器
圖1所示為CDMA反向信道發(fā)生器的框圖。
CDMA發(fā)生器由以下幾個(gè)部分組成:
數(shù)字?jǐn)?shù)據(jù)源。在蜂窩電話中為話音編碼數(shù)據(jù)。
編碼和交織(interleaving)功能部分。
Walsh碼發(fā)生器。
最大長度的42位長PN (偽噪聲)發(fā)生器,所謂“長碼”的標(biāo)準(zhǔn)即參照此處。
3個(gè)模2的混頻器或者異或門。
兩個(gè)“短碼”,15位PN最大長度移位寄存器。
一個(gè)1/2碼片延時(shí),等于(813.8ns / 2)即406.9ns。
一對匹配的有限沖擊響應(yīng)(FIR)低通濾波器。

圖1. 標(biāo)準(zhǔn)的CDMA反向鏈路發(fā)生器
對設(shè)計(jì)進(jìn)行簡化
為了進(jìn)行實(shí)際測量,對編碼進(jìn)行一些簡化。由于對頻譜的影響很小,刪除與前向糾錯(cuò)(FEC)和交織部分有關(guān)的模塊。為了模擬CELP編解碼數(shù)據(jù)源,使用7位最大PN發(fā)生器。
使用42位最大長度移位寄存器長碼實(shí)現(xiàn)31位的長PN碼。這樣作是為了保留CPLD中的寄存器并使設(shè)計(jì)的驗(yàn)證更加迅速。42位PN發(fā)生器,以1.2288MHz的速度移位一周需要約三百六十萬秒。 (簡單的計(jì)算一下就可發(fā)現(xiàn)測試裝置必須連續(xù)41天無干擾地工作!)。提高驗(yàn)證42位PN發(fā)生器速度的一個(gè)方法是加快時(shí)鐘的速度。即使時(shí)鐘為20MHz,完成一周的驗(yàn)證仍然要花費(fèi)2.5天。使用31位的PN碼,在20MHz時(shí)鐘下運(yùn)行時(shí)間將小于兩分鐘,這個(gè)時(shí)間對測試來說比較合理。
用簡單的基于電感、電容的無源濾波器取代輸出端的數(shù)字(FIR)低通濾波器。本文不討論這些濾波器的復(fù)雜性和重要性,但是可以告訴那些對此感興趣的讀者,設(shè)計(jì)中使用的是帶有相位均衡的600kHz 7階橢圓低通濾波器。其性能關(guān)鍵點(diǎn)是,740kHz衰減為-45dBc,881kHz及更高頻率的衰減為-65dBc。發(fā)射頻譜的帶寬、滾降速率以及受此影響的觀察到的ACPR與這些濾波器的品質(zhì)有直接的聯(lián)系。
圖2所示為本項(xiàng)目中使用的簡化的框圖。

圖2. 最后實(shí)現(xiàn)的CDMA反向鏈路發(fā)生器
設(shè)計(jì)中的細(xì)節(jié)問題
本文不試圖把設(shè)計(jì)和實(shí)現(xiàn)中的每一個(gè)細(xì)節(jié)都呈現(xiàn)出來。用幾個(gè)關(guān)鍵的部分來說明設(shè)計(jì)技術(shù)和解決方案。我們并不想把讀者都變成Verilog專家。
Walsh碼發(fā)生器
Walsh碼發(fā)生器在文獻(xiàn)中通常用矩陣符號表示:
等式1.
建立Walsh向量時(shí)假設(shè)初始矩陣為W1 = 0。等式中Walsh矩陣右下角區(qū)域帶有一個(gè)橫杠的Wn表示矩陣中的每一位都邏輯取反。Walsh矩陣中的每一行都能用一些異或門和一個(gè)6位的計(jì)數(shù)器產(chǎn)生。在觀察到這一點(diǎn)之前,使用Verilog代碼并在CPLD中產(chǎn)生Walsh矩陣似乎是一件令人生畏的事情。將Verilog代碼列在這里只是作為一個(gè)示例。
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代碼中,注意構(gòu)成運(yùn)算所采取的安全措施并盡可能使用同步邏輯。使用同步技術(shù)對設(shè)計(jì)有兩方面的好處:
亞穩(wěn)定性條件被降到最低。
邏輯功能與CPLD結(jié)構(gòu)能夠有效對應(yīng)。
為了使用現(xiàn)代的硬件描述語言實(shí)現(xiàn)數(shù)字設(shè)計(jì),必須熟悉目標(biāo)硬件。大多數(shù)CPLD具有邏輯門 -> 寄存器的規(guī)則結(jié)構(gòu),Verilog代碼如果遵循同樣的結(jié)構(gòu)將有利于高效地對應(yīng)到CPLD中。這樣,工程師就能支配整個(gè)綜合處理的過程。如果忽略了這一點(diǎn),在Verilog代碼中使用了多級異步邏輯,CPLD裝配器將使邏輯迅速膨脹并很快超過目標(biāo)CPLD的容量,在實(shí)現(xiàn)異或功能時(shí)尤其如此。這里用Verilog代碼描述的Walsh碼發(fā)生器通過中間寄存器使用流水線技術(shù)實(shí)現(xiàn)異或功能,執(zhí)行過程非常緊湊。
Walsh碼發(fā)生器Verilog代碼還體現(xiàn)了可靠性設(shè)計(jì)的多個(gè)要點(diǎn)。在每一個(gè)"always ?"部分的開始都進(jìn)行一次復(fù)位條件的測試,所有相關(guān)的寄存器根據(jù)需要調(diào)整或清零。這種總是以一個(gè)已知的狀態(tài)開始工作的方法是一種已被證實(shí)的用來實(shí)現(xiàn)可靠工作的技術(shù)。代碼中還使用了單獨(dú)的部分實(shí)現(xiàn)6位計(jì)數(shù)器,另一部分用來創(chuàng)造異或邏輯以選擇正確的Walsh向量作為輸出。最后,注意如何使用注釋,在Verilog中以//符號標(biāo)識。
PN發(fā)生器
CDMA發(fā)生器使用4個(gè)PN發(fā)生器。有兩種基本的方法可以實(shí)現(xiàn)最大長度碼移位寄存器:簡單的反饋結(jié)構(gòu)和模塊化結(jié)構(gòu)(見圖3)。

圖3. 簡單的和模塊化的PN發(fā)生器實(shí)例
當(dāng)與所用的邏輯相比碼率(碼片)較慢并且反饋抽頭的數(shù)量很小時(shí),簡單的PN發(fā)生器是可以接受的。當(dāng)抽頭數(shù)目增加時(shí),簡單的方法開始呈現(xiàn)出局限性,通過多級異步邏輯的延時(shí)不斷增加,限制了可用的最大時(shí)鐘速率。簡單的PN發(fā)生器在本設(shè)計(jì)中用于模擬隨機(jī)數(shù)據(jù),時(shí)鐘速率為4.8kHz。
模塊化的PN發(fā)生器使用更多的邏輯門,EXOR操作是在線性寄存器的每一級并行執(zhí)行的。由此對CPLD造成的負(fù)擔(dān)并不十分嚴(yán)重,因?yàn)閷懭氲腣erilog代碼只在需要的時(shí)候使用EXOR結(jié)構(gòu),其它時(shí)候使用簡單的D類觸發(fā)器。
本設(shè)計(jì)中使用的CDMA特定多項(xiàng)式為:
短碼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
實(shí)現(xiàn)短I碼的Verilog代碼為:
// Generate the 15-bit PN code using the polynomial
// x15 + x13 + x9 + x8 + x7 + x5 + 1
input clock, resetn;
output i_code_out;
reg [15:1]pi;
always ?(posedge clock or negedge resetn)
if(!resetn)
begin
pi <= 15';b111111111111111; // init the shift register with ones
end
else
begin // here starts the modular shift register
pi[1] <= pi[15];
pi[5:2] <= pi[4:1] ;
pi[6] <= pi[5] ^ pi[15];
pi[7] <= pi[6];
pi[8] <= pi[7] ^ pi[15];
pi[9] <= pi[8] ^ pi[15];
pi[10] <= pi[9] ^ pi[15];
pi[13:11] <= pi[12:10];
pi[14] <= pi[13] ^ pi[15];
pi[15] <= pi[14];
end
assign i_code_out = pi[15];
endmodule
這一實(shí)現(xiàn)只用了5個(gè)EXOR結(jié)構(gòu),而一個(gè)完全的模塊化實(shí)現(xiàn)需要14個(gè)EXOR結(jié)構(gòu)。這展示了如何用Verilog僅對所需的邏輯進(jìn)行合成。
在此需要指出另外兩點(diǎn),最大長度PN發(fā)生器不允許在移位寄存器中出現(xiàn)表示只有恒定的低狀態(tài)輸出的全零。一個(gè)健全的設(shè)計(jì)應(yīng)該包括全零探測邏輯并在需要的時(shí)候插入一個(gè)“1”。
需要注意的另一點(diǎn)是,最大長度PN發(fā)生器在整個(gè)序列0的個(gè)數(shù)和1的個(gè)數(shù)之間實(shí)現(xiàn)了幾乎完美的平衡。1的個(gè)數(shù)比0的個(gè)數(shù)多1個(gè)。這將產(chǎn)生一個(gè)小的DC偏移,它有可能擾亂無線裝置中混頻器或調(diào)制器的工作。標(biāo)準(zhǔn)的CDMA在序列中插入一個(gè)額外的0狀態(tài)強(qiáng)制實(shí)現(xiàn)DC平衡以保持調(diào)制器的正常工作。

圖4. CDMA發(fā)生器原理圖
圖4中沒有給出支持編程的電路內(nèi)部細(xì)節(jié)。這個(gè)額外的小電路安裝在10引腳的連接頭上,使用特殊的電纜連接到PC機(jī)的并行的打印端口。在基于Windows®的PC機(jī)上運(yùn)行Cypress Semiconductor的特殊軟件,將比特配置文件下載到CY37256中。這是實(shí)現(xiàn)數(shù)字系統(tǒng)的有力手段。它可以快速地發(fā)現(xiàn)代碼中的錯(cuò)誤,對CPLD進(jìn)行在線重新編程也很簡單,可以很快恢復(fù)測試。
結(jié)果
使用包括輸出低通濾波器在內(nèi)的整個(gè)CDMA反向鏈路發(fā)生器測試MAX2361在CDMA應(yīng)用中的ACPR,用Agilent E4433B作為CDMA基帶I/Q信號源進(jìn)行同樣的測試。由兩種不同的信號源得到的ACPR結(jié)果非常接近;差別在±0.5dB以內(nèi)。在此,不能對輸出濾波器對ACPR測試結(jié)果的重要性進(jìn)行詳細(xì)闡述,這將是另一篇應(yīng)用筆記的主題。
參考文獻(xiàn)與資料來源
R.C. Dixon, Spread Spectrum Systems. New York: John Wiley & Sons, 1976 David P. Whipple, "North American Cellular CDMA", Hewlett-Packard Journal, December 1993, pp. 90-97 Ken Coffman, Real World FPGA Design with Verilog. Upper Saddle River: Prentice Hall PTR, 1999, ISBN 0-13-099851-6 Samir Palnitkar, Verilog HDL, A Guide to Digital Design and Synthesis Sunsoft Press/Prentice Hall, 1996, ISBN 0-13-451675-3 Special thanks to Lane Hauck at Cypress Semiconductor for his advice and guidance in learning Verilog and the nuances of CPLD design. Special thanks for Dave Devries of Maxim Integrated for his collaboration and certain key insights during this project.
電子發(fā)燒友App




























評論