• 검색 결과가 없습니다.

- SRRC(Square Root Raised Cosine) Filter Design -

N/A
N/A
Protected

Academic year: 2022

Share "- SRRC(Square Root Raised Cosine) Filter Design -"

Copied!
54
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

- Assignments -

( T e x t b o o k C h a p t e r & N u m b e r) HW 1 : 2.56, 2.66, 2.67, 2.72, 2.77, 2.89 HW 2 : 4.25, 4.38, 4.40, 4.44, 4.46, 4.48, 4.51 HW 3 : 5.45, 5.51, 5.55, 5.57, 5.64, 5.66 HW 4 : 6.26, 6.27, 6.30, 6.34, 6.36, 6.38 HW 5 : 8.29, 8.31, 8.34, 8.36, 8.39, 8.49, 8.64 HW 6 : 10.5, 10.26, 10.31, 10.34, 10.35

Project 1

(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(34)
(35)
(36)
(37)
(38)
(39)
(40)
(41)

DSP PROJECT

- SRRC(Square Root Raised Cosine) Filter Design -

1. Specification

(1) Ideal SRRC (Square Root Raised Cosine)

- 이상적인 SRRC 필터의 주파수 응답은 다음과 같은 특성을 만족시켜야 한다. 아래의 주파수 특성을 충족하는 SRRC 필터의 계수는 무한한 길이를 가지므로 실제 설계에서는 일종의 vestigial

LPF로 생각하고 이에 가장 가깝도록 설계하였다. (

w

p,

w

s 기준)

Ideal SRRC : [ ] h n

d

H e

d

(

j2πf

)

(

2

)

2

0 1

2

1 / 2 1 1

1 cos

2 2 2 2

0 otherwise

j f d

T f

T

f T

H e T f

T T

π

α

π α α α

α

⎧ ≤ ≤ −

⎪ ⎪

⎛ + − ⎞ − +

= ⎪ ⎨ ⎜ + ⎟ ≤ ≤

⎝ ⎠

⎪ ⎪

⎪ ⎩

0.15 0.05 Remainder(last two digits of ID numbet/4); =1.0

T

α = + ×

(2) SBATT (Stop Band Attenuation)

- roll-off factor와 oversampling factor 을 다음과 같이 설정하였다.

roll-off factor : α = 0.2 ( ∵ 73 mod 4 = 1) oversampling factor :

L

= 2

(1 ) (1 )

pass band : 0 0

2

(1 ) (1 ) (1 ) (1 )

transition :

2 2

(1 ) (1 )

stop band : 0.5

2

w f

L L

w f

L L L L

w f

L L

π α α

π α π α α α

π α π α

− −

≤ ≤ ≤ ≤

− + − +

≤ ≤ ≤ ≤

+ +

≤ ≤ ≤ ≤

SBATT : 40dB

(3) ISI (Inter Symbol Interference)

(42)

- ISI 는 1) 각 항들의 power 비율을 살펴보는 경우와 2) 각 항들의 magnitude 비율을 살펴보는 경우의 두 가지 형태에 대해 살펴보았다. 아래는 SRRC 필터와 RC 필터를 아래의 수식과 같이 설정하였을 때, ISI 의 수식을 나타낸 것이다.

0

SRRC : [ ] = 0, 1, , 1

RC: [ ] [ ] [ 1 ] = 0, 1, , 2 2

t n

t t

k

h n n N

h n h k h k N n n N

=

= ∑ + − − −

oversampling factor : L

(a) Type1 – power

1 2 2 2

0

1 1

1 2 2

1 1 0

[ 1] [ ] ISI1

[ 1 ] 2 [ ] [ ]

N t k

N N

N jT

L L

t t

j j k

h N h k

h N jL h k h k jL

=

− −

= = =

⎛ ⎞

⎜ ⎟

− ⎝ ⎠

= =

− ± +

∑ ∑ ∑

(b) Type2 – magnitude

1 1

1

1 0

1

1 2 0

2 [ ] [ ]

[ 1 ]

ISI2 [ 1]

[ ]

N N

N jT

L L

t t

j k

j

N t k

h k h k jL h N jL

h N h k

− −

= =

=

=

+

− ±

= =

∑ ∑

(c) Constraint

10

10

10log (ISI1) 40dB 20log (ISI2) 40dB

≤ −

2. Algorithm [1]

