아카데믹 회사 소개 행사 및 세미나 NI Developer Zone 기술 지원 솔루션 제품 및 서비스 문의 MyNI

사이클 정확(Cycle-Accurate) ARM 마이크로컨트롤러 시뮬레이터 사용

평가 0 건 | 5 중 0.00
언어 선택 | 인쇄

개요

ARM 마이크로컨트롤러용 LabVIEW Embedded Module은 RealView µVision ARM 시뮬레이터를 지원합니다. 본 시뮬레이터는 사이클 정확 타이밍 및 로직 시뮬레이션을 제공합니다. 또한, 시뮬레이터는 온칩 주변기기를 지원하므로 사용자는 어플리케이션 디버깅 및 테스트에 대한 제어된 자극 및 응답을 제공할 수 있습니다. 본 기능으로, 하드웨어 디자인이 완성되기 이전에 어플리케이션의 상당 부분을 개발하고 테스트할 수 있습니다. 본 튜토리얼에서는 NI Multisim SPICE 시뮬레이션 환경으로 주변 아날로그 회로를 통합 시뮬레이션 하는 방법 등 더 높은 품질의 코드를 더욱 신속하게 개발하기 위해 본 기능을 어떻게 활용하는지 설명합니다.

시뮬레이터에서 어플리케이션 실행

1. LabVIEW 시뮬레이터에서 어플리케이션을 실행하기 위해서는 반드시 LabVIEW 프로젝트를 생성해야 합니다. 

  • 드롭다운 메뉴에서 ARM Project를 선택하고 Go를 누르면 ARM 프로젝트 마법사를 시작할 수 있습니다.

  • Next를 클릭하여 새로운 VI를 생성합니다.
  • 시뮬레이션하고자 하는 프로세서를 선택합니다. 본 튜토리얼에서는 MCB2300 평가 보드를 시뮬레이션합니다. Next를 클릭합니다.

 

  • Run on Simulator 옵션을 선택하고 Finish를 클릭합니다. LabVIEW는 프로젝트 파일과 두 개의 VI를 생성합니다. 각 파일을 저장하도록 요청받게 됩니다.

 

2. 이제 어플리케이션을 구축합니다. 이 경우 아날로그 입력을 읽고 임계점을 초과하는지 여부를 체크하는 간단한 VI를 만들었습니다. 임계점이 초과되면 LED0 에 불이 켜집니다.

  • LabVIEW 프로젝트의 MCB2300 타겟을 마우스 오른쪽 클릭하고 New>>Elemental I/O를 선택하여 프로젝트 트리에 I/O 노드를 추가합니다.

  • 아날로그 입력 >> AIO디지털 출력 >> LED0을 프로젝트에 추가합니다.
  • Window>>블록 다이어그램 보이기를 선택하여 열려있는 VI의 블록 다이어그램으로 갑니다.
  • 프로젝트의 Elemental I/O 노드를 블록 다이어그램으로 끌어가서 놓습니다.
  • 그림처럼 블록 다이어그램과 프런트패널을 완성합니다. A/D에서 반환된 값이 10-비트 A/D값의 정수이므로, 512 값은 약 1.66 V와 동일합니다.

3. Run 화살표를 클릭하여 C 코드를 생성 및 컴파일하고, 시뮬레이터에서 어플리케이션을 실행합니다. 프로세서 상태창은 시뮬레이터의 상태를 반영합니다.

아날로그 입력값 수동 변경

이제 어플리케이션이 실행되므로, 시뮬레이션되는 A/D 변환기에 아날로그 값을 공급하여 코드의 로직을 테스트할 수 있습니다. 이 때 수동 또는 자동의 두 가지 방법 중 하나를 선택할 수 있습니다. 값을 수동으로 변경하면 uVision IDE에 직접 접근할 수 있습니다.

1. µVision을 실행하기 위해 프로젝트 트리의 MCB2300 타겟을 마우스 오른쪽 클릭하여 Keil uVision 보이기를 선택합니다.

 

2. Keil uVision IDE에서 Peripherals>>A/D Converter>>A/D Converter 0을 선택합니다. 이제 주변기기 시뮬레이터 인터페이스를 실행합니다.

3. Analog Inputs 섹션에서 AD00값을 2.0으로 변경합니다. LabVIEW 소프트웨어에서 시뮬레이션된 A/D 변환기가 반환한 값을 변경합니다. 본 값은 볼트이며, 10-비트 A/D는 0-3.3V의 유효한 입력 범위를 가지므로, 2V는 620의 정수값으로 변환합니다. 이는 다음의 공식을 사용하여 계산됩니다.

