while(1) work();
반응형
본 게시글은 KUEE 정보공개 프로젝트에 포함된 글입니다.
https://blog.youhogeon.com/65

본 자료의 저작권은 모두 저에게 있으며
학업에 참고 자료로만 사용하시길 바랍니다.
부득이하게 인용해야 하는 경우 반드시 출처(KUEE 정보공개 프로젝트)와 링크를 남겨주시길 바랍니다.

8.pdf
1.65MB
src.zip
0.01MB

 

VLSI 설계 및 실험보고서 LAB 08 # Low Cost 5-Tap FIR Filter 1. Introduction 지난 실험에서 살펴본 바와 같이 유한 임펄스 응답 필터(FIR)는 위 그림과 같이 coefficient(임펄스 응답)와 순차 지연된 input들의 곱을 더함으로써 구현할 수 있다.                    이 때 coefficient가 상수로 고정되는 특수한(그러나 일반적인) 상황에서는 multiplier를 adder로 대체하여 필터의 출력을 구할 수 있다. Multiplier는 Adder에 비해 많은 면적을 차지하고 많은 전력을 소비한다. 따라서 multiplier를 여러개의 adder로 대체하게 되면 비용과 직결되는 회로의 면적을 줄일 수 있고 소비 전력을 감소시킬 수 있다는 장점이 있다. 만약 임펄스 응답의 식이 로 주어진다면 이진수의 곱셈 원리에 따라 곱셈 연산을 다음과 같이 덧셈 연산으로 대체할 수 있다. (>>는 비트 쉬프트 연산을 의미한다.)       ≫      ≫      ≫      ≫      ≫      ≫      ≫  이러한 원리를 응용해서         ≫ 이라고 한다면1) 위의 임펄스 응답은 아래와 같이 간소화될 수 있다.        ≫      ≫      ≫  기존의 5-tab FIR filter가 다섯 개의 multiplier와 다섯 개의 adder를 사용했다면,   식으로 구현한 FIR filter는 7개의 adder만을 사용하고,   식으로 구현한 FIR filter는 4개의 adder( 을 구하는 데 1개,  를 구하는 데 4개)만을 사용한다. 1) 위 그림에서 대각선으로 묶인 비트들을 표현한 것 2. 구현 과정 지난 실험에서 구현한 FIR의 출력 식은 아래와 같이 coefficient와 입력의 곱에 버림을 취한 뒤 adder를 이용해 더해주었다.                    본 실험에서 이용한 test-vector가 지난 실험과 동일하게 주어졌기 때문에, 본 실험에서도 coefficient 와 입력의 곱을 adder를 이용해 구한 뒤 버림을 취하고 다시 더해주는 방식으로 low-cost FIR filter를 구현하였다. 따라서 [1. Introduction]에서 살펴본 것 처럼         ≫  와 같이 지연된 횟수가 다른 입력끼리 먼저 계산하여 치환하는 방식을 사용할 수 없었다.2) 본 실험 구현 과정에서는 왼쪽 그림과 같이 coefficient가 주어졌다. MSB는 sign bit이므로 MSB가 1인 경우 음수를 의미한다. 더불어, 0111111은 100000-1 과 등가시킬 수 있기 때문에3) 오른쪽 그림과 같이 비트를 변환하여 값이 1인 비트들을 기준으로 덧셈 연산을 수행해 출력을 계산할 수 있다. 또한      ≪       ≪       ≪ 를 먼저 계산한다면, [1. Introduction]에서 설명한 방식대로 adder의 사용 횟수를 줄일 수 있다. 로 등가 가능한 비트는 붉은색, 으로 등가 가능한 비트는 노란색, 으로 등가 가능한 비트는 녹색으로 나타내었다. 위 그림을 바탕으로 출력 식을 계산하면 아래와 같은 수식을 얻을 수 있다.4) MSB를 기준으로 값을 계산할 수도 있고 LSB를 기준으로 값을 계산할 수도 있지만 본 구현에서는 LSB를 기준으로 값을 계산하였다.    ≪    ≪      ≪      ≪      ≪      ≪      ≪              ≪      ≪      ≪      ≪          ≪  기존의 5-tab FIR filter(direct-form)에서는 다섯 개의 multiplier와 다섯 개의 adder를 사용하였지만, 개선한 low-cost FIR filter(direct-form)에서는 열일곱 개의 adder만을 사용(  을 계산하기 위한 세 개의 adder 포함)하여 구현할 수 있었다. 비록 adder의 개수가 많아졌고, bit shift 연산을 위한 회로가 필요하며 input 뿐만 아니라   을 지연시키기 위한 많은 flip-flop이 필요하2) 각각의 입력성분과 coefficient의 곱에 버림연산을 먼저 취한 뒤 더해주어야 하기 때문 3) Canonical Signed Digit 4) 버림 연산과 소숫점의 위치는 고려하지 않은 식 지만, 그럼에도 불구하고 multiplier가 매우 큰 면적과 많은 전력을 소비하기 때문에 개선된 회로가 더 적은 면적을 차지하고 더 적은 전력을 소비할 것이라고 예측할 수 있다. 3. Timing Diagram 구현한 low-cost 5-tab FIR filter의 동작을 테스트하기 위해 테스트벤치 코드를 이용해 파형을 확인하였다. 사전에 만들어진(주어진) 총 256개의 input vector data와 252개의 output vector data를 이용해 정상 동작 여부를 확인한 결과 모든 vector data가 구현한 filter의 출력과 파형이 일치하였다. 따라서 회로가 올바르게 동작함을 확인할 수 있었다. 또, 출력 결과를 저장하는 메모리에도 순차적으로 값이 잘 저장되고 있음을 확인할 수 있었다. 4. Synthesize result & Critical Path 합성 후 low-cost FIR filter의 block diagram은 위와 같았다. Counter를 증가시켜 메모리의 address를 만들고 메모리와의 입출력을 처리하는 회로가 top 모듈에 존재하였다. Top 모듈의 합성만을 보고는 critical path(filter -> ff_out)를 파악할 수 없으므로, filter 모듈의 합성 결과도 함께 확인하였다. Filter 모듈 상에는 비트 쉬프트나 버림 연산 등을 처리하기 위해 매우 많은 gate가 존재하였다.    ≪    ≪      ≪      ≪      ≪      ≪      ≪              ≪      ≪      ≪      ≪          ≪  [2. 구현 과정]에서 설명한 바와 같이, 출력 식은 위 수식과 같다. 한 클럭 내에서 각 줄은 병렬적으로 파이프라이닝을 한 것과 같이 처리되기 때문에, adder의 개수가 가장 많은 두 번째 라인 또는 마지막 라인이 critical path가 될 것으로 예상할 수 있었으며, 합성 결과를 통해 마지막 라인이 critical path(ff_in4 -> 세 개의 adder -> ff_out)가 되었음을 확인할 수 있었다. 5. Timing Report 클럭 주기를 초기에 10.0ns로 설정 후 점차 낮추어가며 회로가 동작할 수 있는 가장 빠른 클럭을 찾아보았다. 각 클럭 주기에 대한 slack값과 state는 아래와 같았다. 클럭 주기(ns) Data required time(ns) Slack State 10.0 9.52 0.00 MET 9.0 8.52 0.00 MET 8.0 7.52 0.00 MET 7.0 6.51 -1.03 VIOLATED 7.5 7.02 -0.40 VIOLATED 7.8 7.31 -0.16 VIOLATED 7.9 7.40 -0.02 VIOLATED 따라서, 본 회로가 동작할 수 있는 가장 낮은 클럭 주기는 8.0ns이고, 약 125.0MHz의 클럭에서 가장빠르게 작동할 수 있다는 것을 확인할 수 있었다. 이때의 timing report는 아래와 같았다. Timing Report에 따르면 본 회로의 critical path는 [ff_in4 (x[n-4])] -> [add_0_root_add_0_root_add_43_3 (adder)] -> [add_1_root_add_0_root_add_51_4 (adder)] -> [add_0_root_add_0_root_add_51_4 (adder)] -> [ff_out] 임을 확인할 수 있었다. 기존 5-tab direct-form FIR filter의 critical-path가 한 개의 multiplier와 네 개의 adder를 지나는 것과 달리 low-cost FIR filter는 세 개의 adder만을 지남을 확인할 수 있었다. 더불어, 회로의 최대 동작 가능 주파수 역시 106.4MHz에서 125.0MHz로 약 17.5% 개선되었다. 6. Area Report & Power Report 본 회로의 total cell area는 166070.50μm², total dynamic power는 14.8092mW임을 알 수 있었다. 지난 실험에서의 direct-form FIR filter와 비교해 보았을 때, total dynamic power는 26.3% 감소하였고, total cell area는 35.7% 감소하였다. 특히 combinational area의 감소폭이 매우 크게(51.2%) 나타났는데, 이는 면적이 큰 multiplier를 adder로 대체하였기 때문이다. 반면에 noncombinational area의 경우 오히려 면적이 증가(105.9%)하였는데, 이는 low-cost FIR filter에서 flip-flop을 더 많이 사용하기 때문이다. Direct-form FIR filter (previous practice) Low-cost FIR Filter (current practice) Maximum frequency 106.4 MHz 125.0 MHz Area Combinational Area 232989.73 μm² 113616.70 μm² Noncombinational Area 25480.41 μm² 52453.80 μm² Total Cell Area 258470.14 μm² 166070.50 μm² Total Dynamic Power 20.0962 mW 14.8092 mW

반응형
profile

while(1) work();

@유호건

❤️댓글은 언제나 힘이 됩니다❤️ 궁금한 점이나 잘못된 내용이 있다면 댓글로 남겨주세요.

검색 태그