본문 바로가기

임베디드 시스템반도체 개발자 과정 by 서울기술교육센터/후기

82일차

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에서 템플릿을 제공해준다.

 

템플릿 생성

micro blaze가 master
저장한 곳에 hdl이란 폴더가 있으니 둘 다 add source로 추가.

파일이 2개인 이유는 Top과 서브모듈이 있기 때문. AXI4_Template_v1_0.v가 top이다.

-------

템플릿과 틱 생성기 연결(서브 모듈 수정)

레지스터 설정한 부분은 여기서 드러난다. 최소 4개고 레지스터를 늘리면 여기서 늘어난다.
master 기준으로 레지스터를 읽겠다
0번 레지스터를 내보냄

--------

top 설정

AXI4_Template_v1_0_S00_AXI_inst에 i_tick 추가!!
명칭 수정

--------

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 

 

 

'임베디드 시스템반도체 개발자 과정 by 서울기술교육센터 > 후기' 카테고리의 다른 글

85일차  (0) 2022.10.24
83일차  (0) 2022.10.20
81일차  (0) 2022.10.18
80일차  (0) 2022.10.17
79일차  (0) 2022.10.14