4. 출력값은 LabVIEW 인디케이터를 사용하여 확인가능합니다. 또한, Peripherals>>GPIO Fast Interface>>Port 2를 선택하여 디지털 포트의 값을 볼 수 있습니다. LED는 포트 2 line 0에 연결되어 있습니다.

자극 및 응답 자동화

위에 설명된 수동 방식의 대안은 개별 VI를 사용하여 시뮬레이션되는 주변기기로 데이터를 송수신하는 방법입니다. ARM 마이크로컨트롤러용 LabVIEW Embedded Module은 추가 팔렛트를 설치하여 시뮬레이션되는 임베디드 시스템에 대한 복합적이며 자동화된 자극 응답 테스트를 개발하는 간단한 방법을 제공합니다.

1. 마법사가 생성한 Simulated IO VI를 엽니다. LabVIEW 프로젝트의 내 컴퓨터 아래에서 찾을 수 있습니다.

2. 블록 다이어그램을 열면 시뮬레이터와 통신하기 위한 템플릿 코드가 이미 있는 것을 확인할 수 있습니다.

 

  • 코드는 시뮬레이션의 시간 단계를 구성하며, 실행 시뮬레이터에 연결을 개방하며, 시뮬레이터를 중지시켜 LabVIEW가 데이터를 보내도록 합니다.
  • 시퀀스 구조의 중간 프레임에, 자극 응답을 수행하기 위해 코드를 추가할 수 있습니다.
  • 데이터가 업데이트되면, 시뮬레이터는 다시 시작할 수 있게 됩니다. 시뮬레이션이 완성되면, 연결이 종료됩니다.

3. 본 튜토리얼에서는 LVM (LabVIEW measurement 파일)에 저장되어 있는 시뮬레이터로 입력의 시퀀스를 보냅니다.

 

  • while 루프를 마우스 오른쪽 클릭하여 For 루프로 대체합니다.
  • Express>>File I/O 팔렛트에서 read LabVIEW Measurements File VI를 불러오고 LVM 파일을 읽도록 구성합니다. LabVIEW LVM 파일에 대한 더욱 자세한 정보는 신호 분석 및 저장 튜토리얼을 보십시오.
  • ARM>>ARM Simulation Signal Generation 팔렛트의 VI를 사용하면 한번에 한 포인트씩 시뮬레이션 데이터를 읽고 쓸 수 있습니다.
  • 데이터는 수집되어 웨이브폼 차트에 디스플레이됩니다.

4. 시뮬레이션을 실행한 후, 이전에 예상했었던 동작과 최종 결과를 비교할 수 있습니다. 본 스크린샷에서 입력이 1.66V를 상회할 때마다 불리언 출력이 높아짐을 알 수 있습니다.

완벽한 디자인 검증

임베디드 ARM 마이크로컨트롤러는 대형 디자인의 한 가지 요소입니다. 완벽한 디자인은 임베디드 디바이스에 대해 외부인 아날로그 및 디지털 컴포넌트로 구성되어 있습니다. 예를 들어, 마이크로컨트롤러에 대한 신호 입력은 적합한 자극을 위해서 필터링 또는 증폭과 같은 일정 형태의 신호 컨디셔닝이 필요합니다. 이같은 외부 디바이스 유형은 임베디드 디바이스의 동작에 영향을 줍니다. 따라서 ARM 마이크로컨트롤러의 시뮬레이션 그 자체만으로 시스템 동작의 모든 것을 이해할 수는 없습니다.

ARM 마이크로컨트롤러용 LabVIEW Embedded Module의 시뮬레이션 환경을 활용함으로써, NI Multisim의 아날로그 및 디지털 시뮬레이션에 통합할 수 있습니다. 디자인의 두 가지 단계간에 시뮬레이션을 통합하게 되면 외부 신호 컨디셔닝의 영향을 더욱 효과적으로 분석할 수 있습니다. 여러가지 환경에서의 이같은 시뮬레이션을 통합 시뮬레이션 (co-simulation)이라고 하며, 일반적인 오류를 제거하는 데에 도움이 될 뿐만 아니라, 어플리케이션 코드가 실제로 실행되기 이전에 어플리케이션 코드를 더욱 정확하게 디버깅하고 테스트할 수 있게 됩니다.

Multisim은 회로 디자인을 위한 사용하기 편리하며 직관적이고 강력한 혼합 모드 시뮬레이션 환경입니다. LabVIEW 테스트 환경에 통합을 통해서 엔지니어들은 PCB 디자인 및 검증을 다룰 수 있는 고유한 플랫폼을 사용할 수 있습니다. Multisim 회로 디자인 환경 및 LabVIEW의 모든 시뮬레이션 측정은 LabVIEW Measurement (LVM) 파일 포맷으로 저장됩니다. NI 제품간 통신의 원시 언어는 LVM이며, 따라서 시뮬레이션된 모듈의 출력을 다른 곳으로 편리하게 전송할 수 있습니다.