(1) SM-NLMS (Set Membership Normalized Least Mean Square)

- SM-NLMS 는 stop band 을 세부 구간으로 나누어 각 지점에서의 이상적인 주파수 특성과 실제 필터의 주파수 특성의 오차를 구한 뒤 이를 토대로 필터 계수를 보정해 나가는 알고리즘이다.

자세한 알고리즘은 다음과 같다.

우선 충분히 큰 K 값에 대해 SRRC 디지털 필터의 K-point DFT 을 구한다.

1 2

0

( ) [ ]

N j nk

K

t t

n

H k h n e

π

=

= ∑

여기서 다음을 정의하고,

(43)

2

2 ( 1)

1 (0)

and (1)

( 1)

k t j

K

t k

N k

j K t

h h e

e h N

π

π

θ

⎛ ⎞

⎛ ⎞

⎜ ⎟

⎜ ⎟

⎜ ⎟

⎜ ⎟

⎜ ⎟

= =

⎜ ⎟

⎜ ⎟

⎜ ⎟

⎜ ⎟ ⎝ − ⎠

⎜ ⎟

⎝ ⎠

x

이상적인 필터의

2 π k K /

위치에서의 주파수 응답을

d

k, 실제 필터의 주파수 응답

θ

T

x

k과의 오차의 상한을

γ

k 이라고 하면, 필터 설계의 문제는 다음을 만족시키는 필터계수

θ

을 찾는 문제로 표현된다.

T

k k k

d

− θ

x

≤ γ

이 때 필터계수

θ

는 다음의 해 집합에 속하게 된다.

{ θ R

N

: , d

k

θ

T k

γ

k

k }

Θ ∈ − x ≤ ∀

Real parameter에 대한 SM-NLMS 에 대해 Chia-Yu YAO [1]는 다음과 같이 필터 계수를 수정해 나갈 경우

θ

가 해 집합

Θ

내의 특정 값으로 수렴함을 증명하였다.

{

*

}

1

Re

k k

k k k

N θ = θ

+ β δ x

1

where 1 if

0 otherwise

T

k k k k

k

k k

k k

δ d θ

γ δ γ

β δ

= −

⎧ − >

= ⎨ ⎪

⎪ ⎩

x

(2) Gradient descent (Steepest descent)

- ISI 는 앞서 살펴본 바와 같이 필터 계수들에 대한 다변함수 형태로 표현된다. 여기서는 보다 일반적인 ISI 수식으로 Type2 ISI 을 이용하기로 한다.

1 1

1

1 0

1

1 2 0

2 [ ] [ ]

[ 1 ]

ISI2 [ 1]

[ ]

N N

N jT

L L

t t

j k

j

N t k

h k h k jL h N jL

h N h k

− −

= =

=

=

+

− ±

= =

∑ ∑

Chia-Yu YAO [1]는 ISI 의 numerator 의 절대값을 제곱으로 바꾸어 다음과 같이 표현한 뒤, 이를 바탕으로 Gradient 을 계산하였다.

(44)

1 1 2

1 0

2 [ ] [ ]

N

N jT

L

t t

j k

E h k h k jL

− −

= =

⎛ ⎞

= ⎜ + ⎟

⎝ ⎠

∑ ∑

이 때의 Gradient 는 다음과 같이 계산할 수 있다.

1 1

,(0, 1 ) ,( , 1)

1 0

4 [ ] [ ] [ ] [ ]

( )

N

N jT

L

t t t i N jL t i jL N

j k

t

E h k h k jL h i jL h i jL

h i

− −

− −

= =

⎛ ⎞

∂ = ⎜ + ⎟ ⎣ × ⎡ + ∏ + − ∏ ⎤ ⎦

∂ ∑ ∑ ⎝ ⎠

,( , )

where 1

0 otherwise

i a b

a ≤ ≤ i b

∏ = ⎨ ⎧

[0] [1] [ 1]

T

t t t

E E E

E h h h N

θ

⎛ ∂ ∂ ∂ ⎞

∇ = ⎜ ⎝ ∂ ∂ ∂ − ⎟ ⎠

이제 ISI 조건을 충족시키기 위한 Gradient descent 과정은 다음과 같다.

If

−∇

θ

E

T

( θ

k

− θ

k1

) ≥ 0 ,

k

new

k θ

E

θ = θ − ∇ μ

else

1

1

ISI

1 if ISI

ISI

( ) where = ISI , 0.5

