8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
마이크로마우스
로봇축구
Battle 로봇
로봇대회
휴먼로봇
Embeded Linux
HW/SW 강좌
RTOS
 
 
1. D S P 란 ?

 A/D 컨버터에 의해 디지털화된 데이터는 퍼스널 컴퓨터 등에 입력되어 계산 처리된다. 계산 처리는 리얼타임으로 실시되며, 디스플레이 상에서 모니터 하면서 파일링을 한다는 식으로 처리가 행해진다. 여기서 문제가 되는 것이 퍼스널 컴퓨터의 처리속도에 대한 문제이다.

통상 신호처리에 사용되는 계산 알고리즘은 복잡한 것이 많기 때문에 퍼스널 컴퓨터가 리얼타임으로 처리를 할 수 없게 되어 버리는 경우가 있다. 그와 같은 문제를 해결하기 위해 등장한 것이 DSP라 부르는 전용의 칩이다. DSP의 특징으로는 내부 버스의 폭이 넓고, 1클록으로 1명령이상의 실행이 가능하며, 승가산 (sum of products) 연산처리를 아주 고속으로 할 수 있다는 점을 들 수 있다. 신호처리 전용의 칩이라 할 수 있을 것이다.

DSP의 문제점으로는 통상적인 CPU에 비해 개발환경이 특수하고, 칩 메이커에 따라 각각 개발환경이 다르다는 점을 들 수 있다. DSP가 리얼타임 신호처리의 핵심 디바이스임에는 틀림없다. 그러나 신호처리에 꼭 DSP와 같은 전용칩이 필요한가 하면 그렇지 않다. 최근 퍼스널 컴퓨터의 처리속도의 향상은 놀라울 정도이다. 전용 칩의 신세를 지지 않아도 손쉽게 신호처리를 할 수 있게 된 것이다.

DSP의 TMS320C3X 계열은 고성능 32비트 부동 소수점(Floating-Point) 연산 방식 디바이스이다. 텍사스인스트루먼트 사에서 제공되고 있으며, 영상처리, 생체공학, 음성인식등에 많이 이용되고 있다

1. TMS320C3X Devices

General-purpose register file
Program cache
ARAU(auxiliary register arithmetic units)
internal dual-access memories
One direct memory access(a two-channal DMA on the TMS320C32)
Short machine-cycle time

이 프로세서는 위와 같은 장치를 가지고 있어서 빠른 실행을 할 수 있게 해주고 사용을 용이하게 해준다.  

그림 1. 'C3X' devices의 Block Diagram.

* TMS320C3X Key Specifications

- 60 MFLOPS(Million FLoating-point Operations Per Second) 고 효율의 C언어 엔진
    넓은 주소 공간: 16M words * 32 bits , DMA에 의한 빠른 메모리 수행
    industry-exclusive 3-V versions available on some devices  

*. TMS320C30

 - 'C3X'계열의 최초 모델로서 4K워드의 ROM과 2K RAM을 가지고 있다.

 그리고 외부에 primary 및 expansion bus를 가지고 있으며 두 개의 serial port를 가지고 있다.

*. TMS320C31

- TMS320C30의 성능을 거의 그대로 유지하면서 극히 일부의 기능을 축소하고, 마이크로컴퓨터 모드를 추가하여 사용자가 보다 쉽게 시스템을 구성할 수 있도록 간략화한 모델이다.
- 내부의 ROM을 없애고 외부의 expansion bus를 삭제하였으며, 내장되어 있는 RAM은 동작속도가 매우 빨라서 zero wait 로 프로그램을 수행할 수 있게 되었다. 그러나 2K의 내부 RAM을 갖기 때문에 그 용량을 넘는 메모리를 처리하기 위해 외부에 추가로 RAM을 접속하여 사용할 수 있는데 그 용량은 반드시 32bit여야 한다.  

*. TMS320C32

- 'C32'계열중 가장 최근의 프로세서이다. 오늘날 초저가로 쓸 수 있는 부동소수점 프로세서이다. 이 프로세서의 가장 큰 특징은 external memory로 8/16/32bit를 선택적으로 접속할 수 있다는 것이다. 그리고 두 채널의 DMA, 융통성 있는 boot loader 그리고 재배치 가능한 inturrupt vector table을 가지고 있다.

