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

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

7.pdf
0.87MB
src.zip
0.01MB

 

 

VLSI 설계 및 실험보고서 LAB 07 # 5-tab direct form FIR filter 1. 개요 유한 임펄스 응답 필터(Finite Impulse Response Filter)는 유한한 길이의 임펄스 응답을 가지는 필터로, 무한 임펄스 응답 필터(Infinite Impulse Reponse Filter)와 다르게 출력이 입력으로 들어가지 않는 비 재귀적 구조를 가진다. 본 실험에서는 다섯 개의 coefficient를 가지는 FIR filter를 구현한다. 아래 식과 같이 임펄스 응답과 입력을 콘볼루션 연산하면 출력을 계산할 수 있기 때문에, 이러한 필터는 coefficient(임펄스 응답)와 순차 지연된 input들의 곱을 더함으로써 구현할 수 있다.                    먼저 차례로 지연된 input들을 가지고 곱 연산과 합 연산을 한번에 수행하는 방식으로 회로를 설계하였다. Coefficient들의 합이 약 2.5의 값을 가지고, input의 범위가   ≦  ≦  이므로, 출력의 범위는   ≦  ≦ 가 된다. 따라서 출력의 정수부는 부호를 포함하여 4bit로 표현할 수 있다. 소수부의 경우 18bit의 정확성이 필요하다고 가정하고, 끝에 4bit를 버림연산 하였다. 따라서 최종 출력은 (22, 18)이 되도록 회로를 설계하였다. 2. Timing Diagram 구현한 5-tab direct form FIR filter의 동작을 테스트하기 위해 테스트벤치 코드를 이용해 파형을 확인하였다. 사전에 만들어진(주어진) 총 256개의 input vector data와 252개의 output vector data를 이용해 정상 동작 여부를 확인한 결과 모든 vector data가 구현한 filter의 출력과 파형이 일치하였다. 따라서 회로가 올바르게 동작함을 확인할 수 있었다. 또, 출력 결과를 저장하는 메모리에도 순차적으로 값이 잘 저장되고 있음을 확인할 수 있었다. 더불어, 입출력단에 연결된 flip-flop들과 filter 내에서 사용한 flip-flop에 의하여 7 cycle의 latency가 발생함을 확인할 수 있었다. 3. Synthesize Result & Critical Path 합성 후 5-tab direct form FIR filter의 block diagram은 위와 같았다. 가장 먼저 입력된 입력 성분([1. 개요]의 그림에서 와 곱해지는 성분)은 한 개의 multiplier와 다섯 개의 adder를 거쳐야 하기 때문에 이 path가 본 회로의 critical path임을 확인할 수 있었다. Behavior level로 회로를 설계하였기 때문에 adder와 multiplier는 design compiler에 내장된 회로가 사용되었다. 더불어 위의 전체 block diagram에서 두 개의 adder를 합쳐 하나의 모듈로써 동작하고 있음을 확인할 수 있었다. 4. Timing Report 클럭 주기를 초기에 10.0ns로 설정 후 점차 낮추어가며 회로가 동작할 수 있는 가장 빠른 클럭을 찾아보았다. 각 클럭 주기에 대한 slack값과 state는 아래와 같았다. 클럭 주기(ns) Data required time(ns) Slack State 10 9.50 0.00 MET 9 8.51 -0.26 VIOLATED 9.5 9.02 0.00 MET 9.3 8.80 -0.01 VIOLATED 9.4 8.90 0.00 MET 따라서, 본 회로가 동작할 수 있는 가장 낮은 클럭 주기는 9.4ns이고, 약 106.4MHz의 클럭에서 가장빠르게 작동할 수 있다는 것을 확인할 수 있었다. 이때의 timing report는 아래와 같았다. Timing report에 따르면 본 회로의 critical path는 [ff_c4] -> [multiplier] -> [adder] -> [adder*2] -> [adder*2] -> [ff_out] 이다. 이는 [3. Synthesize Result & Critical Path]에서 확인한 바와 같았다. 5. Area Report & Power Report 본 회로의 total cell area는 258470.14μm², total dynamic power는 20.0962mW임을 알 수 있었다. # 5-tab transpose direct form FIR filter 1. 개요 앞서 수행한 direct form 방식을 개선하여, 입력을 지연시킨 뒤 콘볼루션 연산 하는 방식이 아니라, 입력들과 coefficient의 곱을 구한 뒤, 그 값을 지연시키며 합연산 하는 방식으로 회로를 개선하였다. 2. Timing Diagram 구현한 5-tab transpose direct form FIR filter의 동작을 테스트하기 위해 테스트벤치 코드를 이용해 파형을 확인하였다. 사전에 만들어진(주어진) 총 256개의 input vector data와 252개의 output vector data를 이용해 정상 동작 여부를 확인한 결과 모든 vector data가 구현한 filter의 출력과 파형이 일치하였다. 따라서 회로가 올바르게 동작함을 확인할 수 있었다. 또, 출력 결과를 저장하는 메모리에도 순차적으로 값이 잘 저장되고 있음을 확인할 수 있었다. 더불어, 입출력단에 연결된 flip-flop들과 filter 내에서 사용한 flip-flop에 의하여 7 cycle의 latency가 발생함을 확인할 수 있었다. 3. Synthesize Result & Critical Path 합성 후 5-tab transpose direct form FIR filter의 block diagram은 위와 같았다. 입력 값은 다섯 개로 나뉘어져, 동시에 한 개의 multiplier와 한 개의 adder를 거친다. 따라서 이 path 중 하나가 본 회로의 critical path임을 예상할 수 있었다. 위의 block diagram의 우측 상단에서도 과 곱해진 뒤 adder를 통과하는 회로가 critical path임을 확인할 수 있었다. 4. Timing Report 클럭 주기를 초기에 10.0ns로 설정 후 점차 낮추어가며 회로가 동작할 수 있는 가장 빠른 클럭을 찾아보았다. 각 클럭 주기에 대한 slack값과 state는 아래와 같았다. 클럭 주기(ns) Data required time(ns) Slack State 10 9.49 0.01 MET 9 8.49 0.00 MET 8 7.49 0.00 MET 7 6.49 0.00 MET 6 5.52 -0.88 VIOLATED 6.5 6.02 -0.32 VIOLATED 6.7 6.22 -0.03 VIOLATED 6.8 6.29 -0.06 VIOLATED 6.9 6.39 -0.07 VIOLATED 따라서, 본 회로가 동작할 수 있는 가장 낮은 클럭 주기는 7.0ns이고, 약 142.9MHz의 클럭에서 가장빠르게 작동할 수 있다는 것을 확인할 수 있었다. 이때의 timing report는 아래와 같았다. Timing report에 따르면 본 회로의 critical path는 [ff_c0] -> [multiplier] -> [adder] -> [ff_out] 이다. 이는 [3. Synthesize Result & Critical Path]에서 확인한 바와 같았다. 더불어, 5-tab direct FIR filter에 비해 critical path가 짧아졌음(adder가 4개 줄어들었음)을 알 수 있었고, 회로의 동작 속도도 약 34.3% 증가했음을 확인할 수 있었다. 5. Area Report & Power Report 본 회로의 total cell area는 291141.78μm², total dynamic power는 35.0676mW임을 알 수 있었다. 이는 5-tab direct FIR filter에 비해 각각 12.7%, 74.5% 증가한 수치인데, 5-tab direct FIR filter는 다섯 개의 12bit flip-flop과 한 개의 22bit flip-flop을 사용하지만, 5-tab transpose direct FIR filter는 한 개의 12bit flip-flop과 다섯 개의 22bit flip-flop을 사용하기 때문이다. 더불어, 5-tab transpose direct FIR filter는 다섯 개의 multiplier가 동시에 입력을 처리하기 때문이기도 하다.

반응형
profile

while(1) work();

@유호건

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

검색 태그