인프런 커뮤니티 질문&답변
8-interrupt 질문
작성
·
19
0
궁금한게 있습니다.
교안에서 axi_gpio0를 all Input으로 설정하고 GPIO Width를 1로 설정했습니다.
그리고 .xdc 역시 스위치 M20, 하나만 지정해서 입력을 넣구요. 그러면 6-4예제와 같이 k2버튼을 눌러서 로직이겠죠.
그런데 교안 156P를 보면 "K 1 버튼을 누르면 D0 가 Toggling 되고 K 2 버튼을 누르면 D1~D4 On, 떼면 O ff 됩니다 또한 터미널 창에 메시지가 나타납니다" 라고 되어있습니다.
어떻게 xdc와 system에서 입력 하나만을 설정했는데 K1버튼이 동작 로직에 추가되는거죠?
vitis 소스코드 상에서는 IntGpioFlag가 k1버튼에 해당하는 로직 변수인거 같은데 이해가 안가서 질문드립니다.
답변 2
0
안녕하세요.
Zynq는 PS와 PL 로직을 구분하고 이해하는 것이 중요합니다. PS는 기존의 로직 구현에서 하듯이 xdc 파일을 사용하여 핀을 설정하지 않습니다. PS는 Block Design으로 구현됩니다. 강의자료의 79 페이지에 K1에 대한 내용이 있습니다. 82페이지에 K1, D0에 대한 설정부분이 설명되어 있습니다. PS 로직은 이렇게 설정하고 Vitis에서 C Code로 구현합니다.
반면에 PL은 xdc 파일에서 핀 설정을 해 줘야 합니다. 소스 코드 (system_wrapper.v) 파일에서 gpio_rtl_0_tri_i, gpio_rtl_l_tri_o 핀들이 각각 input [0:0], output [3:0]로 설정되어 있고, 이 핀들이 Block Design의 axi_gpio_0, axi_gpio_1 에 연결됩니다. axi_gpio_0, axi_gpio_1 모듈은 프로세서 (ZYNQ7 Processing System) 외부에서 추가되었습니다. AXI 로 인터페이스 되어 있어서 Processor에서 AXI 인터페이스 (Vitis C Code)로 제어(구현)할 수 있습니다. 이 부분은 helloworld.c 에서 구현되어 있습니다.
정리하면, K1 버튼은 PS 영역으로 Design Block에서 설정하고 C Code로 동작을 구현합니다. K2버튼과 (LED : D1 - D4)은 PL 영역으로 xdc 파일로 핀 설정을 하고, gpio 모듈을 Block에서 추가하고, 실제 동작 구현은 C Code로 이루어 집니다.
6장 부분을 좀 더 자세히 이해하시면 도움이 될 것 같습니다.
감사합니다 ~!!
0
안녕하세요, 인프런 AI 인턴입니다. anstjdqls55님.
질문 주신 내용은 Verilog ZYNQ 관련 강의에서의 입출력 설정 및 동작로직에 관한 부분입니다. 질문의 핵심은 xdc 파일과 system 설정에서는 입력 단자 하나만을 지정했는데, 교안상 K1 버튼과 K2 버튼의 동작이 어떻게 구현되는지에 대한 부분으로 이해됩니다.
문제 핵심
axi_gpio0 설정과 xdc 파일: xdc 파일에서 M20 핀 하나만 입력으로 설정했고 axi_gpio0의 GPIO Width는 1로 설정하였습니다.
교안상의 K1, K2 버튼: 교안에 따르면 K1 버튼과 K2 버튼이 다른 역할을 하지만, GPIO 입력은 하나만 사용합니다.
Vitis 코드 내 IntGpioFlag 사용:
- IntGpioFlag는 인터럽트를 처리할 때 플래그로 사용되어 다음 동작을 결정하게 만듭니다.
- IntGpioFlag는 인터럽트를 처리할 때 플래그로 사용되어 다음 동작을 결정하게 만듭니다.
설명
- K1과 K2 버튼 논리: K1 버튼과 K2 버튼의 동작은 vitis 소스코드에서 구현된 논리로, 하나의 입력 핀 신호를 조건부로 처리하거나 소프트웨어에 의해 내부적으로 로직이 분기하여 각각의 버튼으로 인식되도록 구현될 수 있습니다. 일반적으로 이를 위해 추가적인 GPIO 설정, 또는 소프트웨어적인 신호 처리 논리가 사용됩니다.
관련된 추가 정보
- 이미지와 교안 페이지 참조: 게시글에 첨부된 이미지나 교안에서 사용할 GPIO와 관련된 전체 설정 다이어그램이나 FPGA 블록 다이어그램을 함께 검토하시면 더 도움이 될 거 같습니다.
유사 질문 및 답변 링크:
위 질문들은 Verilog와 Zynq 플랫폼을 사용한 GPIO 및 인터럽트 처리 관련된 내용을 다룹니다.
풍부한 설명 추가: GPIO와 인터럽트 설정은 FPGA에서 주변 장치와의 인터페이스를 구축하는 중요한 부분입니다. 때로는 하드웨어 설정뿐 아니라 소프트웨어적인 로직과의 연계가 더욱 중요하게 작용하기도 합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