2. Central Processing Unit (CPU)

  TMS320C3X계열은 다음과 같은 소자로 CPU가 구성되어져 있다.

Floating-point/integer multiplier
Arithmetic logic unit (ALU)
32-bit barrel shifter
Internal buses (CPU1/CPU2 and REG1/REG2)
Auxiliary register arithmetic units (ARAUs)
CPU register file

가. Floating-Point/Integer Multiplier

Multiplier는 24bit 정수와 32bit 부동소수점수 곱셈을 1 사이클에 수행한다.

이와 같이 정수 또는 부동소수점의 곱셈을 ALU에서의 기본적인 산술연산과 동일한 속도록 수행하며, 더 많은 처리량을 위해 multiplier와 ALU에서의 연산을 한 사이클에 병렬로 실행하면 2배의 연산처리를 할 수 있다.

multiplier가 부동소수점수의 곱셈을 수행할 때 입력은 32bit 부동소수점수이고 출력은 40bit 부동소수점수이다. 또한 정수의 곱셈을 수행할 때 입력은 24bit이고 출력은 32bit이다.

 나. Arithmetic Logic unit (ALU) and Internal Buses

ALU는 1 사이클에 32bit 정수와 32bit 논리연산, 40bit의 부동소수점수의 데이터 연산을 수행한다. 그리고 ALU의 연산 결과는 항상 32bit의 정수이거나 40bit의 부동소수점수이다.

32bit의 Barrel shifter는 1 사이클 안에 좌측이나 우측으로 최대 32bit씩 이동시킬 수 있다.

4개의 internal bus는 CPU1, CPU2, REG1, REG2가 있어서 메모리로부터 2개의 operand와 register file로부터의 2개의 operand를 동시에 access할 수 있어서 1 사이클 안에 정수와 부동소수점수 4개의 operand를 병렬로 곱셈, 덧셈, 뺄셈 연산이 가능하다.  

다. Auxiliary Register Arithmetic Units (ARAUs)

두 개의 auxiliary register arithmetic units(ARAU0 and ARAU1)는 1 사이클에 두 개의 주소를 발생시킬 수 있다. 그리고 multiplier와 ALU는 병렬로 동작한다. 이것들은 ARAU에 displacement, index registers(IR0 and IR1), circular 그리고 bit-reversed addressing 등을 합하여 주소를 생성한다.

3. CPU Primary Register File

모든 primary register는 multiplier와 ALU에 의해 작동되어질 수 있고 일반적인 목적의 register로 사용되어질 수 있다.

8개의 extended-precision registers (R7-R0)는 32bit의 정수와 40bit 부동소수점수에 대한 연산기능을 수행하고 저장한다. operand가 부동소수점인 명령에서는 39~0bit를 사용한다. operand가 부호 없는 정수 또는 부호 있는 정수인 명령에서는 31~0bit를 사용한다. 39~32bit는 변화하지 않는다.

8개의 32bit auxiliary register (AR7-AR0)는 CPU에 의해 access되어지고 2개의 ARAU에 의해 modify된다. auxiliary의 가장 주된 기능은 24bit 주소를 생성하는 것이다. 또한 loop counter로써, 32bit의 일반적인 목적의 resister로써 사용되어지기도 한다.

32bit의 data-page pointer (DP)는 8개의 LSB(least significant bit)만을 사용하여 direct addressing mode 에서 date-page를 나타낸다. data page는 64K word이고 총 256page로 되어 있다.

2 개의 32bit의 index register (IR0, IR1) 는 ARAU에서 indexed address를 계산하기 위해 사용되어질 값을 가지고 있다.

32bit의 block size register (BK)는 ARAU가 circular addressing에서 data block 크기를 나타낸다.

32bit의 system-stack pointer (SP)는 system의 상단 address를 나타낸다. SP는 항상 stack에 가장 나중에 push된 data를 가리킨다. push가 수행될때는 먼저 SP가 증가하고 난 후 data가 저장되고, pop가 수행될 때는 data가 먼저 꺼내지고 나서 SP가 감소한다. SP는 interrupt, trap, call, return, 그리고 PUSH, POP 명령에 의해 달라지기도 한다.

32bit의 status register (ST)는 CPU의 상태에 관한 전체적인 정보를 가지고 있다. ST는 산술 및 논리 연산 뿐만 아니라 resister load와 store operation 도 포함한다. 그러나 ST가 load되었을 때

