2024년 8월 22일 목요일

FPGA - XUP - Embedded System Design Flow on Zynq - Lab 1

Topic = Vivado를 활용한 Embedded System 개발

Lab - 1 Overview = IP 통합툴을 이용해 ARM Cortex A9 core(PS) , UART 시리얼 통신, DDR3 SDRAM 메모리를 통합하기
프로세서 설계 Diagram

목표

  • Vicado 프로젝트 생성법 숙달
  • IP 통합 도구를 활용한 HW 시스템 생성
  • Vitis IDE를 활용한 메모리 테스트 기준 생성
  • 보드에 적용하여 기능 적용

======================================================

Step - 1 - Vivado Project 생성
  1. Vivado 실행후 Create project 클릭후 Next 클릭
  2. Project name 에 lab_1 Project location 지정 / Create project subdirectory 체크 Next
  3. RTL Project 체크및 Do not specify source at this time 체크


  4. Default Part 화면에서 Board 탭 클릭 및 사용하는 보드 클릭




======================================================

Step - 2 - IP Integrator를 활용한 시스템 생성
  1. Flow Navigator에서 Create Block Design 클릭

  2. Design name 에 system 입력후 OK
  3. 화면 우측 Diagram workspace에서 마우스 우클릭후 Add IP 클릭

  4. IP Category 창이 열리면 search 창에 zynq 입력후 검색된 ZYNQ7 Processing System 을 선택
  5. 상단 초록색 영역의 Run Block Automation 클릭
  6. Run Block Automation 창이 열리면 기본적으로 processing_system7_0 이 좌측에 선택 되어 있음 OK 버튼 누름
  7. Block Automation 이 완료되면 port에 DDR(메모리)이 추가되고 FIXED_IO가 추가되며 그림은 다음과 같아야 한다

  8. 박스를 더블클릭해 Re-customize IP 창이 열리면 중앙 이미지의 I/O Peripherals 의 여러 입력 장치(uart,Enet0 등)에 V체크 되어있음 확인
======================================================

Step - 3 - UART만 사용하도록 Processing block 설정
  1. 박스를 더블클릭해 Re-customize 대화상자 열기
  2. I/O Peripherals 상자중 v표시로 된 아무요소(UART GPIO 등이 선택되어있음) 를 클릭하거나 좌측 MIO Configuration 을 클릭한다
  3. I/O Peripherals 에서 UART 1을 제외한 모든 장치를 비활성화 시킨다(ENET/USB/SD/GPIO를 확장해 GPIO MIO /Memory Interfaces를 확장해 Quad SPI Flah/ Application Processor Unit 을 확장해 Timer 0)
  4. 좌측의 PS-PL Configuration 을 선택한다
  5. AXI Non Secure Enablement ->GP Master AXI Interface 선택해 M AXI GP0 Interface 를 비활성화
  6. General -> Enable clock resets ->FCLK_RESET0_N 을 비활성화
  7. 좌측의 Clock configuration 을 선택한다
  8. PL Fabric Clocks -> FCLK_CLK0 를 비활성화 후 OK

  9. Critical Messages 가 열리면 OK 클릭( 무시 가능한 오류)
  10. 다음과 같은 이미지로 ZYNQ가 바뀌어야 함

  11. 위 그림의 초록색 화살표를 클릭(Regeneration Layout Button)
  12. 위 그림의 보라색 화살표를 클릭(Validation Design Button)
  13. Validation successful There are no errors or critical warnings in the design 이 나와야 한다
======================================================

Step - 3 - Top-Level 생성과 H/W 내보내기
  1. Source 패널에서 Design Source 를 누르고 system.bd를 우클릭해 Generate Output Products 를 클릭, Synthesis Oprions - Out of Context per IP / Run Setting - on local host 을 확인후 Generate 클릭 (Flow Navigator에서 generate block design 도 동일한 기능을 한다)

  2. Out-of-context module run was launched for generating output products 에 OK클릭
  3. System.bd를 우클릭해 Create HDL Wrapper 를 클릭(최상위레벨 VHDL 모델 생성)
  4. Let Vivado manage wrapper and auto update 선택후 OK(system.bd가 다음과 같이 변한다)

  5. 상단의 메뉴중 File ->Export ->Export hardware를 누르고 pre-synthesis 를 선택후 next(저장이 필요하다는 메시지가 나오면 ok를 누른다) HW Programmable Logic (PL)이 없기때문에 include bitstream 옵션은 선택하지 않는다
  6. XSA File name 과 경로를 적당히 두고 Next및 Finish (system_wrapper.xsa 파일이 생성된다)
======================================================

Step - 4 - Vitis IDE 에서 메모리 테스트 어플리케이션 실행
  1. Tools > launch Vitis IDE 를 선택해 경로를 lab_1_vitis 로 적고 Launch 선택
  2. Welcome 페이지에서 Create Application Project 클릭
  3. New Application Project 페이지 다음 Platform 페이지에서 create a new platform from hardware(XSA) 탭을선택해 Step - 3 에서 생성한 system_wrapper.xsa 파일을 선택한다
  4. platform name 에 lab_1_platform 을 입력후 next


  5. Application Prjoject Details 화면에서 lab1을 입력후 target processor 에 ps7_cortexa9_0이 선택되었는지 확인한다
  6. Domain 은 next 로 넘어간다
  7. Templates 에서 Memory Test 를 선택후 Finish 를 누른다

  8. 좌측의 Explorer 탭을 보면 2개의 프로젝트가 있음(lab1_platform, lab1_system)
  9. lab1_system 프로젝트는 설계의 기능검증을 위해 작동한다
  10. lab1_platform 프로젝트는 첫번째 단계 부트로더의 일부로 ps를 초기화하는 ps7_init 함수를 포함한다

  11. lab1_system -> lab1 -> src 에서 memorytest.c 파일을 열고 내용을 확인
  12. lab1_system 우클릭후 build project 클릭

  13. build 가 성공했는지 console 에서 확인(Build Finish 가 나와야 함)
======================================================

Step - 5 - HW에서 Test 
  1. 보드를 JTAG 로 설정하고 usb로 PC에 연결후 전원 On
  2. 상단 Window 메뉴 -> show view클릭
  3. terminal 을 filter text 에 입력
  4. Vitis Serial Terminal 을 선택하고 Open 

  5. 녹색 +버튼을 눌러 Port 에 연결한 보드의 comport를 넣는다(PC마다 다르다)

  6. Connected to COMxx at 115200 을 확인
  7. lab1_system을 우클릭후 launch hardware 클릭

  8. 다음과 같이 화면 변화 확인

  9. 프로그램 종료
======================================================

Conclusion
Vivado 와 IP Integrator 를 사용해 xsa 파일을 생성한다
Vitis IDE를 사용해 HW 작동을 검증하고 프로세서에서 실행하고 터미널창에서 출력을 확인한다

댓글 없음:

댓글 쓰기