, 0

k k

k k

T

k k

E E

otherwise new

θ θ

θ θ

θ θ ε γ γ

μ ε

θ θ μ

= −

− ⎧ ⎛ ⎪ ⎜ − ⎞ ⎟ >

= ∇ − ∇ ⎨ ⎝ ⎠ =

= − ⎪⎩

b

p b b

p

여기서

θ

E

가 실제 ISI 의 Gradient 을 대변할 수 있으려면, ISI 의 denominator 가 고정되어 있어야 하는데, 이 부분이 항상 만족된다고 보기 어려우므로 ISI 의 실제 Gradient 을 이용하여 설계하였다. 또한 Chia-Yu YAO [1]은 Gradient descent 의 방법을 적용할 때, 필터 계수가 이전의 진행 방향과 반대 방향으로 변화하는 경우에 이전 방향에 수직한 방향으로 변하게 하여 급격한 변화를 막고자 하였는데, 이는 수렴 속도를 빠르게 하기 위한 것으로 보인다.

ISI의 실제 Gradient 를 이용하는 경우에는 계산 량이 증가하여 이 부분을 제외하였다. 한편, ISI의 Gradient 는 다음과 같이 계산할 수 있다.

( )

1

1

2

2 ( 0) ( 0)

( ) ( )

( )

N L

j t t

t

A B

A A B A

h i h i

F

h i B

=

⎧ ∂ ∂ ⎫

≥ − < ⎨ ∂ × − × ∂ ⎬

∂ = ⎩ ⎭

(45)

1

,(0, 1 ) ,( , 1)

0 1

2 0

[ ] [ ]

[ ] [ ] where ( )

2 [ ]

[ ] ( )

N jT

t i N jL t i jL N

t t

t k

N t t

k t

A h i jL h i jL

A h k h k jL

h i

B h i

B h k

h i

− −

− −

=

=

⎧ = + ∂ = + ∏ + − ∏

⎪ ∂

⎪ ⎨ ∂

⎪ = =

⎪ ∂

[0] [1] [ 1]

T

t t t

F F F

F h h h N

θ

⎛ ∂ ∂ ∂ ⎞

∇ = ⎜ ⎝ ∂ ∂ ∂ − ⎟ ⎠

따라서 ISI 조건을 충족시키기 위한 Gradient descent 과정을 다시 쓰면 다음과 같다.

,

k

new

k θ

F

θ = θ − ∇ μ

이 때 Gradient descent 가 적용될 수 있도록

θ

F

의 magnitude 가

10

3이 되도록 조정하였다.

(3) Flow chart

SBATT Upadte Filter Coeff

By SMNLMS

ISI

Upadte Filter Coeff By Gradient descent

Specification is satisfied?

No

Yes

Create Seed By sampling

Filter coefficient

- 전체 알고리즘은 SMNLMS 와 Gradient descent 을 반복 수행하여 주어진 Specification 을 만족시키는 필터 계수를 찾아낸다. 이때 초기의 필터 계수는 이상적인 SRRC 필터의 time domain 에서의 함수를 oversample 하여 얻는다. 또한 초기의 필터 탭 수는 SRRC 필터를 일종의 LPF 으로 간주하여 SBATT 조건을 Kaiser window 에 적용하여 설정한 뒤, 주어진 알고리즘 내에서 수렴하지 않으면 탭 수를 늘려나갔다.

(46)

3. Implementation (1) Time domain

h n

t

[ ]

t

[ ]

h n

= [-0.0046126 0.0020771 0.0075704 -0.0079469 -0.0096055 0.014835 0.013353 -0.027437 -0.016986 0.049967 0.019475 -0.097481 -0.021343 0.31622 0.52382 0.31622 -0.021343 -0.097481 0.019475 0.049967 -0.016986 -0.027437 0.013353 0.014835 -0.0096055 -0.0079469 0.0075704 0.0020771 -0.0046126]; % 29tap; n = 0, 1, 2, … , 28

(2) Frequency domain

H e (

jw

)

(3) ISI

(a) Type1 – power

10log10(ISI1) ∼ 48.2530dB (b) Type2 – magnitude

(47)

20log10(ISI2) ∼ -39.9954dB

- 시뮬레이션 상에서는 Type1:48.25312810880618, Type2: -40.00000000000309 로 계산되었으나, long 타입으로 필터 계수를 표현하여 다소의 오차가 발생하였다.

