개요: Maxim은 셀룰러 휴대폰 전송 경로에 사용되는 Maxim의 다양한 제품을 테스트할 수 있는 쉬운 CDMA 베이스밴드 변조 발생기 설계를 완료했다. 이 설계는 고밀도의 프로그래밍 가능한 로직 소자, 크리스털 발진기 그리고 한 쌍의 정합된 저역통과 필터를 조합하여 원하는 쿼드러처 출력 파형을 만들어낸다. CPLD (complex programmable logic device) 안에 구현된 디지털 회로는 IS95 표준에 기반하고 있다. 4.9152MHz 크리스털 발진기가 CY37256 CPLD를 구동하여 1.2288MHz의 디지털 출력을 만들어 내고, 이것이 출력 저역통과 필터에 정확한 I/Q 비트 스트림을 제공한다. 성능 측정은 MAX2361 송신 IC의 ACPR 성능을 측정하고 이것을 Agilent E4433B 임의파형 발생기를 레퍼런스 신호 소스로 사용한 ACPR 성능 측정 결과와 비교하여 수행하였다. 실험실 환경에서 측정한 ACPR 성능은 레퍼런스에 대해 0.5dB 이내의 일치율을 보였다.
이 애플리케이션 노트는 CDMA 역 링크 파형 발생기의 디지털 회로 부분에 대한 설명과 설계상의 주안점 및 그 취급 방법에 대해 알아보고 있다.
Maxim은 셀룰러 휴대폰 전송 경로에 사용되는 Maxim의 다양한 제품을 테스트할 수 있는 쉬운 CDMA 베이스밴드 변조 발생기 설계를 완료했다. 이 설계는 고밀도의 프로그래밍 가능한 로직 소자, 크리스털 발진기 그리고 한 쌍의 정합된 저역통과 필터를 조합하여 원하는 쿼드러처 출력 파형을 만들어낸다. CPLD (complex programmable logic device) 안에 구현된 디지털 회로는 IS95 표준에 기반하고 있다. 4.9152MHz 크리스털 발진기가 CY37256 CPLD를 구동하여 1.2288MHz의 디지털 출력을 만들어 내고, 이것이 출력 저역통과 필터에 정확한 I/Q 비트 스트림을 제공한다. 성능 측정은 MAX2361 송신 IC의 ACPR 성능을 측정하고 이것을 Agilent E4433B 임의파형 발생기를 레퍼런스 신호 소스로 사용한 ACPR 성능 측정 결과와 비교하여 수행하였다. 실험실 환경에서 측정한 ACPR 성능은 레퍼런스에 대해 0.5dB 이내의 일치율을 보였다.
이 애플리케이션 노트는 CDMA 역 링크 파형 발생기의 디지털 회로 부분에 대한 설명과 설계상의 주안점 및 그 취급 방법에 대해 알아보고 있다.
디지털 시스템 설명
텍스트북 상의 CDMA 발생기
그림 1에는 CDMA 역 채널 발생기의 블록 다이어그램이 나와 있다. CDMA 발생기는 다음의 요소들로 구성되어 있다.
디지털 데이터 소스. 휴대폰에서 이 데이터는 코딩된 음성 데이터이다.
인코딩 및 인터리빙 기능
Walsh 코드 발생기
이 문서에서 'Long 코드'라 칭하는 42비트 길이의 PN (pseudonoise) 발생기
3개의 모듈로 2 믹서 또는 XOR 게이트
2개의 'Short 코드' 15비트 PN 최대 길이 시프트 레지스터
1/2 칩 지연 = 813.8ns/2 또는 406.9ns
1쌍의 매칭된 FIR (finite impulse response) 저역통과 필터
그림 1. 텍스트북 CDMA 역 링크 발생기
단순/효율화 작업
측정의 편의를 위해 약간의 코딩 단순화 작업이 가능했다. 스펙트럼에 미치는 영향이 미미하므로 FEC (forward error correction) 및 인터리빙에 관련된 블록은 삭제하였다. CELP codec 데이터 소스를 시뮬레이션하기 위해 최대 길이가 7비트인 PN 발생기가 사용되었다.
42비트 long 코드는 31비트 길이의 PN, 최대 길이 시프트 레지스터로 구현되었다. 이 과정은 CPLD 내의 레지스터를 보존하고 설계 검증을 신속하게 하기 위해 수행되었다. 1.2288MHz로 시프트되는 42비트 PN 발생기의 경우 사이클 반복에약 360만 초가 걸린다(간단히 계산해 보아도 테스트 벤치를 41일 동안 가만히 놔두어야 한다는 결론이 나온다!). 42비트 PN 발생기를 보다 빠른 클록으로 동작하게 하는 방법을 생각할 수 있는데, 클록을 20MHz로 한다 해도 여전히 2.5일이 걸린다. 31비트 PN 코드를 사용하면 20MHz 클록을 사용할 경우 소요 시간은 2분 이하로, 이 정도이면 어느 정도 실현가능한 테스트 시간이라 할 수 있다.
출력단의 디지털 (FIR) 저역통과 필터는 단순한 인덕터 및 커패시터 기반의 수동형 필터로 대체하였다. 이 애플리케이션 노트에서는이 필터의 복잡성이나 중요성에 대해서는 그다지 자세히 언급하지 않을 예정이나, 그 설계에 관심이 있는 독자들을 위해 7차타원 저역통과 필터(600kHz)로, 위상 이퀄라이저 회로부가 달려 있다는 정도의 언급을 해 두고자 한다. 중요 성능 포인트는 740kHz에서 -45dB로, 그리고 881kHz 이상에서는 -65dB로 설정하였다. 송신 스펙트럼의 대역폭, 롤오프 속도및 그 결과로 얻어지는 ACPR 성능 관측값은 이러한 필터들의 성능과 직접적인 연관이 있다.
그림 2에는 이러한 방법으로 구현된 회로의 블록 다이어그램이 개략적으로 나와 있다.
그림 2. 실제로 구현한 CDMA 역 링크 발생기
설계 세부 사항
이 애플리케이션 노트에서는 설계 및 회로 구현의 자세한 부분에 대해서는 언급하지 않고자 한다. 그 대신 설계 테크닉과 솔루션을 설명하기위해 몇 가지의 핵심 모듈을 사용하고자 한다. 독자들이 Verilog 전문가가 될 필요는 없기 때문이다.
Walsh 코드 발생기
Walsh 코드 발생기는 일반적으로 행렬식으로 표현된다.
식 1.
Walsh 벡터의 구조는 시작 요소 W1 = 0의 가정을 기반으로 하고 있다. Walsh 행렬의 오른쪽 아래 부분(위의 행렬식에서 Wn으로 표현된 부분)은 행렬의 매 요소의 비트별 논리 역행렬을 뜻한다. Walsh 행렬의 매 행은 몇 개의 XOR 또는 게이트와 6비트 카운터로 생성할 수 있다. 여기까지의관찰을 하기 전까지는 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 피터(fitter)에 의해 로직의 부피가 불어나금방 타깃 CPLD의 용량을 초과하게 된다. 이러한 현상은 특히 XOR 함수의 구현에서 더욱 그러하다. 이 Verilog 코드에의해 만들어지는 Walsh 코드 발생기는 중간 레지스터를 사용하여 XOR 함수를 파이프라이닝 하여 매우 컴팩트한 회로 구현이 가능해진다.
또한 Walsh 생성기 Verilog 코드는 설계의 신뢰도를 높이기 위한 몇 가지의 핵심 포인트를 제공한다. "Always ?" 부분의 시작에서 리셋 조건의 테스트가 있고, 모든 관련 레지스터들이 필요에 따라 프리셋 또는 클리어 된다. 신뢰성 있는 동작을 위해서는 언제나 시작 지점의 상태를 정확히 알고 있도록 하는 것이 검증된 설계 테크닉이다. 또한 6비트 카운터를구현하기 위한 별도의 코드 부분이 있으며, 또 한 부분은 정확한 Walsh 벡터를 출력할 수 있도록 선택하는 XOR 로직을 만들기위해 마련되어 있다. 마지막으로, Verilog 주석으로서 // 기호로 되어 있는 부분이 있다.
PN 발생기
CDMA 발생기는 4개의 PN 발생기를 사용한다. 최대 길이의 코드 시프트 레지스터를 구현하는 방법에는 두 가지의 기본적인것이 있다. 하나는 단순한 피드백 방식이고, 또 하나는 모듈 방식이다(그림 3 참조).
그림 3. 단순 방식과 모듈 방식 PN 발생기의 예
단순 PN 발생기는 사용된 로직 부분에 비해 칩 코드 속도가 느리고 피드백 탭의 수가 적은 경우 사용하기에 적당하다. 탭의 수가 늘어남에 따라 단순 접근 방법은 한계가 드러나게 되는데, 이는 여러 레벨의 비동기 로직을 통한 지연 시간이 차례로 쌓이게되고 이에 따라서 사용할 수 있는 최대 클록 속도에 제한이 생기기 때문이다. 단순 PN 발생기는 이 설계에서 무작위 데이터를 시뮬레이션하려는 목적으로 4.8,kHz의 클록을 써서 구현되었다.
모듈 방식 PN 발생기는 보다 많은 수의 로직 게이트를 사용하는데, 이는 선형 레지스터의 매 단계에서 XOR 연산이 병렬로 수행되기 때문이다. CPLD 구현에 있어서는 이러한 수효 증가의 영향이 그다지 크지 않은데, 왜냐하면 Verilog 코드는 XOR 구조를 사용하기 위해 필요한 경우에만 사용하고 나머지 부분은 단순한 D형 플립플롭(flip-flop)을 사용하기 때문이다.
// 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
이 코드에서는 5개의 XOR 구조만을 사용하는 반면, 완전히 모듈화된 코드의 경우에는 14개의 XOR 구조를 사용해야 한다. 이로써 필요한 로직 회로를 합성하는 데에만 Verilog를 적용하는 것이 좋다는 것을 알 수 있다.
이 시점에서 두 가지 사실을 더 짚고 넘어가고자 한다. 먼저 최대 길이 PN 발생기는 시프트 레지스터가 모두 0인 상황을 허용하지 않는데, 그 이유는 일정한 low 상태를 제외하고는 아무 것도 출력되지 않기 때문이다. 강인한 설계를 구현하기 위해서는 all-zero 상태를 검출하여 필요 시에 "1"을 삽입하도록 할 필요가 있다.
두 번째로는 최대 길이 PN 발생기는 전체 시퀀스에서 1과 0의 개수가 거의 완벽하게 균형을 이루고 있다는 것을 들 수 있다.1의 수는 0의 수보다 하나 많게 된다. 이로써 RF에서 믹서 또는 변조기의 동작에 방해가 될 수 있는 약간의 DC 오프셋이 발생하게 된다. 표준 CDMA에서는 시퀀스에 여분의 0을 넣어 강제로 DC 균형을 맞추고 변조기가 적절히 동작할 수 있도록한다.
그림 4. CDMA 발생기 회로도
그림 4에는 회로 내부의 프로그래밍 지원 기능 등은 자세히 밝혀 놓지 않았다. 이 소량의 추가 회로는 PC의 병렬 프린터 포트에 연결하는 특수 케이블을 사용할 수 있게 해주는 10핀 헤더로 연결된다. Windows® 기반의 PC는 Cypress Semiconductor사의 특수 소프트웨어를 구동하여 비트 설정 파일을 CY37256으로 다운로드한다. 이것은 디지털 시스템 구현에 있어 강력한 접근 방법이다. 이 방법으로 코드 내의 에러를 금방 찾아내고 회로 내에서 CPLD를 다시 프로그래밍하여 테스트를 신속히 재개할수 있게 해준다.
측정 결과
출력 저역통과 필터를 포함하는 전체 CDMA 역 링크 발생기를 사용하여 CDMA 애플리케이션에 사용된 MAX2361의 ACPR 성능을 테스트하였다. 동일한 테스트를 Agilent E4433B를 베이스밴드 I/Q CDMA 신호 소스로 사용하여서도 수행했다. ACPR 성능 측정값은 두 개의 서로 다른 신호 소스에 대해 ±0.5dB 이내로 매우 근접하여 일치하였다. ACPR 성능 측정에서의 출력 필터의 중요성은 아무리 강조해도 지나치지 않으며, 또 다른 기술문서의 주제로서 연구할 가치가 있다.
참고 문헌
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 Products for his collaboration and certain key insights during this project.