기존의 하드웨어에 전혀 다른 하드웨어를 붙인다는 것은 그리쉽지 않다. 기존의 SD 보드에 7020 을 추가함에 따라 반드시 알아두어야 할 것이 몇가지 있다.

몇 가지들

새로운 하드웨어가 기존의 보드에 붙기 위해서는 하드웨어적인 작업과 소프트웨어적이 작업이 필요하다. 하드웨어적인 작업이라면, 7020 을 SD 보드에 말 그대로 땜질하면 이 조차도 절대 간단한 일이 아니다.
7020 데이터 시트에 나와있는 대로, 회로도를 만들어서 5517 과 연결해야 하기 때문이다. 다행히 ST 에서 제공한 5517 + 7020 레퍼런스 회로도가 있기 때문에 시간을 많이 절약할 수 있었다.

  1. 어떤 핀이든지, 절대 OPEN 을 시켜 놓지 않는다.(DACK0, DACK1, DRACK0, DRACK1, MPXBM0, MPXBM1, MPXBM2) 반드시 PULL-UP 이나 PULL-DOWN 을 달아줄 것

이번에는 소프트웨어적인 작업에 대한 설명이다. 이제 하나의 시나리오를 생각해보자! 7020 을 5517 에 붙였다고 생각해보자! 하드웨어적으로는 완벽하다고 하자. 이제 보드에 전원을 넣어보자! 5517 은 물론 7020 에도 전원이 들어갈 것이다. 이제 남은 것은 7020 을 제어하는 일 뿐이다.

앞에서 제어라는 말을 썼는 데, 다른 말로는 통신을 해야 한다. 5517 과 7020 이 서로 통신을 주고 받아야 한다. 때문에 서로 간에 약속이 필요하다.
5517, 즉 CPU 는 주체자이다. 이에 비해 7020 은 피주체자이다. 제일 먼저 시작하는 것은 5517 이다.
거창하게 통신이라고 했지만, read/write 가 전부다. 7020 데이터시트를 보면 r/w 를 위해서 필요한 신호들이 있다. 이 것들을 유심히 볼 필요가 있다.
5517 에서 7020 의 인식을 위해 BANK 영역에 등록함과 동시에 주소 영역을 할당해주어야 한다. 앞에서 얘기 했듯이, 하드웨어적으로는 완벽하기에 할당된 주소를 access 하면, chip select 가 뜰 것이다.

7020 을 제어하기 전에, 반드시 제어할 chip 을 초기화 시켜야 한다. 이것을 reset 이라고 한다. 데이터 시트에 따르면, hardware reset 과 soft reset 이 있는 데, 아무래도 hardware reset 이 더 확실하다고 나는 생각한다. reset 을 하면, 기존에 7020 에 들어있던 데이터는 모두 지워지고 초기화 된다.
제대로 초기화 되었다면, 이제는 5517 과 7020 의 통신방식을 결정해주어야 한다. 데이터 시트에서는 'Host interface(EMPI)' 로 나와 있다.
크게 두가지 방식을 지원한다. RAM-like 와 MPX protocols 이다. 각각의 특징은 다음과 같다.

방식 설명
RAM-like address 와 data 가 분리되어 다른 라인에서 통신, 기본적으로 32 bit mode, 하지만 16 bit mode 지원
MPX address 와 data 가 한 라인에서 통신, 64 bit mode

회로도를 보면 알겠지만, address 라인과 data 라인이 따로 물려있다. 그러므로 RAM-like 방식을 사용한다.
그리고 7020 은 내가 했던 POD 와는 달리 synchronous 방식을 따른다. 이 얘기는 일정한 clock 에 따라 동작한다는 얘기다. 참고로 POD 는 asynchronous 였다. 7020 에서는 따로 BS 를 사용하지 않는다. CS 로 사용한다.
7020 에는 RDYMOD 라는 핀이 있다. 이 것은 어떤 7020 의 처리에 있어서, 현재 처리량이 많을 때, 신호를 내보낸다. hardware 엔지니어에게 물어본 결과 wait 신호와 흡사하단다.
이 신호를 low active 로 사용한다. 왜냐구?? brick 이 이렇게 쓰니깐~
데이터 시트의 62 페이지를 보면, 방금 얘기했던 사항들이 모두 나와있다.
또하나, 5517 과 7020 을 볼 것 같으면, 5517은 16 bit mode 로 엑세스 한다. 하지만, 7020 은 32 bit mode 로 엑세스한다. 둘 중에 하나로 통일시켜야 한다. 당연히 CPU 쪽을 따라야 한다. 위 표를 보면, RAM-like 방식이 16 bit mode 를 지원한다고 나와있다.
우리는 7020 을 16 bit mode 로 바꾸어야 한다.
데이터 시트 77 페이지를 보면, EMPI_5516 레지스터가 보인다. 여기에 1 을 write 함으로써, 16 bit mode 로 바뀐다. 또한 BE0, BE1 이 사용되고, BE3 이 두번의 16 bit access 를 조합해서 32 bit mode 로 만든다.

ball Description
MPXMOD 0: RAM-like protocol 1: MPX protocol
BSMOD 0: cycle start signal (BS) is used 1: cycle start signal BS is not used (only CS)
RDYMOD 0: output ready signal RDY is active low 1: output ready signal RDY is active high.

특히 위의 테이블이 중요한데, 현재 회로도와 비교해보면, 어떻게 설정이 되었는지 알 수 있다. 이로써 5517 와 7020 사이의 통신 방식이 결정되었다.
7020 은 DDR Memory 를 사용한다. 그래서 7020은 DDR 과 통신(r/w)한다. 이에 대한 메모리 맵이 데이터 시트 62 페이지에 나와있다. A26, A25, A24 에 따라서 BANK 를 선택할 수 있다. 현재 HD 보드에는 16M DDR 이 4개 달려있다. 총 64 M 의 메모리 중에서 실제로 쓰고 있는 것은 32 M 란다.

그림에서 보았듯이 서로 다른 모드로 작동하는 디바이스들이다. 하지만, 이들 간에 통신을 위해서는 통일된 일종의 약속이 필요하다. DDR 역시 7020 과 통신을 하기 때문에 통일된 뭔가가 필요하다. 바로 여기서 사용되는 것이 클럭이다. 기본적으로 클럭 동기화가 이루어져야 서로간의 통신이 가능하다.
7020 과 DDR 과의 클럭을 동기화 시켜야 한다.

  1. BANK 영역에 등록시킨다.(7020 은 BANK2 0x60000000 에 할당 되어 있다)
  2. HARDWARE RESET 을 시킨다.(GPIO 를 이용한 7020_RESET 핀 제어)
  3. A26 을 LOW 로 만든다.(GPIO 를 이용한 제어) DDR 이 아닌 7020 레지스터 영역을 위해 초기화시 0 으로 세팅한다.
  4. EMPI_5516 레지스터에 1 을 세팅한다.(RAM-like 를 16 bit mode 로 세팅한다)
  5. 7020 클럭 초기화와 DDR 메모리 초기화 및 클럭 설정
  • computer/digitalarena/7020_데이터시트_분석.txt
  • Last modified: 3 years ago
  • by likewind