(4) Comparison with ideal SRRC

-이상적인 SRRC 필터와 설계한 SRRC 필터를 Linear scale 에서 비교하여 보았을 때, pass band 에서는 두 필터의 주파수 응답이 거의 동일하였다. 그러나 이상적인 필터의 경우 ISI 가 0 인 반면, 설계한 필터에서는 ISI 을 0.01 으로 조정하였기 때문에 transition 구간에서 두 필터의 주파수 응답의 차이가 발생하였다. 또 이상적인 필터의 stop band 구간에서는 주파수 응답이 zero 인데 설계한 필터에서는 0.01 으로 조정하여 stop band 구간에서 ripple 이 발생하였다.

4. Conclusion

- 주어진 Specification 에 맞는 SRRC 필터를 설계할 수 있었다. 단, 이 알고리즘을 적용하는 경우 SBATT 조건과 ISI 조건을 동시에 충족하는 해가 항상 존재한다고 보장할 수 없기 때문에 적절한 탭 수를 선정하는 것이 매우 중요하며, 또한 SM-NLMS 의 기법을 적용할 경우는 해가 존재한다면 반드시 수렴하지만, Gradient descent 의 기법을 적용하는 경우는 필터 계수를 변화시키는 벡터의 크기가 충분히 작아야만 수렴할 것을 기대할 수 있다. 또 SM-NLMS 알고리즘을 적용할 때, stop band 만 고려하기 때문에 pass band 의 특성은 초기의 입력 값에 크게

(48)

의존하며, 때때로 그 크기가 1 과 동떨어지게 변화할 수 있다. 제시한 code 에서는 이 부분을 보정하기 위해 stop band 조건을 토대로 필터 계수를 조정하고 난 후에 전체 필터 계수를 dc

gain로 나누어 pass band 에서의 크기가 1 이 넘지 않게 하였다.

5. 부록 : non-linear 25tap; 27tap design

- 25tap non-linear SRRC filter (1) Time domain

h n

t

[ ]

t

[ ]

h n

= [-0.010123 -0.012731 0.020329 0.041089 -0.013816 -0.06507 0.0093173 0.10236 0.0090194 -0.14551 -0.016895 0.35159 0.50735 0.27856 0.0032718 -0.046286 0.0052712 - 0.0052148 -0.022399 0.010725 0.023673 -0.0112 -0.02576 -0.0029318 0.01538];

(2) Frequency domain

H e (

jw

)

(49)

(3) ISI

(a) Type1 – power

10log10(ISI1) ∼ 46.3605dB (b) Type2 – magnitude

20log10(ISI2) ∼ -36.4671dB (4) Comparison with ideal SRRC

- 27tap non-linear SRRC filter (1) Time domain

h n

t

[ ]

t

[ ]

h n

= [0.0016132 0.013867 -0.0040627 -0.018395 0.0015166 0.030279 0.01797 0.0041324 0.024013 -0.0043216 -0.08644 -0.009577 0.30354 0.51365 0.32261 -0.023721 -0.10468 0.037601 0.074876 -0.033884 -0.075063 -0.0061851 0.032182 0.0017666 -0.01751 -0.0020767 0.0063007];

(2) Frequency domain

H e (

jw

)

(50)

(3) ISI

(a) Type1 – power

10log10(ISI1) ∼ 45.3677dB (b) Type2 – magnitude

20log10(ISI2) ∼ -39.9942dB (4) Comparison with ideal SRRC

6. Reference

[1] Chia-Yu YAO, The Design of Square-Root-Raised-Cosine FIR Filters by an Iterative Technique, IEEE TRANS. FUNSAMENTALS, VOL.E90-A, N0.1 JANUARY 2007

[2] Alan V. Oppenheim, Ronald W. Schafer and John R. Buck, DISCRETE-TIME SIGNAL PROCESSING, Second edition, PRETICE HALL

(51)

7. MATLAB code

% SMNLMS.m clc

close all clear all

% System parameter a = 0.2; % roll off factor T = 1; %symbol rate

L = 2; % oversampling factor K = 2^10;

gamma = 0.01; %SBATT cond gammaISI = 0.01; %ISI cond

% Seed

% suqare root raised cosine : sqrrc N = 29;

n = 0:N-1;

hsqrrc = (T/L)*sqrrc((n-(N-1)/2)*T/L,a,T);