32bit의 CPU/DMA interrupt-enable register (IE)는 CPU와 DMA의 interrupt의 허용여부를 지정한다. CPU interrupt-enable 은 10-0bit를 사용하고, DMA interrupt-enable은 26-16bit를 사용한다. 1은 해당 interrupt를 허용하고, 0은 interrupt를 허용하지 않는다.

32bit의 CPU interrupt flag register (IF)는 CPU interrupt의 상태를 나타낸다. 1은 해당 interrupt가 발생했음을 나타내고, 0으로 되어 있다면 해당 interrupt가 set 되지 않았음을 가리킨다.

32bit의 I/O flag register (IOF)는 external pin(XF0, XF1)의 기능을 제어한다. 이 pin들은 입출력 단자로 설정할 수도 있고, 또한 읽고 쓸 수도 있다.

32bit의 repeat-counter (RC)는 block repeat가 수행될 때 block으로 지정된 code를 반복할 횟수를 지정한다. processor가 repeat mode 에서 작동되어질 때 32bit의 repeat start-address register (RS)는 repeat하는 block의 starting address를 나타내고, 32bit의 repeat end-address (RE)는 repeat하는 block의 ending address를 나타낸다.

4. Other Registers

32bit의 Program-counter (PC)는 다음으로 fetch될 instruction의 주소를 타나낸다. 이것은 CPU register file에 포함시키진 않지만 instruction에 의해 program 흐름을 제어할 수 도 있다.

32bit의 instruction register (IR)는 instruction이 decode되고 있는 동안 그 instruction을 기억하는 기능이다.

5. Memory organization

'C3X'계열의 총 memory space는 16M *32bit word이다. 이 16M-word address space는 Program, data, I/O space를 포함한다.

6. Internal Bus Operation

'C3X'의 높은 수행능력은 internal busing과 병렬처리에 의한 것이다. 각각 병렬처리되는 bus는 program fetch와 data access와 DMA access를 수행한다.

#Program bus: PADDR(program address bus), PDATA(program data bus)

#Data bus: DADDR1(data address bus1), DADDR2, DDATA(data data bus)

#DMA bus: DMAADDR(DMA address bus), DMADATA(DMA data bus)

이 bus들은 'C3X'가 지원하는 모든 물리적인 space(on-chip memory, off-chip memory, on-chip pheriperal)을 연결한다.

PC는 24bit의 PADDR에, IR은 32bit의 PDATA에 연결되어져 있다. 이 bus들은 매 기계 cycle마다 한 insruction을 fecth한다.

24bit DADDR1과 DADDR2 그리고 32bit DDATA는 매 기계 cycle마다 2개의 data-memory를 access한다. DDATA bus는 CPU1과 CPU2 bus를 통해 CPU로 data를 넘겨준다. 그 CPU1, CPU2 bus는 매 기계 cycle마마다 mutiplier, ALU, register file에 2개의 data-memory operand를 준다. 또한 CPU내의 register bus인 REG1, REG2는 매 기계 cycle마다 2개의 data 값을 register file로부터 multiplier와 ALU로 옮겨다준다.

DMA controller는 1개의 24bit DMAADDR 와 1개의 32bit DMADATA를 지원한다.

7. External Memory interface

'C30'는 2개의 외부 interface(primary bus와 expansion bus)를 지원한다. 'C31'은 1개의 외부 interface(primary bus)를 지원한다. 'C32'은 3개의 독립적인 다중기능을 가진 strobe를 가진 향상된 1개의 외부 interface를 지원한다. 이 bus들은 32bit data bus와 신호제어 set으로 구성되어 있다. primary와 향상된 memory bus는 24bit address bus를 가지고 있다. 반면 expansion bus는 13bit address bus를 가지고 있다.

'C3X'계열은 32bit instruction과 32bit data operation으로 설계되어져 있다. 이런한 설계는 고효율의 병렬처리, C compiler를 위한 provision을 포함해서 여러가지 많은 잇점이 있다. 그러나 'C30'과 'C31'은 data가 단지 8bit 나 16 bit 만 필요할때도 32bit의 외부 memory를 필요로 한다. 이러한 한계를 'C32'에서 극복을 하여 융통성 있게 필요로 하는 만큼 data memory 8bit나 16bit나 32bit 로 다양하게 접속가능해졌다. 또한 program memory는 16bit나 32bit로 접속 가능하다.

