우리가 지금껏 배운 AXI4-Lite는
PS영역에서 Vitis를 통해
PL영역을 제어할 수 있음을 배웠다.
이를 통해서 LED 점등을 시킨후에
유저가 입력한 값으로 점등시간을 변화시킬 수 있도록 할것이다.
(우리는 시리얼과 AXI를 사용하는 것이고, 이더넷과 PCIe로도 응용할 수 있다.)
= 설계한 HW Core를 제어하는 것
---
---
기존 템플릿코드에 (lab9)라는 태그를 붙혀 코드를 추가함
<myip_v1_0_S00_AXI>
사실 변경된 부분은 이 두 부분이 다인데
output 포트를 선언하고
레지스터와 assign을 해주었다.
<myip_v1_0>
<counter_toggle_out>
... 등 코드변경
(잠시, instantiation = 인스턴트화 란?)
---
실습시작
ip suffix
실습용파일도 함께 load
copy sources ... 설정해야함 주의.
이 hw로 ip만들자
ㅇㅋ
package과정 잊지말기
---
우리가 만든 IP를 이용해서 다시 HW Platform 생성
프로젝트는 다음과 같이 만든다.
create block design
우리가 만든 ip를 repo에 추가
차례로 부른다
1. zynq (clk speed 주의 100M로)
2. myip
그리고나서
run block auto
run connection auto
UART & 1.8V 또한 항상 확인
---
자 여기까진 루틴한 작업이었고
이제 sw 와 led 에 대해서 포트를 뚫어줄 것이다.
그래야 보드에 연결이 된다.
make external
(이름 바꿔주는 것도 잊지 말기)
여기서는 Constraints가 필요한 상황이라 추가해준다. (근데 해봤자 master)
자 이제 얼추 완성이 되었는데
Address만 한번 더 확인해주자.
(강의환경과 동일하게 조성을 위해 default 주소를 바꾸어주었다.)
0x4000_0000 -> 0x43C0_0000
음 근데 이상하게 map에서는 0x43C0_0000가 안나오지
(우선 잠시 생략은 하되, 확실하게 알고 넘어가야할 포인트인 것으로 보인다.)
검증해본다.
다시한번 말하지만, 이 에러 4개는 생략할 수 있음.
마지막에 wrapper로 싸주고
bitstream 만들어주고
include bitstream 하여 hw export
끝!
---
vitis로 넘어간다.
우리가 만들었던 xsa 호출해주고
네이밍 유의
여기서도 실습용파일 호출
지난번엔 myip header를 신경써줘야 했는데
이번 시간에는 그게 없는 이유는?
지금은 왜 Build 그리고 Makefile 관련된 버그가 없는 것인지?
관련 공부하면서 파악해보기.
휴 정상적으로 build 성공하여 binary 파일이 생겼다.
어떤 레지스터에
어떤 값을
쓰거나 읽을것이냐
(이와 같은 컨트롤 연산은 C로 해줘야지
이런 코드를 Core에서 짜주면 좋지 않은 분할이다.)
실행을 해보자.
vitis serial terminal
com port uart
run as
이때 threshold 값이기 때문에
100000000 = 1억
정도의 스케일을 넣어주어야 함.
---
이 파이프라인에 대해서는 계속 반복해서 사용될 파이프라인임.
그렇기 때문에 개념적으로 또한 철저하게 다져야하고, 익숙해져야함.
'적극적 생각 > FPGA' 카테고리의 다른 글
0717 - 섹션3 - HW Sleep, FSM(IDLE→RUN→DONE) (0) | 2022.07.17 |
---|---|
이더넷 (0) | 2022.07.17 |
0717 - 섹션3 - AXI4Lite (0) | 2022.07.17 |
vivado ver issue (0) | 2022.07.17 |
Xilinx DDR4 Controller (0) | 2022.07.16 |