시스템 반도체/Arm

FPGA Zedboard에 I/O device 연결하는 법 ( vivado, vitis, ADC, LED, Light Sensor, zynq 7000 )

전컴반 2022. 9. 29. 16:59
반응형

보드에서 Core와 GPIO의 입출의 교환이 어떻게 이루어지는지 알아보자. 

하기 전에 기본 설정은 아래 포스팅 11번까지다.

 

2022.09.20 - [내가 하는 공부/Arm] - VIVADO 사용법 ( board 연결, zynq 7000, Vits 연결 )

 

VIVADO 사용법 ( board 연결, zynq 7000, Vits 연결 )

1. 먼저 비바도를 실행시킨 뒤에 "Create Project"를 누른다. 2. 아래와 같은 창이 뜨는데, 파일 저장 위치랑 파일 이름은 기호에 따라 지정한다. 3. 여러 타입이 있는데 RTL로 설정했다. 아래 옵션은 따

wpaud16.tistory.com

 

Vivado에서 설정

 

보드의 밖에 I/O에게 신호를 보내기 위해선 GPIO가 Output으로 돼야 한다. 하나하나 설정해보자,

 

1. vivado Block Design에서 gpio IP를 추가한 다음에 더블 클릭한다.

 

 

 

2. "Board"에서는 Custom으로 변경한다.

 

 

 

3. "IP Configuration"에서는 input인 신호를 output으로 변경하고 확인을 누른다. ( + 얼마의 bit가 필요한지에 따라서 Width를 지정해 준다.)

 

 

 

4. 그리고 "gpio_io_o[4:0]" 오른쪽 마우스 누르고 "Make External"을 눌러서 연결해준다.

 

 

5. 그런데 core에서 내보낸 output이 I/O랑 어떻게 연결되는지 모른다. 이런 걸 구체적으로 적어줘야 한다. 그러기 위해 Vivado에서 "Constraints" 파일을 추가해줘야 한다.

 

I/O와 Zynq core pin이 어떻게 연결됐는지 알 수 있냐면, Zedborad User 가이드를 보면 디테일하게 zynq pin이랑 어디에 연결해야 하는지 볼 수 있다. 

 

 

 

6. "Constraints" 파일을 추가하려면,

Source에 "constrs_1"에서 마우스 오른쪽 누르고 "Add Source"  --->  "add or create constrains" ---> "create file" 누르고 이름을 정해준다.

필자는 gpio로 했다.

 

 

그리고 생성된 파일에 아래와 같이 짝을 지어서 적어준다. 이게 Constrain 파일이다. 즉, 매핑시켜준 것이다.

아래 "gpio_0"랑 실제로 내가 지정한 이름이랑 같아야 한다.

내가 Block Design에서 "gpio_io_0"라고 설정했다면, {} 안에도  맞게 적어줘야 한다.

 

set_property PACKAGE_PIN W12 [get_ports { gpio_0[0] } ]
set_property PACKAGE_PIN W11 [get_ports { gpio_0[1] } ]
set_property PACKAGE_PIN V10 [get_ports { gpio_0[2] } ]
set_property PACKAGE_PIN W8 [get_ports { gpio_0[3] } ]
set_property PACKAGE_PIN V12 [get_ports { gpio_0[4] } ]
set_property PACKAGE_PIN W10 [get_ports { gpio_0[5] } ]
set_property PACKAGE_PIN V9 [get_ports { gpio_0[6] } ]
set_property PACKAGE_PIN V8 [get_ports { gpio_0[7] } ]

set_property IOSTANDARD LVCMOS33 [get_ports {gpio_0[*]}]

 

 

7. 다음으로는 커스텀한 board 파일을 HDL로 Wrapper 해준다. 아래 포스팅 12번부터 쭉 따라가면 된다. 휴 쉽지 않았다.

 

2022.09.20 - [내가 하는 공부/Arm] - VIVADO 사용법 ( board 연결, zynq 7000, Vits 연결 )

 

VIVADO 사용법 ( board 연결, zynq 7000, Vits 연결 )

1. 먼저 비바도를 실행시킨 뒤에 "Create Project"를 누른다. 2. 아래와 같은 창이 뜨는데, 파일 저장 위치랑 파일 이름은 기호에 따라 지정한다. 3. 여러 타입이 있는데 RTL로 설정했다. 아래 옵션은 따

wpaud16.tistory.com

 

 

8. 돌아오면 Vitis에서 설정도 똑같이 하면 된다. 아래 포스팅 10번까지만 하면 된다. 

 

2022.09.22 - [내가 하는 공부/Arm] - Vitis 사용법 ( vivado 연결 )

 

Vitis 사용법 ( vivado 연결 )

Vivado에서 설계한걸 Vitis에 올리는 방법에 대해 알아보자, 그 전엔 vivado를 사용하여 하드웨어를 설계하는 방법은 아래와 같다. 2022.09.20 - [내가 하는 공부/Arm] - VIVADO 사용법 ( board 연결, zynq 7000,..

wpaud16.tistory.com

 

 

9. 빵판에 LED를 켤건데. vivado diagram에서 내가 설정한 GPIO_1의 Base Address를 볼 수 있다. 0x4121_0000가 gpio_1의 시작 주소다. 우린 이걸 이용해서 Vitis에서 설정하여 LED를 켤 수 있다. 와우

 

 

 

10. 이제 보드에 LED를 연결한다. LED는 GND랑 입력이 있어야 하는데 입력은 JB1 (0x4121000)에서 들어간다고 하면 전선에 맞게 연결하면 된다. (사실 LED에 저항을 연결해야 좋지만... 일단 귀찮으니 호다닥 해보자

 

 

 

11. 그리고 Vitis에서 LED를 켰다 끄는 간단한 코드를 짜 보자. hello.c에다가 아래 코드를 넣어서 컴파일하면, LED가 켜졌다 꺼졌다 한다~~

 

반응형