ARM 코어를 이용한 SoC 시스템의 IP 설계 방법 ①

AHB 프로토콜의 이해AHB는 버스의 마스터(master)와 슬레이브(slave)로 구분이 되며 마스터가 버스에 대한 READ와 WRITE 트랜잭션(transaction)을 수행하게 된다. 트랜잭션을 수행하기 전에 AHB 마스터는 버스에 대한 권한을 요구하기 위하여 HBU- SREQ 신호를 아비터에게 줘야만 한다. 마스터는 아비터로부터 HGRANT 신호를 받음으로써 버스에 대한 권한을 소유할 수 있다.일단 버스에 대한 승인을 받게 되면 마스터는 2개의 구분된 단계로 구성이 되는 자신의 트랜잭션을 수행할 수 있다. 두 단계는 address phase와 data phase로 구분된다. Address phase 동안 마스터는 트랜잭션을 위한 어드레스와 제어 신호를 출력한다. 이때 트랜잭션의 타깃이 되는 슬레이브는 마스터에 의하여 출력된 어드레스와 제어 신호를 샘플링한다. 이때 중요한 것이 슬레이브는 샘플한 어드레스와 제어 신호를 저장하고 있어야 한다는 것이다. 샘플된 어드레스와 제어 신호를 이용하여 AHB 슬레이브는 data phase에서 어떻게 트랜잭션을 종료할 것인지, 그리고 정보를 어떻게 교환할 것인지를 결정한다. 여기서 어드레스와 제어 신호를 저장해야만 하는 이유가 있다.그림 1에 제시한 것처럼 data phase 동안에는 어드레스와 제어 신호가 연속된 트랜잭션을 위한 어드레스와 제어 신호로 변경이 되기 때문에 data phase 상태에서의 어드레스와 제어 신호를 사용하면 정확한 연산을 수행할 수가 없다. 즉, 요구된 어드레스를 잃어버리고 다음 트랜잭션을 위한 데이터가 제공된다. 만일 트랜잭션이 WRITE라면 마스터는 data phase 동안에 쓰여 질 데이터를 드라이브하고 슬레이브는 데이터를 샘플한다. 트랜잭션이 READ라면 슬레이브가 data phase 동안에 데이터를 드라이브하고 마스터가 데이터를 샘플링한다. 이러한 동작은 AHB의 기본적인 전송을 이용한 ARM 프로세서와 IP 간의 데이터 교환을 설명한 것이다.SoC 시스템의 구현에서는 AHB를 이용한 IP를 1개 이상 사용하여 구현하기 때문에 이들 IP들의 연결을 위한 기본 컴포넌트들이 필요하게 된다. AHB 구조는 중앙 집중형의 멀티플렉서 방법을 이용해 이들 IP간의 AHB 신호를 선택한다. 다른 시간에 또는 다른 방향으로 나타나는 신호들 때문에 3개의 다른 멀티플렉서를 사용하는 것이 가장 좋은 방법이다. PLD 버스 1상의 IP들의 연결을 예로 생각하면 데이터를 전송하기 위하여 다음의 멀티플렉서가 필요함을 알 수 있다.● 어드레스와 제어 신호를 위한 멀티플렉서● WRITE 데이터 버스 멀티플렉서● READ 데이터 버스와 슬레이브 응답 멀티플렉서물론, 이들 멀티플렉서는 2개 이상의 마스터를 가지는 시스템에서 필요하며 1개의 마스터와 다수의 슬레이브로 구현되는 경우는 어드레스 디코더, READ 데이터 버스, 슬레이브 응답 멀티플렉서만 있으면 된다.어드레스와 제어 신호 멀티플렉서어드레스와 제어 멀티플렉서는 버스 상의 각 마스터에서 생성되는 어드레스와 제어 신호들의 집합을 선택할 수 있는 3-to-1 멀티플렉서이다. 이 경우 마스터가 3개라고 가정한다. 아비터에서 출력이 되는 HMASTER는 멀티플렉서의 입력 선택을 위한 신호로 사용이 되며 현재 몇 번의 마스터가 버스를 점유하고 있는가를 나타내는 값을 가지고 있다. 멀티플렉서의 출력은 슬레이브에 대하여 공통으로 사용되는 어드레스와 제어 신호들이다.WRITE 데이터 버스 멀티플렉서WRITE 데이터 버스 멀티플렉서는 AHB 시스템에서 다수의 마스터에서 생성이 되는 WRITE 데이터 버스를 선택하기 위해 사용된다. 즉, 슬레이브의 경우 다수의 마스터에서 나오는 WRITE 버스 중에서 1개의 마스터에 대한 버스만을 입력으로 받기 때문에 WRITE 데이터 버스 멀티플렉서가 필요하다. 이 멀티플렉서의 출력은 어드레스와 제어 신호 멀티플렉서처럼 슬레이브에서 공통으로 사용된다.그림 3에서 HMASTER_delayed는 아비터에서 생성이 되는 신호로 HMASTER와 동일한 값을 가지고 있다. 그러나 HMASTER는 AHB 프로토콜의 address phase에서 생성이 되고 데이터는 data phase에서 나타나게 되므로 HMASTER의 값이 변경된다. 이러한 변경이 발생하지 않도록 HMASTER 값을 한 클록 동안 저장하여 출력하는 것이 HMASTER_ delayed라는 신호이다.READ 데이터 버스와 슬레이브 응답 멀티플렉서시스템 안에 다수의 슬레이브가 존재하는 경우 슬레이브에서 출력하는 READ 데이터와 응답 신호에 대하여 한 개의 마스터가 입력으로 받아야 한다. 이때에 사용되는 것이 READ 데이터 버스와 슬레이브 응답 멀티플렉서이다. 이 멀티플렉서의 출력은 다수의 마스터의 READ 데이터 버스에 공통으로 사용된다.READ 데이터 멀티플렉서의 선택을 위한 신호가 필요한 데, 이때 사용되는 신호가 HSEL_BUS가 된다. HSEL_BUS 역시 한 클록이 지연된 값이고 슬레이브 디코더에서 출력이 된다.슬레이브는 마스터에 대한 응답 신호로서 HRESP[1:0]와 HREADY 신호를 출력한다.이들 멀티플렉서들은 복잡한 조합 회로로서 시스템의 성능에 대한 병목현상을 발생시킬 수 있다. 가장 성공적인 최적화를 위하여 신호를 멀티플렉싱 하기 위한 효과적인 방법을 선택하여야 하며, 이러한 노력은 IP를 이용한 버스의 설계에서부터 시작되어야 한다.AMBA 아비터(Arbiter)아비터는 임의의 주어진 시간에 버스를 단지 한 개의 마스터가 액세스 할 수 있도록 하는 메커니즘을 제공한다. 이러한 메커니즘은 마스터에서 출력되는 버스에 대한 요구 신호를 감시하고 가장 우선순위가 높은 마스터에게 버스의 액세스 권한을 이양함으로써 구현된다. 구현된 중재 알고리즘은 마스터의 우선순위를 결정하며 Sequential, Round-Robin 등이 사용된다. Excalibur의 PLD 버스는 매우 간단한 우선순위에 기초한 아비터를 가지고 있다.Stripe-to-PLD bridge 안의 PLD 버스 2상의 마스터 0번은 시스템에서 가장 높은 우선순위를 가진다. Stripe 안의 주변장치들이 PLD 버스에 대한 READ 또는 WRITE 하는 동안에 AHB2 상에서 발생할 수 있는 wait의 수를 최소화하기 위해서이다. 마스터 2는 가장 낮은 우선순위를 가진다.AHB 프로토콜은 이전 트랜잭션의 data phase와 중첩된 다른 트랜잭션의 address phase를 허용한다. 즉, 기본 AHB 트랜잭션의 연속된 동작, 파이프라인 전송을 허용한다.아비터는 이러한 처리에서 중요한 역할을 수행한다. 아비터는 마스터의 버스 요구를 감시할 뿐만 아니라 버스의 트랜잭션이 종료되었는지 알 수 있도록 버스상의 동작을 감시한다.이전의 트랜잭션이 일단 종료되면 시스템에 대하여 액세스를 요구하는 다음의 마스터에 어드레스와 제어 신호를 승인한다.아비터는 버스상의 HTRANS, HBURST, 그리고 HREADY 신호들을 감시하여 현재 트랜잭션이 종료되었을 때를 알아야 한다. HBURST의 값에 따라서 아비터는 얼마나 많은 데이터가 전송될 것인지를 판단한다. 그 후에 HTRANS와 HREADY를 감시함으로써 얼마나 많은 데이터가 시스템을 통하여 실제 전송이 되었는지를 추적하게 된다.마스터가 언제 데이터 전송을 종료했는지 추적하는 가장 간단한 방법은 HTRANS를 감시하는 것이다. AHB 시스템 안의 마스터들은 그들이 버스에 대한 권한을 승인받았을 때 IDLE 트랜잭션의 실행이 요구되지만 실제 데이터의 전송은 일어나지 않는다.마스터가 트랜잭션에 대한 처리를 종료한 클록 사이클에서 IDLE 트랜잭션을 실행하여야만 한다. 이것은 아직까지 버스에 대한 승인이 유지되고 있기 때문에 아비터에게 버스의 권한을 넘길 수 있다는 것을 알려주기 위해서다. 이러한 경우에 아비터는 IDLE이 HTRANS에 나타나는 것을 보고 다음 마스터에게 버스에 대한 권한을 이양하게 된다.AMBA 어드레스 디코더어드레스 디코더는 마스터에 연결된 여러 슬레이브 장치 중에 트랜잭션을 원하는 슬레이브를 선택하기 위하여 사용된다. AHB의 어드레스 중에서 상위의 주소 라인과 슬레이브에 공유된 어드레스를 이용하여 어드레스 디코더를 구현하게 된다. 여기서 디코더는 우리가 논리회로 시간에 배운 디코더 로직과 동일하다. 단지 AMBA라는 시스템에서 메모리 맵에 따라 슬레이브 IP를 선택하기 위하여 사용하기 때문에 어드레스 디코더라는 이름으로 불리는 것이다. 어드레스 디코더의 출력은 각 슬레이브의 HSEL 라인의 입력으로 사용된다. 또한 어드레스 디코더는 HSEL_BUS라는 신호를 출력하는데, 이것은 어떤 슬레이브가 선택되었는지를 나타내는 상수 값으로 READ 데이터 버스와 슬레이브 응답 멀티플렉서의 선택신호로 사용된다.다음 회에는 IP 설계를 위한 기본적인 지식에 관하여 설명한다. SoC 설계에서 가장 중요한 것은 AMBA 프로토콜을 만족하는 IP를 설계하는 것이다.(주)휴인스 소개1992년 설립된 휴인스(대표이사 송태훈, www.huins.com)는 ARM 프로세서, 임베디드 시스템, 시스템온칩 설계 및 IP 검증, 유비쿼터스 센서 네트워크 전문회사이다.휴인스는 그간 삼성전자, LG전자, 한국전자통신연구원, 전자부품연구원, 서울대, 연세대, 한국정보통신대학원대학교, 한양대 등 국내 유수의 연구소와 프로젝트를 성공적으로 수행 완료한 바 있다. 올해는 지속적인 R&D 투자 및 기술개발로 실력 있는 회사로 거듭나는 한편, 언제 어디서든지 고객의 요구를 충족시키는 시장전략을 구사하여 진정한 프로 벤처의 모습을 갖춰 나갈 계획이다.
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지