[SoC Kit 구조 소개 및 실험 환경 조성] 1. 목적 1.ARM core 와 AMBA bus 그리고 Excalibur 의 구조와 기능에 대해 알아본다. 2.실험에서 사용할 SoC kit의 구성과 사용방법을 익힌다.. 2. 실험장비 - SoCMaster XP-100 3. ARM, SoC 설계 개요 반도체 산업 및 집적회로 기술의 발전 및 칩(Chip) 집적도가 높아짐에 따라 과거에 보드 (Board)로 만들던 시스템(System) 기술이 이제는 하나의 반도체에 시스템을 집적화 할 수 있게 되었다. 인터넷 시대의 등장과 함께 텔레비전, 냉장고와 같은 가전에서부터 노트북 (Notebook), 소형 정보기기, 몸에 지니고 다니는 스마트(Smart) 전자기기에 대한 수요가 증 가하면서 전자회로의 임베디드(Embedded) 시스템화, 소형화, 저전력화, 인터넷(Internet)화 되고 있다. 또한 반도체 공정 기술의 발전은 하나의 칩 안에 들어갈 수 있는 회로 소자의 개수를 크게 증가시켜 주었다. 즉, 수 억 개의 트랜지스터(Transistor)로 구성된 하나의 칩이 시스템의 기능을 모두 포함하는 것이다. 과거에는 각각 별개의 칩으로 존재하던 메모리(Memory), 마이크로프로세서 (Microprocessor), 코프로세서(Coprocessor) 등이 하나의 칩 안으로 들어갈 수 있게 되었 다. 이와 같이 모든 컴포넌트(Component)를 하나의 칩에 집적하는 것을 시스템 온 칩 (System on Chip)이라고 부르며, 하나의 칩 안에 들어가는 개개의 컴포넌트를 IP(Intellectual Property)라고 부른다. IP의 종류가 다양해지고, 회로의 복잡성이 날로 증가하 고 또한, 기존에 존재하는 IP를 여러 다른 시스템에서 재사용 할 수 있음에 따라 시스템 온 칩 설계를 위한 IP 검증이 중요하게 되었다. 또한, 지금까지는 IP 검증을 위하여 하드웨어 기술자가 설계를 하였지만 시스템 온 칩으로 시작하면서 하드웨어(Hardware) 및 소프트웨어(Software)로 동시에 설계하고 회로를 어떻 게 검증하느냐가 중요한 문제로 대두되고 있다. 프로그래머블 로직(Programmable Logic) 소자(Device)를 사용하여 회로를 설계한 다음 동 작 타이밍(Timing)을 시뮬레이션(Simulation) 도구(Tool)로 확인하거나 프로세서(Processor) 와 연동하는 시제품을 만들어 시험 후 주문형반도체(ASIC: Application Specific Integrated Circuit)를 만들었다. 하지만 반도체가 제작된 이후에 동작이 잘 되지 않아 많은 비용을 소 모하는 등 어려움이 많았다. 앞으로 진행될 실험을 통하여 ARM(Advanced Reduced Instruction Set Computer Machine) 코어(Core)를 이용하여 IP 를 검증할 수 있는 하드웨어 시스템을 통한 IP를 하드 1
웨어와 소프트웨어로 검증하는 것을 배우게 된다. 앞에서 말한 바와 같이 SoC(System-on-a-chip)는 하드웨어 로직 뿐만 아니라 프로세서, 롬, 램, 컨트롤러, 주변장치의 회로를 하나의 chip에 집적화하는 기술로 다음과 같은 특징을 가진다. -회로의 복잡도 증가: SoC Test 가 문제 -고성능, 저소비 전력 요구 -설계 검증 시간, 비용증가 -IP 사용증가로 인한 IP 검증 필요 -IP 재사용 및 IP 공유가 중요 -Simulation, Emulation Tool 중요 위와 같은 특징을 잘 살리고 만족할 수 있는 프로세서들은 시중에도 많이 나와 있지만, 현 재 저전력, 저가의 고성능을 가지고 있는 ARM계열 프로세서가 가장 많이 사용되고 있으며, 그 중에서도 우리가 사용할 KIT에도 내장되어 있는 ARM922T가 대표적이다. 이 ARM922T 프로세서는 다음과 같은 특징을 갖는다. -32bit RISC Processor 이며 200Mhz로 동작한다. -High Performance, 18um Process -AMBA Bus Architecture. -내부 Memory : Single Port & Dual Port -외부 Memory : SDRAM, DDRSRAM, FLASH, SRAM 그리고 이 ARM922T 프로세서는 고속 cache와 SRAM, DPRAM이 내장되어 있으며, MMU기 능이 있어, RTOS(Real Time OS)가 지원된다. 또한 향상된 system Debug 기능이 내장되어 있다. 4. ARM & Excalibur Architecture 4.1 ARM의 특징 현재 나와 있는 Embedded 프로세서 중에 ARM계열이 각광을 받는 이유는 여러가지가 있 지만 다음과 같은 이점이 있기 때문이다. Multiple silicon source -가격 경쟁력이 강하다. -위험성이 적다. -Multiple fabrication을 제공한다. 매우 유연한 instruction set : assembler, C등 high-level language를 지원한다. 2
그리고 ARM Architecture는 5가지 특징이 있다. -load-store Architecture -3-Address data processing instruction(2 source operand, result register) -모든 instruction의 conditional execution -single instruction안에 alu, shift operation수행 -Coprocessor instruction set 을 통한 instruction set의 확장 다음은 ARM9 계열의 시스템 버스 구조이다. 두개의 AHB는 임베디드 프로세서가 주변장치 및 메모리 동작으로부터 영향을 받지 않도록 보장한다. 3개의 양방향 AHB-to-AHB bridge 는 임베디드 주변장치, PLD 주변장치들의 연결하는 역할을 한다 4.2 AMAB Bus Architecture AMBA Bus의 목적은 다음과 같다. -Right-first-time -Technology-independent -Modular system design AMBA Bus는 SoC를 target으로 한 On-chip bus protocol이며 3가지 종류가 있다. -AHB(the Advanced High-performance Bus) -ASB(the Advancer System Bus) -APB(the Advanced Peripheral Bus) 3
다음에 나올 그림들은 AMBA Bus의 구조와 동작의 관계를 나타낸 그림과 설명이다. APB는 higher bandwidth main system과 lower bandwidth디바이스를 연결하는 2차 버스의 역할을 담당한다. Bus cycle -AHB, APB rising edge to rising edge -ASB falling edge to falling edge Bus transfer -AHB, ASB 하나이상의 버스 사이클을 요구하는 Data read/write. 신호로서, 지정된 slave로부터 completion응답이 이루어질 때까지를 뜻한다. -ASB에서의 전송사이즈는 byte(8bit), half-word(16bit), word(32bit), AHB는 ASB에서 지원 되는 사이즈를 지원하며 64bit, 128bit를 추가적으로 지원한다. -APB 항상 two-bus cycle을 요구한다. 4
Burst Operation -Bus master에 의해 초기화되는 하나 이상의 데이터 전송동작.APB에서는 지원되지 않는다. -AHB master : 한번에 하나의 master만이 bus를 사용할 수 있다. -AHB slave : Slave는 주어진 어드레스 범위 내에서 read/write동작을 수행한다. Slave는 데 이터 전송에 대한 success, failure, waiting상태에 대한 정보를 master에게 돌려 주어야 한 다. -AHB arbiter : arbiter는 한번에 하나의 master만이 bus를 사용하도록 권한을 부여 한다. 하 나의 AHB는 하나의 arbiter를 갖는다. -AHB decoder : decoder는 전송하고자 하는 slave의 어드레스를 디코딩한다. 하나의 decoder가 모든 AHB상의 slave들을 디코딩 한다. 4.3 Excalibur의 구조적 특징 위에서 설명한 ARM core를 사용한 programmable SoC, Excalibur는 또 아래와 같은 구조적 특징을 갖는다. ARM922T 32비트 RISC 프로세서, 최대 200MHz 동작 - ARMv4T Thumb 인스트럭션 셋 - RTOS(Real Time Operating System)를 위한 MMU (Memory Management Unit) - Harvard cache 구조, 8K-byte instruction 및 8K-byte data caches 5
10만 게이트 ~ 100만 게이트(SoCMaster XP-100은 10만 게이트) 지원 APEX 20KE 구조 Advanced Microcontroller Bus 구조 (AMBA TM ) 구조 및 AMBA High-performance Bus (AHB) 구조 임베디드 프로그래머블 주변 장치 - ETM9 임베디드 trace module - Flexible 인터럽트 컨트롤러 - Universal Asynchronous Receiver/Transmitter (UART) - 타이머 - 워치독 타이머 기억 장치 - 내부 256KB SRAM - 내부 128KB DPRAM - 내부 SDRAM 컨트롤러 - 512MB SDRAM, DDR RAM 지원 - Expansion bus interface (EBI) 지원, Flash, SRAM, 주변장치 연결 가능, 최대 4개, 32MB 까지 지원 임베디드 프로세서 소프트웨어에 의한 PLD configuration/reconfiguration 변경 가능한 메모리 맵 임베디드 시스템 디버그 기능 - SignalTap TM 임베디드 로직 분석기 - ARM R JTAG 프로세서 디버그 지원 - 리얼타임 데이터 / 인스트럭션 프로세서 - JTAG 인터페이스를 통한 디버그 작업 4.3 엑스칼리버 기능 설명 엑스칼리버 시스템 구조 (임베디드 프로세서 버스 구조, 온칩 메모리, 주변장치) 는 PLD를 이용한 ASIC 타임투마켓을 구성하는데 유용하다. 임베디드 프로세서 ARM922T는 ARM9 계열의 프로세서 코어이며 Harvard 구조, fetch, decode, execute, 6
memory, write를 지원하는 5-stage 파이프라인(pipeline), 싱글 클럭 사이클 인스트럭션으 로 동작한다. 임베디드 프로세서는 PLD와 독립적으로 다음을 실행한다. -외부 메모리로부터 부트 -임베디드 소프트웨어 실행 -외부와 통신 -RTOS 실행 -Run 인터랙티브 임베디드 소프트웨어 디버깅 -PLD를 구성/재구성 -시스템을 재시작/리부트/재구성시 에러를 감지 PLD PLD 는 여러가지의 IP를 넣어 시험 가능하다. -UART, 이더넷 MAC, CAN 컨트롤러, PCI -임베디드 스트라이프, 온칩, 오프칩 메모리, PLD를 공유하는 버스 마스터 주변장치 -임베디드 프로세서에 의하여 제어되는 슬레이브 주변장치 -DPRAM 주변장치 -임베디드 프로세서 제어 아래의 초고속 data path -다중프로세서 시스템, Nios 임베디드 프로세서 솔루션 임베디드 스트라이프와 PLD 사이의 양방향 브릿지와 DPRAM은 클럭에 동기되어 있다. 하 지만 임베디드 프로세서와 PLD는 비동기로 동작한다. 각 인터페이스의 클럭은 성능을 위 하여 응용 가능하다. 양방향 브릿지는 전체 4GB 어드레스 범위 (32비트 어드레스 버스)에 32비트 데이타 동작을 지원한다. SDRAM 메모리 컨트롤러 PLL은 시스템이 구현된 외부 메모리의 속도에 시스템 클럭 주파수를 맞추도록 한다. 내부 메모리 임베디드 스트라이프는 SRAM, DPRAM 을 가지고 있으며 SRAM의 두 블럭은 메모리내 중재된 인터페이스 통하여 AHB 마스터에 접근이 가능하다. 각 블럭은 독립적으로 중재되며, 하나의 버스 마스터에 의하여 하나의 블럭이 중재되며 반면에 다른 블럭은 다른 버스 마스 터에 의하여 접근 된다. 128 KB 의 두 블럭으로 256KB의 SRAM이 있으며, 바이트 주소 지 정이 가능하다. SRAM 블럭 크기는 표1과 같이 엑스칼리버 디바이스에 따라 다르다. Byte, Half-word, Word 동작이 가능하며, Byte, Half-word read 는 시스템 Endianess에 의하여 제어 된다. 또한 임베디드 스트라이프에 두개의 블럭으로 DPRAM이 있으며 DPRAM의 출력 은 저장될 수 있다. 그 가운데 한 포트는 PLD에 전용으로 동작하며, 다른 하나는 AHB 마 스터 또는 PLD에 의하여 사용된다. PLD의 데이타 포트는 8, 16, or 32bit로 지정될 수 있다. DPRAM은 x64bit 데이타로도 동작 가능하다. 7
외부 메모리 컨트롤러 엑스칼리버는 버스 마스터에의 하여 동작되는 두개의 임베디드 메모리 컨트롤러를 제공한 다. 하나는 외부 SDRAM용, 다른 하나는 외부 Flash, SRAM용이다. SDRAM 메모리 컨트롤 러는 다음 두가지 형태의 메모리를 지원한다. -Single-data rate (SDR) 133MHz data rates -Double-data rate (DDR) 266MHz data rates 임베디드 스트라이프 PLL은 선택된 메모리에 따라 SDRAM 메모리 컨트롤러 서브시스템 에 알맞은 타이밍을 제공한다. EBI는 외부 Flash 메모리를 연결하며 외부 SRAM및 다른 장 치들도 붙일 수 있다. 임베디드 주변장치 임베디드 스트라이프에 있는 16KB 메모리는 configuration/control 레지스터, status/control 레지스터를 가지고 있다. -Configuration 레지스터 -임베디드스트라이프 PLLs -UART -타이머 -Watchdog timer -General Purpose I/O 포트 -인터럽트 컨트롤러 소프트웨어 개발 툴 엑스칼리버를 사용하기 위하여서는 하드웨어와 소프트웨어 개발 툴이 있어야 한다. 알테 라는 SOPC 빌더, QuartusII, ADS, GNUPro, 유틸리티 등을 제공하고 있다. -SOPC 빌더- SOPC 빌더는 임베디드 시스템 설계자에게 임베디드 SoC를 설계를 할 수 있도록 해주 는 소프트웨어 이다. 사용자 시스템 정의와 제품화를 위하여 GUI 환경을 제공한다. 설계자 가 communication, DSP, 마이크로프로세서, 버스 인터페이스 코어 등의 리스트로부터 IP 블럭을 선택하면 SOPC 빌더는 자동으로 모든 필요한 로직을 생성하여 그들을 서로 집적시 키며 시스템에 서로 연결되도록 VHDL, Verilog HDL을 생성하기 위하여 규격화된 시스템 정 보를 이용한다. SOPC 빌더는 자동으로 소프트웨어 개발 환경을 만들고, 하드웨어를 연결시 키고, 소프트웨어 설계 시간을 줄이며, 다음과 같은 컴포넌트의 소프트웨어 개발, 설계 시간 을 줄인다. -메모리맵 정의, 인터럽트 우선순위, 하드웨어 주변 장치에 대한 데이터 구조에 대한 헤 더 파일 -시스템내 하드웨어 주변 장치 접근을 위한 루틴 8
-하드웨어 드라이버 OS/RTOS 커널 SOPC 빌더는 시스템의 시뮬레이션 모델, 시스템 테스트 벤치, 시스템 시뮬레이션에 대한 전체 환경을 생성한다. 아래의 그림은 SOPC 빌더의 화면이다. - Quartus II - 쿼터스 II는 개발 시스템 로직 설계와 임베디드 소프트웨어 설계에 사용되는 소프트웨어로 HDL과 회로도 설계, 컴파일, 프로그래밍 파일 생성, 타이밍 분석, 시그널 탭을 이용한 신호 분석 등을 할 수 있는 설계소프트웨어이다. 9
5.SoC KIT 의 구성 SoC KIT 블록 다이어 그램 10
앞장의 위의 그림은 KIT의 실제 사진이고, 아랫부분은 그 구성요소들을 블록화 한 것이다. SoC설계 및 IP 검증시스템(SoCMaster)은 ARM 프로세서와 리눅스 운영체제가 탑재된 임 베디드 시스템으로 시스템온칩 설계시 필요한 IP 회로를 통합 검증할 수 있는 시스템이 다. 미국 알테라사의 엑스칼리버 칩을 사용하고 있으며, 이는 하나의 칩내에 ARM922T 프로세서, 10만 게이트 프로그래머블 로직, 메모리, 메모리 컨트롤러, 외부 확장버스, 클럭 로직등이 모두 들어가 있어 시스템온칩을 설계시 회로를 Co-Veirfication이 가능하다. 그 내부는 AHB Bus로 이루어져 있으며, IP를 액스칼리버 칩내의 프로그래머블 로직 영역에 다 운로드한 다음 회로의 동작 상태를 리눅스 운영체제 소프트웨어에서 실시간으로 확인 할 수 있다. 특히 주변에 Ethernet, PCI, USB, TFT LCD, UART, VGA, PS2 등의 인터페이스를 갖추 고 있다. 실제 하드웨어 설계를 끝내기 이전부터 하드웨어와 소프트웨어의 통합 검증을 가 능하게 함으로써 설계 시간의 단축과 하드웨어 설계의 복잡함을 줄일 수 있고, Multi-ICE 와 Multi-Trace를 통해 debugging을 할 수 있다. 라이센스 비용이 무료인 리눅스 운영체제 를 시스템에 탑재하여 시스템온칩 설계 및 회로를 검증할 때 리눅스가 가지고 있는 모든 기 능을 사용할 수 있으며, 소프트웨어 라이센스 비용이 전혀 없다. 6. 사용 tool 설치 1. ADS 설치 Setup을 실행하여 ADS program을 설치한다. ADS_12_license.dat 파일을 C: Program Files ARM ADSv1_2 폴더에 복사한다. 시작 -> 프로그램 -> Arm Developer Suit v1.2 -> License installation wizard를 실행한다. Install license action을 선택한다. 11
그림에서의 Browse를 선택한다. 복사한 ADS_12_license.dat 파일을 선택한다. C: Program Files ARM ADSv1_2 licenses license.dat 을 선택한다. 마침을 선택한다. 12
2. Quratus II 설치 quartusii_22_pc 폴더의 install을 실행하여 프로그램을 설치 후 quartusii_22_sp1_single과 quartusii_22_sp2_single를 차례로 설치하고 quartusii_keygen 폴더의 LicGen을 실행한다. Select Host ID에서 Ethernet 을 선택하고 Open을 선택한다. Altera.lpd를 선택하고 Generate를 실행하면 license 파일이 생성된다. Quartus II 프로그램을 실행을 한다. Tools -> License setup을 실행하고 생성한 license 파일을 선택한다. 13
3. Modelsim 설치 mti58se 을 실행하여 modelsim을 설치한다. Modelsim gen 폴더의 teamiso.src 파일을 메모장으로 연다. DOS 창 (cmd) 에서 ipconfig /all 을 실행한다. 다음과 같이 나오면 physical address 에 있는 12자리를 teamiso.src의 맨 윗줄의 HOSTID=에 붙여넣고 저장한다. GenerateLicense 를 실행하면 license.dat 파일이 생성된다. 생성된 파일을 C: Modeltech_5.8 win32 폴더에 옮겨놓는다. 시작 -> 프로그램 -> modelsim SE 5.8 -> Licensing wizard를 실행한다. License.dat 파일을 선택한다. 4. JTAG 설정 Quartus II를 실행한다. Tools -> programmer를 실행한다. 14
Programming Hardware Type에 No Hardware가 되어 있을 것이다. Setup을 클릭한다. Add Hardware를 클릭한다. Hardware type : ByteBlasterMV or ByteBlaster II Poert : LPT1 을 선택하고 OK를 누른다. ByteBlasteMV를 선택하고 select hardware를 누른 후 close 를 눌러 창을 닫는다. 15
그럼 다음과 같이 programming hardware type에 ByteBlaster가 선택되어 있음을 확인할 수 있다. 이상으로 프로그램 설치 및 기본적인 setting 은 끝이 났다. 16