10월 19일
이 protocl 규격을 만든 건 ARM이고 이러한 버스들을 합쳐서 AMBA라고 부름. ARM의 AMBA에는 AHB 버스, APB 버스, AXI 버스 등이 있음.
------
https://www.mouser.kr/new/stmicroelectronics/stm32f103xf103xg/
ARM A시리즈 AXI channel (BUS read만 하거나 write만 하거나. 어제 8051로 설명했던 것처럼)
MicroBlaze AXI4-Lite
그럼 기존과 4 라인은 뭐가 다른가? 채널을 독립적으로 사용할 수 있다. read와 write을 동시에 독립적으로 할 수 있음.
-------
다시 돌아와서, tick은 1ms 간격으로 +1 한 값. 32bit의 register 제공.
그러면 구조는 다음과 같다.
프로토콜을 하나 하나 만들려면 상당히 어렵다.(왜는 다시 들어서...)
Xilinx에서 템플릿을 제공해준다.
템플릿 생성
파일이 2개인 이유는 Top과 서브모듈이 있기 때문. AXI4_Template_v1_0.v가 top이다.
-------
템플릿과 틱 생성기 연결(서브 모듈 수정)
--------
top 설정
--------
IP 생성
새로 프로젝트 만든 뒤 하드웨어를 만들었다. block에서 microblaze, gpio x2, tick generator, uart만 추가했다.
레지스터를 이용할 때 이 선언을 써도 되지만 우리가 define을 통해 이름을 붙여줄 수도 있다.
여기서 reg0의 주소가 base인 거다. 즉
slv_reg0 --> 0x44a0_0000
slv_reg1 --> 0x44a0_0004 //32bit 레지스터니까 4byte씩 증가.
slv_reg2 --> 0x44a0_0008
slv_reg3 --> 0x44a0_0012
------------
오류!!
서브모듈에서 reset이 0일 때 작동함. 그러나 우리가 만든 tick generator는 reset이 1일 때 초기화를 진행함. 따라서 그 부분을 수정해야 한다.
------
BCDtoFND 서브모듈
------------
BCDtoFND top
https://github.com/316415/SoC_upcounter_Led_flashing.git
GitHub - 316415/SoC_upcounter_Led_flashing: using IP of BCDtoFND decoder and tick generator, I make a counter that counts every
using IP of BCDtoFND decoder and tick generator, I make a counter that counts every 0.01 seconds. - GitHub - 316415/SoC_upcounter_Led_flashing: using IP of BCDtoFND decoder and tick generator, I ma...
github.com
https://youtube.com/shorts/V9OqeC_qEYQ?feature=share
