주요 콘텐츠

보간된 FIR 필터에 대한 코드 생성

종속적으로 연결된 멀티레이트 다단 필터를 사용하여 높은 차수의 FIR 필터를 효율적으로 설계하고 구현합니다. 필터에서 C 코드를 생성하고 생성된 C 코드를 사용자 지정합니다.

필요한 MathWorks™ 제품:

  • MATLAB®

  • DSP System Toolbox™

  • Simulink®

  • MATLAB® Coder™

  • Simulink® Coder™

  • Embedded Coder™

소개

멀티레이트 다단 접근 방식을 사용하여 더 높은 차수의 FIR 필터를 효율적으로 구현할 수 있습니다. 구현 비용을 줄이기 위해 단일 단계의 더 높은 차수 필터를 종속적으로 연결된 더 낮은 차수의 멀티레이트 필터로 분할할 수 있습니다.

이 예제의 보간된 FIR(ifir)은 종속적으로 연결된 FIR 데시메이터, FIR 필터, FIR 보간기를 사용하며, 이들 계수는 원하는 주파수 응답을 얻기 위해 조정 가능합니다. 코드 생성의 경우, 계수 변수가 이름이 지정되어 파일에 배치되기 때문에 타깃 프로세서에서 실행 중에 다른 소프트웨어 컴포넌트가 이러한 계수에 액세스하여 계수를 동적으로 변경할 수 있습니다.

다음 섹션에서는 보간된 FIR 설계를 지정하는 방법, 시뮬레이션을 통해 동작을 살펴보는 방법, 코드를 생성하고 생성된 코드를 사용자 지정하는 방법에 대해 설명합니다.

설계 지정하기

보간된 FIR의 설계 및 구현 알고리즘은 모델 사양과 파라미터화된 데이터 사양의 두 부분으로 지정됩니다. 모델 사양은 알고리즘의 신호 흐름을 지정하는 Simulink 서브시스템입니다. 모델 사양은 MATLAB 작업 공간에 있는 파라미터화된 데이터에도 액세스합니다. 파라미터화된 데이터 사양은 Simulink 모델에서 액세스하는 데이터를 생성하는 MATLAB 스크립트입니다.

이 예제에서 모델 사양은 Simulink 모델 dspifircodegen의 InterpolatedFIR 서브시스템입니다. 이 서브시스템에서 입력은 종속적으로 연결된 FIR 데시메이션, FIR 필터링, FIR 보간을 통과합니다.

이 예제에서 파라미터화된 데이터 사양은 MATLAB 스크립트 dapifirdata.m입니다. 이 MATLAB 스크립트는 초기 필터 계수와 코드 생성 특성을 지정합니다. 모델 dspifircodegen을 열면 모델의 PreLoadFcn 콜백이 MATLAB 작업 공간에 파라미터 데이터를 생성하는 dspifirdata.m 스크립트를 실행하도록 구성되어 있습니다.

시뮬레이션을 통해 동작 살펴보기

모델을 시뮬레이션하여 보간된 FIR 설계와 구현의 동작을 살펴볼 수 있습니다. 모델은 Spectrum Analyzer 블록을 사용하여 크기 응답을 확인합니다. 모델을 실행하려면 시뮬레이션 탭에서 실행을 클릭하십시오. 시뮬레이션 시간은 1000초로 설정되어 있습니다.

보간된 FIR 서브시스템에 대한 C 코드 생성하기

원하는 시뮬레이션 동작을 얻었다면 설계 사양을 기반으로 InterpolatedFIR 서브시스템에 대한 C 코드를 생성할 수 있습니다. 이 예제에 사용된 모델은 Embedded Coder 제품에서 액세스할 수 있는 몇 가지 일반적인 코드 생성 사용자 지정 사항을 표시하도록 구성되어 있습니다. 이러한 사용자 지정을 통해 간단하게 코드 검토 및 통합 절차를 수행할 수 있습니다. 다음 섹션에서는 이 모델에 코드 사용자 지정 중 일부를 적용하는 방법과 이러한 사용자 지정을 더 자세히 기술한 문서에 대한 링크를 제공합니다.

C 코드를 생성하려면 InterpolatedFIR 서브시스템을 마우스 오른쪽 버튼으로 클릭하고 C/C++ 코드 > 이 서브시스템 빌드를 선택합니다. 다음 하이퍼링크를 클릭하여 코드를 생성할 수도 있습니다. InterpolatedIFIR 서브시스템에 대한 코드 생성하기.

양방향 연결이 가능한 코드 생성 리포트

모델은 생성된 소스 및 헤더 파일을 탐색하는 데 사용할 수 있는 HTML 리포트를 생성하도록 구성되어 있습니다. 또한 이 리포트를 통해 생성된 코드와 모델 간의 양방향 연결이 가능합니다.

모델과 코드 간의 추적성에 대한 자세한 내용은 Trace Simulink Model Elements in Generated Code (Embedded Coder) 항목을 참조하십시오.