가. TMS30C32 16bit and 32bit Program Memory

'C32'는 16bit 나 32bit memory로 부터 code를 수행한다. 만약 32bit memory로 연결이 되었을때 'C32' program 수행은 'C31'의 그것과 같다. 하지만 16bit 0인 상태의 memory로 연결이 되었을때는 'C32'는 1개의 32bit instruction 을 fetch하기 위해 2번의 instruction cycle이 걸린다. 첫번째 cycle동안 'C32'는 더 낮은 16bit를 fetch 하고, 두번째 cycle동안 높은 16 bit를 fetch한다. 그리고 외부 pin인 PRGW가 외부 program memory의 크기를 가리킨다.

 나. TMS320C32 8bit, 16bit, and 32bit Data Memory

8bit, 16bit, 32bit 크기의 memory로부터 8bit, 16bit, 32bit data를 access하기 위해 memory interface는 STRB0, STRB1을 사용한다. 각각의 strobe는 4개의 pin으로 구성되어져 있다. 32bit memory interface를 위해 모든 4개의 pin은 strobe byte-enable pin으로 사용되어진다. 16bit memory interface를 위해서는 2개의 pin이 strobe byte-enable 로 사용되어지고 나머지 pin들중 하나는 additional pin으로 사용되어진다. 8bit memory interface를 위해서는 1개의 pin이 strobe pin으로 사용되어지는 동안 나머지 pin중 2 개의 pin이 additional address pin으로 사용되어진다. 'C32'는 bus control register(one control register per strobe)의 내용에 따라 pin의 동작을 조작한다.

8. Interrupts

'C3X'는 4개의 외부 interrupt (INT3-INT0)와 많은 수의 내부 interrupt, 그리고 외부의 RESET신호를 지원한다. 이들은 DMA뿐만 아니라 CPU interrupt에 사용된다. CPU가 interrupt에 응답할때, IACK pin이 외부 interrupt에 대한 정보를 알려준다.

'C30'과 'C31' 외부 interrupt는 level-trigger형이다. 하지만 'C32'는 외부 logic을 감소시키고 interface를 단순화하기 위해 외부 interrupt는 edge trigger와 level trigger형을 쓰거나 단지 level trigger형을 쓴다.

2개의 외부 I/O flag (XF0, XF1)는 software제어 아래 입출력 pin으로 사용된다.

9. Peripherals

peripheral bus는 32bit data bus와 24bit address bus로 구성되어져 있다. 'C3X'주변장치에는 2개의 timer와 2개의 serial port('C31:1개의 serial port와 1개의 DMA coprocessor. 'C32':1개의 serial port와 2개의 DMA coprocessor channel.)를 가지고 있다.

가. Timers

2개의 timer는 32bit로 일반적인 목적의 timer 또는 event counter로써 사용된다. 각각의 timer는 I/O pin을 가지고 있다.

나. Serial Ports

serial port('C30':2개 'C31', 'C32' :1개)는 서로 독립적이고 8bit, 16bit, 24bit, 32bit 단위로 동시에 양방향의 송신 및 수신동작을 행할 수 있다.

10. Direct Memory Access (DMA)

DMA controller는 CPU의 동작을 방해하지 않으면서 memory map의 어떤 장소에서 읽어 들일수 있고 쓸 수도 있다. DMA controller는 자신만의 address gernerator, source , destination register을 가진다. 또한 CPU와 DMA controller사이의 갈등을 최소화하기 위해 전용의 DMA address와 data bus를 가진다. 'C30'과 'C31'의 DMA coprocessor가 1개의 channel을 가지는 반면 'C32'는 2개의 channel을 가진다.
 

 

상호 : (주) 로보블럭 사업자등록번호:214-86-56219 통신판매업신고19-2544 대표: 신대섭 전화:(02)2679-8556 Fax :(02)2679-8557
본사 : 경기도 부천시 원미구 약대동 부천 테크노파크 401동 502호     서울사무소 : 서울시 영등포구 문래동 4가 8-1 4층
Copyright(C) 2004, (주) 로보블럭 시스템즈 All Rights Reserved E-Mail : WebMaster