최근의 많은 프로그래머블반도체(FPGA) 설계는 제어를 위해 다양한 종류의 임베디드(내장형 제어) 프로세서를 사용한다. 일반적으로 시스템온칩(SoC) 디바이스를 사용한다. 아래 그림은 프로세서와 여러 주변장치를 포함하면서, 이 장치를 아발론(Avalon) 메모리 맵(MM) 버스를 통해 연결하는 전형적인 알테라 FPGA 시스템을 보여준다.
이 설계 개념은 알테라의 SPI 슬레이브-아발론 MM 브리지를 사용해 아발론 버스를 적용하는 간단한 방법을 제공한다. 이러한 기법을 사용할 경우 두 가지 장점이 있다. 이 방법은 원래의 시스템 설계에 영향을 미치지 않으며 브리지와 임베디드 프로세서가 공존할 수 있다는 것이다. SPI-아발론 MM 브리지는 프로세서와 마찬가지로 엔지니어가 직접 LTC6948 분수 분주형 PLL 주파수를 제어하거나 LTC1668 DAC 전압의 설정, LTC2498로부터 전압을 읽거나 LTC2983으로부터 온도를 읽을 수 있게 한다.
알테라는 SPI-아발론 MM 브리지를 위한 레퍼런스 디자인을 제공한다. 그러나 안타깝게도 문서는 풍부하지 않으며 NIOS 프로세서를 SPI 마스터로 사용한다. NIOS 프로세서는 아발론 MM 버스에 직접 인터페이싱 할 수 있기 때문에 이는 사실상 SPI 브리지의 목적에 맞지 않는다. 실제적인 SPI 마스터는 리니어 테크놀로지의 린두이노 마이크로컨트롤러유닛(MCU)이다. 이 MCU는 아두이노 계열 보드로 LT 데모 보드에 인터페이싱 하는 추가 기능을 갖추고 있다. 한 가지 별도의 기능은 레벨 시프트 된 SPI 포트이다.
이 레벨 시프팅 기능은 1.2볼트(V)와 같은 낮은 전압을 갖는 FPGA I/O 뱅크로 인터페이싱 할 때 특히 유용하다. 린두이노 펌웨어는 가상 COM 포트를 통해 명령을 입력 받고 SPI 트랜잭션으로 명령을 변환할 수 있다.
알테라 예제 설계를 리버스 엔지니어링을 진행한 다음 브리지가 받아들일 수 있는 패킷을 생성하기 위해 파이썬 라이브러리를 개발했다. 그런 다음 이들 패킷을 린두이노 명령으로 변환한다. 이와 같이 간단한 파이썬 스크립트를 이용하면 하드웨어 엔지니어는 인터페이싱 프로토콜을 처음부터 다시 만들 필요 없이 프로젝트를 완벽하게 제어할 수 있다. LTC1668 DAC을 위한 디지털 패턴 생성기의 주파수를 제어하는 파이썬 스크립트 예제는 ‘www.linear.com/solutions/linearlabtools’의 ‘LinearLabTools Python’ 폴더에서 구할 수 있다.
아래 그림은 FPGA 시스템의 블록 다이어그램을 보여준다. 수치 제어 발진기(NCO)는 시프트 레지스터 또는 PIO 코어를 이용해 제어할 수 있다. 시프트 레지스터는 NCO를 직접 제어할 수 있으므로 디버그를 위해 포함됐다. GPIO 라인 로직 레벨을 하이로 설정하면 SPI-아발론 MM 브리지가 작동하면서 아발론 MM 버스를 통해 32비트 PIO 포트를 제어한다. 이어서 PIO 출력은 NCO 주파수를 제어한다.
FPGA에 최초로 설계한 부분을 적용할 때 LinearLabTools에 제공되는 파이썬 라이브러리는 설계에 인터페이싱 하는 다음과 같은 2개 함수를 포함한다.
transaction_write(dc2026, base, write_size, data)
transaction_read(dc2026, base, read_size)
이들 함수에 대한 첫 번째 인수는 린두이노 직렬 포트 인스턴스이다. 두 번째 인수는 아발론 버스에서 주변장치의 주소이다. 함수는 각 바이트의 리스트를 입력 받고 되돌려준다. 이들 두 함수는 IP에 쓰고 읽을 때 유연성을 허용하기 위해 작성된다. 제공된 예제를 통해 NCO를 설정하려면 transaction_write 함수가 필요한 전부이다. 식 1을 사용해 튜닝 워드를 결정한다.
식1 tuning word =(desired frequency )/(system clock frequency )×2^32
transaction_write(linduino_serial_instance, 0, 0, [0x0,0x01,0x4F, 0x8B])
PIO의 기본 주소는 로직 설계로부터 영(0)이다.
아래 그림에 보이는 간단한 파이썬 스크립트는 FPGA 설계의 인터페이스와 파이썬 스크립트를 시연하기 위한 것이다. 이 스크립트는 NCO를 구성하는 간단한 텍스트 인터페이스를 포함한다. 중요한 점은 아발론 SPI 브리지가 SPI 모드3을 사용한다는 점이다. 이 모드는 시행착오를 통해 어렵게 적합한 모드로 결정됐다.알테라 예제에서 NIOS 프로세서 SPI 인터페이스를 분석함으로써 검증됐다.
글 리니어테크놀로지 노아 퀸테로
Copyright ⓒ 디지털데일리. 무단전재 및 재배포 금지
[MWC25] SKT, 'K-AI 얼라이언스' 7개사 글로벌 진출 지원
2025-02-24 10:17:42"스터디그룹·선의의 경쟁 봤지?"…와이랩, 이제는 '넷플릭스'다
2025-02-23 16:48:11통신3사, MWC25서 'AI 각축전' 예고…유상임 장관 깜짝 회동할까
2025-02-23 14:57:14[OTT레이더] 인생을 건 머니게임이 시작됐다, 웨이브 ‘보물섬’
2025-02-23 12:04:50[인터뷰]“밤 9시까지 AI 열정!”...’KT에이블스쿨 전형’이 신설된 이유는?
2025-02-23 09:00:00연간 통신분쟁 전년 대비 22% 급증…”이용계약 관련 분쟁이 절반”
2025-02-21 17:39:30"3D 아바타 만나는 가상도시"…마와리, AI·XR 더한 '난바 프로젝트' 가동
2025-02-24 11:35:40넥슨 ‘던전앤파이터’, 중천으로 재도약… 바통은 ‘카잔’으로
2025-02-24 11:30:05"KTX 타면서 렌터카까지"…쏘카, 장거리 이동 트렌드 제시
2025-02-24 10:26:32데브시스터즈 ‘쿠키런: 브레이버스’, 7월11일 미국 출시
2025-02-24 10:19:17넥슨 ‘FC 온라인’, 이스포츠 대회 개편안 발표… 구단 프랜차이즈 도입
2025-02-24 09:29:13"스터디그룹·선의의 경쟁 봤지?"…와이랩, 이제는 '넷플릭스'다
2025-02-23 16:48:11