소개
이 페이지는 Xillybus 또는 XillyUSB를 시작하는 방법에 대한 간단한 요약입니다. 이 절차는 대개 빠르고 단순해서 자세한 안내가 많이 필요하지 않습니다. 다만 FPGA에 따라 약간의 차이가 있습니다.
여기서는 가장 흔한 사용 사례와 최신 FPGA만 다룹니다. 이 페이지의 정보가 부족하다고 느껴지면 더 자세하고 구체적인 내용이 담긴 Xillybus 문서 페이지를 참조하십시오.
Xillinux는 절차가 조금 다르기 때문에 여기서는 다루지 않겠습니다.
개요
Xillybus를 시작하는 데는 세 단계가 필요합니다.
- 데모 번들(demo bundle)에서 FPGA용 비트스트림(bitstream) 파일을 생성합니다.
- 컴퓨터에 드라이버를 설치합니다(이 단계는 생략해도 되는 경우가 많습니다).
- Xillybus가 동작하는지 확인하는 간단한 테스트를 컴퓨터에서 수행합니다. 이 테스트는 Linux 및 Windows용 별도 페이지에서 설명합니다.
나중에 여러분만의 커스텀 IP 코어(custom IP core)를 만들고 싶어질 수도 있습니다. IP Core Factory에서 만들면 원하는 만큼 많은 스트림을 선택할 수 있습니다. 그 전에 데모 번들을 사용해 보면 Xillybus의 동작 방식을 이해하는 데 도움이 됩니다.
Xillybus vs. XillyUSB
XillyUSB 사용을 고려하고 있다면, 현실적으로 가능한 한 PCIe용 Xillybus를 대신 선택하는 방안을 검토하십시오. PCIe 버스가 USB보다 훨씬 더 안정적이기 때문입니다.
XillyUSB는 FPGA를 물리적으로 컴퓨터 외부에 두어야 할 때만 선택해야 합니다(예: 호스트로 노트북을 사용하는 경우).
데모 번들 및 소프트웨어 내려받기
Xillybus 웹 사이트에서 내려받을 수 있는 것은 모두 완전한 기능을 갖추고 있습니다. 여기에는 IP Core Factory에서 제공하는 IP 코어(IP core)와 데모 번들이 모두 포함됩니다. 활성화 코드를 요청할 필요도 없고 그런 종류의 절차도 없습니다. 다만 IP 코어 사용에 대한 법적 허용 범위는 제한적입니다. IP 코어는 평가 목적으로만 사용할 수 있으며, 이후에도 IP 코어를 계속 합법적으로 사용하려면 라이선스를 구매해야 할 수 있습니다. 이용 조건을 반드시 확인하십시오.
파일을 내려받을 수 있는 웹 페이지는 두 개로 나뉘어 있습니다. PCIe를 이용하는 Xillybus용 페이지와 XillyUSB용 페이지가 그것입니다. 해당 웹 페이지로 이동해 다음 항목들을 내려받으십시오.
- 여러분의 보드에 맞는 데모 번들.
- Linux 또는 Microsoft Windows용 드라이버. Linux를 사용 중이고 드라이버가 Linux 배포판에 포함되어 있더라도 내려받으십시오.
- Windows 사용자만 해당: Windows용 Xillybus 패키지.
- XillyUSB를 사용하는 Windows 사용자만 해당: Windows용 진단 유틸리티.
이 파일들은 모두 .zip 또는 .tar.gz 형식입니다. 먼저 압축을 풀어 디스크에 내용물을 저장하십시오.
여러분의 보드가 데모 번들 목록에 없다면 데모 번들을 수정해야 합니다. 동일한 FPGA 패밀리를 기반으로 한 데모 번들을 선택하고, Xilinx 또는 Intel FPGA 문서의 지침을 따르십시오.
다음 단계는 AMD / Xilinx와 Altera에 따라 다릅니다.
AMD / Xilinx용 비트스트림 생성
컴퓨터에 Vivado가 설치되어 있어야 합니다. 문서에는 FPGA별로 적합한 Vivado 버전 목록이 나와 있습니다. 하지만 이미 Vivado가 설치되어 있다면 그것을 사용해 보십시오. Vivado 버전이 맞지 않으면 아래 절차는 실패합니다. 최신 버전이 필요하다는 오류가 발생할 것입니다. 그런 오류가 발생하지 않는다면 지금 사용 중인 Vivado 버전으로 충분합니다.
비트스트림 파일을 생성하는 단계는 다음과 같습니다.
- Vivado에서 Tools > Tcl Script…를 선택한 뒤, xillydemo-vivado.tcl 스크립트(script)를 찾아 선택하십시오. 이 파일은 verilog/ 또는 vhdl/ 하위 디렉터리에 있습니다. 아마 어느 쪽을 선호하는지 이미 알고 계실 것입니다. 모르겠다면 verilog/를 선택하십시오.
- 그러면 Vivado가 새 FPGA 프로젝트를 만듭니다. Vivado의 Tcl 콘솔에 "INFO: Project created: xillydemo"라고 표시됩니다.
- 그다음 "Generate Bitstream"을 클릭하십시오.
- 그러면 Vivado가 프로젝트 구현(implementation)을 실행합니다. 이 과정이 끝나면 바로 사용할 수 있는 비트스트림 파일이 생성됩니다. 파일 이름은 xillydemo.bit입니다.
Vivado는 구현 과정에서 여러 경고를 표시하지만, 치명적 경고(Critical Warning)나 오류는 없어야 합니다.
자세한 내용은 Xilinx용 FPGA 데모 번들 시작하기 문서에 있습니다. 참고로 Vivado는 Virtex-5, Spartan-6, Virtex-6을 지원하지 않습니다. 이 FPGA들 중 하나를 사용한다면 이 문서를 참조하십시오.
Tcl 스크립트 없이 FPGA 프로젝트를 만들려고 하지 마십시오. 새 프로젝트를 직접 만들고 소스 파일을 가져오면 제대로 동작하지 않을 가능성이 높습니다.
Altera용 비트스트림 생성
컴퓨터에 Quartus가 설치되어 있어야 합니다. 문서에는 FPGA별로 적합한 Quartus 버전 목록이 나와 있습니다. 하지만 이미 Quartus가 설치되어 있다면 그것을 사용해 보십시오. Quartus 버전이 맞지 않으면 아래 절차는 실패합니다. 최신 버전이 필요하다는 오류가 발생할 것입니다. 그런 오류가 발생하지 않는다면 지금 사용 중인 Quartus 버전으로 충분합니다.
비트스트림 파일을 생성하는 단계는 다음과 같습니다.
- xillydemo.qpf 파일을 더블클릭하십시오. 이 파일은 verilog/ 또는 vhdl/ 하위 디렉터리에 있습니다. 아마 어느 쪽을 선호하는지 이미 알고 계실 것입니다. 모르겠다면 verilog/를 선택하십시오.
- 그러면 Quartus가 FPGA 프로젝트를 엽니다.
- "Compile Design"을 클릭하십시오.
- 그러면 Quartus가 프로젝트 구현을 실행합니다. 이 과정이 끝나면 바로 사용할 수 있는 비트스트림 파일이 생성됩니다. 파일 이름은 xillydemo.sof입니다.
Quartus는 구현 과정에서 여러 경고를 표시하지만, 치명적 경고(Critical Warning)나 오류는 없어야 합니다.
자세한 내용은 Intel FPGA용 FPGA 데모 번들 시작하기 문서에 있습니다. FPGA가 V 시리즈보다 이전 모델(예: Cyclone IV)이라면 절차가 조금 더 길어집니다. 자세한 내용은 해당 문서를 참조하십시오.
Microsoft Windows용 드라이버 설치
Windows용 Xillybus 드라이버는 표준 방식으로 설치됩니다. 컴퓨터에 FPGA 보드가 장착되어 있어야 하며, 컴퓨터를 켜기 전에 FPGA에 Xillybus가 포함된 비트스트림이 로드되어 있어야 합니다. 그런 다음 컴퓨터를 켜십시오.
먼저 드라이버가 들어 있는 Zip 압축 파일의 내용을 로컬 디스크에 압축 풉니다. 이 파일은 데모 번들의 내려받기 페이지에서 찾을 수 있습니다. 파일 이름은 xillybus-windriver-1.2.0.0.zip과 비슷한 형태입니다.
장치 관리자(Device Manager)에서 "기타 장치(Other Devices)" 항목 아래에 장치가 하나 보일 것입니다. 이 장치의 아이콘에는 느낌표가 표시되어 제대로 설치되지 않았음을 알려 줍니다. 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "드라이버 소프트웨어 업데이트(Update Driver Software…)"를 선택합니다. "컴퓨터에서 드라이버 소프트웨어 찾아보기(Browse my computer for driver software)"를 선택한 다음, "xillybus-windriver-1.2.0.0"(또는 비슷한 이름) 디렉터리를 선택합니다. "다음(Next)"을 클릭한 다음 "설치(Install)"를 클릭합니다.
드라이버가 올바르게 설치되고 나면 장치 관리자에 "Xillybus"라는 새 그룹이 생깁니다. 이 그룹 안에는 "Xillybus driver for generic FPGA interface"라는 장치가 있습니다. 장치 아이콘에는 오류가 표시되지 않아야 합니다(즉, 아이콘에 느낌표가 없어야 합니다).
XillyUSB를 사용하는 경우 장치는 "Universal Serial Bus controllers" 그룹 아래에 나타나며, 드라이버는 xillyusb-windriver-1.1.2.0-win10.zip에 들어 있습니다.
이 설치 절차는 Windows용 가이드에 스크린샷과 함께 더 자세히 설명되어 있습니다.
Windows용 드라이버를 설치한 후에는 간단한 테스트를 수행하면 됩니다. 이 테스트는 별도 페이지에서 설명합니다.
Linux용 드라이버 설치(?)
Xillybus 드라이버는 많은 데스크톱용 Linux 배포판에 포함되어 있습니다. 따라서 Fedora, Ubuntu, Mint를 사용하고 있다면 Xillybus 드라이버가 이미 설치되어 있을 가능성이 높습니다.
드라이버가 이미 설치되어 있는지 확인하려면 셸 프롬프트에서 다음 명령을 입력하십시오.
$ modinfo xillybus_core
여러 줄의 출력이 표시되면 드라이버가 이미 설치되어 있는 것이므로 더 할 일이 없습니다. "modinfo: ERROR: Module xillybus_core not found"라고만 표시되는 경우에만 드라이버를 설치하면 됩니다.
XillyUSB를 사용하려면 다음 명령을 입력합니다.
$ modinfo xillyusb
드라이버가 이미 설치되어 있더라도 Xillybus의 udev 파일을 설치해 두는 것이 좋습니다. 이 페이지의 하단을 참조하십시오. 이 단계를 건너뛰고 간단한 테스트로 바로 진행해도 됩니다.
드라이버가 설치되어 있지 않다면 두 가지 방법이 있습니다.
- 커널 모듈(kernel module)로 드라이버를 설치하는 방법입니다. 설치 방법은 아래에서 설명합니다. 이 방법은 커널을 직접 준비하지 않은 경우, 즉 배포판 또는 BSP(Board Support Package)와 함께 커널을 받은 경우에 적합합니다.
- 커널 트리에 포함된 드라이버를 활성화하는 방법입니다. 이 방법은 커널 전체를 컴파일해야 합니다. 커널 컴파일이 이미 작업 절차에 포함되어 있다면 이 방법이 더 쉽습니다. 관련 플래그(flag)는 CONFIG_XILLYBUS와 CONFIG_XILLYBUS_PCIE(또는 CONFIG_XILLYUSB)입니다.
Xillybus 드라이버는 Linux v3.12부터 커널 트리에 포함되어 있습니다. 커널 버전이 v4.6 이상이라면 드라이버를 업그레이드할 이유가 없습니다. v4.6 이후로는 의미 있는 변경이 없었기 때문입니다(코딩 스타일 변경만 있었습니다). XillyUSB 드라이버는 Linux v5.14에 추가되었습니다.
Linux 시작에 관한 자세한 내용은 관련 가이드에서 확인할 수 있습니다.
커널 모듈 컴파일
Xillybus 커널 모듈을 컴파일하려면 컴파일을 수행하는 컴퓨터에 다음 세 가지가 이미 설치되어 있어야 합니다.
- gcc 컴파일러
- make
- Xillybus와 함께 사용할 커널용 커널 헤더(kernel headers)
Linux 관련 가이드에는 이 항목들이 설치되어 있는지 확인하는 방법과, 설치되어 있지 않은 경우 설치하는 방법이 안내되어 있습니다.
드라이버 컴파일은 다음과 같이 수행합니다.
$ tar -xzf xillybus.tar.gz $ cd xillybus/module/ $ make make -C /lib/modules/4.15.0/build M=/home/01signal/xillybus/module modules make[1]: Entering directory '/usr/src/linux-headers-4.15.0' CC [M] /home/01signal/xillybus/module/xillybus_core.o CC [M] /home/01signal/xillybus/module/xillybus_pcie.o Building modules, stage 2. MODPOST 2 modules CC /home/01signal/xillybus/module/xillybus_core.mod.o LD [M] /home/01signal/xillybus/module/xillybus_core.ko CC /home/01signal/xillybus/module/xillybus_pcie.mod.o LD [M] /home/01signal/xillybus/module/xillybus_pcie.ko make[1]: Leaving directory '/usr/src/linux-headers-4.15.0'
커널 모듈을 설치하려면 "make install"을 입력하십시오(루트(root) 권한이 필요합니다).
버스에 Xillybus 장치가 있는 채로 커널이 다음에 부팅되면 드라이버가 자동으로 로드됩니다. insmod로 드라이버를 수동으로 로드할 수도 있습니다.
참고로, 임베디드 Linux 장치에서 Xillybus를 사용하려는 경우 크로스 컴파일러(cross compiler)가 필요할 수 있습니다. 이때 임베디드 커널에 해당하는 커널 헤더도 필요합니다.
"make install"을 사용하고 싶지 않다면 같은 작업을 직접 수행할 수도 있습니다. 모듈 파일을 커널 모듈이 들어 있는 디렉터리에 복사하면 됩니다. 해당 디렉터리 이름에는 Xillybus와 함께 실행될 커널의 버전 번호가 포함되어 있어야 합니다.
예를 들어,
# cp xillybus_core.ko /lib/modules/4.15.0/kernel/drivers/char/ # cp xillybus_pcie.ko /lib/modules/4.15.0/kernel/drivers/char/
그런 다음 depmod를 실행해 커널이 새 모듈을 인식하도록 하십시오. 예를 들어,
# depmod -a 4.15.0-20
udev 파일(Linux)
드라이버가 이미 설치되어 있더라도 Xillybus의 udev 파일을 설치하는 것이 좋습니다. 이렇게 하면 루트(root) 사용자가 아니어도 Xillybus에 접근할 수 있습니다. 이 파일은 드라이버가 포함된 패키지(xillybus.tar.gz 또는 xillyusb.tar.gz)에 들어 있습니다.
Xillybus용 udev 파일 설치는 다음 명령(또는 이와 유사한 명령)으로 수행합니다. 루트 사용자로 실행하십시오.
# cp 10-xillybus.rules /etc/udev/rules.d/
제대로 동작하나요?
다음 단계는 지금까지의 과정이 올바르게 진행되었는지, 그리고 Xillybus가 여러분의 하드웨어에서 실제로 동작하는지 확인하는 것입니다. 확인 방법은 Linux와 Windows로 나누어 설명되어 있습니다.