LabVIEW와 Multisim으로 완벽한 디자인 시뮬레이션

이전의 LabVIEW 예제를 계속 사용하여 디자인 동작을 검증할 수 있습니다.

신호를 ARM 마이크로컨트롤러로 인터페이스하기 위해서 일반적으로 신호 컨디셔닝이 필요합니다. 예를 들어, 전압 분배기와 같은 간단한 요소는 ARM 프로세서에 자극이 되기 이전에 전압을 낮추기 위해 필요합니다.

1. 아날로그 신호를 마이크로컨트롤러에 인터페이스하기 위해 반드시 Multisim에서 회로를 설계해야 합니다.

  • NI Multisim을 엽니다. (Start > All Programs > National Instruments > Circuit Design Suite 10.0 > Multisim)
  • 아래 그림에 있는 회로를 설계합니다. (첨부된 simple_voltage_divider.ms10 회로 파일을 열 수도 있습니다.)

  • 함수 생성기 (XFG1)를 마우스 두번 클릭하여 주파수10 kHz로 맞추고 증폭5 Vp로 맞춥니다.
  • 시뮬레이션 버튼을 클릭합니다. (아래 이미지에 붉은색으로 표시)

  • 오실로스코프를 (XSC2) 마우스 두번 클릭하고 전압 분배기의 시뮬레이션된 출력을 확인합니다.
  • 오실로스코프의 Save 버튼을 클릭합니다. (아래 그림 참조)
  • Save as Type 드롭다운 박스를 Text-Based Measurement file (*.lvm)로 변경하고 파일을 multisim_output.LVM로 저장합니다.
  • Data resampling settings 대화 상자에서 OK를 클릭합니다.

2. 이제 MultisimOutput.lvm 시뮬레이션된 응답을 LabVIEW 시뮬레이션 환경으로 보내 ARM 마이크로컨트롤로 인터페이스합니다

  • 시뮬레이션하기 이전에 이전의 LabVIEW VI에 다음의 변경을 적용합니다.
  • 새로운 VI 알고리즘은 ARM 마이크로컨트롤러의 출력을 LVM 파일로 저장합니다.
  • Read from Measurement File Express VI를 마우스 두 번 클릭합니다.
  • File-Name 대화창에서, 이미 저장된 MultisimOutput.lvm 파일을 검색합니다.
  • Run 버튼을 클릭하여 코드를 컴파일하고 실행합니다.

시뮬레이션을 실행한 후, 우리는 결과를 예상했던 동작과 비교할 수 있습니다. 본 스크린샷에서 입력이 1.66V를 상회할 때마다 불리언 출력이 높아짐을 다시 한 번 알 수 있습니다.

본 통합된 플랫폼을 사용하면 완벽한 임베디드 디자인을 검증하기 위한 유연성있는 전략을 세울 수 있습니다.

VI (LabVIEWOutput.lvm 파일 이름으로 저장) 부터 저장된 시뮬레이션된 데이터는 Multisim 환경 내에서 다시 사용될 수 있습니다. 시뮬레이션된 데이터는 저장되거나 또는 Multisim 내에서 자극으로 사용될 수 있습니다. 아날로그 회로와 임베디드 프로세서간의 반복적인 루프 작업을 통해 시뮬레이션되는 데이터의 피드백을 편리하게 볼 수 있으므로 시스템의 전반적인 분석을 향상시킬 수 있습니다.

 

평가 0 건 | 5 중 0.00
언어 선택 | 인쇄

법적 정보
"이 튜토리얼 (이 ""튜토리얼"")은 내쇼날인스트루먼트 (""NI"")가 개발한 것 입니다. 이 튜토리얼에 대한 내쇼날인스트루먼트의 기술 지원이 가능하더라도, 이 튜토리얼의 내용은 완전하게 테스트 및 검증되지 않을 수 있으며, NI는 어떠한 방식으로도 품질 또는 관련 제품 및 드라이버의 새로운 버전에 따른 컨텐츠의 지속적인 지원을 보장하지 않습니다. 이 튜토리얼은 어떠한 종류의 보증 및 NI.COM의 이용 약관에 명시된 특정한 제약 규정에 대한 전제 없이 있는 그대로 제공됩니다. (http://ni.com/legal/termsofuse/unitedstates/us/)