theta = hsqrrc;

cnt = 0;

beta = 1;

mu = 1;

for i = 1:500

% SBATT

while (beta ~= 0) | (mu ~= 0) cnt = cnt + 1;

if cnt>20000, break, end

for k = ceil(K*(1+a)/(2*L))-1:floor(K/2);

theta_bp = theta;

% updating for reducing SBATT

delta = 0 - theta*transpose(x(k,K,N));

(52)

if abs(delta)>gamma % delta beta = 1-gamma/abs(delta);

else

beta = 0;

end % update theta

theta = theta + beta*real(delta*conj(x(k,K,N)))/N;

% ISI ep = 0.5;

if ISI_OG(theta,L) > gammaISI

mu = ep*(1-gammaISI/ISI_OG(theta,L));

else

mu = 0; % no update end

% update theta

theta = theta-mu*dF(theta,L);

end

theta = theta/(theta*transpose(x(1,K,N))); % consider stop band if isnan(ISI_OG(theta,L))

error('NaN') end beta

mu end beta = 1;

mu = 1;

end

% dF.m

function y = dF(h,L) N = length(h);

temp = 0;

for k = 1:N

temp = temp + h(k)^2;

end

denum = temp^2;

for i = 0:N-1

(53)

num(i+1) = 0;

for j = 1:floor((N-1)/L)

if (i>=0 & i<= N-1-j*L) & (i>=j*L & i<= N-1) temp1 = h(i+1+j*L)+h(i+1-j*L);

elseif i>=0 & i<= N-1-j*L temp1 = h(i+1+j*L);

elseif i>=j*L & i<= N-1 temp1 = h(i+1-j*L);

end temp2 = 0;

for k=1:(N-j*L)

temp2 = temp2 + h(k)*h(k+j*L);

end

num(i+1) = num(i+1) + 2*(temp*temp1-2*h(i+1)*temp2)*((temp2>=0)-(temp2<0));

end end

y = num/denum;

y = (10^(-3))*y/norm(y);

end

% test_Thete.m clc

close all clear all

theta = [-0.0046126 0.0020771 0.0075704 -0.0079469 -0.0096055 0.014835 0.013353 -0.027437 - 0.016986 0.049967 0.019475 -0.097481 -0.021343 0.31622 0.52382 0.31622 -0.021343 -0.097481 0.019475 0.049967 -0.016986 -0.027437 0.013353 0.014835 -0.0096055 -0.0079469 0.0075704 0.0020771 -0.0046126];

N = length(theta);

L = 2;

K = 1024;

theta = theta/(theta*transpose(x(1,K,N)));

[H,w]=freqz(theta,K);

figure(1)

plot(w/2/pi, 20*log10(abs(H))) grid on

axis([0 0.5 -100 20])

(54)

20*log10(ISI_OG(theta,L)) -10*log10(ISI(theta,L))

figure(2)

n2 = 0:length(theta)-1;

stem(n2, theta) grid on

참조

관련 문서

낮은 출력 임피던스: 필터가 구동될 때 부하의 영향으로부터 필터를 보호 요구되는 응답을 수정할 필요 없이 넓은 주파수

한국해양과학기술원 STEAM 아웃리치 프로그램의 특징과 장점 가... 한국해양과학기술원 STEAM 아웃리치 프로그램의

생물시료는 포르말린을 희석한 수용액이나 알콜에 넣어 보관합니다.. 우리가 먹는

우리 해녀들의 공동체의식이 모든 어업인들에게 퍼져나갔으면 한다.. 바로

식물의 분류에 대해 학습한 내용을 바탕으로 주어진 식물 줄기, 씨앗의 특징 을 살펴보고 실제로 분류해 볼

태양 빛을 렌즈에 집중하면 종이나 나무를 태울 수 있는 정도이지만, 레이저 빛의 경우에는 에너지양이 크기 때문에 철판까지도 녹일 수 있습니다. 레이저

Ÿ 다양한 카메라를 사용하기 위하여 초점거리에 따른 스펙트럼 이미지의 확대 배율 을 계산하고 최적의 배율을 찾아낸다.. Ÿ 접착부위를 견고하면서도 미적인 요소가 저해되지

서울대학교 조선해양공학과 학부4학년 “창의적 선박설계” 강의 교재.. Ship design, Owner’s Requirements, Specification, Parent ships Data, 2008.3 NAOE/SNU..