생성된 코드 호출하기

모델 초기화 및 모델 스텝 함수를 호출하여 생성된 코드를 애플리케이션에 통합할 수 있습니다. 생성된 ert_main.c 예제 파일을 살펴보면 생성된 코드를 호출하는 방법을 알 수 있습니다. ert_main.c의 예제 main()InterpolatedFIR_initialize()를 호출하여 상태를 초기화합니다. ert_main.c에서 예제 코드 rt_OneStep()은 인터럽트와 같은 주기적 메커니즘이 어떻게 파일 InterpolatedFIR.c에서 InterpolatedFIR_step()을 호출하는지 보여줍니다.

생성된 코드를 다른 애플리케이션에 통합하는 방법에 대한 자세한 내용은 Deploy Applications to Target Hardware (Embedded Coder) 항목을 참조하십시오.

입력 및 출력 데이터 인터페이스

파라미터화된 데이터 사양 파일 dspifirdata.m은 MATLAB 작업 공간에 inout 신호 데이터 객체를 생성합니다. 이러한 데이터 객체는 모델의 신호 선과 연관되며 생성된 코드에서 해당 변수의 설명 및 스토리지 클래스를 지정하는 데 사용됩니다. 예를 들어 신호 inoutInterpolatedFIR.c에서 전역 변수로 선언됩니다. 모델 스텝 함수를 실행하기 위해 애플리케이션은 in에 데이터를 쓰고 InterpolatedFIR_step() 함수를 호출한 다음 out에서 결과를 읽습니다.

데이터 객체에 대한 자세한 내용은 Create Data Objects for Code Generation with Data Object Wizard (Embedded Coder) 항목을 참조하십시오.

코드 주석에 텍스트 주석 삽입

모델에서 텍스트로 입력한 설계 문서를 생성된 코드의 주석으로 삽입할 수 있습니다. InterpolatedFIR 서브시스템에는 키워드 S:Description이 있는 주석 텍스트가 포함되어 있습니다. 코드 생성기는 텍스트가 이 키워드로 시작하는지 확인하고 키워드 다음에 오는 텍스트를 생성된 코드에 주석으로 삽입합니다.

코드 주석에 주석 텍스트를 삽입하는 방법에 대한 자세한 내용은 Add Global Comments in the Generated Code (Embedded Coder) 항목을 참조하십시오.

계수 파일 배치

파라미터화된 데이터 사양 파일 dspifirdata.m은 MATLAB 작업 공간에 계수에 대한 파라미터 데이터 객체를 생성합니다. 이러한 데이터 객체는 별도의 파일 ifir_coeffs.cifir_coeffs.h에서 각각 계수 변수를 정의하고 선언하도록 구성되어 있습니다. 계수를 별도의 파일로 분할하면 다른 소프트웨어 컴포넌트가 이 데이터에 액세스할 수 있습니다. 예를 들어 배포된 애플리케이션에서 다른 소프트웨어 컴포넌트가 이러한 변수를 InterpolatedFIR_step()에서 사용되기 전에 런타임에 수정하도록 스케줄링할 수 있습니다.

데이터 객체의 파일 배치에 대한 자세한 내용은 Control Placement of Global Data Definitions and Declarations in Generated Files (Embedded Coder) 항목을 참조하십시오.

계수 변수 주석에 필터 설계 파라미터 삽입

계수가 계산될 때(파라미터화된 데이터 파일에서), 필터 설계 파라미터는 계수 파라미터 데이터 객체의 Description 필드에 저장됩니다. 모델은 생성된 코드에 설계 파라미터를 주석으로 삽입하도록 구성되어 있습니다. 이를 통해 코드 검토자는 필터를 설계하는 데 사용된 설계 파라미터를 쉽게 확인할 수 있습니다.

생성된 코드에서 데이터 객체의 주석을 사용자 지정하는 방법에 대한 자세한 내용은 Add Custom Comments for Variables in the Generated Code (Embedded Coder) 항목을 참조하십시오.

생성된 파일 패키징하기

HTML 리포트에서 참조하는 생성된 파일은 InterpolatedFIR_ert_rtw 디렉터리에 있습니다. 프로젝트에 통합하려면 이 디렉터리에 있는 파일 외에도 MATLAB 애플리케이션 설치 디렉터리에 있는 다른 파일이 필요할 수 있습니다. 이 모델은 생성된 코드를 다른 환경에 쉽게 이식할 수 있도록 필요한 모든 파일을 zip 파일 InterpolatedFIR.zip으로 패키징하는 PackNGo 기능을 사용하도록 구성되어 있습니다. zip 파일에는 필요한 모든 파일이 포함되어 있지만 필요하지 않은 추가 파일도 포함되어 있을 수 있습니다.

다른 환경에 통합하기 위한 파일 패키징에 대한 자세한 내용은 Relocate or Share Generated Code (Simulink Coder) 항목을 참조하십시오.

참고 항목

| | (Simulink) | |

도움말 항목