FPGA 공부
ZedBoard 뜯어보기
Opens
2024. 9. 20. 16:39
내부 구성요소 뜯어보기
- ZEDBorad (Zynq XC7Z020-1CLG484)
- User Configured Logic (Prog. Logic)
- Pmod (4) Compatible:
- Pmod 인터페이스를 통해 다양한 외부 모듈을 쉽게 연결 가능
- FMC (LPC):
- 다양한 고속 데이터 전송을 위한 FPGA Mezzanine Card (FMC) Low Pin Count (LPC) 인터페이스를 제공
- Audio CODEC:
- 오디오 입력과 출력을 처리할 수 있는 CODEC 칩이 포함
- HDMI Out:
- HDMI 출력을 통해 디스플레이 장치에 비디오 신호를 전송
- VGA:
- VGA 출력을 통해 디스플레이 장치에 아날로그 비디오 신호를 전송
- 128x32 OLED:
- 작은 OLED 디스플레이를 제어
- Clock:
- 시스템의 클럭 신호를 제공
- XADC:
- 아날로그 디지털 변환기(ADC)로 아날로그 신호를 디지털로 변환
- LEDs, Switches, PROG SW, DONE LED, JTAG:
- 다양한 입출력 장치들로, FPGA 설계의 상태를 표시하거나 사용자 입력을 받을수 있음
- Pmod (4) Compatible:
- User Configured Logic (Prog. Logic)
- Processor Subsystem
- Dedicated
- 512 MB DDR3:
- 프로세서가 사용하는 메모리
- Reset, Clock:
- 프로세서 시스템의 리셋과 클럭 신호를 제공
- 512 MB DDR3:
- Multiplexed I/O (MIO)
- QSPI Flash:
- 빠른 저장 장치로 사용
- SD Card:
- 외부 저장 장치로 사용
- Gb Ethernet:
- 기가비트 이더넷 인터페이스로 네트워크 연결을 제공
- USB OTG:
- USB On-The-Go 기능을 제공
- USB UART:
- USB를 통한 직렬 통신을 제공
- Pmod Compatible, LED, Switches:
- 프로세서 시스템에서도 사용할 수 있는 Pmod, LED, 스위치
- QSPI Flash:
- Dedicated
User Configured Logic (Prog. Logic)와 Processor Subsystem으로 나눈 이유
- User Configured Logic (Prog. Logic)
- FPGA의 프로그래머블 로직 영역을 말하며, 사용자가 자유롭게 설계하고 구성할 수 있는 영역임. 이 영역에는 다양한 외부 장치들이 연결될 수 있으며, 이는 사용자 설계에 따라 다르게 동작할 수 있음.
- Processor Subsystem
- Zynq SoC의 ARM 프로세서와 관련된 부분임, 프로세서 시스템은 FPGA 로직과는 독립적으로 동작함.
즉 이렇게 나눈 이유는
User Configured Logic 부분은 주로 하드웨어 설계를 통해 처리 성능이 중요한 작업들을 구현함. 예를 들어, 신호 처리, 데이터 변환, 고속 인터페이스 처리 등이 이에 해당함. 이 부분은 FPGA의 유연성을 최대한 활용하여 특정 요구사항에 맞춘 하드웨어 로직을 설계할 수 있음.
- Constraints file이나 Block Design으로 설계하여 사용 (Vivado)
Processor Subsystem 부분은 소프트웨어 기반의 작업을 처리함. 예를 들어, 파일 시스템, 네트워크 통신, 사용자 인터페이스 처리 등이 이에 해당함. 이 부분은 ARM 프로세서의 강력한 연산 능력과 다양한 주변 장치 인터페이스를 활용하여 복잡한 소프트웨어 작업을 수행함.
- Vitis에서 MobaXTerm등 연결해 사용
FPGA를 위한 단어 정리
UART (Universal Asynchronous Receiver/Transmitter)
- 뜻: 범용 비동기 수신기/송신기
- 사용 용도: 직렬 통신 인터페이스로, 두 디바이스 간의 데이터 전송에 사용됩니다.
- 고려사항: 설정할 때 전송 속도(baud rate), 데이터 비트, 패리티 비트, 정지 비트를 설정해야 합니다. 통신 거리가 짧고, 비교적 저속 통신에 적합합니다.
MIO (Multiplexed Input/Output)
- 뜻: 다중 입력/출력
- 사용 용도: 여러 기능을 하나의 핀에서 사용할 수 있도록 설정하는 인터페이스.
- 고려사항: MIO 핀 구성은 핀 다이어그램과 데이터시트를 참고하여 설계해야 합니다. 핀 충돌을 방지하고 원하는 기능을 정확히 설정해야 합니다.
EMIO (Extended Multiplexed Input/Output)
- 뜻: 확장 다중 입력/출력
- 사용 용도: FPGA 내부에서 추가적인 GPIO 기능을 제공하는 인터페이스.
- 고려사항: 확장된 GPIO 기능이 필요할 때 사용되며, PL(Programmable Logic) 쪽에서 더 많은 핀을 사용할 수 있게 해줍니다.
XADC (Xilinx Analog-to-Digital Converter)
- 뜻: 자일링스 아날로그-디지털 변환기
- 사용 용도: 아날로그 신호를 디지털 데이터로 변환하는 장치.
- 고려사항: 센서 데이터 수집, 신호 모니터링 등에 사용되며, 정확한 아날로그-디지털 변환을 위해 전원 공급 및 클럭 설정이 중요합니다.
ADC (Analog-to-Digital Converter)
- 뜻: 아날로그-디지털 변환기
- 사용 용도: XADC와 동일한 기능으로, 아날로그 신호를 디지털로 변환.
- 고려사항: 전압 범위, 해상도, 샘플링 속도를 고려하여 선택해야 합니다.
DMA (Direct Memory Access)
- 뜻: 직접 메모리 접근
- 사용 용도: CPU를 거치지 않고 메모리 간 데이터를 직접 전송하는 기술.
- 고려사항: 고속 데이터 전송이 필요할 때 사용하며, 설정할 때 소스 및 목적지 주소와 데이터 크기 등을 지정해야 합니다.
TTC (Triple Timer Counter)
- 뜻: 삼중 타이머 카운터
- 사용 용도: 타이머/카운터 기능을 제공하며, 주기적인 인터럽트를 생성하거나 시간 측정을 할 때 사용.
- 고려사항: 클럭 소스와 타이머 모드를 설정해야 하며, 타이밍 정확도가 중요한 애플리케이션에서 사용됩니다.
SWDT (System Watchdog Timer)
- 뜻: 시스템 와치독 타이머
- 사용 용도: 시스템이 정상적으로 작동하는지 모니터링하고, 비정상 상태가 감지되면 시스템을 리셋.
- 고려사항: 타이머 오버플로우 시간을 설정하고, 주기적으로 리셋 시그널을 보내야 합니다. 시스템 안정성 보장을 위해 필수적입니다.
FPU (Floating Point Unit)
- 뜻: 부동소수점 연산 장치
- 사용 용도: 부동소수점 연산을 빠르게 처리하는 하드웨어 장치.
- 고려사항: 부동소수점 연산이 많은 애플리케이션에서 사용되며, 성능 향상을 위해 필수적입니다.
Snoop Controller
- 뜻: 스누프 컨트롤러
- 사용 용도: 캐시 일관성을 유지하기 위해 다른 코어의 캐시 상태를 모니터링하고 관리.
- 고려사항: 멀티코어 시스템에서 캐시 일관성을 유지하고 성능을 최적화하는 데 중요합니다.
DDR (Double Data Rate)
- 뜻: 더블 데이터 레이트
- 사용 용도: 메모리 인터페이스로, 클럭 신호의 상승과 하강 에지에서 데이터를 전송하여 데이터 전송 속도를 두 배로 높임.
- 고려사항: 메모리 속도와 용량, 전력 소모 등을 고려하여 선택해야 합니다.
LPDDR (Low Power Double Data Rate)
- 뜻: 저전력 더블 데이터 레이트
- 사용 용도: 모바일 및 저전력 디바이스에서 사용되는 메모리.
- 고려사항: 전력 소모를 줄이기 위해 설계되었으며, 모바일 애플리케이션에서 중요합니다.
IRQ (Interrupt Request)
- 뜻: 인터럽트 요청
- 사용 용도: 디바이스가 CPU에게 주의를 요구할 때 사용되는 신호.
- 고려사항: 인터럽트 우선순위와 처리 루틴을 정확히 설정해야 합니다.
GIC (Generic Interrupt Controller)
- 뜻: 일반 인터럽트 컨트롤러
- 사용 용도: 여러 인터럽트를 관리하고 우선순위를 조정하여 CPU에 전달.
- 고려사항: 인터럽트 소스를 관리하고, 우선순위 설정과 분산을 효율적으로 처리해야 합니다.
OCM (On-Chip Memory) Interconnect
- 뜻: 온칩 메모리 인터커넥트
- 사용 용도: 칩 내의 메모리와 프로세서 간의 데이터 전송을 위한 인터커넥트.
- 고려사항: 메모리 대역폭과 레이턴시를 고려하여 설계해야 합니다.
JTAG (Joint Test Action Group)
- 뜻: 조인트 테스트 액션 그룹
- 사용 용도: 하드웨어 디버깅 및 프로그래밍 인터페이스.
- 고려사항: 디바이스 프로그래밍과 디버깅을 위해 사용되며, 연결 및 설정이 정확해야 합니다.
GPIO (General-Purpose Input/Output)
- 뜻: 범용 입출력
- 사용 용도: 다양한 디지털 신호를 입출력할 수 있는 핀 - 사용자 입력을 받는다!!
- 고려사항: 입력 또는 출력 모드로 설정하고, 신호의 전압 수준과 타이밍을 고려해야 합니다.
CAN (Controller Area Network)
- 뜻: 컨트롤러 영역 네트워크
- 사용 용도: 차량 내 네트워크 통신 표준으로, 각종 센서 및 제어장치 간의 통신에 사용.
- 고려사항: 네트워크 속도와 데이터 프레임 설정, 오류 처리 등을 고려해야 합니다.
HPR (High Priority Read)
- 뜻: 고우선순위 읽기
- 사용 용도: 메모리 시스템에서 읽기 요청의 우선순위를 높이는 설정.
- 고려사항: 시스템 성능을 최적화하기 위해 중요한 데이터를 빠르게 읽어야 할 때 사용.
LPR (Low Priority Read)
- 뜻: 저우선순위 읽기
- 사용 용도: 메모리 시스템에서 읽기 요청의 우선순위를 낮추는 설정.
- 고려사항: 덜 중요한 데이터를 읽을 때 사용하며, 시스템 자원을 효율적으로 분배할 수 있습니다.
FTM (Full Trace Mode)
- 뜻: 풀 트레이스 모드
- 사용 용도: 시스템의 동작을 상세히 추적하여 디버깅과 성능 분석에 사용.
- 고려사항: 디버깅 및 성능 분석 도구와 함께 사용하며, 정확한 트레이스 데이터 수집을 위해 설정이 중요합니다.