KR100240158B1 - 실시간 프로그램 가능 신호 처리기 아키텍쳐 - Google Patents

실시간 프로그램 가능 신호 처리기 아키텍쳐 Download PDF

Info

Publication number
KR100240158B1
KR100240158B1 KR1019920702896A KR920702896A KR100240158B1 KR 100240158 B1 KR100240158 B1 KR 100240158B1 KR 1019920702896 A KR1019920702896 A KR 1019920702896A KR 920702896 A KR920702896 A KR 920702896A KR 100240158 B1 KR100240158 B1 KR 100240158B1
Authority
KR
South Korea
Prior art keywords
data
processor device
signal
bus
ram
Prior art date
Application number
KR1019920702896A
Other languages
English (en)
Other versions
KR937000906A (ko
Inventor
아이. 로빈슨 제프리
로제 케이쓰
알. 무지쿠스 브루스
Original Assignee
마이클 다고스티노
스타 세미컨덕터 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이클 다고스티노, 스타 세미컨덕터 코포레이션 filed Critical 마이클 다고스티노
Publication of KR937000906A publication Critical patent/KR937000906A/ko
Application granted granted Critical
Publication of KR100240158B1 publication Critical patent/KR100240158B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/786Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using a single memory module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Complex Calculations (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Abstract

프로그램가능한 집적된 신호 처리기("SPROC")에는 멀티포트 중앙 메모리 유닛(RAM 100)과, 프로그램 메모리(150)와, 상기 RAM 과 상기 프로그램 메모리에 결합된 한개이상의 디지탈 처리기(400)와 상기 SPROC 내로 흐르는 외부 데이타와 상기 멀리포트 RAM와 상기 데이타의 인터페이스로서 작용하므로 SPROC 외부로 흐르는 처리된 데이타를 제어하는 데이타 흐름 관리기(600)와, DFM 에 결합되고 상기 SPROC 에 대해 직렬 인터페이스로서 작용하는 압력 및 출력 포트 및, 상기 SPROC의 프로그래밍을 허용하고 상기 SPROC 에 병렬 인터페이스로서 작용하는 호스트 포트(800)가 제공된다. SPROCs 는 시스템을 제공하기 위해 자신의 입력 및 출력 포트에 결합될 수도 있다.
컴파일러 및 유저 인터페이스 시스템과 협력하여 상기 SPROC 아키텍쳐는 유저가 상기 SPROC 아키텍쳐는 유저가 상기 SPROC로 복잡한 회로를 "스케치 및 실행" 하는 것을 허용한다. 액세스 포트(900)는 데이타 및 프로그램 RAM 메모리 위치를 판독 및 기록하는 것을 허용한다. 포로우브(1000)는 메모리 위치의 모니터링을 허용하고 상기 위치를 나타내는 아나로그 신호를 제공한다.

Description

[발명의 명칭]
실시간 프로그램가능한 신호 처리기 아키텍쳐
[발명의 상세한 설명]
본 발명은 1988년 7월 11일에 출원되어 출원 연속중인 미국 특허 제07/217,606호 및 1989년 7월10일에 출원된 국제 출원 PCT US 제89/02986호에 부분적으로 계속되는 것이다.
[본 발명의 배경]
본 발명은 일반적으로 프로그램가능한 회로 디바이스에 관한 것이다. 보다 구체적으로, 본 발명은 주문 제작된 신호 처리 디바이스를 실리콘으로 즉시 실현할 수 있는 아키텍쳐에 관한 것이다.
디지탈 신호 처리는 레이다 시스템, 이미지 인식 등의 군사적 응용에서 주로 사용되는 고가의 비밀 과학분야에서부터 디지탈 오디오 및 컴팩트 디스크 등의 소비자 제품에 사용되는 고도의 기술로 발달해 왔다. 단일 칩 디지탈 신호 처리기(SCDSP)는 1980년대 초기에 특히 이들 시장을 목표로 소개되었다. 그러나, SCDSP는 설계 및 사용이 복잡하고 상당한 성능적 한계를 가지고 있다. 특히, SCDSP는 DC 내지 수십 kHz의 낮은 주파수 스펙트럼에 한정되어 있다. 게다가, 대부분의 SCDSP는 노이만형 마이크로프로세서로부터 유래된 하드웨어 성능 문제 및 다른 개발 환경을 가지고 있다.
일반의 신호 처리형 제품은 제1도에 도시된 바와 같이 세그먼트될 수 있으며 다음과 같이 설명된다. 즉, 아날로그 입력/출력(I/O), 및 A/D 및/또는 D/A 변환; 신호 조건화 및 처리; 샘플 속도 결정 처리; 및 논리, 결정 및 제어 처리 등이 있다. 아날로그 인터페이스(I/O)는 일반적으로 입력 방향으로 A/D 변환하기 전에, 사전 증폭 및 안티-에일리어스 필터링(preeamplification and anti-alias filtering)를 수행하고, 출력 방향으로는 D/A 변환, 재구성 필터링, 및 전력 증폭을 수행한다. 신호 조건화 및 처리 회로는 고속 푸리에 변환 뿐만 아니라, 필러링, 증폭, 정류 등의 정밀 신호 처리 기능을 수행한다. 샘플 속도 결정 회로는 그곳에 보내온 모든 샘플에 대해 간단한 논리 결정을 하는 윈도우 비교기, 양자화기, 컴팬더(compander), 익스팬더(expander) 등을 포함한다. 마지막으로, 입력 방향의 논리, 결정 및 제어 처리 회로는 신호 조건화 및 처리 및 샘플 속도 결정 처리 회로로부터 나오는 신호들을 사용하며, 유용한 방법으로 외부 설비를 제어하도록 결정한다. 외부 설비를 제어하기 위하여, 출력 방향의 논리, 결정 및 제어 처리회로는 아날로그 디바이스 또는 설비를 구동하거나, 이와 상호 작용하여 구동하기 위해 추가의 신호 처리를 필요로 하는 신호들을 발생시킨다. 결정하는데 있어서, 논리, 결정 및 제어 처리 회로는 일반적으로 그 사용하는 신호들과 비동기적으로 운영되는 강한 데이타 종속 코드를 사용한다. 이러한 회로의 예들은 음성 및 영상 인식 알고리즘, 디스크 드라이브 제어기, 음성 발생 알고리즘, 수치적으로 제어된 머신 툴 제어기 등으로 포함한다.
상기 작업들의 분석에 근거해 보면, SCDSP는 "신호처리"및 "논리 처리"를 모두 실행하도록 호출된다는 것을 알 수 있다. 신호 처리는 일반적으로 계산상 집약적(computationally intensive)이고, 실시간 I/O 에 대하여 적은 대기 시간 및 적은 기생 오버헤드(parasitis overhead)를 요구하며, 복수의 비동기 처리를 효과적으로 수행해야 하며, 제어 가능해야 한다. 신호 처리의 예로는 바이쿼드(biquad) 필터에 의해 수행되는 처리가 있다. 단일의 바이쿼드 필터부는 일반적으로 8개의 데이타 메모리 워드와 18개의 프로그램 메모리 워드를 필요로 한다. 그러나, 이것은 초당 수백만개의 명령어 계산 능력을 요구할 수도 있다; 즉, 이것은 계산상 집약적이며, 메모리 집약적이지는 않다. 신호 처리 기능은 "터미날" 처리기보다는 "인 라인(in line)" 처리기로서 더 특징이 있다; 신호는 높은 샘플 속도로 바이쿼드 필터를 통해 흐르며, 다른 섹션에 입력을 제공한다. 결과적으로, 매우 높은 I/O 대역폭이 신호 처리기능을 위해 일반적으로 필요하다. 또한, 복수의 바이쿼드 필터들이 신호 처리 시스템에 대해 필요한 경우, 이들 필터들은 독립적인 소스를 갖는 신호들을 처리할 것이라면 비동기될 것이다. 환언하면, 신호 처리기는 여러 처리 기능을 병렬로 실행하도록 종종 요구된다.
신호 처리에 비해서, 논리 처리를 일반적으로 메모리 집약적이며(계산상 집약적인 것에 반대됨), 다중 인터럽트를 효과적으로 처리해야 하며(특히, 멀티프로세서 시스템에서), 제어기로서 동작한다(제어가능에 반대됨). 보통 형태의 논리 처리기는 그 처리를 실행하기 위하여 광범위한 결정 지향형 소프트웨어에 의존하는 마이크로프로세서이다. 이 소프트웨어는 일반적으로 "C" 와 같은 고급 언어로 기록되어 있다. 이 코드는 흔히 매우 가변적인 실행 시간을 초래할 수 있는 다수의 "if ... them ... else"등의 구문을 포함하는데, 이 가변적인 실행 시간은 비실시간 응용에서 용이하게 처리되지만, 효율적인 실시간 시스템에 대해서는 매우 심각한 스케쥴링 문제가 초래된다.
신호 처리와 논리 처리의 요건들은 비교해볼 때, 이들은 서로 유사하지 않음을 알 수 있다. 그럼에도 불구하고, 상황에 따라서, 논리 처리기가 신호 처리를 하도록 요구되는 경우가 종종 있고, 그 반대로도 마찬가지로 존재한다. 마이크로 프로세서 기술은 더 오래되고 더 개발된 기술이기 때문에, 많은 DSP의 아키텍쳐들이 마이클로프로세서의 아키텍쳐들로부터 대부분 빌려왔다는 사실은 놀랄만한 것이 못된다. 이와 같이, DSP는 종종 인터럽트 구조를 갖는 제어기로서 구성된다. 그러나, 이런 형태의 아키텍쳐는 디지탈 신호 처리의 주된 기능용으로는 적합하지 않다.
[발명의 개요]
그러므로, 본 발명의 주된 목적은 신호 처리의 요구조건에 부응하고 마이크로프로세서가 논리 처리를 하는 방식으로 신호 처리를 위한 능력에서도 역할을 할 수 있는 신호 처리기에 대한 아키텍쳐를 제공하는 것이다.
본 발명의 또 다른 목적은 상당량의 부가된 계산상의 오버헤드 없이 상당한 계산상의 확장을 용이하게 실현할 수 있는 신호 처리기 아키텍쳐를 제공하는 것이다.
본 발명의 또 다른 목적은 인터럽트 구조에 의존하지 않고 상호 비동기적으로 동작할 수도 있는 다중 병렬 처리 요소들을 갖춘 신호 처리기에 대한 아키텍쳐를 제공하는 것이다.
본 발명의 또 다른 목적은 복잡한 신호 처리 시스템들을 생성하는 능력을 실현하고 스케치하기(effect a sketch) 위하여 컴파일러와 인터페이스하도록 효과적으로 설계된 신호 처리기를 제공하는 것이다.
본 발명의 또 다른 중요한 목적은 바람직한 신호 처리기 시스템 자체뿐만 아니라, 바람직한 신호 처리기 시스템의 기능 블럭들을 개발, 평가 및 디버깅(debugging)하는데 있어 유용한 신호 처리기 개발 시스템을 제공하는 것이다.
신호 처리기 개발 시스템에 관련하여, 본 발명의 또 다른 목적은 동작중인 시스템의 임의의 "노드(node)"가 프로우브(probe)되어 아날로그 형태로 관찰될 수 있도록, 또, 동작중인 시스템의 임의의 블럭의 임의의 파라미터가 변경되고 그 변경의 영향이 즉시 관찰될 수 있도록, 설계자가 시스템과 대화하는 것을 허용하는 툴(tool)을 제공하는 것이다.
본 발명의 목적에 따라, 다음과 같은 아키텍쳐를 갖는 집적된 신호 처리기(이하에서, 출원인의 상표명인 "SPROC"라 함)가 바람직하게 제공된다. "멀리포트" 중앙 메모리 장치; 적어도 하나의 프로그램 메모리; 멀티포트 중앙 메모리 장치 및 프로그램 메모리에 결합된 적어도 하나 및 바람직하게는 복수의 디지탈 처리기로서, 각각의 디지탈 처리기는 멀티포트 중앙 메모리 장치로부터 데이타를 얻고, 상기 데이타를 프로그램 메모리의 프로그램에 따라 처리하며, 처리된 데이타를 멀티포트 중앙 메모리 장치에 보내는 복수의 디지탈 처리기; SPROC에 들어오는 외부 데이타 및 SPROC에서 나가는 처리된 데이타와 멀티포트 중앙 메모리 장치와의 인터페이스로서 동작함으로써, 이들 데이타의 흐름을 제어하는 데이타 흐름 관리기(manager); 데이타 흐름 관리기에 결합되어 SPROC에 대한 직렬 인터페이스로서 동작하는 입력 및 출력 포트; 및 SPROC의 프로그래밍을 가능하게 하고 SPROC에 대한 병렬 인터페이스로서 동작하는 호스트 포트(host port)를 구비한다. 이러한 목적을 위해, 메모리 장치(unit) 또는 메모리 수단, RAM 등에 관련하여 사용되는 용어 "멀리포트"는, 실제로 멀티포트가 있는 메모리 디바이스, 및 멀티포트 메모리에 연결된 각 디바이스가 멀티포트 메모리에 경쟁 없이 액세스 할 수 있다는 점에서 멀티포트가 있는 것처럼 보이는 메모리 디바이스를 포함하도록 넓게 해석되도록 의도하고 있다는 것을 강조한 것이다(즉, 멀티포트 메모리에 액세스하는 각각의 디바이스는 데이타를 공유할 수 있다는 것을 제외하고는 다른 이러한 디바이스들에는 보이지 않는다). 이러한 멀티포트 중앙 메모리 장치를 만드는 한 방법은 단일 포트 메모리 장치에 대한 시분할 다중 액세스를 제공하는 것이다.
바람직한 SPROC에서, 프로그램 메모리는 모든 처리기를 조작(serve)하는 멀티포트 프로그램 RAM이고, 중앙 메모리 장치는 멀티포트 데이타 RAM이다. 또한, 바람직한 실시예에는, 일체의 부트(integral boot) ROM이 집적된 신호 처리기와 관련하여 제공된다. SPROC가 마스터 모드(master mode)에 있을 때, 부트 ROM은 전원이 켜질 때 집적된 신호 처리기의 처리기들 중 하나로 하여금 호스트 포트의 제어를 포착하도록 하는 코드를 저장한다. 마스터 모드에서, 호스트 포트는 SPROC와 EPROM 또는 ROM 사이의 병렬 인터페이스로서 동작한다. EPROM은 프로그램 RAM에 대한 프로그램 코드와, 데이타 흐름 관리기, 병렬 호스트 포트, 직렬 포트, 및 데이타 RAM에 대한 구성 정보와, 데이타 RAM에 대한 데이타를 저장한다. 슬레이브(slave) 모드에서, SPROC가 호스트 마이크로프로세서, 예를 들면, 8096에 의해 프로그램되기 때문에 부트 ROM은 필요하지 않다. 그러나, 부트 ROM과 메모리 공간을 공유하는 브레이크 ROM(break ROM)은 프로그램 브레이크가 실행될 때 SPROC를 실행시키기 위해 마스터 모드 또는 슬레이브 모드에서 바람직하게 제공된다.
본 발명의 다른 특징에 따르면, 액세스 포트 및 프로우브(probe)가 제공되어 있다. 액세스 포트는 멀티포트 데이타 RAM 및 프로그램 RAM에 결합되어 있고, 데이타 RAM 및 프로그램 RAM 메모리 위치에 판독 및 기록하기 위한 수단으로서 제공된다. 이 방식에서, 메모리의 구성은 수정될 수 있고, 메모리에 저장된 파라미터도 수정될 수 있으며, 메모리 위치를 구성하는 모든 레지스터내의 값들은 변경될 수 있다. 반면에, 프로우브는 특정의 데이타 RAM 위치에 저장된 데이타의 값을 모니터하기 위한 수단으로서 제공된 포트이다. 프로우브는 데이타 RAM 버스에 결합되어 그것을 모니터하는 프로그램가능한 어드레스 디코더를 구비하고 있다. 프로우브는 멀티포트 데이타 RAM의 프로그램된 위치에 기록된 데이타를 포획(capture)한다.
SPROC의 아키텍쳐는 복수의 이러한 집적된 신호 처리기들이 서로 결합되어 시스템을 생성하도록 하고 있다. 각각의 집적된 신호 처리기는 그 직렬 포트를 연결하는 직렬 버스 및/또는 병렬 호스트 버스를 통하여 다른 집적된 신호 처리기와 통신할 수 있다.
개시된 아키텍쳐의 경우, 상기 배경 기술 부분에서 서술된 요구조건들을 모두 만족시키는 집적된 신호 처리기가 제공되어 있다. 첫째, 집적된 신호 처리기는 복수의 집적된 신호 처리기가 한 시스템에 연결(link)될수 있어서 계산상 확장가능하다. 둘째, 집적된 신호 처리기는 데이타 흐름 관리기가 내부 처리기로 하여금 신호 I/O의 임무를 떠맡지 않도록 해주기 때문에, 실시간 I/O에 대하여 대기 시간 및 기생의 오버헤드가 낮다. 결과적으로, 유용한 신호 처리 동작을 위해 이용가능한 처리 능력은 I/O 에 대해 인터럽트를 처리해야 하는 유사한 시스템보다는 훨씬 더 크며, 따라서, 더욱 높은 샘플링 속도가 가능하다. 셋째, 집적된 신호 처리기는 각각의 내부 처리기가 요구에 근거하여 장치(apparatus)를 통해 설치된 여러 신호 경로에 할당될 수 있기 때문에, 복수의 비동기 처리들을 효과적으로 수행할 수 있다. 다중 내부 처리기들간의 물리적 분리로 인하여 정상의 공유 하드웨어 문제점을 극복하고, 처리능력의 더 세밀한 세분성(granularity)으로 프로그래밍 해결이 효과적으로 된다. 더욱이, 동기 처리를 위해, 복수의 내부 처리기는 컴파일러에 더 세분화하는 체계를 제공함으로써, 이용가능한 메모리 및 처리 능력을 향상시켜 사용할 수 있게 된다. 마지막으로 중요한 것은, 집적된 신호 처리기는 논리 처리기(즉, 마이크로프로세서)에 용이하게 인퍼페이스 할 수 있다는 점에서 제어 가능하다.
본 발명의 또 다른 특징에 따르면, 제공된 집적된 신호 처리기에는 개발 시스템이 제공되어 있다. 개발 시스템은 SPROC에 관련하여 "스케치 및 실현" 능력을 허용한다. 특히, 개략적 진입 시스템이 파라미터화가능한(parameterizable) 신호 처리 기능들의 셀 라이브러리(cell library)와 함께 제공되어 있다. 기능 중에는 다음과 같은 것들이 있다: 곱셈기, 가산 접합(summing junction), 증폭시, 적분기, 위상 동기 루프(phase locked loop). IIR 필터, FIR.필터, FFT, 정류기, 비교기, 리미터, 오실레이터, 파형 생성기 등이다. 또한 사용자가 자신들의 함수를 정의할 수 있도록 프로그래밍 언어가 제공된다. 개발 시스템의 사용자는 다수의 아이콘(기능 블럭)을 선택하는데, 컴퓨터 마우스의 사용을 통해, 아미콘은 스크린 상에 위치설정될 수 있고 원하는 대로 블럭도 포맷으로 함께 결합될 수 있다. 각 아이콘은 셀 라이브러리 내의 신호 처리 기능에 관계하며, 사용자는 각 블럭을 파라미터화할 수 있다. 사용자 개략도가 완료될 때, 개발 시스템은 자동적으로 최적의 방식으로 정보를 컴파일하며, 인터페이스 회로를 통해 하나 이상의 SPROC의 호스트 또는 액세스 포트에 결합된 RS232 링크를 통하여 프로그램(스케치된 다이어그램을 실현함)을 다운로드한다. 컴파일러는 SPROC에 대해 자동 코드를 형성할 뿐만 아니라, 데이타 RAM 내의 그 내부 어드레스들과 함께 정의된 모든 변수들을 보여주는 심볼 테이블도 형성한다. 이들 어드레스로의 기록은 그 후 그 파라미터 값들을 변화시킨다. 예를 들면, "이득(gain)"에 대응하는 어드레스에 기록이 행해지는 경우, 증폭기의 이득은 새로운 값으로 변하게 될 것이다.
일단 SPROC가 프로그램되면, 개발 시스템은 사용자가 디바이스를 대화식으로 디버그(debug)하는 것을 허용한다. 프로우브는 명령 라인 편집기를 통해 개발 시스템 상에 위치설정된다. 개략적인 블럭도상의 이름을 타이핑하면, 프로우브가 그 점으로 "이동된다(move)". 이 프로우브의 출력은 SPROC의 고정 핀에 부착된 오실로스코프에 의해 모니터가능하다. 마찬가지로, 명령 라인 편집기(editor)는 파라미터를 수정하는데 사용될 수도 있다. 파라미터 수정은 화일 내에 타이핑되거나 화일로부터 다운로드(download)될 수 있다. 이러한 설비는 사용자가 예를 들면, 피드백 시스템의 극점 및 영점(pole and zero position) 위치를 이동시키고, 실시간으로 그 결과를 관측할 수 있게 한다.
설계자가 그 시스템의 최적화를 끝냈을 때, 개발 시스템은 EPROM에 저장될 화일을 형성한다. SPROC의 전원을 켜면, EPROM은 SPROC의 호스트 포트에 결합되고, EPROM에 포함된 화일은 디바이스를 프로그램하는 데 사용된다.
본 발명의 다른 목적 및 특징은 첨부된 도면에 따른 상세한 설명에서 보다 분명해 질 것이다.
[도면의 간단한 설명]
제1도는 일반적인 신호 처리형 제품의 작업의 세그멘테이션을 도시하는 도면.
제2도는 본 발명의 SPROC 디바이스 및 외부 호스트 또는 메모리에 대한 그 접속을 하이 레벨의 블럭으로 도시한 도면.
제3도는 SPROC의 여러가지 구성 요소 및 포트의 SPROC의 데이타 RAM에 대한 액세스의 타이밍도.
제4도는 본 발명의 SPROC 디바이스의 내부 처리기들의 블럭도.
제5도는 디지탈 바이쿼드(biquad) 필터의 블럭도.
제6a도 및 제6b도는 본 발명의 데이타 흐름 관리기의 입력 및 출력측의 블럭도.
제6c도는 멀티포트 데이타 RAM에서 구현되고 본 발명의 데이타 흐름 관리기에 활용되는 FIFO의 도면.
제7a도 및 제7b도는 본 발명의 직렬 입력 및 직렬 출력 포트의 블럭도.
제8도는 본 발명의 호스트 포트의 개략적인 블럭도.
제9도는 본 발명의 액세스 포트의 블럭도.
제10도는 본 발명의 프로우브(probe)의 블럭도.
제11도는 본 발명의 복수의 SPROC 디바이스를 논리 처리기의 전단으로서 역할하는 시스템에 결합시키는 것을 도시하는 개략도.
제12도는 본 발명의 개발 시스템에서 활용된 컴파일러의 하이레벨의 흐름도.
제13도는 본 발명의 플래깅(flagging) 체계에서 활용된 디코더의 블럭도.
[양호한 실시예의 상세한 설명]
본 발명의 바람직한 SPROC 서브 시스템(10)의 상위 레벨 블럭도가 제2도에 도시되어 있다. 바람직한 SPROC(10)는 다음과 같은 것을 포함하고 있다: 데이타 RAM 버스(125)를 거쳐 액세스되는 중앙의 "멀티포트"(넓은 의미의 것) 데이타 RAM(100); 프로그램 RAM 버스(155)를 거쳐 액세스되는 멀리포트 프로그램 RAM(150); 데이타 RAM 버스(125) 및 프로그램 RAM 버스(155)에 결합되어 일반적인 처리 기능을 실행하는 복수의 내부 처리기(GSP)(400); 데이타 RAM 버스(125)에 결합되어 SPROC로/로부터의 데이타 흐름을 제어하고 GSP가 그 데이타 흐름을 처리하는 것을 덜어주는 데이타 흐름 관리기(DFM)(600); DFM(600)에 결합되어 있는 복수의 직렬 데이타 포트(700); 데이타 RAM 버스(125) 및 프로그램 RAM 버스(155)에 결합되어, 호스트 버스(165)를 거쳐 SPROC를 독립 모드(stand-alone mode)에서는 EPROM(170)에, 호스트 모드에서는 호스트 처리기(180)에 결합시키는 역할을 하는 호스트 포트(800); 데이타 RAM 버스(125) 및 프로그램 RAM 버스(155)에 결합되어 있는 액세스 포트(900); 데이타 RAM 버스(125)에 결합된 프로우브(1000); 스위치(192)를 통하여 GSP(400)에 결합된 부트 ROM 버스(157)을 갖는 내부 부트 ROM(190)으로서, 스타트-업 모드에서는 마스터SPROC(10)을 제어하고 GSP가 브레이크 모드에 있을때에 SPROC(10)의 GSP(400)을 제어하기 위해 사용되는 부트 ROM(190); 및 데이타 RAM(100)의 특정 어드레스가 어드레스 지정될 때(데이타 RAM 버스(125)상의 값에 의해 결정됨), DFM 및 GSP를 플래깅(flagging)하기 위해 플래그 버스(198)를 통해 DFM(600) 및 GSP(400)에 결합되어 있는 플래그 발생 디코더(196) 등이 있다.
본 발명의 SPROC(10)는 여러 다른 모드에서 기능할 수 있고 그 중 몇몇은 외부적으로 설정된 핀(도시되어 있지 않음)에 의해 결정된다. 특히, SPROC(10)는 부트 모드, 동작 모드, "브레이크" 모드를 포함한 개발 모드를 갖는다. 게다가 SPROC는 마스터 SPROC 또는, 마스터 SPROC(제11도 참조) 또는 호스트(180)에 결합되어 있는 슬레이브 SPROC일 수 있다. 부트 모드(전원 켬)에서는, SPROC(10)이 마스터인 경우인데, SPROC(10)은 그 자신 및 시스템의 일부일 수 있는 다른 슬레이브 SPROC을 프로그램하기 위하여 필요하다. 이를 위해 전원이 켜질 때 스위치(192 및 194)는 토글되어 B(부트) 노드에 연결된다. 스위치(스위치 192 및 194)가 이와 같이 설정되면, 부트 ROM은 GSP(400a)등의 GSP(400)에 결합되고, 프로그램 RAM(150)은 데이타 RAM 버스(125)에 결합된다. 부트 ROM(190)이 GSP(400a)에 결합되기 때문에, GSP(400a)는 부트 ROM(190) 내의 부트 코드를 판독할 수 있게 된다. 이 코드는 GSP가 호스트 포트(800)의 제어를 취하고, 호스트 포트(800)를 거쳐 EPROM(170)에서 SPROC로 정보를 로드(load)하도록 배열되어 있다. EPROM(170)에 포함된 정보는 (데이타 RAM 버스(125)를 거쳐 보내온) 프로그램 RAM(150)에 대한 프로그램 코드, DFM(600) 및 직렬, 호스트 및 액세스 포트(700,800,900)에 대한 구성 정보, 및 데이타 RAM(100)에 대한 초기화 정보를 포함하는 파라미터 정보를 포함하고 있다. 본 발명의 개발 시스템(이후에 더 자세히 설명됨)에 의해 컴파일 되어 EPROM에 저장된 이 정보는, SPROC가 직렬 포트(700)를 통해 일반적으로 수신된 데이타에 대해 소정의 기능을 수행하게끔 한다.
부트 모드에서는, 마스터 SPROC가 프로그램된 후에, 시스템(제11도 참조)의 나머지(슬레이브) SPROC들은 마스터 SPROC(10)가 EPROM(170)을 판독함으로써 프로그램되며, 공통 호스트 버스(165)를 통해 정보를 상이한 어드레스 공간에 있는 다른 SPROC들로 진행시킨다. (제4도와 관련하여 설명된 바와 같이) 비록 부트 ROM(190)이 SPROC의 브레이크 모드 작동을 제어하기 위해 사용될지라도, 상기 슬레이브 SPROC들은 부트 모드 목적을 위해 부트 ROM을 필요로 하지 않는다.
초기화가 완료되면, 미리 정해진 값(foH)을 미리 정해진 메모리 어드레스(0401H)에 기록함으로써 부트 모드에서 빠져 나가며, 이는 스위치(192)를 노드 0(작동)로 토글시키고 스위치(194)를 개방 위치로 토글시키게 한다. 그 후에, SPROC는 의도된 신호 처리 용도로 동작할 준비를 한다.
비록, 슬레이브 SPROC들이 마스터 SPROC에 의해 부트 모드로 프로그램될 수 있을지라도, 슬레이브 SPROC는 또한 제2도의 호스트(180) 등의 마이크로프로세서 호스트에 의해 프로그램될 수도 있다. 호스트(180)와 같은 호스트가 호스트 버스(165)에 결합되는 슬레이브 모드에서, 내부 부트 ROM(190)은 작용하지 않는다. 실제로, 스위치(192 및 194)는 작동 모드 위치에 설정된다. SPROC를 프로그래밍하기 위해서, 가능하면, 상기 호스트(180)는 호스트 버스(165)를 사용하고, 호스트 포트(800) 및 프로그램 RAM 버스(155)를 통해 프로그램 데이타(가능한 한 EPROM(170)로 부터 얻어짐)를 프로그램 RAM에 보내고, 호스트 포트(800) 및 데이타 RAM 버스(125)를 통해 데이타 RAM 데이타를 데이타 RAM에 보낸다. 직렬 포트(700) 및 데이타 흐름 관리기(600)에 대한 구성 정보는 호스트(180)에 의해 후술된 바와 같이 호스트 포트(800) 및 데이타 RAM 버스(125)를 통해 보내진다.
작동 모드에서, 상기 SPROC(10) 내외로의 직렬 데이타 흐름은 1차적으로 직렬 포트(700)를 통과하는 반면에, 병렬 데이타 흐름은 호스트 포트(800)를 통과하여 흐른다. 처리될 직렬 데이타는 데이타 흐름 관리기(600)에 결합된 입력 포트내로 보내지며, 데이타 흐름 관리기(600)는 차례로 상기 데이타를 데이타 RAM(100)내의 적당한 위치(버퍼)로 보낸다. 이하 기술된 특정 환경에서, DFM(600)은 플래그 발생 디코더(196)에 의해 모니터된 특정 데이타 RAM 위치에 부가적인 정보도 또한 기록할 것이다. 디코더(196)는 상기 플래그가 제13도와 관련하여 이하 설명된 바와 같은 트리거 또는 플래그 버스(198)에 대해 트리거되게 할 것이다. 다른 플래그는 "계산 라인"이라 불리는 라인을 통해 하드웨어 핀(도시되지 않음)에 펄스를 발생시킴으로써 트리거된다. 상기 하드웨어 핀을 특히 SPROC의 GSP(400) 및 DFM(600)에 외부 타이밍 정보를 제공하는데 특히 유용하다.
일단 데이타가 데이타 RAM(100)에 전송되었다면, 통상 상기 정보의 도착의 플래그 버스(198)를 통해 GSP(400)가 통지되어진 후에, GSP(400)는 데이타를 처리할 수 있다. 데이타는 개발 시스템의 사용자에 의해 발생된 개략도의 기능, 토폴로지 및 파라미터를 차례로 나타내는 멀티포트 프로그램 RAM(150)에 기억된 하나 이상의 프로그램에 의하여 처리된다. 데이타를 처리하는데 있어, GSP(400)는 데이타 RAM(100)으로부터 판독하거나 RAM(100)에 기록할 수 있다. 그러나, GSP를 방해하고 부담을 줄 I/O 함수로부터 GSP를 보호하기 위해서, GSP는 서로 직접 어드레스 지정을 하지 않으며, DFM(600) 또는 입력 및 출력 직렬 포트(700)로부터 판독하거나 기록하지 않는다. 마찬가지로, GSP는 호스트 포트(800) 또는 액세스 포트(900)를 직접 액세스하지도 않는다. 따라서, 처리된 데이타가 SPROC(10)로부터 출력되도록 하기 위해, 상기 처리된 데이타는 GSP(400)에 의해 데이타 RAM(100)으로 보내져야 한다. 상기 데이타 RAM 내의 데이타는 DFM(600)에 의해 판독되어 출력 포트(700)를 통해 직렬로 보내지거나, 호스트 포트(800)를 통해 병렬 형태로 호스트 버스(165)상에 보내진다.
SPROC 디바이스의 개발 모드는 EPROM(170)의 최종 프로그래밍에 앞서 사용되고, 호스트(180)와 함께 기본적으로 이용된다. 이 개발 모드는 사용자가 SPROC디바이스의 내부를 액세스할 수 있게 함으로써, 사용자가 집적 회로 신호 처리기를 쉽고 유리하게 개발할 수 있도록 한다. 예를 들어, 테스트 작동 모드 동안, GSP의 레지스터의 데이타 "덤프(dump)"를 얻는 것이 바람직하다면, GSP(400)는 하나의 GSP로 하여금 메모리 어드레스(406H)에 기록하도록 함으로써, 브레이크 모드에 놓여질 수 있다. 상기 어드레스에 기록한 결과, 디코더(도시되어 있지 않음)는 스위치(192)가 토글되도록 하며, 부트 ROM(190)의 브레이크 섹션으로부터의 명령은 버스(157)를 통해 GSP(400)에 의해 사용된다. 부트 ROM(190)이 이와 같은 방식으로 GSP(400)에 결합되는 동안, GSP는 GSP의 각 레지스터가 데이타 RAM(100)내의 미리 정해진 위치에 상기 레지스터의 내용을 덤프(dump)하게 하는 루틴을 가동시킨다. 그 후 상기 데이타는 사용자에 의해 액세스될 수도 있고 만약 원한다면 액세스 포트(900) 또는 호스트 포트(800)를 통해 변경될 수도 있다. 그 후, 부트 ROM(190)의 브레이크 섹션은 상기 데이타를 상기 GSP로 다시 로드시키고, 메모리 어드레스(407H)에 기록하며, 다른 디코더(도시되지 않음)는 프로그램 RAM(150)이 GSP(400)에 결합되도록 스위치(192)를 다시 토글되게 하고, 이 프로그램은 계속된다.
SPROC 디바이스의 개발 모드에 유용한 다른 도구는 액세스 포트(900) 및 프로우브(1000)이다. 액세스 포트는 사용자가 프로그램 RAM(150)에 저장된 프로그램을 변경할 수 있도록 하고/하거나, SPROC가 작동하는 동안 프로그램 RAM(150) 또는 데이타 RAM(100)에 저장된 파라미터를 변경할 수 있도록 한다. 프로우브(1000)는 사용자가 임의의 특정 데이타 RAM 위치에 기록된 데이타 값을 모니터함으로써, 아날로그 도는 디지탈 형태로 SPROC에 의해 발생된 내부 신호를 볼 수 있게 한다. 액세스 포트(900)와 프로우브(1000)를 함께 사용하기 때문에, 액세스 포트(900)를 통하여 입력된 파라미터 값의 변화의 효과가 프로우브(1000)에 의해 즉시 모니터 될 수 있다.
제2도를 포함하는 각 블럭의 세부 사항에 들어가기 전에, SPROC의 기능을 중심이 멀티포트 데이타 RAM(100) 및 멀티포트 프로그램 RAM(150)이라는 것을 인식해야 한다. 전술한 바와 같이 RAM은 RAM에 대한 단일 액세스를 시분할 멀티플레스하거나(제2도에 실선으로 표시), 진정한(true) 멀티포트 RAM을 제공함으로써(제2도에 점선으로 표시); 멀티플렉스될 수 있다. 바람직한 실시예에서 제3도에 도시된 바와 같이, GSP(400)와 호스트 포트(800) 및 액세스 포트(900)에 의해 프로그램(150)을 액세스하는 것은 단일 입력의 시분할 멀티플렉스를 통해서이다. 마찬가지로 GSP(400), DFM(600), 호스트 포트(800), 액세스 포트(900) 및 프로우브(1000)에 의해 데이타 RAM(100)을 액세스하는 것도 또한 단일 입력의 시분할 멀티플렉스를 통해서이다.
제3도에서 알수 있는 바와 같이, 본 발명의 바람직한 실시예에서 기본 50MHz SPROC 클럭(147)의 5가지 기본 타임 슬롯이 있는데(제2도에 도시됨), 하나는 각 GSP에 대한 것이고, 하나는 SPROC의 모든 다른 블럭들에 의해 공유되는 것이다. 각 GSP(400)는 각 GSP에 프로그램 RAM(150)의 10MHz 액세스를 효과적으로 제공하면서, 다섯 클럭 싸이클마다 한 번씩 프로그램 RAM(p-rd)으로부터 판독될 수 있다. 제5클럭 싸이클에서, 프로그램 RAM으로부터 판독하거나 또는 프로그램 RAM에 기록하기 위하여, 호스트를 양호하게 액세스하게 된다. 만일 호스트가 프로그램 RAM으로부터 판독하거나 또는 프로그램 RAM에 기록할 필요가 없다면, 액세스 포트를 액세스 하게 된다. 다른 대안으로, 부가적인 시분할 멀티플렉스에 의해 제5 타임 슬롯까지 호스트 포트 및 액세스 포트를 50/50 액세스할 수 있다.
부트 모드에서는, SPROC의 하나의 GSP만이(예를 들어, GSP(400a)) 부트 ROM(190)을 액세스한다. 부트 모드는 EPROM(170)으로부터의 프로그램 데이타를 가지고 프로그램 RAM(150)을 프로그램하기 위해서 사용되기 때문에, 프로그램 RAM 버스(155)는 프로그램 RAM(150)에 기록하기 위해서 (데이타 RAM 버스(125) 및 스위치(194)를 통하여) GSP(400a)에 의해 사용되어야 된다. 따라서, 이와 같은 상황(제2도와 관련하여 앞에서 설명됨)을 참작하기 위하여, 프로그램 RAM 기록(p-wr)이 제3도에 도시된 바와 같이 제공된다.
데이타 RAM(100)은 시분할 멀티플렉스를 통해 유사하게 멀티포트화 된다. 제3도에 도시된 바와 같이, 데이타 RAM(100)의 판독 또는 기록을 위하여 각 GSP(400)에는 단일 타임 슬롯이 주어진다. 상기 제5 타임 슬롯(타임 슬롯 2)은 시간이 다음과 같이 세분된다. 즉, 50%는 호스트 인터페이스를 위하여, 그리고 나머지 50%는 액세스 포트(900), 8 개의 직렬 포트(700)에 관련된 DFM(600)의 각각의 8개의 섹션 및 프로우브(1000)를 위하여 동등하게 분할한다.
본 발명의 RAM(100 및 150)은 바람직하게는 독립된 RAM 디바이스들이며, 메모리 공간을 공유하지는 않는다. 예를 들어, 프로그램 RAM(150)은 바람직하게는 0000 내지 03ff Hex의 어드레스가 지정된 1k×24 비트 램이다. 다른 한편으로, 데이타 RAM (100)은 바람직하게는 0800×0fff Hex의 어드레스가 지정된 2K의 기본 데이타 RAM 공간 및 0400×07ff의 어드레스가 지정된 1k의 레지스터에 기초한 보조 공간을 가지고 있는 3k×24 비트 데이타 램이다. 상기 기본 데이타 RAM 어드레스 중에, 어드레스 0800 내지 0813 Hex는 이하에서 설명된 트리거 버스 플래그에 관한 것인 반면에, 어드레스 0814 내지 0fff는 데이타 버퍼, 스크래치 패드 위치 등으로서 사용된다 보조 공간 중에서 특정 어드레스는 다음과 같이 사용된다.
0401ㅗㅗH 탈출 부트 모드(기록 fOH) (GSP 하드리셋 생성)
0405H 직렬 포트 리셋(기록)
0406H 전체 브레이크 진입(기록) (GSP 소프트 리셋 생성)
0407H 전체 브레이크 탈출(기록) (GSP 소프트 리셋 생성)
0408H GSP1 브레이크 진입(기록) (GSP 소프트 리셋 발생)
0409H GSP2 브레이크 진입(기록) (GSP 소프트 리셋 발생)
040aH GSP3 브레이크 진입(기록) (GSP 소프트 리셋 발생)
040bH GSP4 브레이크 탈출(기록) (GSP 소프트 리셋 발생)
040cH GSP1 브레이크 탈출(기록) (GSP 소프트 리셋 발생)
040dH GSP2 브레이크 탈출(기록) (GSP 소프트 리셋 발생)
040eH GSP3 브레이크 탈출(기록) (GSP 소프트 리셋 발생)
040fH GSP4 브레이크 탈출(기록) (GSP 소프트 리셋 발생)
0410H 직렬 포트 1 내부 클럭 속도 선택
(기록 00=CK/2048) (기록 01=CK/1024)
(기록 02=CK/514) (기록 03=CK/256)
(기록 04=CK/128) (기록 05=CK/64)
(기록 06=CK/32) (기록 07=CK/16)
CK 는 SPROC 클럭(50MHz)이다.
0411H 직렬 포트 2 내부 클럭 속도 선택
0412H 직렬 포트 4 내부 클럭 속도 선택
0413H 직렬 포트 4 내부 클럭 속도 선택
0414H 직렬 포트 5 내부 클럭 속도 선택
0415H 직렬 포트 6 내부 클럭 속도 선택
0416H 직렬 포트 7 내부 클럭 속도 선택
0417H 직렬 포트 8 내부 클럭 속도 선택
0440H 내지 0447H 직렬 포트 1 (pradd=0800H)
0448H 내지 044fH 직렬 포트 2 (pradd=0801H)
0450H 내지 0457H 직렬 포트 3 (pradd=0802H)
0458H 내지 045fH 직렬 포트 4 (pradd=0803H)
0460H 내지 0467H 직렬 포트 5 (pradd=0804H)
0468H 내지 046fH 직렬 포트 6 (pradd=0805H)
0470H 내지 0477H 직렬 포트 7 (pradd=0806H)
0478H 내지 047fH 직렬 포트 8 (pradd=0807H)
0480H 내지 0487H DAC(프로우브) 입력 포트(pradd=0808H)
0488H 내지 048H DAC(프로우브) 직렬 출력 포트
04fcH 내지 04ffH 호스트 인터페이스 레지스터
메모리 위치 1000 내지 fff Hex는 외부 어드레스 공간(예를 들어, 슬레이브 SPROC, 다른 비바이스 또는 메모리)에 관한 것이다.
데이타 램(100)내의 보조 메모리 위치에서는 각 GSP에 브레이크 진입 및 브레이크 탈출 데이타 어드레스가 주어진다는 것을 주의해야 한다. 모든 GSP가 함께 브레이크되도록 브레이크가 구현될 때, 제2도의 실시예는 버스(155)가 부트/브레이크 ROM(190)에 연결되도록 하고 있지만, 상이한 회로가 개개의 GSP 브레이크를 허용할 것이다.
각 직렬 포트에 제공된 8개의 24 비트 위치는 이하에서 기술된 바와 같이, 각 직렬 포트와 관련된 DFM 섹션 뿐만 아니라, 직렬 포트들을 배치하기 위하여 사용된다. 마찬가지로, 호스트 포트에 할당된 메모리의 8개의 워드가 이하에서 기술된 바와 같이 호스트 포트를 배치하기 위해 사용되는 반면, 프로우브의 입력 포트및 출력 포트에 할당된 메모리의 8개의 워드는 상기 프로우브를 배치하기 위해 사용된다.
더욱이 메모리 위치와 관련하여, 정보가 지시된 임의의 직렬 포트 위치에 기록되어졌을 때, 트리거 플래그 어드레스가 되는 또다른 어드레스(pradd)가 DFM(600)에 의해 생성되고(이하에서 기술), 데이타 RAM 버스(125)에 기록되어진다는 것을 유의해야 한다. 데이타 RAM 버스(125)에 특정 어드레스를 기록하는 것은 디코더(196)에 의해 모니터된다. 제13도에서 알 수 있는 바와 같이, 디코더(196)는 논리적으로 11개의 입력 AND 게이트(1210), 16개의 입력, AND 게이트(2020 내지 2036)및 15개의 인버터(2050a 내지 2050o)로 구성된다. 본질적으로 데이타 RAM 버스(125)에 기록된 24 비트 데이타 어드레스 중 처음 4 비트는 16진수 "0"에 대한 선택을 위해 인버터(2050a 내지 2050d)에 의해 반전된다. 상기 어드레스 중 6번째 내지 8번째 비트가 인버터(2050e 내지 2050g)에 의해 반전되는 반면, 5번째 비트는 AND 게이트(1210)로 직접 전달된다; 5번째 내지 8번째 비트는 16진수 어드레스 "8"에 대한 선택을 위해 상기 인버터(2050 내지 2050g)에 의해 반전된다. 9번째 내지 11번째 비트는 12번째 비트와 함께 16진수 "0" 또는 "1"을 선택하기 위해 인버터(2050h 내지 2050j)에 의해 반전되고, 최종 5 비트(12 번째 내지 16 번째 비트)는 인버터(2050k 내지 2050o)에 의해 반전되고, 상기 최종 5 비트의 비반전 및 반전 상태는 임의의 어드레스(0800 내지 0813)가 데이타 버스(125) 즉, 디코더(196)에 의해 수신된)상에 위치하게 된다면, AND 게이트(2010)의 출력과 함께 트리게 버스(198)상에 적합한 양의(positive) 출력을 제공하기 위해 6개의 입력 AND 게이트에 상이한 조합들로 제공된다.
제4도에 본 발명의 바람직한 일반적인 신호 처리기(GSP)(400)의 블럭도가 도시되어 있다. GSP는 프로그램 RAM 버스(155)를 통하여 프로그램 RAM(150)에 연결된다. 바람직하게는 이 프로그램 RAM(150)이 다수의 GSP(400)에 의해 공유되기 때문에, 프로그램 RAM 버스에 대한 액세스는 제3도에 도시된 바와 같이 시분할 멀티플렉스된다. 프로그램 RAM 버스(155)는 24비트 폭이 데이타 버스 및 1K 프로그램 RAM이 이용되는 10비트 폭의 어드레스 버스로 구성된다. 물론, 더 큰 프로그램 RAM이 요구된다면, 동일한 것을 어드레스 지정하기 위해 부가적인 비트가 필요하고, 프로그램 RAM 버스는 더 넓어질 것이다. 제4도에 도시된 바와 같이, GSP(400)는 어느 명령(RAM 위치)이 요구되는지를 나타내기 위해 프로그램 RAM 버스의 어드레스 섹션에 기록한다. 그러나, 통상의 작동 상태 하에서는, GSP(400)가 데이타를 프로그램 RAM(150)에 기록할 수 없다. 통상의 작동 상태 하에서 데이타는, 시분할 멀티플렉스 방식으로 프로그램 RAM 버스(155)에 연결된 제2도에 도시된 호스트 또는 액세스 포트를 통해서만 프로그램 RAM(150)에 기록되어진다.
상기 GSP(400)는 또한 데이트 RAM 버스(125)를 통하여 멀티포트 데이타 RAM(100)에 연결되어 있다. 데이타 RAM(100)이 처리기 아키텍쳐에서 중추적이고, 데이타 RAM(100)에 대한 비-조정된(nonarbitrated)액세스가 요구되기 때문에, 데이타 RAM(100)은 참(true)멀티포트 데이타 RAM 이어야 하거나, 멀티포트 RAM을 효과적으로 생성하기 위해 데이타 RAM 버스(125)를 통한 데이타 RAM(100)에 대한 액세스가 시분할 멀티플렉스 되어야 한다. 데이타 RAM 버스는 바람직하게는 16비트폭의 데이타 RAM 어드레스 버스 및 24비트 폭의 데이타 RAM 데이타 버스를 포함하고 있다. 제3도 및 제4도에 도시된 바와 같이, GSP는 프로그램 RAM(100)의 어드레스 섹션에 기록될 수도 있다. 또한, GSP는 데이타 RAM 버스의 데이타 섹션에 판독 및 기록을 할 수 있다.
GSP는 6개이 섹션의 세부 사항 및 기능에 의해 실질적으로 설명되는데, 이 6개의 섹션은 블럭 제어기(410), 프로그램 제어 논리 블럭(420), 곱셈기 블럭(430), ALU 블럭(450), 플래그 블럭(460) 및 데이타 RAM 어드레스 생성기 블럭(470)이다. 브레이크 레지스터(492), 데이타 액세스 레지스터(494) 및 암시 레지스터(496)뿐만 아니라 이 6개의 섹션을 결합시키는 것은 내주 24비트 버스(490)이다. 임의의 섹션 또는 내부 버스(490)상의 레지스터(492, 494 또는 496)로부터의 모든 액세스는 3상 드라이버(tristate driver)(429, 449a, 449b, 459, 469, 489 및 499)를 통해 행해진다.
블럭 제어기(410)는 명령 디코더(412) 및 시퀀서(sequencer)(414)로 구성된다. 명령 디코더(412)는 인에이블될 때 프로그램 RAM 버스에 데이타부 중 14 비트(9 비트의 op코드 및 5비트의 오퍼랜드)를 떼낸다(take off). 상기 9개의 op코드 비트 중 6 비트는 64개의 명령이 수용되기까지, 상기 GSP가 수행할 동작(명령)(예를 들어, 덧셈, 시프트, 점프 등)을 나타내기 위해 사용된다. 바람직한 실시예에서 op코드의 부가적인 3 비트는 GSP가 사용할 어드레싱 모드를 지정하는데 사용된다. 특히, "절대" 모드(코드 000)에서, 어드레스 생성기 블럭(470)의 0 레지스터(472)내의 15 비트는 데이타 RAM(100)내의 어드레스를 선택하는데 사용되고, 데이타 RAM의 이 어드레스내의 데이타는 작동을 위해 사용된다. "레지스터" 모드(코드 001)에서, 명령 디코더(412)에 의해 얻어진 5개의 오퍼랜드 비트는 GSP의 다수의 레지스터 중 어느 레지스터가 내부 버스(490) 상에 자신의 내용을 둘 것인지 지정하기 위해 사용된다. "바로 우측(immediate right)" 모드(코드 011)에서 0 레지스터 내의 데이타의 15 비트가 내부 버스의 15개의 lsb 슬롯내에 놓이는 반면, "바로 좌측(immediate left)" 모드(코드 010)에서는, 0 레지스터 내의 데이타의 15비트가 내부 버스(490)의 15개의 msb 슬롯 내에 놓여질 것이다.이하 보다 상세히 기술된 바와 같이, "BL 인덱스" (코드 100), "B 인덱스"(코드 101), "FL 인덱스" (코드 110) 및 "F 인덱스" (코드 111)의 나머지 4가지 모드에서, 베이스 레지스터 B 또는 F의 값이 상기 0 레지스터에 저장된 15 비트 오퍼랜드의 값에 더해지고, 적당한 곳에서 L(루프) 레지스터내의 값에 더해지며, 데이타 RAM 버스(125) 상에 출력된다.
명령 디코더(412)는 라인(416)을 통해 프로그램 RAM 버스뿐만 아니라 상기 GSP 의 다수의 멀티플렉서, 3상 드라이버, 레지스터 등에 연결되어 있다. 명령 디코더(412)에 의해 디코딩되는 명령을 기초로 하여, 다양한 상기 라인(416)들이 시퀀서(414)에 의해 결정된 순서로 인에이블된다. 사실상 명령 디코더(412) 및 시퀀서(414)는 단순히 룩업 챠트인데, 명령 디코더(412)는 OP코드의 9개의 비트에서 발견되는 코드를 기초로 어느 라인(416)이 인에이블되어야 하는지를 검사하고, 시퀀서(414)는 인에이블된 라인이 속해 있는 순서를 검사한다.
GSP(400)가 프로그램 RAM 버스(155)를 액세스하도록 허용되었을 때, 명령 디코더(412)는 프로그램 RAM 버스(155) 상에 있는 어떤 명령이라도 디코드하는 반면, 이 버스상에 있는 명령은 프로그램 논리 블럭(420)에 의해 생성되고 명령이 내려진다(dictate). 프로그램 제어 논리 블럭(420)은 3상 드라이버(422), 프로그램 어드레스 값 레지스터(424)("P" 레지스터라고도 불림), 증분기(incrementer)(425), 증분(I) 레지스터(426), 점프(J) 레지스터(428), 멀티플렉서(430) 및, 분기(branch) 논리 블럭(432)으로 구성된다. 이 P 레지스터(424)는 GSP(400)에 의해 사용되어질 마이크로 명령을 포함하는 프로그램 RAM(150)의 위치를 포함하고 있다. P 레지스터(424)는 상기 위치를 버스 인터페이스로서 작용하는 3상 드라이버(422)에 보냄으로써 프로그램 RAM 버스(155)상에 어드레스를 기록한다.
P 레지스터(424)의 갱신은 분기 논리 블럭(432)으로부터의 정보를 근거로 하여 I 레지스터(426) 또는 J 레지스터 (428)에 저장되어 있는 12 비트 어드레스들 중 한 어드레스를 선택하는 muxP(430)를 통해 이루어진다. 상기 I 레지스터에 저장된 어드레스는, 1이라는 값이 증분기(425)에서 P 레지스터(424)에 저장되어 있는 값에 더해지기 때문에 단순히 상기 P 레지스터에 저장된 어드레스 바로 다음의 숫자로 된 어드레스이다. 대부분의 상황에서는 muxP(430)가 P 레지스터(424)가 I 레지스터에 의해 갱신되어지는 것을 허용할 것이고 프로그램 RAM을 순차적으로 어드레싱하는 것이 계속될 것이다. 그러나, 루틴에서 점프가 요구되는 것과 같은 일부 상황에서는, 멀티플렉서(430)가 J 레지스터(428)내의 어드레스가 P 레지스터(424)내로 로드되어지는 것을 허용할 것이다. 점프로의 결정은 이하 기술된 바와 같이 다수의 상태 플래그의 상태를 판독하는 분기 논리 블럭(432)에 의해 행해진다. 점프가 행해지는 어드레스는 내부 버스(490)로부터 J 레그(428)에 의해 얻어지는데, J 레그 (428)는 GSP(400)의 임의의 섹션으로부터(또는 데이타 RAM(100)으로부터) 어드레스를 얻을 수도 있다.
브레이크 레지스터(492)는 프로그램 제어 논리 블럭(420)에 연결되어 있는데, 브레이크 명령이 실행되자마자 이 브레이크 레지스터(492)로 P 레지스터의 값에 1을 더한 값뿐만 아니라 상태 플래그 정보가 로드된다. 상태 플래그 및 P 레지스터 정보는 3상 드라이버(429)를 통해 내부 버스(490)에 연결된 브레이크 레지스터(492)에 저장되어 있는데, 이는 그렇지 않으면 이러한 정보가 내부 버스(490)상으로 위치하도록 할 때 활용가능하지 않기 때문이다. 프로그램 브레이크는 일반적으로 정보 덤프가 시스템 사용자에 의해 요구될 때 실행되며, 이는 GSP(400)로 하여금 데이타 RAM(100)의 특정 어드레스(예를 들어, 0406H)에 기록하도록 하는 프로그램 RAM(150)에 명령을 둠으로써 이루어진다. 데이타 RAM 버스(125)상의 디코더(도시되지 않음)는 (기록되어질 위치에 기초하여) 프로그램 브레이크가 실행될 것인지를 결정하기 위해 사용되고, 제어신호가 디코더에 의해 브레이크 레지스터(492)에 제공된다. 프로그램 RAM(150)의 프로그램 브레이크 명령은 프로그램 RAM 버스(155)에 연결된 부트/브레이크 ROM(190)(제2도에 도시)내의 명령이 프로그램 제어 논리 블럭(420)에 의해 어드레싱되도록 한다. 상기 부트/브레이크 ROM(190)내의 명령 코드는 GSP(400)내의 각 레지스터의 값이 차례대로 데이타 RAM(100)의 원하는 위치에 기록되도록 한다. 그 후에, 대기 플래그 레지스터(이하 기술됨)에 저장된 대기(wait) 플래그가 지워질(clear) 때까지 GSP(400)는 대기 상태를 유지한다. 만약 원한다면, 대기 주기동안 사용자는 데이타 RAM 내의 데이타 값을 바꿀 수 있는데, 액세스 포트(900)와 관련하여 이하에서 보다 상세히 설명될 것이다. 그 후에, 대기 싸이클이 종료되면, 부트/브레이크 ROM(190)에 있는 명령은 임의의 새로운 값을 포함하는 데이타 RAM의 값이 GSP의 적절한 레지스터에 다시 기록되어지도록 한다. 프로그램 RAM(150) 위치에 포함된 그 다음에 원하는 마이크로 명령의 위치가 P 레지스터내로 로드되며, 이에 의하여 GSP는 통상의 방식으로 계속될 수 있다.
GSP의 곱셈기 블럭(430) 및 ALU 블럭(450)은 GSP를 위해 수치 계산을 수행한다. 곱셈기 블럭(430)은 2개의 입력 레지스터 Xreg(432) 및 Yreg(434), 3상 드라이버(449a)를 통해 내부 버스(490)에 연결된 멀티플렉서(436), 포스트 Xreg(439)를 가진 곱셈기(438), 곱셈기 제어(441), 합산기(442), 출력 레지스터 Mreg(444) 및 3상 드라이버(449b)를 통해 6개의 워드 중 어떤 것이 내부 버스(490)상에 출력 되어질 것인지를 선택하는 제2 멀티플렉서(446)로 구성된다. 일반적으로 피승수(multiplicand)는 Xrey(432)로 로드된다. 그 후에, 상기 피승수가 포스트 Xreg(439)내로 로드되는 동안 곱셈기가 Yreg(434)로 로드된다. 곱셈기 제어(441)는 곱셈기(438)가 여러 머신 클럭 싸이클(예를 들어, 총 300ns가 되는 3 클럭 싸이클=15 내부 GSP 싸이클)에 걸쳐 기능을 하는 것을 허용한다. 곱셈을 하는데 있어 곱셈기가 오버플로우된다면, 상태 플래그 M이 설정되고, 이러한 정보가 프로그램 논리 섹션(420)의 분기 논리 블럭(432)으로 전달된다. 그럼에도 불구하고, 곱셈기의 결과 및 피승수는 합산기(442)로 보내어지며, 합산기는 누산-곱셈 모드에서, 새로운 결과를 이전의 결과들의 합에 더하고, 이 합을 곱셈 레지스터 M(444)로 보낸다. 순수한 곱셈 모드에서는, 0을 더하여 그 결과를 M 레지스터로 보내는 가산기를 통하여 이 결과가 보내어지도록 하기 위하여, 가산기의 내용이 클리어된다.
M 레지스터(444)의 내용은 내부 버스(490)가 이용할 수 있다. 그러나, M 레지스터가 56 비트 워드를 수용할 수 있고, 내부 버스(490)가 24 비트 버스이기 때문에, 한번에 상기 M 레지스터 워드 중 일부만이 버스 상에 위치하게될 수 있다. 따라서, M 레지스터의 24 최하위 비트(lsb's), M 레지스터의 그 다음의 24 lsb's, 또는 M 레지스터의 8 최상위 비트(msb's)를 선택하기 위해 멀티플렉서(446)가 제공된다. 8msb's가 선택되면, 상기 8msb's는 내부 버스(490)의 81sb 슬롯에 위치되고, 8 비트 중 msb는 버스 상의 msb 슬롯까지 확장된다(예를 들어, msb가 "1"이면, 버스상의 제1의 17msb's는 "1"일 것이다). 멀티플렉서(446)는 또한 2만큼 왼쪽으로 쉬프트된(우측을 채운 0) 24 또는 8 비트 워드를 선택할 수 있다. 따라서, 멀티플렉서(446)는 M 레지스터(444)의 결과를 기초로 총 6개의 상이한 출력을 제공할 수 있다.
상기 처리기의 ALU 블럭은 기본적으로 입력 레지스터(454)를 가진 산술-논리 유닛(452) 및, 출력 누산기(accumulator) 레지스터(456)를 가진 표준 ALU이다. 상기 산술 논리 유닛(452)은 가산, 감산 등과 같은 유사한 유닛들의 표준적인 기능을 수행할 수 있고, 캐리(C), 오버플로우(O), 부호 비트(S) 및, 제로(Z)를 포함하는 상태 플래그뿐만 아니라, Areg(456)에 대한 값을 생성한다. 상기 상태 플래그는 마이크로코드 프로그램의 조건 점프가 실행되야할 지를 결정하기 위해 프로그램 논리 블럭(420)의 분기 논리 블럭(432)에 의해 사용된다. Areg 내용은 3상 드라이버(459)를 통해 내부 버스(490)상에 출력된다.
대기 플래그 블럭(460)은 2개의 대기 플래그 레지스터인 WFreg(462) 및 DFreg(464), 멀티플렉서(466) 및 OR 게이트(468)로 구성된다. 대기 플래그 레지스터의 비트는 내부 버스(490)를 통해 보내온 데이타에 의해 설정(즉, 기록)될 수 있다. 또한, 레지스터 WFreg(462) 및 DFreg(464)는 데이타 RAM(125)의 미리 정해진 위치가 어드레싱될 때마다 기록되는 플래그 버스(198)에 연결되어 있는데 이하에서 제2도 및 제13도와 관련하여 설명될 것이다. 이와 같은 방식으로, 대기 플래그 레지스터(462 및 464)의 각 비트는 선택적으로 지워질 수 있다. 레지스터 WFreg(462)의 모든 비트가 특정한 이벤트(예를 들어, 데이타 RAM이 다른 계산에 필요한 모든 정보를 수신한 이벤트)이 발생으로 인해 지워졌다면, OR 게이트(468)가 동일한 것을 나타내는 상태 플래그 W를 제공하기 위해 사용된다. 상태 플러그 W는 분기 논리 블럭(432)에 의해 판독된다. 이와 같은 방식으로, "대기 플래그 상에서 점프" 명령어가 실행될 수 있다. 모드 제로(또는 1)만 존재한다는 것을 나타내는 어떠한 신호도 DFreg에 의해 출력되지 않는다는 점을 제외하고는, 대기 플래그 블럭(460)의 DFreg(464)는 WFreg(462)와 유사하게 기능을 한다. DFreg(또는 WFreg의 모든 값이 제로가 아닐 경우에 WFreg)의 내용을 체크하기 위해서, 레지스터는 내부버스(490)상에 자신의 내용을 두도록 선택되어야 한다. 레지스터 중 한 레지스터의 선택은 명령 디코드(412) 및 시퀀서(414)에 의해 행해지고, 그 내용은 멀티플레서(466) 및 3상 드라이버(469)를 통해 보내어진다. DFreg(464)가 모두 제로를 갖는지를 결정하는 쉬운 방식은 DFreg(464)의 내용을 ALU(452)으로 보내는 것인데, 그 내용이 제로이면 상태 플래그 Z를 제공할 것이다.
일반적인 신호 처리기의 최종의 큰 블럭은 버스 너비의(bus wide) OR 게이트(471), 레지스터 Oreg(472), Dreg(473), Lreg(474), Breg(476), Freg(477), 가산기(481,482,483), 멀티플렉서 muxBFL(484), muxL(485), muxA(486), muxBF(487), muxO(488) 및 어드레스 액세스 블럭(489)을 포함하는 데이타 RAM 어드레스 생성기 블럭(470)이다. 상기한 바와 같이, Oreg(472)는 프로그램 RAM 버스상의 명령 중 15 최하위 비트를 얻는다. "절대" 어드레싱이 요구되면, 즉, 데이타 RAM 버스 상에 기록될 어드레스가 프로그램 RAM 마이크로 명령 그 자체에 포함되면, 이 어드레스는 Oreg(472)내에 기록되고, 그 후에 muxA(486) 및 어드레스 액세스 블럭(489)을 통해 데이타 RAM 버스(제로 확장기에 의해 더해진 16번째 비트, 도시되지 않음)로 보내진다. 그 후에 16 비트 어드레스는 적절한 때에 데이타 RAM 버스 상에 위치하게 된다. 모든 다른 상황은 "인덱스" 어드레싱을 구성하는데, 이 인덱스 어드레싱에서는 데이타 RAM 버스 상에 위치될 어드레스가 데이타 RAM 어드레스 생성기 블럭(470)에 의해 내부적으로 생성된다.
어드레스는 다수의 레지스터에 있는 값들을 더함으로써 생성된다. 특히, 제4도에 도시된 바와 같이, Oreg(472)는 오프셋 레지스터이며, Oreg(473)은 증분 레지스터이며, Lreg(474)는 루프의 길이를 설정하는 루프 레지스터이며, Breg(476)는 베이스 어드레스 레지스터이고, Freg(477)는 제2 베이스 어드레스 레지스터로서 작용하는 프레임 어드레스 레지스터이다. 상기 0 레지스터는 프로그램 RAM 버스의 데이타 오프(date off)를 얻는 반면에, 레지스터 D, L, B 및 F는 내부 버스(490)로 부터 그들의 데이타를 얻는다. 어드레스를 생성하기 위해, 베이스 또는 프레임 레지스터(즉, "B 인덱스 모드" 또는 "F 인덱스 모드")의 값에 어떤 오프셋 값을 더하는 것이 바람직하다면, muxBF(487)는 Breg(476) 또는 Freg(477)을 적절히 선택하고, muxBFL(484)은 muxBF(487)로부터 오는 값을 선택하며, Breg 또는 Freg 값이 가산기(483)에 의해 Oreg의 오프셋 값에 더해진다. 그 후에 상기 값은 어드레스 액세스 블럭(489)을 통해 데이타 RAM 버스상에 출력되도록 muxA(486)에 의해 선택된다. 마찬가지로, 베이스 또는 프레임 레지스터(즉, "BL 인덱스 모드" 또는 "FL 인덱스 모드")의 값에 오프셋 값 및 루프 값이 더해지도록 요구되면, L 레지스터의 값이 가산기(482)에서 B 또는 F 레지스터의 값에 더해지고, 그 합은 muxBFL(484)을 통해 가산기로 보내어져서, 가산기에서 0 레지스터의 값에 더해진다.
가산기(481)를 제공하고, 감소(decrement) 레지스터 Dreg 및 루프 레지스터 Lreg를 가산기(481)에 연결함으로써, 레지스터 어드레스 루프가 이루어진다. 특히, 상기 Lreg는 루프의 길이를 설정하는 반면에, Dreg는 상기 루프가 어느 값까지 감소될 것인지 그 값을 설정한다. Dreg가 가산기(481)에서 Lreg(475)로부터 감산될때마다, 새로운 값이 muxL(485)을 통해 Lreg(475)내로 피드백된다. 따라서, DJNE 명령이 실행될 때마다(이하에서 설명됨) Lreg의 결과적인 값이 상기 Dreg의 값까지 감소된다. 가산기(482)에 의해 Breg 또는 Freg에 더해지면, 발생된 어드레스는 실제로 증분 어드레스인데, Dreg의 값이 양수인 실질적으로 감소하는 어드레스이고, Dreg의 값이 음수인 실질적으로 증가하는 어드레스이다.
루프하는 능력은 데이타 RAM 버스를 위하여 감소(또는 증가) 어드레스를 제공하는데 이용될 뿐만 아니라 동등하지 않은 감소 및 점프"(DJNE)가능성을 제공함으로써 프로그램 RAM 어드레스 생성에 변화를 주기 위해 이용된다. 가산기(481)의 출력은 상태 플래그 L(루프)을 분기 논리 블럭(432)에 제공하는 OR 게이트(471)에 의해 판독된다. 상기 상태 플래그 L은 L 레지스터가 값이 0으로 감소되도록 충분한 횟수만큼 루프를 돌 때까지, 그값을 유지한다. 상기 시점 이전에 상기 Lreg 가 제로가 아닐 때, GSP의 그 다음 명령은 Jreg(428)에 지시된 명령에 의해 명령된다(dictate). 환언하면, 프로그램은 I 레지스터에 위치된 그 다음 명령을 계속하는 대신에 Jreg 명령의 위치로 점프한다. 그러나, Lreg가 값 제로까지 감소하면, OR 게이트(471)는 낮아지고(low) 플래그 L을 토글한다. 그 다음의 DJNE 명령에서 "동등하지 않은"상태는 존재하지 않기 때문에(즉, Lreg가 값 제로이기 때문에), 분기 논리(432)는 프로그램 논리 블럭(420)의 muxP(430)가 Jreg(428) 대신에 Ireg(326)으로부터 값을 얻게 하고, 프로그램은 계속된다.
muxw(488)(및 적당한 mux BF(487))가 적당한 레지스터를 선택하게 하고, 그 내용을 3상 드라이버(489)를 통해 내주 버스로 보냄으로써, 임의의 O, D, L, B 또는 F 레지스터의 값은 내부 버스(490)상에 위치될 수도 있다.
데이타 액세스 포트(494)는 내부 버스(490)에 연결되어 있으며, 데이타 RAM 버스 상의 데이타 슬롯과 함께 상기 내부 버스(490)에 인터페이스한다. 데이타 액세스 포트(494)는 데이타 RAM으로부터 데이타를 판독하고 상기 RAM에 데이타를 기록할 수 있으며, 전술한 바와 같은 시분할 멀티플렉스 방식으로 데이타 RAM을 액세스할 수 있다. 데이타 RAM 에 기록할 때, 데이타 액세스 포트(494) 및 어드레스 액세스 포트(489)가 동시에 활성화된다. RAM으로부터 데이타를 판독할 때, 어드레스 액세스 포트(489)가 우선적으로 원하는 데이타가 저장된 데이타 RAM 어드레스를 데이타 RAM 버스 상에 둔다. 그후에, 상기 데이타는 데이타 RAM에 의해 데이타 RAM 버스상에 위치되고, 실질적으로 이중 3상-드라이버인 데이타 액세스 포트(494)가 상기 데이타를 수신하여서, 원하는 GSP 레지스터에 저장하기 위해 내부 버스상에 상기 데이타를 전달한다.
만약 원한다면, Z 레지스터(496)와 같은 부가적인 레지스터가 내부 버스(490)에 연결될 수 있고, 임시 기억장치로서 사용될 수도 있다. Zreg (496)의 내용은 3상 드라이버(499)를 통해 내부 버스(490)상에 출력된다.
상기 GSP의 기능은 단지 설명을 목적으로 제공된 이하의 마이크로코드의 예에 충분히 설명된다:
제1 명령(0000)은 대기 레지스터에 값 8이 로드되게 한다. 명령(0001)은, 803H 의 트리거 플래그 어드레스가 다른 GSP 또는 시스템의 다른 회로에 의해서 기록되어질 때까지 상기 GSP가 대기하도록 한다. 명령(0001)은 (어드레스 803H에 기록하는 것에 제어된) 대기 플래그가 토글될 때까지 GSP에게 명령(0001)으로 점프하도록 명령함으로써 이러한 대기를 수행한다. 일단 대기 플래그가 토글되면, 명령(0002 내지 0004)이 데이타 RAM 어드레스 생성기 블럭(470)의 P, L, B 레지스터를 설정한다. 루프 레지스터를 값 7로 설정하고, D 레지스터를 값 1로 설정함으로써, 루프는 8번 수행될 것이다.
명령(0006 및 0007)은 루프를 포함한다. 명령(0006)은, 베이스 및 루프 레지스터에서의 값이 가산기(482)에 의해 함께 더해지고, 0 레지스터(472)에 포함된 제로 값에 더해져서, 데이타 RAM 버스 상에 놓여진다. 그 후 데이타 RAM 위치 B+L에서의 값은 데이타 RAM 버스상에 위치하게 되며 데이타 엑세스 블럭(494)을 통해 ALU(452)로 보내지고 A 레지스터(458)에서 누적된다. 명령(0007)의 DJNE 어셈브리 코드 명령은 L 플래그가 토글되었는지 검색한다. 그렇지 않다면, L 레지스터는 D 레지스터에서의 값만큼 감소되며, 프로그램은 SLOOP로 역으로 점프한다. 즉, 명령(0006)은 L의 새로운 값을 B 레지스터에 부가하여, 그것을 데이타 RAM 버스 상에 위치하게 한다. 상기 데이타 RAM 위치에서의 값은 데이타 RAM 버스상에 위치되며, 데이타 액세스 블럭(494)을 통해 보내지며, ALU에서 A 레지스터(456)에서의 값과 더해져서, A 레지스터(456)에서 누적된 값으로 저장된다. 이러한 처리는 L이 제로와 같아지고, L 플래그가 토글될 때까지 계속된다. 그 후, 명령(0007)에 도착하자마자, 감소 또는 점프는 수행되지 못한다. 좀더 정확히 말하면 프로그램은 명령(0008)을 계속한다.
명령(0008)에서, Areg(456)의 값은 ALU(452)의 상태 플래그를 검사함으로써 테스트된다. 값이 양수라면, 프로그램은 명령(000b)으로 점프한다(어드레스는 Jreg(428)에 위치된다). 값이 음수라면, 명령(0009 및 000a)이 수행된다. 0009에서, ALU(452)가 누산기의 1의 보수를가지고 가서, 단계(000a)에서, 값 1을 더한다. 이러한 방법으로 누산기에서 값 2의보수가 제공된다.
명령(000b)에서, 누산기의 양수 및 또는 생성된 2의 보수는 Areg 레지스터(456)에서 곱셈기 블럭(530)의 Xreg 레지스터(432)로 로드된다. 명령(000c)은 Xreg 레지스터(432)의 값에 값 1.2가 곱해지도록 한다. 곱셈 기능은 많은 단계와 여러 싸이클을 필요로 하기 때문에, 명령(000d 및 000e)은, cisp의 곱셈기가 프로그램을 계속해서 수행하기 전에 계산을 종료시키는 것을 허용하는 NOP(no operation) 명령이다. 그러나, ALU 섹션(450)에서 산술 또는 논리 계산을 하고, 데이타 RAM으로부터 값을 가져오고(fetch) 또는 기록하도록 요구된다면, GSP는 동작을 수행하며, 곱셈기 섹션(430)이 관련되지 않는 경우 동시 동작(concurrent operration)을 수행할 수 있을 것이다.
명령(000f)은 곱셈기 오버플로우 플래그 M을 테스트한다. 곱셈기가 곱셈으로 인하여 오버플로우되면, 에러는 플래그되고, 프로그램은 명령(0012)으로 점프한다. 만일 에러가 있다면 명령(0012)은 값 제로를 ALU 블럭(450)의 A 레지스터(450)로 로드시킨다. 그 때, 명령(0013)에서, A 레지스터의 값은 데이타 RAM의 위치 923H에 기록된다. 전체 프로그램은 GSP를 대기 상태로 두는 명령(000)으로 역으로 점프하는 명령(0014)에 의해 다시 시작된다. 만일 플래그 M으로 표시된 에러가 없다면, 명령(0012)으로 점프하는 대신에, 프로그램은 명령(0010)을 계속 수행한다. 명령(0010)은 내부 버스(490)에 기록되고, 데이타 액세스 포트(494)를 통해 데이타 RAM 버스로 인출되는 값을 가짐으로써, M 래지스터(444)의 값이 RAM 위치 823H에 저장되도록 한다. 그 때, 명령(0011)은 GSP를 대기 상태로 두는 프로그램의 시작점(명령 000)으로 역으로 점프되게 한다.
GSP의 부가적인 이해는 GSP에 의해 달성된 샘플 함수의 어셈블리 코드 및 오퍼랜드를 검색함으로써 이루어질 수 있다. 특히, 다음의 18 싸이클 명령 세트는 제5도에 도시된 구조를 갖는 바이쿼드 필터를 위한 리스트를 가지고 있다. 제5도에서, 입력 값 x는 블럭(506)에 저장된 파라미터 값에 의해 곱셈기(504)에서 곱해진다. 지연 블럭(512)에 의해 지연된 이전의 x값은 x1으로 표시되며, 곱셈기(514)에서 블럭(516)에서 얻어진 파라미터 값 ib1로 곱해진다. 지연 블럭(522)에 의해 지연된 x1 값 이전의 x값은 x2로 표시되며, 곱셈기(524)에서 블럭(526)에서 얻어진 파라미터 값 1b2으로 곱해진다. ib0×x, ib1×x1, ib2×x2 의 값은 합산 블럭(530)의 출력으로부터 발생된 부가적인 값과 함께 합산 블럭(530)에서 합산된다. 그러므로, 지연 블럭(532)에 의해 지연된 이전의 출력 y는 y1로 표시된다. y1 값은 블럭(536)으로부터 곱셈기(534)에서 파라미터 값 ia1으로 곱해진다. 마찬가지로 지연 블럭(542)에 의해 지연된 y1의 이전 출력은 y2로 표시된다. y2 값은 블럭(546)에서 얻어진 파라미터 값 ia2로 곱셈기(544)에서 곱해지며, 그 후 다른 결과에 더해진다.
파라미터 값 ib0, ib1, ib2, ia1 및 ia2를 포함하며, 변화하는 변수 x1, x2, y1 및 y2를 포함하는 바이쿼드의 블럭 다이어그램은 다음과 같이 GSP에 의해 구현될 수 있다.
라인# 어셈블리 코드 코멘트
1 LDX x2 x 레지스터에 샘플 x2을 로드
2 MPY ib2 x2에 ib2를 곱함
3 NOP 동작하지 않음
4 LDX x1 곱셈이 계속되는 동안 x 레지스터에 샘플 x1을 로드
5 MAC ib1 x1×ib1을 수행하고, x2×ib2에 누적
6 STX x2 다음 계산을 위해 위치 x2에 x레지스터(x1)의 값을 저장
7 LDX [in] x 레지스터에 어드레스에 있는 데이타를 로드
8 MAC ib0 이전의 곱셈이 계속되는 동안, 값에 ib0을 곱하고 다른 값에 누적
9 STX x1 다음 계산을 위해 위치 x1에 x레지스터의 값을 저장
10 LDX y2 x 레지스터에 샘플 y2을 로드
11 MAC ia2 y2에 ia2를 승산하고 다른 값에 누적
12 NOP 곱셈 대기 동안 동작 없음
13 LDX y1 곱셈이 계속되는 동안, x 레지스터에 y1을 로드
14 MAC ia1 y1에 ia1을 곱하고, 다른 값에 누적
15 STX y2 다음 계산을 위해 위치 y2에 x 레지스터(y1)의 값저장
16 NOP 곱셈 대기 동안 동작 없음
17 STMH y1 다음 계산을 위해 위치 y1에서 M 레지스터 누적된 값의 상위 부분(high section)을 저장
18 STMH [out] 출력 위치에서 M 레지스터 누적된 값의 상위 부분을 저장
코드의 라인 1-3은 GSP의 곱셈기가 파리미터 값 ib2으로 x2 값(즉, 위치 x2에 기억된 값)에 곱하도록 한다. 코드의 라인 4 및 5는 곱셈기가 파라미터 값 ib1로 x1 값(즉, 위치 x1에 기억된 값)에 곱하여, x2 및 ib2의 결과에 이 결과를 더 해지도록 한다. 코드의 라인 6은, x1 값을 x2 위치로 이동시키며 다음 순서에서 코드는 수행되며(예를 들면 새로운 x 값이 수신될 때), x1 샘플을 x2 샘플로 된다(즉, 총 싸이클에서 1 싸이클 지연). 코드의 라인 7 및 8은 곱셈기가 ib0로 새로운 x 값(xin)을 곱하도록 하며, 그 값을 이전에 누적된 값에 더하도록 한다. 코드가 실행되는 다음 시기에 새로운 x값이 지연된 x1 값이 되도록 하기 위하여, 코드의 라인 9는 현재의 입력 값(xin)을 x1 위치로 이동시킴으로써 코드의 라인 6과 병렬이 된다.
바이쿼드 코드의 라인 10 내지 12는 GSP의 곱셈기가 지연된 출력 값 y2의 두배를 파라미터 값 ia2에 곱하여, 이 결과를 이전에 누적된 값에 더하도록 하는 반면에, 라이 13 및 14는 곱셈기가 파랄미터 값 ia1과 지연된 출력 값 y1과 곱하여, 상기 결과를 이전에 누적된 값에 더하도록 한다. 라인 15는 코드가 수행되는 다음 번에 GSP가 y1 파라미터 값을 위치 y2에 저장하도록 하는 반면에, 라인 16은 동작을 수행하지 않음으로써, y1과 ia1의 곱셈 및 이 결과를 누적된 값에 더하여 계산을 종료하는 것을 허용한다. 라인 17은 누산기에서의 합(ibo×x, 플러스 ib1×x1, 플러스 ib2×x2, 플러스 ia1×y1, 플러스 ia2×y2)이 코드의 다음 수행 동안 y1 위치에 기억되도록 한다. 한편, 라인(18)은 동일한 합을 가지며, 상기 합을 4차원(biquad)의 출력으로써 출력 위치에 제공한다.
제6a도, 제6b도 및 제6c도에 본 발명의 데이타 플로우 관리기(DFM)(600)의 입력 및 출력 회로의 블럭 다이어그램, DFM에 관련된 한 예가 되는 FIFO가 도시되어 있다. 상술된 바와 같이, DFM는 처리 장치의 데이타 플로우를 조정하는 중요한 기능을 하며, 처리 장치의 GSP는 프로세싱 일을 간섭하지 않는다. 상기 기능을 달성할때, DFM는 특정 처리 장치의 밖에 있는 "세계(world)"로부터 직렬 포트에 의해 수신된 데이타를 얻으며, SPROC 장치(10)의 데이타 RAM(100)의 필요한 위치에서 구현되는 제6c도의 FIFO와 같은 FIFO 내에서 상기 데이타를 구성한다. 또한, DFM(600)는 FIFO에서 데이타를 얻으며, SPROC 장치의 직렬 출력 포트로 출력하도록 상기 데이타를 구성한다. DFM는 SPROC에 의해 수행된 십진 동작(decimation operation)을 수용하기 위해 필요한 속도로 FIFO로 데이타를 보내거나 FIFO로부터 데이타를 인출 할 수 있다. 또한, DFM는 디코더(196)가 버퍼의 상태에 관한 SPROC 장치(10)의 플래그 버스(198) (및 GSP(400))로 플래그를 기록하도록 한다.
SPROC 장치의 DFM(600)는 장치의 중앙에 있거나, 장치의 직렬 입력 및 출력포트(700)에 결쳐 분산될 수 있는데, 단일 DFM은 각 포트(700)을 서비스한다. 분산되는 곳에서, 제6a도 및 제6b도에서 블럭도 형태로 도시된 회로망은 SPROC 장치의 각 직렬 입력 및 포트(700)에 중복되어 있는데, 만일 필요하다면 특정 회로는 공통으로 할 수 도 있다.
직렬 포트로부터 데이타를 수신하며 데이타 RAM(100)의 FIFO에의 저장을 위해 데이타를 구성하는 회로망은 제6a도에 도시된다. 데이타 플로우 자체는 단순하며, 상기 데이타는 직렬 포트(700)로부터 멀리플렉서(611) 및 3상 드라이버(613)를 통해 데이타 RAM 버스(125)의 데이타 슬롯 내로 전송된다. 멀티플렉서(611)는 직렬 포트(700a)에서 나온 데이타 또는 상술된 바와 같이 발생된 데이타가 드라이버(613)로 전송되는 것을 허용한다. DFM(600)가 시스템-와이드 멀티플렉서 클럭 방식에 의해 인에이블될 때, 데이타가 데이타 RAM 버스(125)상에서만 출력되도록 드라이버(613)가 제어된다. 24 비트 워드로서 데이타 RAM 버스 상에서 출력하기 위한 데이타 구성은 직렬 포트(700)에 의해 수행되는데, 이하에서 설명될 것이다.
데이타 플로우 회로망 외에, 각 DFM는 버퍼, 카운터, 케이드 등과 함께 배치되어서, 입력되는 데이타에 대한 데이타 RAM FIFO 어드레스를 생성한다. 제6a도에 도시된 바와 같이, DFM (600)는 3 개의 레지스터(620,622,624), 상기 3 개의 레지스터와 관련된 3 개의 카운터(630,632,634), 2 블럭 분배기(637), 가산기(636), 멀티플렉서(638), 7 개의 논리 게이트(641,642,643,644,645,646,647) (게이트 (642,643,645, 647) 는 버스 와이드 게이트), 두개의 지연 블럭(648,649)을 포함한다. 3 개의 레지스터는 각각 다음과 같다. FIFO 레지스터(620)는 DFM의 특정 부분에 연결된 특정 직렬 포트에 의해 어드레스될 FIFO의 데이타 RAM 내 초기 위치를 저장한다. 인덱스 길이 레지스터(622)는 FIFO를 포함하는 버퍼 수를 저장한다(제6c도의 FIFO에서, 인덱스 길이 레지스터는 4로 설정된다). 버퍼 길이 레지스터(624)는 각 버퍼에 저장되는 워드 수, 즉, 각 버퍼의 길이를 저장한다(제6c도의 FIFO에서, 버퍼 레지스터는 8로 설정된다). 데이타 워드(24 비트)가 FIFO에 저장을 위해 데이타 RAM으로 전송준비가 될 때, 직렬 포트(700a)는 AND 게이트(641)의 제 1 입력으로 사용되는 준비 신호(ready signal)를 제공한다. AND 게이트(647)의 제2 입력은, DFM가 데이타 RAM 버스 상에 워드를 위치시키는 것을 허용하는 시분할 멀티플렉스된 신호인 데이타 인에이블 신호이다. 데이타 인에이블 및 준비 신호가 하이(high)일때, 하이 신호는 AND 게이트로부터 출력되며, 상기 AND 게이트는 드라이버(613)가 어드레스와 함께 데이타 RAM 버스 상에 데이타를 출력시키도록 한다. 상술된 바와 같이, 상기 어드레스는 12 비트 가산기(636)에 의해 계산되는 어드레스 즉, 프리와이어드(prewired) 어드레스이다.
AND 게이트(641)가 하이 출력을 제공할 때, 하이 출력은 클럭 카운터(630,634)에 입력되기 전에 지연 블럭(648,649)에 의해 지연된다. 결과적으로 카운터(630,634)는 어드레스가 데이타 RAM 버스 상에 출력된 후 카운트를 증가한다. 카운터(630)가 카운트를 증가시킬 때, 카운터의 카운트는 12 비트 가산기(636)에 의해 레지스터(620)에 저장된 FIFO 초기 위치에 더해진다. 멀티플렉스(638)에 의해 선택되면, 발생된 어드레스는 드라이버(613)에 의해 제공된 데이타와 접속하여 데이타 RAM 버스의 어드레스 슬롯내 다음의 어드레스 출력일 수도 있다. 그러므로, 데이타 워드가 데이타 RAM FIFO에 저장되도록 직렬 포트에 의해 계속 전송될 때, 데이타 워드는 데이타 RAM의 증가(incremental) 어드레스로 전송되며, 카운터(630)는 FIFO 초기 위치에 더해지는 보다 높은 값을 전송한다. 이후 상술한 바와 같이, 카운터(630)는 클리어 카운터 신호가 인덱스 길이 레지스터(622)에 관련된 회로망으로부터 수신될 때까지 카운트를 계속 증가시킨다. 클리어 카운터 신호가 수신될 때, 카운터는 제로로부터 다시 카운트하기 시작한다.
상술된 바와 같이, AND 게이트(641)가 하이 출력을 제공할 때마다. 버퍼 길이 레지스터(624)와 관련된 카운터(634)는 또한 (지연 후) 증가된다. 버퍼 길이 레지스터(624) 및 이와 관련된 카운터(634)의 출력은, 값을 비교하는 버스 와이드 XNOR 게이트(643)에 제공된다. 카운터(634)가 버퍼 길이 레지스터(624)에 저장된 값에 이르렀을 때, 데이타 RAM FIFO에서의 버퍼가 채워진다. 결과적으로 XNOR 게이트(643)의 출력은 하이로 진행하며, 3 개의 입력 OR 게이트(644)는 카운터(634)의 리셋으로 하이 신호를 보낸다. 버스 와이드 XNOR 게이트(643)로부터의 하이 신호는 인덱스 길이 레지스터(622)에 관련된 카운터(632), 멀티플렉서(638), 및 멀티플렉서(611)에 제공된다. 버퍼가 채워진 결과, 멀티플렉서(638)는 프리와이어드 어드레스가 두개의 예정된(또는 발생된) 데이타 워드 중 하나와 함께 데이타 RAM 버스(125)의 어드레스 슬롯 내에 위치될 수 있도록 한다. DFM에 의해 수신된 다음 데이타가 신호를 인에블시키자 마자, 버퍼 신호의 끝에서 프리와이어드 어드레스 및 데이타 워드를 버스 상에 두는 것이 일어나며, 이것은 다른 워드는 데이타 RAM(100)에의 전송을 위해 직렬 포트(700a)에 의해 어셈블리되기 전의 일이다. 또한, 프리와이어드 어드레스 및 데이타 워드를 두는 것은 신호 전송을 위해 사용되며, 디코더(196)(제2도)가 DFM의 특정 프리와이어드 어드레스를 위해 데이타 RAM 버스(125)를 모니터하는데, 이러한 어드레스의 트리거링(trigerring)은 DFM의 상태, 즉 버퍼의 충만 때문에 일어난다. 디코더(196)는 이러한 발생의 SPROC의 GSP(400)에 신호를 보내는 트리거 버스(198)상에서 플래그를 교대로 설정할 수 있다(플래그 설정은 프리와이어드 어드레스를 수용하는 데이타의 값에 의존한다). 이러한 방법으로 GSP(400)는 동작을 수행하는데 필요한 데이타가 GSP에 이용될 있는가를 결정하며, 이에 의하여 GSP는 대기 루프를 탈출한다.
FIFO 버퍼가 충만된 후 버스 상에 위치된 예정된 또는 생성된 데이타 워드는, 충만된 FIFO 버퍼가 FIFO가 반만 충만되도록 하는 경우 바람직하게는 데이타 워드의 msb로서 "/"를 사용하고(이후 기술됨), 그 밖의 경우에는 데이타 워드는 msb로서 "0" 를 사용한다. 데이타 워드의 나머지는 널(null) 정보일수도 있다. 또는 필요하다면 데이타 워드는 DFM가 데이타 워드의 적정 위치에 삽입되는 다음 위치(12 비트 가산기(636)에 의해 계산된 위치)를 포함할 수 있다. 예정된 또는 생성된 데이타 워드는 곱셈기(611)를 통해 드라이버(613)로 통과되며, 프리와이어드 어드레스가 데이타 DFM 버스(125)상에 위치되는 동시 시점에서 데이타 워드를 버스상에 위치시킨다.
상술된 바와 같이, 충만한 버퍼의 표시가 버스 와이드 XNOR 게이트(643)에 의해 출력될 때, 카운터(632)는 증가된다. 그러므로 카운터(632)는 채워지고 있는 FIFO에서 버퍼의 수를 트랙(track)한다. 어드레스되는 FIFO 버퍼의 수(카운터(632)에 의해 결정됨)가 FIFO 길이의 1/2일 때(2 블럭 분배기(637)에 의해 분배된 레지스터(622)에 저장된 길이에 의해 결정될 때), 플래그는 버스 와이드 XNOR 게이트(647)를 통해 DFM에 의해 상승된다. "중간(mid) 버퍼" 플래그는 기록되고 있는 FIFO의 버퍼가 FIFO를 통해 반쯤 가고 있다는(halfway) 것을 표시한다. 그러므로, FIFO의 이전의 모든 버퍼가 여전히 데이타로 충만된다면, FIFO는 반만 충만된다. 부가하여, 미드 버퍼 플래그는 멀티플렉서(611)로 입력되는 생성된 데이타가 변경되도록 하므로, 데이타의 msb는 제로대신에 "/"를 사용한다. 그러므로 FIFO가 반만 충만되도록 하는 버퍼를 충만시킬때, 조금 상이하게 코드된 데이타 워드가 데이타 RAM 버스의 데이타 슬롯내에 위치된다.
카운터(632)의 값이 인덱스 길이 레지스터(622)에 저장된 값으로 증가될때, FIFO 내의 마지막 위치가 어드레스되었다. 그러므로 재순화시키는 것이 바람직하다. 즉, FIFO 내에 제1위치를 어드레스함으로써 계속하는 것이 바람직하다. 카운터(632)의 값이 레지스터(622)의 값과 같을 때, 버스 와이드 XNOR 게이트(645)는 3개의 입력 OR 게이트(646)를 통해 전달되는 하이 신호를 제공한다. 결과적으로 카운터(630,632,634)는 리셋된다. 제6a도에 도시된 바와 같이, "클리어 카운터" 신호는 신호를 SPROC의 미리 정해진 핀(도시되지 않음)에 인가함으로써 생성된 파워-업 리셋(PUR) 신호에 의해 생성되거나, 데이타 RAM (100)의 어드레스 0405H에 기록함으로써 생성된 SYNC 신호에 의해 생성될 수도 있다. SYNC 신호는 다른 DFM이 서로 동기화되는 것을 허용한다.
필요하다면, 한 DFM 의 입력부는 동일 또는 또다른 DFM의 출력부에 동기화 될 수 있다. 이러한 동기화는 OR 게이트(644)로 입력되는 "en buf"를 생성하는 SPROC 상의 핀(도시되지 않음)을 통해 달성된다. 교대로, OR 게이트(644)는 제6b도와 관련하여 기술된 바와 같이 DFM 출력부내 유사한 카운터의 리세팅에 동기하여 카운터(634)를 리셋하는 하이 신호를 제공한다.
제6b도는 DFM(600)의 직렬 출력부를 도시한다. DFM 내의 출력부 기능은 FIFO에서 데이타를 얻으며, SPROC 장치의 직렬 출력 포트(700b)로 출력을 위해 상기 데이타를 구성하는 것이다.
DMF의 출력부는 바람직하게는 다수의 레지스터와 카운터, AND 게이트, 비교기, 및 인버터를 포함하는 논리 장치와, 분배 및 가산 블럭, 플립-플롭, 버퍼 및 병렬 대 직렬 컨버터로 구성된다. 기본적으로 DFM의 직렬 출력부를 통하는 데이타 플로우는 단순하다. 초기 어드레스 레지스터(652)에 의해 생성된 어드레스는 가산기(654)에 의해 오프세트 카운터(656)의 값에 더해지며, 상기 어드레스는 데이타 RAN 버스의 어드레스부 상에 출력된다. 데이타 RAM은 어드레스 정보를 수신하며, 데이타를 데이타 RAN 버스 상의 데이타 RAN 어드레스에 위치시킨다. 상기 데이타는 DFM에 의해 수신되며, 직렬 출력 포트(700b)로 전송되기 전에 버퍼(694)에서 래치(latch)되고 저장된다.
제6b도의 나머지 회로는, 내부 논리 및 수신 신호에 따라 동기 펄스 및 에러 플래그를 생성하는 기능을 하며, 특정 조건(즉, 트리거)이 만족되지 않으면, 데이타가 직렬 출력 포트(700b)로 전송되는 것을 허용하지 않는 기능을 한다. 특히, 각 DFM는 신호가 발생되기 전에 대기 플래그 레지스터(662)에서 클리어될 플래그 정보를 유지하는 대기 레지스터(660)를 가진다. 대기 플래그 레지스터에서의 비트는 트리거 버스(198)로부터 수신되는 적절한 트리거 비트가 수신되자 마자 클리어 된다. 적정한 플래그가 클리어될때, 버스 와이드 NOR 게이트(664)는 대기 플래그 레지스터(662)가 대기 레지스터(660)로부터 다시 로드되는 것을 허용함으로써 대기 플래그 레지스터(662)를 리셋한다. 또한, NOR 게이트(664)는 N(N=0.1 .... n) 분할 블럭으로 신호를 전송한다. N 분할 블럭(666)이 NOR 게이트(664)로부터 N 펄스를 수신하지 마자 상기 블럭은 AND 게이트 (668)로 펄스를 출력한다. N이 1이면, 클럭 데시메이션(clock decimation)은 발생하지 않는다. 그러나, N이 1보다 크면 데시메이션을 수행된다. 즉, 클럭은 GSP에서 일어난 데이타의 데시메이션에 매치되도록 감소된다. AND 게이트(668)로의 다른 입력이 하이라면(이하에서 설명되는 바와 같이, DFM이 동작 중일 때 일어난다). 펄스는 카운트를 증가시키는 오프세트 카운터(656)로 전송된다. 이와 같은 방식에서 가산기(654)에 의해 출력된 어드레스는 다음 어드레스로 변화된다. 유사하게, AND 게이트(668)의 출력이 하이일때, 펄스는 DFM으로부터 데이타 신호를 출력하는 직렬 출력 포트(700b)로 전송되며, 카운트를 증가시키는 샘플 카운터(684)로 전송된다.
또한, DFM는 트리거 비트에 의해 클리어되어야 하는 플래그 데이타를 LF 플래그 레지스터(663)에 제공하는 IE(초기/에러) 레지스터를 포함한다. IE 플래그 레지스터(663)으로부터의 출력은 버스 와이드 NOR 게이트(665)에 제공되며, 상기 게이트는 IE 레지스터(661)에 의해 재로드될 수 있도록 IE 플래그 레지스터(663)를 리셋시키는데 피드백 방식으로 사용된다. 버스 와이드 NOR 게이트(665)로부터의 출력은 클럭 입력으로서 D형 플립-플롭(667)에 전송된다. D형 플립-플롭(667)으로 입력되는 데이타(D)는 DFM의 입력측에 의해 DFM 데이타 버퍼내로 입력되는 데이타 워드의 msb(23 개의 비트)이며, 워드가 데이타 RAM 버퍼의 1/2 위치로부터 얻어질 때에만 DFM는 값 "1"이 되도록 배열된다. D 입력으로 입력된 msb의 값은, 두 입력 중의 첫번째 것으로서 두 개의 AND 게이트(670,672)의 각각으로 전송되는 플립-플롭의 Q출력으로 클럭(clock over)된다. 이후 상술될 바와 같이, AND 게이트(670)는 에러 플래그를 설정하는데 사용된다. 다른 한편 AND 게이트(672)는 DFM의 상태를 표시하는데 사용되는 블럭(675)을 설정하는데 사용된다. DFM이 현재 데이타 RAM으로부터 데이타를 읽어, DFM을 통해 직렬 포트로 출력되게 한다면, DFM는 작동 모드에 있으며, 블럭(675)으로부터 출력은 이미 하이(high)이다. 결과적으로 인버터(676)는 플립-플롭(667)으로부터의 출력에 영향받지 않는 로우 신호를 AND 게이트(672)에 제공한다. 다른 한편 DFM이 작동되지 않으면 블럭(675)으로부터의 출력은 로우(low)이며, 인버터(676)는 하이값을 AND게이트(672)에 저장한다. 플립-플롭(667)이 (DFM용 데이타 RAM의 버퍼가 충분한 데이타를 1/2 수신할 때까지 발생하는) 로우 신호를 제공한다면, DFM는 작동을 시작하지 않을 것이다. 다른 한편 플립-플롭(667)이 데이타 RAM이 반정도 충만된 것을 표시하는 하이 신호를 제공하면, 블럭(675)은 출력을 변화시켜 DFM은 작동을 개시한다.
DFM이 작동되지 않을 때, 인버터(676)로부터의 하이 출력은 OR 게이트(677)를 통해 오프세트 카운터(656)의 클리어 입력으로 진행되며, 이에 의하여 가산기(654)에 의해 발생될 어드레스 카운트가 DFM 이 작동을 시작하자 마자 초기화되도록 한다.
상술된 바와 같이, AND 게이트(670)는 에러 플래그를 설정하는데 사용된다. 그러므로 DFM이 작동되는 동안 (블럭(675)으로부터의 출력에 의해 표시되는 바와 같이) D형 플립-플롭(667)이 하이 출력을 제공하며, AND 게이트(670)는 하이 값을 AND 게이트(698)로 전달하며, 이후 상술될 바와 같이 다른 기준이 만족되면, 상기 게이트는 차례로 에러 플래그를 생성한다.
DFM 출력부의 나머지 블럭은, FIFO 길이 레지스터(680), 버퍼 길이 레지스터(682), 샘플 카운터(684), 2 블럭 분배기(685), 비교기(686,687), 버스 와이드 OR 게이트(689), 및 세트/리셋 블럭(690)을 포함한다. FIFO 길이 레지스터(682)는 FIFO의 전체 길이를 저장한다. 오프세트 카운터(656)의 값이 버퍼(680)에 저장된 FIFO 길이와 동일할 때, 동기 펄스는 버스 와이드 XNOR 게이트(686)에 의해 발생되며, 상기 게이트(686)는 출력 DFM으로부터의 나가는(outgoing) 데이타 신호를 DFM의 입력부로부터의 들어오는(incoming) 데이타 신호와 동기화시키는데 사용된다. 생성된 동기 펄스는 기술된 바와 같이 신호 enbuf1로서 DFM(제6a도에 도시)의 입력부에 의해 수신된다. 부가하여, 동기 펄스는 오프세트 카운터(656)를 클리어하고 레지스터를 재로드함으로써 DFM를 재초기화하는데 사용된다. (2 블럭 분배기(685)에 의해 결정되는 바와 같이) 오프세트 카운터(656)의 값이 FIFO 길이 레지스터(680)값의 1/2과 같을 때, 비교기(687)는 펄스를 세트/리셋 블럭(690)에 제공하는데, 이것은 데이타 RAM 버스에 있는 어드레스가 특정한 DFM과 관련된 데이타 RAM 버퍼를 통한 불충분한 어드레스(address half-way)라는 사실을 표시한다. 데이타 RAM 어드레스가 절반의(half-full) 어드레스일 때, 데이타 RAM 버퍼에 기록되고 있는 데이타는 절반의 어드레스내로 기록되지 않아야 한다(즉, 어드레스가 동시에 기록 및 판독되는 상황은 존재하지 않는다). 그러므로, DFM이 작동하는 동안 D 형 플립 플롭(667)이 하이 신호를 AND 게이트(670)에 제공하여, 세트/리셋 블럭(690)으로부터의 출력이 또한 하이라면, AND 게이트(698)는 DFM에 대한 에러 플래그를 설정하는 하이 출력을 제공한다.
마지막으로, DFM의 출력측과 관련하여, 버퍼 길이 레지스터(682)는 DFM과 관련된 데이타 RAM FIFO에서 각 버터의 길이와 동일한 값을 저장한다. 샘플 카운터(684)는 레지스터(682)에 저장된 버퍼 길이로 미리 로드되는 다운(down) 카운터이다. 하이 펄스가 XNOR 게이트(687)로부터 수신될 때(즉, 오프세트 카운터는 FIFO 길이의 1/2이다). RS 플립-플롭(690)이 설정되고 샘플 카운터(684)의 다운 카운터는 인에이블된다. 샘플 카운터(684)가 AND 게이트(668)로부터 펄스를 수신할 때마다, 카운트는 감소된다. 샘플 카운트가 제로로 될 때, RS 플립-플롭(690)은 리셋된다. 그러나, RS 플립-플롭(690)이 설정되고 AND 게이트(698)로 하이 펄스를 출력시키는 동안, DFM는 에러를 검색하고 있다. 리셋되기 전에 하이 msb 값이 플립-플롭(667)에 의해 표시되면 DFM는 동시에 동일 버퍼 위치를 판독 및 기록 하는 것을 시도한다. 결과적으로 AND 게이트(698)는 DFM에 대한 에러 플래그를 설정하는 하이 신호를 제공한다.
제6c도는 DFM과 관련된 FIFO의 한예를 도시한다. DFM과 관련된 FIFO는 처리 장치의 데이타 RAM의 바람직하게 미리 정해진 부분에 포함된다. 도시된 바와 같이 제6c도의 FIFO는 4개의 버퍼를 포함한다. 또한 도시된 바와 같이, 각 버퍼는 8 개의 데이타 샘플을 위한 저장 장치(storage)를 포함한다. 그러므로 제6c도의 FIFO는 32데이타 샘플을 위한 저장장치를 가진다. 물론 FIFO는 상이한 수의 버퍼를 포함하며, 버퍼는 상이한 수의 데이타 샘플을 저장할 수 있다. DFM과 관련된 각 FIFO의 크기 및 그것의 버퍼의 크기는 특정한 DFM의 요구를 계산하는 지능 소프트웨어에 의해 또는 처리 시스템의 초기 프로그래밍 동안 처리 시스템의 사용자에 의해 자동적으로 설정된다.
제7a도는 본 발명에 따른 직렬 입력 포트(700a)의 블럭도를 도시한다. 직렬 입력 포트의 기본 기능은, 많은 형태의 임의의 직렬 데이타를 수신하여, 수신된 직렬 데이타를 SPROC의 내부와 동기화되어 있고, DFM(600)에 의해 수신되기에 적당하며, 데이타 RAM버스(125)상에 전송되기에 적합한 병렬 데이타로 변환시키는 것이다. 기본 기능을 달성하기 위하여, 직렬 입력 포트는, 논리 블럭(710), 데이타 누적 레지스터(720), 및 래치 버퍼(730)를 포함한다. 논리 블럭(710) 및 데이타 레지스터(720)는 SPRO(10)의 부트-업 동안 구성에 관하여 직렬 입력 포트(700a)내로 프로그램된 7개의 비트 정보에 의해 관리된다. 7 개의 비트는 다음과 같이 한정된다.
비트 0, 1, 2는 논리 클럭(710)을 관리하는데 사용된다. 들어오는 데이타가 24 비트 워드라면, 논리 블럭은 한 비트식 비트를 취하여, 상기 비트들을 데이타 누산 레지스터(720)로 보낸다. 들어오는 데이타가 16 비트, 12 비트, 또는 8 개의 비트 워드라면, 논리 블럭은 한 비트식 워드 비트를 취하여, 그것들을 24 비트 워드로 연장시키기 위해 제로로 채운다. 수신된 직렬 데이타의 비트 중 어느 것이 레지스터(720)의 msb 슬롯내로 전송될 것이지는 제어 비트(2)가 관리한다.
일단 데이타가 레지스터(720)에서 누산되면, 데이타가 멀티포트 RAM(100)에 저장하기 위해 DFM(600)의 입력부를 통해 전송될 수 있을 때까지 데이타는 버퍼(730)로 래치되어 그 곳에서 보관된다. 적절한 신호가 수신될 때까지 버퍼(730)에서 데이타를 보유하는 것은 SPROC(10)와 비동기인 데이타가 SPROC 시스템내에서 효과적으로 동기되도록 한다.
논리 블럭(710)을 관리하는 비트(3,4,5)는 스트로우브의 형태, 클럭 형태 및 입력 포트(700)용 클럭 제어의 위치를 제어하는데 각각 사용되며, 모든 형태는 SPROC와 외부 장치 사이의 적절한 통신을 위해 필요하다. 포트(700)가 바람직하게는 입력 포트(700a) 및 출력 포트(700b)의 회로망을 모두 포함하기 때문에(이후 좀더 상세히 기술됨), 여분의(extra) 비트(비트 6)는 포트(700)의 기능을 제어하는데 사용된다.
제7b도에 도시된 직렬 데이타 출력 포트(700b)는, 그 기능이 반대인 것을 제외하고 많은 면에서 데이타 입력 포트(700a)와 유사하다. 직렬 출력 포트(700b)는 버퍼(740), 병렬 로드 시프트 레지스터(750), 및 제어 멀티플렉서(760,770)를 포함한다. 출력 포트(700b)를 통해 SPROC로부터 기록될 데이타는 DFM(600)의 버퍼(694)로부터 버퍼(740)에 의해 수신된다. 수신된 24 비트는 병렬 대 직렬 컨버터로 작용하는 병렬 로드 시프트 레지스터(750)에 병렬로 로드된다. 그 후, 24 비트는 제어 신호 dw0 및 dw1를 수신하는 멀티플렉서(760) 및 msb 제어 신호를 수신하는 멀티플렉서(770)를 통해 비트 직렬 방식으로 전송 데이타 라인으로 전송된다. 멀티플렉서(760,770)는 병렬 로드 시프트 레지스터에 의해 수신된 24 비트 워드를, SPROC 외부의 원하는 장치와 통신하기 위한 포맷으로 효과적으로 변형시킨다. 24 비트는 8 비트 워드(예를 들면, 8 msb), 12 비트 워드 또는 16 비트 워드(8 개의 lsb는 버려짐)로 변형될 수도 있으며, lsb 및 msb는 맨 먼저 전송된다. SPROC가 다른 SPROC와 통신하는 동안(즉, 하나의 SPROC의 출력 포트 (700b)가 다른 SPROC의 입력 포트(700a)와 통신하는 동안), 멀티플렉서(760,770)는 24 비트 워드 msb를 먼저 전송하기 위해 바람직하게 제어된다.
제8도는 호스트 포트(800)를 상세하게 도시된다. SPROC (10)가 부트 모드에 있는 마스터 SPRO일지라도, 대부분의 환경에서 호스트 포트(800)는 SPROC(10)와 호스트(제2도 참조)를 인터페이스하는 작용을 하며, 호스트 포트(800)는 SPROC(10)와 EPROM 및 시스템의 일부인 임의의 슬레이브 SPROC를 인터페이스하는 작용을 한다. 제8도에 도시된 바와 같이, 호스트 측면상에서 호스트 포트(800)가 호스트 버스에 연결되는 반면, 호스트 포트(800)는 SPROC 측면상에서 프로그램 RAM 버스(155)는 물론 데이타 RAM 버스(125)에 연결된다. 상기 호스트 버스는 3 데이타부(DO-D7, D8-D15, D16-D23)와, 3 개의 어드레스부(AO-A11, SO-S3, EAO-EA1)를 포함한다. 호스트 측면상에 도시된 나머지 인터페이스는, SPROC(10) 및 호스트 포트(800), 호스트 버스(165)용 판독/기록 스트로우브의 기능을 제어하는 핀(예를 들면 마스터/슬레이브, 리셋, 모드)이다.
슬레이브 모드(슬레이브 모드로 설정된 마스터/슬레이브 핀(801))에서, SPROC(10)는 RAM으로서 호스트 마이크로프로세서 또는 DSP를 포함하는 다른 장치처럼 보인다. 왜냐하면 SPROC가 가능한 한 많은 다른 형태의 처리기와 인터페이스하는 것이 바람직하기 때문에, 호스트 포트(800)는 비트 병렬 포트이며, 8, 16, 24 및 32 비트 마이크로프로세서 및 DSP와 인터페이스하도록 배열된다. 모드 핀(802,804,806)은 호스트 포트(800)에게 호스트 처리기가 8, 16, 24 비트 또는 32 비트 처리기인지, 그리고 맨 먼저 전송되는 워드가 최상위(the most significant) 워드인지 최하위 워드인지에 관하여 알리는데 사용된다.
호스트 처리기로부터 슬레이브 모드인 SPROC로 데이타를 전송하기 위하여, 데이타 멀티플렉서(810), 데이타 입력 레지스터(812), 2개의 드라이버(815,817)가 제공된다. 데이타 멀티플렉서(810)는 호스트 버스(165)의 데이타 버스부(bus section)로부터 3개의 8 비트 데이타 입력(D0-D7, D8-D15, 및 D16-D23)을 수신하며, 데이타가 모드 핀(802, 804, 806)의 제어에 따라 데이타 입력 레지스터(812)내에 적당히 배열되도록 한다. 호스트 처리기가 32 비트 처리기라면, SPROC의 호스트 포트(800)는 2 개의 16 비트 워드를 취하여, 16 비트 처리기와 관련하여 아래에 기술된 방법으로 이 워드를 처리한다. 모드 핀(802,804)에 의해 표시되는 바와 같이, 호스트 처리기가 24 비트 처리기라면, 데이타는 비트를 추가하거나 바이트를 세그먼트로 분할할 필요 없이 데이타 입력 레지스터(812)로 직접 전송된다. 모드핀(802,804)에 의해 표시된 바와 같이 호스트 처리기가 16 비트 처리기라면, 호스트 포트는 3 개의 8 비트 데이타 입력 라인(D0-D7, D8-D15, D16-D23)중 2 라인부터 2 개의 16비트를 순차적으로 취하여, 최하위 워드의 8 개 lsb를 버리고, 나머지 비트를 사용하여 SPROC의 프로그램 RAM 버스(155) 또는 데이타 RAM 버스(125)에 24비트 워드를 제공한다. 모드 핀(802,804)에 의해 표시된 바와 같이 호스트 처리기가 8 비트 처리기라면 3 개의 8 비트 바이트는 D0-D7 데이타 입력 라인을 통해 수신되며, SPROC에 24 비트 신호를 제공하기 위하여 데이타 입력 레지스터(812)에서 연결된다(concatenate).
호스트 포트(800)가 드라이버 (817)를 통해 데이타 RAM 버스(125)에 또는 드라이버(815)를 통해 프로그램 RAM 버스(155)에 24 비트 워드를 기록할 수 있도록 하기 위하여, 어떻게 데이타 입력 레지스터(812)가 채워졌는지에 관계없이, 데이타가 어셈블된 후, 호스트 포트(800)는 SPROC 타이밍으로부터 인에이블링 신호를 기다린다. 상기 방법에서, 호스트 포트(800)는 SPROC(10)에 비동기적인 방법으로 수신된 SPROC(10)로, 데이타를 동기화시킨다. 데이타가 기록되는 어드레스는 호스트 버스(165)의 12 비트 어드레스부(A0-A11)로부터 얻어진다. 12 비트 어드레스는 호스트 버스(165)로부터 어드레스 입력 레지스터(820)로 전달된다. 호스트 포트(800)가 인에이블될때, 어드레스 입력 레지스터(820)에 포함된 어드레스가 데이타 RAM 위치를 표시하는 것이라면, 어드레스는 드라이버(822)를 통해 데이타 RAM 버스(125)의 16비트 어드레스 부상에 위치하게 된다. 어드레스 버스가 16 비트 버스이기 때문에, 어드레스 입력 레지스터(820)내의 어드레스가 12 비트 어드레스인 반면, 어드레스 및 데이타가 데이타 RAM 버스 상에 놓여질 때 4 개의 제로는 드라이버(824)를 통해 어드레스의 msb로서 더해진다. 어드레스 입력 레지스터(820)에 포함된 어드레스가 프로그램 RAM 위치를 표시하는 것이라면(어드레스 위치 1k 및 그 이하), 어드레스는 드라이버(826)를 통해 프로그램 RAM 버스(155)의 12 비트 어드레스부 상에 위치하게 된다.
슬레이브 모드에서 호스트 처리기가 SPROC로부터 정보를 읽기를 원할 때, 호스트 처리기는 판독 스트로우브가 로우(low)가 되도록 한다. 어드레스 라인(A0-A11)을 통해 호스트 포트에 의해 수신된 어드레스는 호스트 호트(800)에 의해 판독되고, 어드레스 입력 레지스터(820)내로 래치된다. 호스트 포트(800)가 데이타 또는 프로그램 RAM 버스에 액세스하는 것이 허용될 때, 어드레스는 적당한 버스상에 위치하게 되고, 상기 적당한 버스상에 위치하고, 데이타 또는 프로그램 RAM 어드레스에 위치한 24 비트 데이타 워드가, 프로그램 데이타 출력 레지스터(832) 또는 출력 데이타 레지스터(834) 중 하나로 읽어지거나 래치된다. 상기 정보는 멀티플렉서(836)를 통해 데이타 디멀티플렉서(840)로 전달되며, 호스트 버스(165)의 위치(D0-D23)상에 24 비트 정보를 배열한다. 디멀티플렉서(840)는 멀티플렉서(810)의 반대 기능을 한다. 데이타를 24 비트 호스트 처리기에 보낼 때, 디멀티플렉서(840)는 단순히 24 비트를 취하여 아무런 변화도 가하지 않은 채 전달한다.
데이타를 16 비트 호스트 처리기에 보낼 때, SPROC(10)는 24 비트 워드를 2 개의 16 비트 워드로 분할한다(적당하게 0으로 채운다). 마찬가지로 데이타를 8비트 호스트 처리기로 보낼 때, SPROC(10)는 24 비트 워드를 3 개의 8 비트 바이트로 분할한다.
마스터 모드에서, EPROM 또는 하나 이상의 슬레이브 SPROC는 호스트 포트(800)의 "호스트"측면상에 위치하게 된다. 마스터 모드의 부트 모드에서, SPROC의 내부 부트 ROM(190)으로부터의 데이타는, 호스트 포트(800)의 내부 구성에 사용되는 16 비트 모드 레지스터(850)에 기록된다. 그 때, 내부 부트 ROM에서 프로그램을 수행하는 SPROC 의 GSP는, SPROC를 초기화시키기 위해 판독하고 싶은 EPROM의 16 비트 어드레스를 기록한다. 각 어드레스는 호스트 포트의 어드레스 출력 레지스터(855)에 의해 수신된다. 그 대, 호스트 포트는 판독 스트로우브를 호스트 버스(165)에 전달하며, 드라이버(856, 858)를 통해 판독하기를 원하는 EPROM 어드레스의 어드레스를 위치시킨다. EPROM이 8 비트 EPROM이라면, 필요한 어드레스는 확장된 어드레스 생성기(860)에 의해 확장되고, EPROM의 3 개의 8 비트 바이트가 액세스될 수 있도록 3 개의 판독 스트로우브는 스트로우브 생성기(865)에 의해 생성된다. EPROM이 호스트 버스(165)의 데이타 위치상에 자신의 데이타를 위치시킬때, 상기 데이타는 데이타 멀티플렉서(810)를 통해 전달되며, 마스터 모드 수신 레지스터(867)내에 위치하게 된다. 어샘블된 24 비트 데이타 워드는 SPROC의 GSP를 제어함으로써 판독될 수 있다. 워드가 판독된 후, EPROM에 저장된 필요한 정보 모두가 SPROC로 읽어들여질 때까지 이 전체 순서는 반복된다.
마스터 SPROC가 그 자체는 물론 슬레이브 SPROC를 부트 업하도록 동작한다면, 마스터 SPROC는 방금 서술된 것과 동일한 부트-업 절차를 따른다. 그러나, EPROM으로부터이미 얻어진 정보로부터 결정된 바와 같이 하나의 슬레이브 SPROC에 묶여 있는 마스터 모드 수신 레지스터(800)에서 호스트 포트(800)가 정보를 수신하지마자, 마스터 SPROC 는 이 데이타가 GSP(400)에 의해 생성된 16 비트 주소와 함께 호스트 버스(165)(상술된 바와 같이 버스(125), GSP (400), 레지스터(834) 들을 통해)에 기록되고 어드레스 출력 레지스터(855)로 전송되어, 라인(A0-A11) 및 S0-S3에 위치하게 한다. 상기 방법에서, 데이타는 슬레이브 모드로 부트될 수 있도록 적당한 SPROC으로 보내진다. 당업자는 EPROM이 데이타 및 어드레스 정보를 포함하도록 충분히 크다면, 상기 정보가 호스트 버스(165)에 기록되고 마스터 SPROC의 메모리 공간 외부에서 슬레이브 SPROC 또는 다른 장치에 의해 직접 판독되는 것을 쉽게 알 수 있다.
외부 메모리의 속도는 다양하기 때문에, 호스트 포트(800)는 스트로우브 생성기(865)에 의해 생성되는 판독 또는 기록 스트로우브를 연장할 수 있는 대기 상태 생성기(870)를 가지고 있다. 또한, 호스트 포트(800)는 호스트 포트(800)의 내부 타이밍을 제어하는 본질적으로 분산 회로망인 호스트 인터페이스 제어기(860)를 구비한다.
데이타 RAM(100), 프로그램 RAM(150), 부트 ROM(190), SGP(400), DFM(600), 직렬 포트(700) 및 호스트 포트(800)를 갖는 SPROC(10)가 본래 우수한 프로그램가능한 신호 처리기라면, SPROC는 "사용자에게 친숙한" 방법으로 프로그램될 수 있는 것이 바람직하다. 상기 목적을 위해 스케치를 허용하고 기능을 실현하는 컴파일러 시스템이 제공되는데, 제12도를 참조하여 보다 구체적으로 설명된다. 또한, 액세스 포트(900) 및 프로우브(1000)는 SPROC 장치의 개발 단계에서 유용한 툴로 제공된다.
상술한 바와 같이, 액세스 포트(900)는 사용자가 RAM(150)에 저장된 프로그램 데이타를 변화시키는 것을 허용하고/허용하거나, SPROC가 동작하는 동안, 데이타 RAM (100)에 저장된 다른 데이타도 변화시키는 것을 허용한다. 다시 말해서, 액세스 포트 (900)는 SPROC가 동작하는 동안 메모리 내용이 수정되는 것을 허용한다. 바람직한 형태로는 제9도에 도시된 바와 같이, 액세스 포트(900)는 시프트 레지스터(910), 버퍼(920), 디코더 (925), 입력측에서의 스위치(930), 멀티플렉서(940), 출력측에서의 병렬 로드 시프트 레지스터(950)로 구성된다. 입력측에서, 액세스 포트(900)는 개발 호스트 컴퓨터로부터 클럭 및 스트로우브 신호는 물론 직렬 데이타를 수신한다. 액세스 포트가 데이타 RAM 버스(125) 또는 프로그램 RAM 버스(155)로 시분할 액세스를 하는 것이 허용될 때까지, 데이타는 시프트 레지스터(910)에 의해 배열되어 버퍼(920)에 저장된다. 데이타가 어느 버스에 기록될 것인지에 관한 결정은 버퍼(920)에 저장된 어드레스 데이타의 msb를 디코딩하는 디코드 블럭(925)에 의해 행해진다. 디코드 블럭(925)은 버퍼(920)를 적당한 버스로 연결하는 스위치(930)를 차례대로 제어한다. 상술한 바와 같이 데이타 RAM 및 프로그램 RAM이 별개의 어드레스 공간이 제공될 때, 버퍼(920)에 있는 어드레스 데이타는 이 데이타가 어느 RAM을 목적지로 하고 있는지를 표시한다.
출력측상에서, 프로그램 RAM 버스(155) 또는 데이타 RAM 버스(125)를 통해 수신된 데이타 디멀티플렉서(940)를 통해 시프트 레지스터(950)로 전송된다. 시프트 레지스터(950)는 데이타의 병렬 대 직렬 변환을 수행하여서, 직렬 데이타가 적당한 스트로우브와 함께 외부 클럭 신호에 따라 개발 호스트 컴퓨터 등으로 출력된다.
프로그램 및 데이타 RAM에 데이타를 기록 및 판독하는 능력을 제공함으로써, 액세스 포트(900)는 다양하게 사용된다. 우선, 데이타 RAM의 특정 위치(예를 들면 406 또는 408-406 Hex)기록함으로써, 프로그램 브레이크는 시작될 수 있다. 브레이크 결과로서 데이타 RAM에 기록되는 GSP의 다양한 레지스터의 내용이 판독될 수 있다. 상기 정보는 디버깅 프로세스에서 특시 중요하다. 둘재로, 필요하다면, 원하는 데이타 RAM 위치에 데이타를 기록함으로서 브레이크 모드를 빠져 나오기 전에, (데이타 RAM 에 저장된 바와 같은) GSP의 레지스터 내용이 수정될 수 있으므로, 디버깅 프로세스에서 부가적인 툴을 제공한다. 세번째로, 필요하다면, (마이크로명령의 일부로서 저장된 마이크로명령 및 파라미터를 포함하는) 프로그램 RAM에 저장된 프로그램은 "진행 중에(en the fly)" 변경될 수 있으며, 개발자에게 프로그램의 변화 및 파라미터의 변화가 어떻게 SPROC의 기능에 영향을 끼치는지 (이후 기술될 푸로우브(100)와 관련하여)모니터하는 능력을 제공할 수 있다.
제10도에 도시된 프로우브(1000)는 사용자가 데이타 RAM 버스(125)를 모니터하고, 하나 이상의 데이타 RAM 위치에 기록된 데이타값을 포착(capture)함으로써 SPROC에 의해 생성된 내부 신호를 알 수 있게 한다. 일반적으로 프로우브(1000)는 비교기(1010), 입력부(1060a) 및 출력부(1060b)를 가진 DFM(1060), 디지탈-대-아날로그 컨버터(1070)로 구성된다. 비교기(1010)는 임의의 데이타 RAM 어드레스기 모니터될 수 있도록 프로그램가능하다. 데이타 RAM 어드레스는 비교기(1010)를 데이타 RAM 버스(125)에 연결시키고 그리고 XNOR 게이트(도시되지 않음)를 통해 프로그램된 어드레스를 버스 상에 위치된 어드레스와 비교함으로써 모니터된다. 어드레스가 매칭되고, 데이타 RAM으로부터 판독되는 것과 반대로 데이타 RAM으로 데이타가 기록되고 있다고 판단될 때, 프로우브가 데이타 RAM(100)으로 데이타 기록을 위해 데이타 RAM(100)을 액세스하는 것이 허용될 때까지, 데이타는 데이타를 저장하는 입력 DFM부(DFM section)(1060a)으로 읽혀진다. 상기 시점에서, 프로우브(1000)는 데이타를 데이타 RAM에 있는 그 자신의 버퍼에 기록한다. 프로우브(1000)가 데이타 판독을 위해 데이타 RAM(100)을 액세스하는 것이 허용될 때, 데이타 프로우브(1000)의 출력 DFM부(1060b)는 출력 DFM부의 N 블럭 분배기에 의해 설정된 속도로 데이타 RAM 버퍼로부터 데이타를 읽어온다. 데이타는 D/A 컨버터(1070)로 보내져서, 거기서 아날로그 포맷으로 변환되는데 이는 오실로스코프 상에서 관찰될 수 있다. 이와 같은 방법에서, 임의의 데이타 RAM 위치에 기록되고 있는 신호는 원하는 대로 실시간으로 모니터된다. 액세스 포트(900) 및 프로우브(1000)를 함께 사용함으로써, 액세스 포트(900)를 통해 입력되는 파라미터 값의 변화의 영향은 프로우브(1000)를 통해 아날로그 신호로서 즉시 관찰될 수 있다.
제11도에 도시된 바와 같이, 다수의 SPROC 장치(10a, 10b, 10c 등)는, 증가된 신호 처리 능력을 시스템에 제공하기 위하여 원하는 대로 함께 연결될 수도 있다. SPROC 장치들이 자신의 병렬 호스트 포트(800)를 통해 통신하는 것이 가능하다 할지라도, 일반적으로는 SPROC 장치들이 연결되어 자신의 직렬 포트(700)를 통해 상호 통신한다. SPROC 의 시스템은 논리 처리기(1120)에 강력한 신호 처리 프론트엔드(front end)로서 작용하며, 또는 만일 필요하다면, 전자-기계 또는 전자 부품과 직접 인터페이스할 수 있다.
SPROC 장치(10) 및 시스템의 포맷은 스케시에 적합하며, 사용자가 필요한 신호 처리기 또는 프로세싱 시스템을 실리콘으로 실현하기 위한 프로그래밍 언어와 관련하여 파라미터화가능한(parameterizable) 신호 처리 함수의 셀 라이브러리를 이용할 수 있는 기능을 실현시킨다. 곱셈기, 가산 접합(summing junction), 증폭기, 적분기, 위상 고정 루프, IIR 필터, FIR 필터, FFT, 정류기, 비교기, 리미터, 오실레이터, 파형 생성기 등이 신호 처리 기능에 제공된다. 사용자가 자신만의 기능을 정의하도록 프로그래밍 언어가 제공된다. 개발 시스템의 사용자는 기능 블럭을 표시하는 다수의 아이콘을 선택한다. 컴퓨터 마우스의 사용을 통해, 기호가 스크린 상에 위치하게 될 수 있고, 필요하다면 블럭 다이어그램 포맷으로 함께 결합 될 수 있다. 사용자 개략도가 완전할 때, 개발 시스템은 자동적으로 최적화된 방법으로 정보를 컴파일하며, 하나 이상의 집적된 신호 처리기의 호스트 또는 액세스 포트에 연결된(도시되지 않음) RS232 링크 및 인터페이스 회로망을 통하여 (스케치된 다이어그램을 실현시키는)프로그램을 다운로드한다. 컴파일러는 집적된 신호 처리기용 자동 코드는 물론 데이타 RAM에서 내부 신호와 함께 모든 정의된 변수를 보여주는 심벌 테이블을 생성한다. 이러한 어드레스를 기록하는 것은 파라미터의 값을 변하시킬 수 있다. 예를 들면, "볼륨(volume)" 에 대응하는 어드레스로 기록이 행해지면 증폭기의 이득(gain)은 새로운 값으로 변화된다.
본 발명의 SPROC(10)와 접속하여 사용되는 컴파일러의 하이 레벨 플로우챠트가 제12도에 도시된다. 개발 시스템의 사용자가 디자인을 컴파일하기를 원할 때, 사용자는 이 디자인을 포함하는 입력 화일과 함께 컴파일러를 동작시킨다. 우선 컴파일러는 다양한 라이브러리 블럭 중 어느 것이 요구되는 지를 단계(1210)에서 결정한다. 몇몇 라이브러리 블럭은 서브-블럭을 필요로 하기 때문에, 컴파일러는 어느서브-블럭(자식(child) 블럭이라고도 불림)이 요구되고, 모든 필요한 라이브러리 블럭 화일이 읽혀질 수 있는지를 단계(1212)에서 결정한다. 만일 화일들이 읽혀질 수 있다면, 컴파일러는 단계(1220)에서 필요한 각 블럭의 개개의 사례(instance)들을 생성한다. 왜냐하면, 동일 블럭은 디자인에서 한번 이상 사용될 수 있기 때문이다. 단계(1220)에서 생성된 사례들은 사용자 디자인의 최상위 레벨 블럭이 트리의 루트에 있는, 컴파일러 데이타 구조내에서 트리로서 나타내어진다. 단계(1230)에서, 컴파일러는 각 사례의 내용을 평가하며, 더 높은 레벨의 사례의 저장 위치와 하위 레벨 사례(child instance)의 입/출력 사이에서 논리적인 접속을 설정한다. 사례를 평가할때, 컴파일러는 상기 사례의 코드 및 데이타 저장 요구를 결정하며, 최하위 레벨의 자식 사례를 포함하는 어셈블리어 명령을 어셈블한다. 단계(1240)에서, 컴파일러는 각각의 부모 사례에 포함된 자식 사례의 리스트를 재조정(reorder)함으로써 사례들의 순서를 정한다. 이것은 각 최하의 레벨의 자식사례에 관련된 프로그램 명령의 세트가 SPROC(10)의 프로그램 메모리(150)에 위치 되는 순서이다. 이것을 수행하기 위해, 컴파일러는 트리의 루트에 있는 최상위 레벨 사례의 입력에서부터 내려가면서 이들이 만나는 자식 블럭을 통과하여 트레이스(trace)한다. 한 사례의 모든 입력을 거쳤을 때, 이 사례는 부모 사례의 순서에서 그 다음의 자식 사례로 설정된다. 피드백 루프는 검출되고 기록된다. 단계(1250)에서, 컴파일러는 다수의 GSP(100)를 통해 디자인을 분할한다. 하나 이상의 사례를 추가함으로서 ,GSP가 허용되는 처리 시간 즉, 하나의 샘플 주기 이상을 필요로 하게 될 때까지, 연속적인 자식 사례가 GSP로 할당된다. 연속적인 자식 사례는 새로운 GSP에 할당되며, 모든 사례가 각각의 GSP에 할당될 때까지 프로세스는 계속된다. 분할 단계(1250)의 일부로서, 컴파일러는 자식 순서의 정확한 지점에 팬텀 블럭(phantom block)의 사례들을 삽입한다. 팬텀 블럭은 사용자에 의해 표시되지는 않으나, 시스템의 정확한 기능을 휘해 필요로 하는 블럭이다. 한 예는 신호의 흐름에서 하나의 GSP에서 다음의 GSP로 시호를 통과시키는 소프트웨어 FIFO의 블럭이다. 단계(1260)에서, 컴파일러는 사례를 재평가하여, 단계(1250)에서 추가된 팬텀 블럭 사례들이 컴파일러의 사례 트리 데이타 구조로 완전히 통합되게 한다. 그때, 단계(1270)에서 컴파일러는 단계(1240)에서 결정된 순서로 사례 트리를 트래버스(traverse)하고, 각각의 최하위 레벨 자식 사례에 도착했을 때, 이 사례를 위해 어셈블된 SPROC 명령의 순서를 화일에 출력함으로써, 코드를 생성한다. 그것은 또한 각 사례에 요구되는 데이타 저장장치를 위한 원하는 초기값을 제2 화일에 출력한다. 그것은 사용자에 의해 제공되거나 이 디자인의 특정한 특징을 참조하는 컴파일러에 의해 자동적으로 생성되는 다양한 심벌 이름에 의해 참조된 프로그램 및 데이타 위치를 제3 파이로 출력한다.
일단 SPROC가 프로그램되면, 개발 시스템은 사용자가 장치를 대화 방식으로(interactively) 장치를 디버그하도록 허용한다. 그러므로, 상기 기술된 프로우브(100)는 개발 시스템 호스트 상에서 명령어 라인 편집기에 의해 수행된다. 개략적인 블럭도 상에서 노드 이름을 타이핑해 넣은 것을 프로우브를 그 지점으로 이동시킨다. 이 프로우브의 출력은 집적된 신호 처리기의 고정 핀에 부착된 오실로스코프에 의해 모니터가능하다. 마찬가지로 명령어 라인 편집기는 파라미터를 수정하는데 사용된다. 파라미터 수정은 타이핑해넣을 수 있거나 화일로부터 다운로드될 수 있다. 이러한 설비는 사용자가 피드백 시스템에서 극점 및 영점 위치를 이동시키며 실시간으로 그 효과를 관찰할 수 있게 한다.
디자이너가 시스템의 최적화를 종료하였을 때, 개발 시스템은 EPROM(170)에 저장될 수 있는 화일을 생성한다. SPROC(10)의 전원을 켜자 마자(power up), EPROM(170)이 SPROC의 호스트 포트(800)에 연결되고, EPROM(170)에 포함된 화일은 장치를 프로그램 하는데 사용된다.
주문 제작된 신호 처리 장치를 실리콘으로 즉시 실현할 수 있는 장치 처리기 및 신호 처리 시스템이 지금까지 설명되었다. 특정한 실시예가 설명되었지만, 이것을 본 발명을 이에 한정하려 한 것이 아니고, 본 기술 분야의 범위를 벗어나지 않는 한 가능한 넓게 본 발명을 기술하려고 의도한 것이다. 다라서 다수의 GSP를 이용하는 SPROC가 설명되었지만, 멀티포트 데이타 램, 프로그램 램, DFM 등과 관련된 확장되고 보다 강력한 단일 GSP를 사용함으로써, 본 아키텍쳐의 많은 장점들이 여전히 실현될 수 있다는 것을 인색해야 할 것이다. 더욱이, 특정 RAM 크기, 버스 크기, FIFO 길이 등이 설명되었지만, 이러한 것들은 디자인 상의 선택사항이며, 디자이너의 요구에 따라 변화될 수 있다는 것을 인색해야 할 것이다. 또한 특정한 회로망이 GSP, DFM, 및 트리거 버스 시스템을 위한 RAM 버스 디코더에 대해 공개되었고, 특정 블럭이 직렬 포트, 호스트 포트, 액세스 포트, 및 프로우브에 대해 도시되었지만, 이 회로망 및 블럭에 포함되는 기능은 동일하거나 유사한 결과를 얻기 위하여 상이한 방법으로 구현될 수 있다는 것을 인식해야 할 것이다. 따라서, 당업자들은 청구된 본 발명의 범의 및 정신을 벗어나지 않는 범위에서 다른 수정을 가할 수 있다는 것을 인식해야 할 것이다.

Claims (87)

  1. 반도체 집적을 위해 설계된 프로그램가능한 실시간 신호 처리기 장치로서, 이 신호 처리기 장치의 외부 수단으로부터 규칙적으로 클럭킹된 데이타 신호를 수신하고 상기 데이타 신호를 실시간으로 처리함으로써, 상기 처리기 장치의 외부에서 사용가능한 처리된 데이타 신호를 규칙적으로 클럭킹된 출력 신호로서 발생하는 신호 처리기 장치에 있어서, a) 상기 처리기 장치의 상기 외부 수단으로부터 상기 규칙적으로 클럭킹된 데이타 신호를 수신하는 최소한 한 개의 데이타 신호 수신 수단과; b) 상기 데이타 신호 수신 수단에 결합되어 상기 수신된 데이타 신호를 저장하는 멀티포트 중앙 메모리 유닛으로서, 상기 데이타 신호 수신 수단은 상기 멀티포트 중앙 메모리 유닛내의 소망된 위치에 상기 수신된 데이타를 규칙적으로 진행(forwarding)시키는 수단을 포함하는 멀티포트 중앙 메모리 유닛과; c) 상기 멀티포트 중앙 메모리 유닛에 결합되어, 상기 멀티포트 중앙 메모리 유닛으로부터 상기 데이타 신호를 수신하고 상기 데이타 신호를 처리함으로써 처리된 데이타 신호를 발생시키고, 상기 멀티포트 중앙 메모리 유닛내에 저장하기 위해 상기 처리된 데이타 신호를 전송하는 다수의 디지탈 처리기 수단과; d) 상기 다수의 디지탈 처리기 수단에 결합되어 상기 다수의 디지탈 처리기 수단용의 마이크로 명령어(microinstructions)를 저장하는 프로그램 메모리 수단으로서, 상기 디지탈 처리기 수단이 상기 프로그램 메모리 수단내에 저장된 마이크로 명령어에 따라 상기 데이타 신호를 처리하는 프로그램 메모리 수단과; e) 상기 멀티포트 중앙 메모리 유닛에 결합되어, 상기 멀티포트 중앙 메모리 유닛으로부터 상기 처리된 데이타 신호를 얻고, 상기 처리된 데이타 신호를 규칙적으로 클럭킹된 출력 신호로서 상기 처리기 장치의 외부 수단에 공급하는 최소한 한개의 출력 포트; 및 f) 상기 다수의 디지탈 처리기 수단, 상기 최소한 한 개의 출력 포트, 및 상기 최소한 한 개의 데이타 신호 수신 수단을 상기 멀티포트 중앙 메모리 유닛에 결합하는 최소한 한 개의 데이타 버스로서, 상기 데이타 수신 수단에 의해 수신된 실질적으로 모든 데이타는 상기 최소한 한 개의 데이타 버스를 통해 상기 멀티포트 중앙 메모리 유닛에 진행되고 상기 멀티포트 중앙 메모리 유닛으로부터 상기 최소한 한 개의 데이타 버스를 통해 얻어지며 상기 다수의 디지탈 처리기 수단중의 최소한 한 수단에 의해 처리되어 상기 처리된 데이타 신호를 발생하며, 상기 처리된 데이타 신호는 추가의 처리를 위해 상기 다수의 디지탈 처리기 수단중의 최소한 한 수단에 의해 상기 최소한 한 개의 데이타 버스를 통해 얻어지거나 상기 최소한 한 개의 데이타 버스를 통해 얻어지도록 상기 최소한 한 개의 데이타 버스를 통해 상기 멀티포트 중앙 메모리 유닛에 진행되고, 상기 수신된 규칙적으로 클럭킹된 데이타 신호의 레이트에 관련된 레이트로 규칙적으로 클럭킹된 출력 신호로서 상기 최소한 한 개의 출력 포트에 의해 출력되는 최소한 한 개의 데이타 버스를 구비하는 신호 처리기 장치.
  2. 제1항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타, RAM을 구비하고, 상기 최소한 한 개의 데이타 버스는 데이타 RAM 버스를 포함하며, 상기 다수의 디지탈 처리기 수단, 상기 데이타 신호 수신 수단, 및 상기 출력 토프가 상기 데이타 RAM 버스에 결합됨으로써 상기 데이타 RAM 버스에 대한 액세스가 시분할 멀티플렉스되는 신호 처리기 장치.
  3. 제2항에 있어서, g) 상기 프로그램 메모리 수단 및 상기 다수의 디지탈 처리기 수단에 프로그램 버스가 결합됨으로써, 상기 다수의 디지탈 처리기 수단에 의한 상기 프로그램 버스에 대한 액세스가 시분할 멀티플렉스되는 프로그램 버스를 더 구비하는 신호 처리기 장치.
  4. 제2항에 있어서, g) 최소한 상기 마이크로 명령어를 얻기위한 논리 제어 포트; 및 h) 상기 프로그램 메모리 수단에 결합된 프로그램 버스를 더 구비하며, 상기 프로그램 메모리 수단은 상기 마이크로 명령어를 상기 처리기 장치의 외부수단으로부터 상기 논리 제어 포트와 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 진행시킴으로써 상기 처리기 장치의 부트(boot) 모드에서 프로그램되는 신호 처리기 장치.
  5. 제4항에 있어서, 상기 논리 제어 포트는 호스트 포트를 포함하며, 상기 호스트 포트는 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 결합되고 상기 데이타 RAM 버스를 통해 상기 데이타 RAM 에 결합되는 신호 처리기 장치.
  6. 제5항에 있어서, 상기 신호 처리기 장치는 상기 호스트 포트에 결합된 병렬 호스트 버스와 관련하며, 상기 프로그램 버스 및 상기 데이타 RAM 버스가 비트 병렬 버스인 신호 처리기 장치.
  7. 제5항에 있어서, 상기 신호 처리기 장치는 프로그램된 ROM과관련되며, 상기 프로그램된 ROM은 상기 처리기 장치의 상기 외부 수단을 구성하며, 상기 프로그램된 ROM은 상기 프로그램 메모리 수단에 대한 상기 마이크로 명령어를 포함하고, 상기 데이타 RAM, 상기 데이타 신호 수신 수단 및 상기 출력 포트에 대한 구성 정보와, 상기 데이타 RAM에 대한 파라미터 데이타를 더 포함하며, 상기 마이크로 명령어, 구성 정보및 파라미터 데이타가 상기 프로그램된 ROM내로 컴파일(compile)되며, 상기 신호 처리기 장치의 마스터(master) 모드에서 상기 신호 처리기 장치는, 상기 논리 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 마이크로 명령어를 판독하고, 상기 프로그램 버스를 통해 상기 마이크로 명령어를 상기 프로그램 메모리 수단에 전송하여 저장되도록 하며, 상기 논리 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 구성 정보를 판독하고, 상기 구성 정보를 상기 데이타 RAM 버스를 통해 상기 데이타 RAM, 상기 데이타 신호 수신 수단 및 출력 포트에 적절하게 전송하며, 상기 논리 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 파라미터 데이타를 판독하고, 상기 파라미터 데이타를 상기 데이타 RAM에 전송하는 신호 처리기 장치.
  8. 제7항에 있어서, i) 부트 ROM을 더 구비하며, 상기 부트 ROM은 상기 처리기 장치가 부트 모드에서의 마스터 처리기 장치일때, 상기 다수의 디지탈 처리기 수단중의 한 수단에 결합되며, 상기 부트 ROM은 상기 부트 ROM에 결합된 상기 디지탈 처리기 수단이 상기 논리 제어 포트를 제어하고 상기 프로그램된 ROM으로부터 상기 마이크로 명령어, 구성 정보 및 파라미터 데이타를 얻게 하는 부트 마이크로코드를 포함하는 신호 처리기 장치.
  9. 제2항에 있어서, g) 상기 RAM 버스를 통해 상기 데이타 RAM에 결합되어, 상기 RAM 버스를 통해 상기 데이타 RAM 의 최소한 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 더 구비하는 신호 처리기 장치.
  10. 제9항에 있어서, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단에 또한 결합되고, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단의 최소한 한 위치에 기록 및/또는 판독하는 신호 처리기 장치.
  11. 제8항에 있어서, j) 상기 RAM 버스를 통해 상기 데이타 RAM에 결합되어, 상기 RAM 버스를 통해 상기 데이타 RAM 의 최소한 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 포함하는 더 구비하는 신호 처리기 장치.
  12. 제9항에 있어서, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단에 또한 결합되며, 상기 데이타 액세트 포트는 상기 프로그램 메모리 수단의 최소한 한 위치에 기록 및/또는 판독하는 신호 처리기 장치.
  13. 제2항에 있어서, g) 상기 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브(probe)를 더 구비하는 신호 처리기장치.
  14. 제13항에 있어서, 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사(probe)될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 사익 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 신호 처리기 장치.
  15. 제9항에 있어서, h) 상기 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브(probe)를 더 구비하는 신호 처리기 장치.
  16. 제15항에 있어서, 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 신호 처리기 장치.
  17. 제11항에 있어서, k) 상기 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브(probe)를 더 구비하는 신호 처리기 장치.
  18. 제17항에 있어서, 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 신호 처리기 장치.
  19. 제1항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 포트는 다수의 출력 포트를 포함하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트는 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트가 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 신호 처리기 장치.
  20. 제8항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 포트는 다수의 출력 포트를 포함하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트는 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트가 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 신호 처리기 장치.
  21. 제18항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 포트는 다수의 출력 포트를 포함하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트는 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트가 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 신호 처리기 장치.
  22. 제20항에 있어서, 상기 다수의 데이타 신호 수신 수단의 각각은 반복된 순차적 방식으로 상기 데이타 RAM내의 각각의 소망된 제1어드레스에 데이타를 기록하는 수단을 포함하며, 상기 다수의 출력 포트의 각각은 상기 데이타 RAM의 각각의 제2어드레스로부터 상기 처리된 데이타 신호를 반복된 순차적 방식으로 얻는 수단을 포함하는 신호 처리기 장치.
  23. 제21항에 있어서, 상기 다수의 데이타 신호 수신 수단의 각각은 반복된 순차적 방식으로 상기 데이타 RAM내의 각각의 소망된 제1어드레스에 데이타를 기록하는 수단을 포함하며, 상기 다수의 출력 포트의 각각은 상기 데이타 RAM의 각각의 제2어드레스로부터 상기 처리된 데이타 신호를 반복된 순차적 방식으로 얻는 수단을 포함하는 신호 처리기 장치.
  24. 청구항 제3항의 신호 처리기 장치를 다수개 구비하는 시스템에 있어서, 상기 다수의 상기 신호 처리기 장치중의 제1처리기 장치는 상기 다수의 상기 신호 처리기 장치중의 최소한 제2 처리기 장치의 데이타 신호 수신 수단에 결합된 출력 포트를 갖추는 시스템.
  25. 제24항에 있어서, 상기 신호 처리기 장치중의 하나는 마스터 처리기 장치이고, 다른 모든 처리기 장치들은 슬레이브 처리기 장치이며, 상기 마스터 처리기 장치 및 상기 플레이브 처리기 장치는 모두 각각 g) 각각의 처리기 장치용의 마이크로 명령어를 수신하는 호스트 포트; 및 h) 각각의 처리기 장치의 상기 프로그램 메모리 수단과 상기 호스트 포트를 결합하는 프로그램 버스를 더 구비하며, 상기 호스트 포트는 각각의 처리기 장치의 상기 데이타 RAM 버스를 통해 상기 데이타 RAM에 결합되며, 각각의 슬레이브 처리기 장치의 상기 프로그램 메모리 수단은 상기 슬레이브 처리기 장치의 외부 수단으로부터 상기 호스트 포트, 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 상기 마이크로 명령어를 진행시킴으로써 부트 모드에서 프로그램되는 시스템.
  26. 제25항에 있어서, 상기 시스템은 프로그램된 ROM과 관련되며, 상기 프로그램된 ROM은 부트 모드에서 상기 마스터 처리기 장치에 결합되고 상기 슬레이브 처리기 장치의 상기 외부 수단을 구성하며, 상기 프로그램된 ROM은 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 프로그램 메모리 수단용의 상기 마이크로 명령어와, 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 및 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 출력 포트용의 구성 정보 및, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 데이타 RAM용의 파라미터 데이타를 포함하며, 상기 마이크로 명령어, 구성 정보, 및 파라미터 데이타는 상기 프로그램된 ROM내에 컴파일되며, 상기 마스터 처리기 장치는 상기 마스터 처리기 장치의 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 마이크로 명령어를 판독하고 상기 마이크로 명령어를 상기 각각의 프로그램 메모리 버스를 통해 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 각각의 프로그램 메모리 수단에 전송하여 저장며, 상기 마스터 처리기 장치는 마스터 처리기 장치, 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 구성 정보를 판독하고 상기 구성 정보를 각각의 데이타 RAM버스들을 통해 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 및 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 출력 포트에 적절하게 전송하며, 상기 마스터 처리기 장치는 상기 프로그램된 ROM으로부터 상기 파라미터 데이타를 상기 마스터 처리기 장치, 호스트 포트를 통해 판독하고 상기 파라미터 데이타를 각각의 데이타 RAM 버스들을 통해 상기 각각의 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 적정 데이타 RAM들에 전송하는 시스템.
  27. 제26항에 있어서, 상기 마스터 처리기 장치는 부트 ROM을 더 구비하며, 상기 부트 ROM은 상기 마스터 처리기 장치가 부트 모드에 있을 때, 상기 마스터 처리기 장치의 상기 디지탈 처리기 수단들중의 한 처리기에 결합되며, 상기 부트 ROM은 상기 디지탈 처리기 수단이 상기 마스터 처리기 장치의 상기 호스트 포트를 제어하고 상기 프로그램된 ROM으로부터 상기 마이크로 명령어, 구성 정보 및 파라미터 데이타를 얻게 하는 부트 마이크로코드를 포함하는 시스템.
  28. 제25항에 있어서,
    상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치중의 최소한 한 장치는 각각의 데이타 RAM 버스를 통해 각각의 데이타 RAM에 결합되어 상기 데이타 RAM버스를 통해 각각의 데이타 RAM의 최소한 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 포함하는 시스템.
  29. 제28항에 있어서, 상기 데이타 액세스 포트는 각각의 프로그램 메모리 수단에 또한 결합되고, 상기 데이타 액세스 포트는 상기 각각의 프로그램 메모리 수단의 최소한 한 위치에 기록 및/또는 판독하는 시스템.
  30. 제25항에 있어서, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치중의 최소한 한 장치는 각각의 처리기 장치의 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브를 포함하는 시스템.
  31. 제30항에 있어서, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 각각의 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할 때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 시스템.
  32. 반도체 집적을 위해 설계된 프로그램가능한 실시산 신호 처리기 장치로서, 이 신호 처리기 장치의 외부 수단으로부터 규칙적으로 클럭킹된 데이타 신호를 수신하고 상기 규칙적으로 클럭킹된 데이타 신호를 처리함으로써, 상기 처리기 장치의 외부에서 사용가능한 처리된 데이타 신호를 규칙적으로 클럭킹된 출력 신호로서 발생하는 신호 처리기 장치에 있어서, a) 상기 처리기 장치의 상기 외부 수단으로부터 상기 규칙적으로 클럭킹된 데이타 신호를 수신하는 최소한 한 개의 데이타 신호 수신 수단으로서, 각각의 데이타 신호 수신 수단이 반복된 순차적 방식으로 멀티포트 중앙 메모리 유닛내의 다수의 소망된 제1어드레스 위치들에 데이타를 기록하는 수단을 포함하는 최소한 한 개의 데이타 신호 수신 수단과; b) 상기 최소한 한 개의 데이타 신호 수신 수단에 결합되어 상기 수신된 데이타 신호를 저장하는 상기 멀티포트 중앙 메모리 유닛과; c) 상기 멀티포트 중앙 메모리 유닛에 결합되어, 상기 멀티포트 중앙 메모리 유닛의 상기 제1어드레스들로부터 상기 데이타 신호를 얻고 상기 데이타 신호를 처리함으로써 처리된 데이타 신호를 발생시키고, 상기 멀티포트 중앙 메모리 유닛의 제2어드레스 위치에 저장하기 위해 상기 처리된 데이타 신호를 전송하는 디지탈 처리기 수단과; d) 상기 멀티포트 중앙 메모리 유닛에 결합되어, 상기 멀티포트 중앙 메모리 유닛의 상기 제2어드레스 위치들로부터 반복된 순차적 방식으로 상기 규칙적으로 클럭킹된 데이타 신호의 레이트에 관련된 레이트로 상기 처리된 데이타 신호를 얻고, 상기 처리된 데이타 신호를 상기 처리기 장치의 외부의 이용가능한 규칙적으로 클럭킹된 출력 신호들로서 공급하는 최소한 한 개의 데이타 출력 수단을 구비하며, 상기 신호 처리기 장치에 의해 수신된 실질적으로 모든 데이타는 상기 최소한 한 개의 데이타 신호 수신 수단으로부터 상기 멀티포트 중앙 메모리 유닛에 직접적으로 전송되고 상기 디지탈 처리기 수단은 상기 멀티포트 중앙 메모리 유닛으로부터만 실질적으로 처리할 데이타 신호를 얻고 상기 처리된 데이타 신호를 상기 멀티포트 중앙 메모리 유닛에만 실질적으로 공급하며, 상기 데이타 신호 수신 수단 및 상기 출력 수단은 상기 신호 처리기 장치로/로부터의 데이타 흐름을 조정하고 상기 디지탈 처리기 수단이 데이타 입력 인터럽트가 실질적으로 없는 기능을 갖게 하는 신호 처리기 장치.
  33. 제32항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 RAM 및 데이타 RAM 버스로 구성되며, 상기 디지탈 처리기 수단, 상기 데이타 신호 수신 수단, 및 상기 출력 수단은 상기 데이타 RAM 버스에 결합되며, 상기 데이타 RAM 버스에 대한 액세스는 시분할 멀티플렉싱되는 신호 처리기 장치.
  34. 제32항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 RAM 및 데이타 RAM 버스를 포함하며, 상기 다지탈 처리기 수단, 상기 데이타 신호 수신 수단, 및 상기 출력 수단은 상기 데이타 RAM 버스에 결합되며, 상기 처리기 장치는, e) 상기 디지탈 처리기 수단에 결합되어, 상기 디지탈 처리기 수단용의 마이크로 명령어를 저장하는 프로그램 메모리 수단을 더 포함하며, 상기 디지탈 처리기 수단은 상기 프로그램 메모리에 저장된 상기 마이크로 명령어에 따라 상기 데이타 신호를 처리하는 신호 처리기 장치.
  35. 제34항에 있어서, f) 상기 프로그램 메모리 수단 및 상기 디지탈 처리기 수단에 결합된 프로그램 버스를 더 포함하는 신호 처리기 장치.
  36. 제35항에 있어서, g) 최소한 상기 마이크로 명령어를 얻는 논리 제어 포트를 더 포함하며, 상기 프로그램 메모리 수단은 상기 마이크로 명령어를 상기 처리기 장치의 외부 수단으로부터 상기 논리 제어 포트와 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 진행시킴으로써 상기 처리기 장치의 부트(boot) 모드에서 프로그램되는 신호 처리기 장치.
  37. 제36항에 있어서, 상기 논리 제어 포트는 호스트 포트를 포함하며, 상기 호스트 포트는 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 결합되고 상기 데이타 RAM 버스를 통해 상기 데이타 RAM에 결합되는 신호 처리기 장치.
  38. 제37항에 있어서, 상기 신호 처리기 장치는 상기 호스트 포트에 결합된 병렬 호스트 버스와 관련되며, 상기 프로그램 버스 및 상기 데이타 RAM 버스가 비트 병렬 버스인 신호 처리기 장치.
  39. 제36항에 있어서, 상기 신호 처리기 장치는 프로그램된 ROM과 관련되며, 상기 프로그램된 ROM은 상기 처리기 장치의 상기 외부 수단을 구성하며, 상기 프로그램된 ROM은 상기 프로그램 메모리 수단용의 상기 마이크로 명령어를 포함하고, 상기 데이타 RAM, 상기 데이타 신호 수신 수단 및 상기 출력 수단에 대한 구성 정보와, 상기 데이타 RAM에 대한 파라미터 데이타를 더 포함하며, 상기 마이크로 명령어, 구성 정보 및 파라미터 데이타가 상기 프로그램된 ROM내로 컴파일(compile)되며, 상기 신호 처리기 장치의 마스터(madter) 모드에서 상기 신호 처리기 장치는, 상기 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 마이크로 명령어를 판독하고, 상기 프로그램 버스를 통해 상기 마이크로 명령어를 상기 프로그램 메모리 수단에 전송하여 저장하도록 하며, 상기 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 구성 정보를 판독하고, 상기 구성 정보를 상기 데이타 RAM 버스를 통해 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 데이타 기록을 위한 전송 수단 및 상기 출력 수단에 적절하게 전송하며, 상기 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 파라미터 데이타를 판독하고, 상기 파라미터 데이타를 상기 데이타 RAM에 전송하는 신호 처리기 장치.
  40. 제39항에 있어서, h) 부트 ROM을 더 구비하며, 상기 부트 ROM은 상기 처리기 장치가 부트 모드에서의 마스터 처리기 장치일 때, 상기 디지탈 처리기 수단에 결합되며, 상기 부트 ROM은 상기 부트 ROM에 결합된 상기 디지탈 처리기 수단이 상기 논리 제어 포트를 제어하고 상기 프로그램된 ROM으로부터 상기 마이크로 명령어, 구성 정보 및 파라미터 데이타를 얻게 하는 부트 마이크로코드를 포함하는 신호 처리기 장치.
  41. 제34항에 있어서, f) 상기 RAM 버스를 통해 상기 데이타 RAM에 결합되어, 상기 RAM 버스를 통해 상기 데이타 RAM 의 최소한 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 포함하는 더 구비하는 신호 처리기 장치.
  42. 제41항에 있어서, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단에 또한 결합되고, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단의 최소한 한 위치에 기록 및/또는 판독하는 신호 처리기 장치.
  43. 제40항에 있어서, i) 상기 RAM 버스를 통해 상기 데이타 RAM에 결합되어, 상기 RAM 버스를 통해 상기 데이타 RAM 의 최소한 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 포함하는 더 구비하는 신호 처리기 장치.
  44. 제43항에 있어서, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단에 또한 결합되며, 상기 데이타 액세스 포트는 상기 프로그램 메모리 수단의 최소한 한 위치에 기록 및/또는 판독하는 신호 처리기 장치.
  45. 제34항에 있어서,f) 상기 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브(probe)를 더 구비하는 신호 처리기 장치.
  46. 제45항에 있어서,상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는,상기 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사(probe)될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과;상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할 때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 신호 처리기 장치.
  47. 제41항에 있어서, g) 상기 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브(probe)를 더 구비하는 신호 처리기 장치.
  48. 제47항에 있어서, 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할 때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 신호 처리기 장치.
  49. 제43항에 있어서, j) 상기 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브(probe)를 더 구비하는 신호 처리기 장치.
  50. 제49항에 있어서, 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할 때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타나 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 신호 처리기 장치.
  51. 제32항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 수단은 다수의 출력 수단을 포함하며, 각각의 출력 수단은 상기 멀티포트 중앙 메모리 유닛의 각각의 다른 제2어드레스 위치들로부터 반복된 순차적 방식으로 상기 처리된 데이타 신호를 얻고 상기 처리된 데이타 신호를 상기 처리기 장치의 외부에서 사용가능하게 하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 출력 수단은 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 출력 수단이 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 신호 처리기 장치.
  52. 제40항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 수단은 다수의 출력 수단을 포함하며, 각각의 출력 수단은 상기 멀티포트 중앙 메모리 유닛의 각각의 다른 제2어드레스 위치들로부터 반복된 순차적 방식으로 상기 처리된 데이타 신호를 얻고 상기 처리된 데이타 신호를 상기 처리기 장치의 외부에서 사용가능하게 하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 출력 수단은 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 출력 수단이 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 신호 처리기 장치.
  53. 제50항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 수단은 다수의 출력수단을 포함하며, 각각의 출력 수단은 상기 멀티포트 중앙 메모리 유닛의 각각의 다른 제2어드레스 위치들로부터 반복된 순차적 방식으로 상기 처리된 데이타 신호를 얻고 상기 처리된 데이타 신호를 상기 처리기 장치의 외부에서 사용가능하게 하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 출력 수단은 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 출력 수단이 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 신호 처리기 장치.
  54. 청구항 제37항의 신호 처리기 장치를 다수개 구비하는 시스템에 있어서, 상기 다수의 처리기 장치중의 제1처리기 장치는 상기 다수의 상기 신호 처리기 장치중의 최소한 제2처리기 장치의 데이타 신호 수신 수단에 결합된 출력 수단을 갖추는 시스템.
  55. 제54항에 있어서, 상기 신호 처리기 장치중의 하나는 마스터 처리기 장치이고, 다른 모든 처리기 장치들은 슬레이브 처리기 장치이며, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치는 모두 각각 f) 각각의 처리기 장치용의 마이크로 명령어를 수신하는 호스트 포트; 및 g) 각각의 처리기 장치의 상기 프로그램 메모리 수단과 상기 호스트 포트를 결합하는 프로그램 버스를 더 구비하며, 상기 호스트 포트는 각각의 처리기 장치의 상기 데이타 RAM 버스를 통해 상기 데이타 RAM에 결합되며, 각각의 슬레이브 처리기 장치의 상기 프로그램 메모리 수단은 상기 슬레이브 처리기 장치의 외부 수단으로부터 상기 호스트 포트, 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 상기 마이크로 명령어를 진행시킴으로써 부트 모드에서 프로그램되는 시스템.
  56. 제55항에 있어서, 상기 시스템은 프로그램된 ROM과 관련되며, 상기 프로그램된 ROM은 부트 모드에서 상기 마스터 처리기 장치에 결합되고 상기 슬레이브 처리기 장치의 상기 외부 수단을 구성하며, 상기 프로그램된 ROM은 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 프로그램 메모리 수단용의 상기 마이크로 명령어와, 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 및 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 출력 수단용의 구성 정보 및, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 데이타 RAM용의 파라미터 데이타를 포함하며, 상기 마이크로 명령어, 구성 정보, 및 파라미터 데이타는 상기 프로그램된 ROM내에 컴파일되며, 상기 마스터 처리기 장치는 상기 마스터 처리기 장치의 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 마이크로 명령어를 판독하고 상기 마이크로 명령어를 상기 각각의 프로그램 메모리 버스를 통해 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 각각의 프로그램 메모리 수단에 전송하여 저장며, 상기 마스터 처리기 장치는 상기 마스터 처리기 장치, 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 구성 정보를 판독하고 상기 구성 정보를 각각의 데이타 RAM 버스들을 통해 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 상기 데이타 기록을 위한 수단 및 각각의 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 출력 수단에 적절하게 전송하며, 상기 마스터 처리기 장치는 상기 프로그램된 ROM으로부터 상기 파라미터 데이타를 상기 마스터 처리기 장치, 호스트 포트를 통해 판독하고 상기 파라미터 데이타를 각각의 데이타 RAM 버스들을 통해 각각의 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 적정 데이타 RAM들에 전송하는 시스템.
  57. 제56항에 있어서, 상기 마스터 처리기 장치는 부트 ROM을 더 구비하며, 상기 부트 ROM은 상기 마스터 처리기 장치가 부트 모드에 있을 때, 상기 마스터 처리기 장치의 상기 디지탈 처리기 수단에 결합되며, 상기 부트 ROM은 상기 디지탈 처리기 수단이 상기 마스터 처리기 장치의 상기 호스트 포트를 제어하고 상기 프로그램된 ROM으로부터 상기 마이크로 명령어, 구성 정보 및 파라미터 데이타를 얻게 하는 부트 마이크로코드를 포함하는 시스템.
  58. 제55항에 있어서, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치중의 최소한 한 장치는 각각의 데이타 RAM 버스를 통해 각각의 데이타 RAM에 결합되어 상기 데이타 RAM 버스를 통해 각각의 데이타 RAM의 최소한 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 포함하는 시스템.
  59. 제58항에 있어서, 상기 데이타 액세스 포트는 각각의 프로그램 메모리 수단에 또한 결합되고, 상기 데이타 액세스 포트는 상기 각각의 프로그램 메모리 수단의 최소한 한 위치에 기록 및/또는 판독하는 시스템.
  60. 제55항에 있어서, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치중의 최소한 한 장치는 각각의 처리기 장치의 데이타 RAM의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호를 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치의 외부 수단에 공급하는 프로우브를 포함하는 시스템.
  61. 제60항에 있어서, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 데이타 RAM 버스는 다수의 데이타 라인 및 다수의 어드레스 라인으로 구성되며, 상기 프로우브는, 상기 각각의 데이타 RAM 버스의 상기 어드레스 라인에 결합되어, 탐침 검사될 상기 데이타 RAM의 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 어드레스를 비교하는 비교수단과; 상기 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 상기 어드레스중의 한 어드레스간에 매칭(match)을 발견할 때에, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 수단과; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 수단; 및 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 수단을 포함하는 시스템.
  62. 텍스트(textual) 또는 그래픽의 고급 수준의 설명(description)에 의해 정의된 다른 회로들을 실질적으로 집적된 회로 포맷에서 구현하기 위한 시스템에 있어서, 개발 시스템 및 신호 처리기 장치를 구비하며, a) 개발 시스템은 1) 셀 라이브러리(library)를 저장하는 메모리 수단으로서, 상기 셀 라이브러리는 상기 다른 회로들을 구현하는 데에 유용한 다수의 기능 블럭 소자들을 포함하며, 각각의 기능 블럭이 한 세트의 명령어에 의해 정의되는 셀 라이브러리를 저장하는 메모리 수단과; 2) 상기 셀 라이브러리의 상기 기능 블럭 소자를 선택하고 상기 기능 블럭 소자들간의 상호 접속을 한정하는 회로 정의 엔트리 수단으로서, 소망된 회로부로서 선택된 다수의 기능 블럭 소자에 대한 파라미터들을 입력하는 수단을 포함하는 회로 정의 엔트리 수단과; 3) 최소한 한 개의 신호 처리기 장치에 대한 마이크로코드를 생성하기 위해 소망된 알고리즘에 따라 상기 명령어 세트 및 상기 파라미터를 컴파일링하며, 상기 최소한 한 개의 신호 처리기 장치가 상기 소망된 회로를 구현할 수 있는 처리기 수단을 포함하며, b) 상기 신호 처리기 장치는, 상기 신호 처리기 장치의 외부에서 발생된 규칙적으로 클럭킹된 데이타 신호를 수신하고, 상기 마이크로코드에 따라 상기 데이타 신호를 처리하여 처리된 데이타 신호를 발생하고, 상기 처리기 장치의 외부 수단에 대해 상기 처리된 데이타 신호를 상기 규칙적으로 클럭킹된 데이터 신호의 데이타 레이트에 관련된 데이타 레이트를 갖는 규칙적으로 클럭킹된 출력 신호로서 사용가능하게 하며, 상기 신호 처리기 장치는, 1) 상기 규칙적으로 클럭킹된 데이타 신호를 수신하고, 상기 개발 시스템으로부터 상기 마이크로코드르 수신하는 포트 수단과; 2) 프로그램 버스를 포함하고, 상기 포트 수단에 결합되어 상기 마이크로코드를 수신 및 저장하는 프로그램 메모리와; 3) 데이타 버스를 포함하고, 상기 포트 수단에 결합되며, 상기 수신된 데이타 신호를 저장하는 멀티포트 중앙 메모리 유닛으로서, 상기 포트 수단이 상기 멀티포트 중앙 메모리 유닛내의 소망된 위치에 상기 수신된 데이타 신호들을 진생시키는 수단을 포함하는 멀피포트 중앙 메모리 유닛과; 4) 상기 멀티포트 중앙 메모리 유닛 및 상기 프로그램 메모리에 결합되어, 상기 멀트포트 중앙 메모리 유닛으로부터 상기 데이타 신호를 얻고, 상기 프로그램 메모리내에 저장된 상기 마이크로코드에 따라 상기 데이타 신호를 처리하여 처리된 데이타 신호를 발생시키고, 상기 처리된 데이타 신호들을 상기 멀티포트 중앙 메모리 유닛내에 전송하여 저장하는 디지탈 처리기 수단; 및 5) 상기 멀티포트 중앙 메모리 유닛에 결합되어, 상기 멀티포트 중앙 메모리 유닛으로부터 상기 처리된 데이타 신호를 얻고, 상기 처리기 장치의 상기 외부 수단에 대해 상기 처리된 데이타 신호를 상기 규칙적으로 클럭킹된 데이타 신호의 데이타 레이트에 관련된 데이타 레이트를 갖는 규칙적으로 클럭킹된 출력 신호로서 사용가능하게 하는 출력 수단을 포함하는 시스템.
  63. 제62항에 있어서, 상기 포트 수단은 제어 포트 및 데이타 신호 수신 수단을 포함하며, 상기 제어 포트는 상기 개발 시스템에 결합되어 상기 개발 시스템으로부터 상기 마이크로코드를 수신하고, 상기 데이타 신호 수신 수단은 상기 데이타 신호를 수신하고, 상기 데이타 신호 수신 수단은 상기 진행시키는 수단을 포함하는 시스템.
  64. 제63항에 있어서, 컴파일하는 상기 처리기 수단은 상기 데이타 신호 수신 수단, 상기 멀리포트 중앙 메모리 유닛 및 상기 출력 수단을 구성하는 구성 정보 및 상기 멀티포트 중앙 메모리 유닛에 대한 파라미터 데이타를 또한 생성하는 시스템.
  65. 제64항에 있어서, 상기 신호 처리기 장치는, 7) 부트 ROM을 더 구비하며, 상기 부트 ROM은 상기 처리기 장치가 부트 모드에서의 마스터 처리기 장치일 때, 상기 디지탈 처리기 수단에 결합되며, 상기 부트 ROM은 상기 부트 ROM에 결합된 상기 디지탈 처리기 수단이 상기 제어 포트를 제어하고 상기 프로그램된 ROM으로부터 상기 마이크로 명령어, 구성 정보 및 파라미터 데이타를 얻게 하는 부트 마이크로코드를 포함하고, 상기 멀티포트 중앙 메모리 유닛에 상기 파라미터 데이타를, 상기 프로그램 메모리에 상기 마이크로 명령어를, 상기 데이타 신호 수신 수단, 상기 멀티포트 중앙 메모리 유닛, 및 상기 출력 수단에 상기 구성 정보를 진행시키는 시스템.
  66. 제65항에 있어서, 상기 신호 처리기 장치는 8) 상기 데이타 버스를 통해 상기 멀티포트 중앙 메모리 유닛에 결합되어, 상기 데이타 버스를 통해 상기 멀티포트 중앙 메모리 유닛의 최소하 한 위치에 기록 및/또는 판독하는 데이타 액세스 포트를 더 구비하는 시스템.
  67. 제66항에 있어서, 상기 데이타 액세스 포트는 상기 프로그램 메모리에 또한 결합되고, 상기 프로그램 메모리의 최소한 한 개의 위치로/로부터 기록 및/또는 판독하는 시스템.
  68. 제65항에 있어서, 상기 신호 처리기 장치는, 8) 상기 멀트포트 중앙 메모리 유닛의 소망된 어드레스를 모니터하고, 상기 소망된 어드레스에서의 데이타를 얻어 아나로그 신호로 변환하고, 상기 아나로그 신호를 상기 신호 처리기 장치 외부 수단에 공급하는 프로우브를 더 구비하는 시스템.
  69. 제64항에 있어서, c) 프로그램된 ROM을 더 구비하고, 상기 프로그램된 ROM은 상기 프로그램 메모리 수단용의 마이크로 명령어, 상기 멀티포트 중앙 메모리 유닛, 상기 데이타 신호 수신 수단, 및 상기 출력 수단용의 상기 구성 정보, 및 상기 멀티포트 중앙 메모리 유닛용의 파라미터 데이타를 수신 및 보유하며, 상기 마이크로 명령어, 구성 정보, 및 파라미터 데이타가 컴파일용의 상기 처리기 수단에 의해 상기 프로그램된 ROM에 컴파일되며, 상기 신호 처리기 장치의 마스터 모드에서 상기 신호 처리기 장치는, 상기 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 마이크로 명령어를 판독하고, 상기 마이크로 명령어를 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 전송하여 저장하며, 상기 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 구성 정보를 판독하고, 상기 구성 정보를 상기 데이타 RAM 버스를 통해 상기 멀티포트 중앙 메모리 유닛, 상기 데이타 신호 수신 수단, 및 상기 출력 수단에 적절하게 전송하며, 상기 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 파라미터 데이타를 판독하고, 상기 파마리터 데이타를 상기 데이타 RAM에 전송하는 시스템.
  70. 제65항에 있어서, c) 프로그램된 ROM을 더 구비하고, 상기 프로그램된 ROM은 상기 프로그램 메모리 수단용의 마이크로 명령어, 상기 멀티포트 중앙 메모리 유닛, 상기 데이타 신호 수신 수단, 및 상기 출력 수단용의 상기 구성 정보, 및 상기 멀티포트 중앙 메모리 유닛용의 파라미터 데이타를 수신 및 보유하며, 상기 마이크로 명령어, 구성 정보, 및 파라미터 데이타가 컴파일용의 상기 처리기 수단에 의해 상기 프로그램된 ROM에 컴파일되며, 상기 신호 처리기 장치의 마스터 모드에서 상기 신호 처리기 장치는, 상기 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 마이크로 명령어를 판독하고, 상기 마이크로 명령어를 상기 프로그램 버스를 통해 상기 프로그램 메모리 수단에 전송하여 저장하며, 상기 제어 포트를 통해 상기 프로그램된 ROM으로부터 상기 구성 정보를 판독하고, 상기 구성 정보를 상기 데이타 RAM 버스를 통해 상기 멀리포트 중앙 메모리 유닛, 상기 데이타 신호 수신 수단, 및 상기 출력 수단에 적절하게 전송하며, 상기 호스트 포트를 통해 상기 프로그램된 ROM으로부터 상기 파라미터 데이타를 판독하고, 상기 파라미터 데이타를 상기 데이타 RAM에 전송하는 시스템.
  71. 제64항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 수단을 다수의 출력 포트를 포함하며, 상기 다수의 데이타 신호 수신 및 상기 다수의 포트는 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트가 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 시스템.
  72. 제71항에 있어서, 상기 다수의 데이타 신호 수신 수단의 각각은 반복된 순차적 방식으로 상기 멀티포트 중앙 메모리 유닛내의 각각의 소망된 제1어드레스에 데이타를 기록하는 수단을 포함하며, 상기 다수의 출력 포트의 각각은 상기 멀티포트 중앙 메모리 유닛의 각각의 제2 어드레스로부터 상기 처리된 데이타 신호를 반복된 순차적 방식으로 얻는 수단을 포함하느 시스템.
  73. 제64항에 있어서,
    상기 시스템은 다수의 상기 신호 처리기 장치를 포함하며, 상기 다수의 상기 신호 처리기 장치는 상기 다수의 상기 처리기 장치중의 제1처리기 장치의 출력 수단이 상기 다수의 상기 신호 처리기 장치중의 최소한 제2처리기 장치의 데이타 신호 수신 수단에 결합되며, 상기 처리기 장치중의 한 개의 처리기 장치는 마스터 처리기 장치이고, 모든 처리기 장치는 슬레이브 처리기 장치인 시스템.
  74. 제68항에 있어서, 상기 시스템은 다수의 상기 신호 처리기 장치를 포함하며, 상기 다수의 상기 신호 처리기 장치는 상기 다수의 상기 처리기 장치중의 제1처리기 장치의 출력 수단이 상기 다수의 상기 신호 처리기 장치중의 최소한 제2처리기 장치의 데이타 신호 수신 수단에 결합되며, 상기 처리기 장치중의 한 개의 처리기 장치는 마스터 처리기 장치이고, 모든 다른 처리기 장치는 슬레이브 처리기 장치이며, 상기 프로그램된 ROM은 또한 상기 슬레이브 처리기 장치용의 파라미터 데이타, 마이크로 명령어, 구성 정보를 보유하는 시스템.
  75. 제74항에 있어서, 상기 최소한 한 개의 데이타 신호 수신수단은 다수의 데이타 신호 수신 수단을 포함하며, 상기 멀티포트 중앙 메모리 유닛에 결합된 상기 최소한 한 개의 출력 수단은 다수의 출력 포트를 포함하며, 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트는 각각 상기 다수의 데이타 신호 수신 수단 및 상기 다수의 포트가 상기 신호 처리기 장치의 다수의 다른 외부 수단의 클럭킹 및 비트 폭과 호환가능하게 하는 인터페이스 수단을 포함하는 시스템.
  76. 제75항에 있어서, 상기 다수의 데이타 신호 수신 수단의 각각은 반복된 순차적 방식으로 상기 멀티포트 중앙 메모리 유닛내의 각각의 소망된 제1어드레스에 데이타를 기록하는 수단을 포함하며, 상기 다수의 출력 포트의 각각은 상기 멀티포트 중앙 메모리 유닛의 각각의 제2어드레스로부터 상기 처리된 데이타 신호를 반복된 순차적 방식으로 얻는 수단을 포함하는 시스템.
  77. 반도체 집적을 위해 설계된 실시간 신호 처리기 장치에서의 정보를 처리하는 방법으로서, 상기 신호 처리기 장치가 상기 신호 처리기 장치의 외부 수단으로부터 규칙적으로 클럭킹된 데이타 신호를 수신하는 데이타 신호 수신 수단, 상기 데이타 신호 수신 수단에 결합된 멀티포트 중앙 메모리 유닛, 상기 멀티포트 중앙 메모리 유닛에 결합된 디지탈 처리기 수단, 및 상기 멀티포트 중앙 메모리 유닛에 결합된 최소한 한 개의 출력 포트를 갖추며, 상기 신호 처리기 장치의 동작 모드에 대해 정보를 처리하는 방법에 있어서, a) 상기 데이타 수신 수신 수단에서 상기 규칙적으로 클럭킹된 데이타 신호를 수신하는 단계; b) 상기 수신된 데이타 신호를 반복된 순차적 방식으로 상기 멀티포트 중앙 메모리 유닛내의 다수의 소망된 제1위치에 진행시키는 단계; c) 상기 디지탈 처리기 수단이 상기 멀티포트 중앙 메모리 유닛으로부터 상기 데이타 신호를 얻게 하는 단계' d) 상기 디지탈 신호 처리기내의 상기 데이타 신호를 처리하여 처리된 데이타 신호를 발생하는 단계; e) 상기 디지탈 처리기 수단으로부터 상기 처리된 데이타 신호를 상기 멀티포트 중앙 메모리 유닛에 전송하여 상기 멀티포트 중앙 메모리 유닛내의 소망된 제2위치내에 저장하는 단계; f) 상기 출력 포트가 상기 소망된 제2위치로부터 상기 처리된 데이타 신호를 반복된 순차적 방식으로 얻고 상기 처리기 장치의 외부 수단에 대해 상기 처리된 데이타 신호를 상기 규칙적으로 클러킹된 데이타 신호의 데이타 레이트에 관련된 데이타 레이트를 갖는 규칙적으로 클럭킹된 출력 신호로서 사용가능하게 하는 단계를 포함하며, 상기 신호 처리기 장치에 의해 수신된 실질적으로 모든 데이타는 상기 최소한 한 개의 데이타 신호 수신 수단으로부터 상기 멀티포트 중앙 메모리 유닛에 직접적으로 전송되고 상기 디지탈 처리기 수단은 상기 멀티포트 중앙 메모리 유닛으로부터만 실질적으로 처리할 데이타 신호를 얻고 상기 처리된 데이타 신호를 상기 멀티포트 중앙 메모리 유닛에만 실질적으로 공급하는 정보 처리 방법.
  78. 제77항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 RAM 및 데이타 ROM 버스로 구성되며, 상기 b), c), e), 및 f) 단계는 상기 데이타 RAM 버스를 사용하여 시분할 멀티플렉싱 방식으로 실현되는 정보 처리 방법.
  79. 제77항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 RAM 및 데이타 RAM 버스로 구성되며, 상기 신호 처리기 장치는 프로그램 메모리 수단 및 프로그램 버스를 더 구비하며, 상기 프로그램 메모리 수단이 상기 디지탈 처리기 수단에 결합되고, 상기 프로그램 메모리 수단이 상기 디지탈 처리기 수단을 제어하기 위한 마이크로 명령어를 저장하며, 상기 디지탈 처릭 수단은 상기 처리 단계에서 상기 데이타 신호를 상기 프로그램 메모리내에 저장된 상기 마이크로 명령어에 따라 처리하는 정보 처리 방법.
  80. 제77항에 있어서, 상기 신호 처리기 장치는 다수의 데이타 신호 수신 수단 및 다수의 출력 포트를 구비하고, 상기 a) 내지 f) 단계는 상기 신호 처리기 장치를 통해 다수의 데이타 경로를 설정하는 정보 처리 방법.
  81. 제78항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 RAM 및 데이타 RAM 버스로 구성되며, 상기 신호 처리기 장치는 프로그램 메모리 수단 및 프로그램 버스, 다수의 데이타 신호 수신 수단, 및 다수의 출력 포트를 더 구비하며, 상기 프로그램 메모리 수단이 상 디지탈 처리기 수단에 결합되어 상기 디지탈 처리기 수단용의 마이크로 명령어를 저장하며, 상기 디지탈 처리기 수단은 상기 처리 단계에서 상기 데이타 신호를 상기 프로그램 메모리내에 저장된 상기 마이크로 명령어에 따라 처리하며, a) 내지 f) 단계는 상기 다수의 출력 포트 및 상기 다수의 데이타 신호 수신 수단을 활용하여, 상기 신호 처리기 장치를 통해 다수의 데이타 경로를 설정하는 정보 처리 방법.
  82. 제79항에 있어서, 상기 신호 처리기 장치는 논리 제어 포트를 더 구비하며, 상기 논리 제어 포트가 상기 마이크로 명령어를 저장하기 위해 프로그램 메모리 수단에 결합되며, 상기 방법은 상기 신호 처리기 장치의 부트-업 모드에 대해, 부트-업 모드동안 상기 논리 제어 포트를 통해 외부의 프로그램된 메모리로부터 상기 마이크로 명령어를 판독하는 단계; 및 상기 신호 처리기 장치의 상기 프로그램 메모리 수단내에 상기 마이크로 명령어를 진행시켜 저장하는 단계를 더 포함하는 정보 처리 방법.
  83. 제82항에 있어서, 상기 신호 처리기 장치 외부의 프로그램된 메모리는 상기 데이타 RAM, 상기 데이타 신호 수신 수단 및 상기 출력 포트용 구성 정보 및 상기 데이타 RAM용의 파라미터 데이타를 또한 저장하며, 상기 마이크로 명령어, 구성 정보, 및 파라미터 데이타는 상기 신호 처리기 장치 외부의 프로그램된 메모리내에 컴파일되며, 상기 정보 처리 방법은 상기 신호 처리기 장치가 마스터 처리기 장치인 상기 신호 처리기 장치의 부트-업 모드에 대해, 상기 논리 제어 포트를 통해 외부의 프로그램된 메모리 수단으로부터 상기 구성 정보를 판독하는 단계; 상기 데이타 RAM 버스를 통해, 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 및 상기 출력 포트에 적절하게 상기 구성 정보를 전송하는 단계; 상기 논리 제어 포트를 통해 외부의 프로그램된 메모리로부터 상기 파라미터 데이타를 판독하는 단계; 및 상기 데이타 RAM 버스를 통해 상기 파라미터 데이타를 상기 데이타 RAM에 전송하는 단계를 더 포함하는 정보 처리 방법.
  84. 제83항에 있어서, 상기 마스터 처리기 장치는 부트 모드에서 상기 디지탈 처리기 수단에 결합된 부트 ROM을 더 구비하며, 상기 부트 ROM은 외부의 프로그램된 메모리로부터 상기 마이크로 명령어, 구성 정보, 및 상기 파라미터 데이타를 얻기 위해 상기 디지탈 처리기 수단이 논리 제어 포트를 제어하는 부트 모드 마이크로 명령어를 포함하는 정보 처리 방법.
  85. 제77항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 RAM 및 데이타 RAM 버스를 구비하며, 상기 신호 처리기 장치는 상기 데이타 RAM 버스에 결합된 데이타 액세스 포트를 더 구비하며, 상기 정보 처리 방법은, 상기 데이타 RAM내의 소망된 위치로부터 데이타 신호 또는 처리된 데이타 신호중의 하나를 상기 데이타 액세스 포트를 통해 판독하는 단계; 및 상기 데이타 신호 또는 처리된 데이타 신호에 대해 대체 데이타 신호를 상기 데이타 액세스 포트를 통해 기록하는 단계를 더 포함하는 정보 처리 방법.
  86. 제77항에 있어서, 상기 멀티포트 중앙 메모리 유닛은 데이타 및 어드레스 라인을 갖춘 데이타 RAM 버스 및 데이타 RAM을 구비하며, 상기 신호 처리기 장치는 상기 데이타 RAM 버스의 상기 어드레스 라인에 결합된 어드레스 비교기 수단을 갖춘 프로우브 포트를 더 구비하며, 상기 정보 처리 방법은, 상기 데이타 RAM의 탐침 검사될 소망된 어드레스를 모니터하여, 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타난 정보와 상기 소망된 어드레스를 나타내는 정보를 비교하는 단계; 상기 어드레스 비교수단이 상기 소망된 어드레스와 상기 데이타 RAM 버스의 상기 어드레스 라인상에 나타나 상기 어드레스들중의 한 어드레스간에 매칭을 발견할 대, 상기 데이타 RAM 버스의 상기 데이타 라인상에 나타난 데이타를 상기 데이타 RAM내의 예정된 위치에 기록하는 단계; 상기 데이타 RAM의 상기 예정된 위치에 기록된 상기 데이타를 판독하는 단계; 상기 데이타 RAM의 상기 예정된 위치로부터 판독된 상기 데이타를 아나로그 신호로 변환하는 단계를 더 포함하는 정보 처리 방법.
  87. 제79항에 있어서, 상기 정보 처리 방법은 다수의 상기 신호 처리기 장치를 활용하며, 상기 신호 처리기 장치중의 한 장치는 마스터 처리기 장치이고, 다른 모든 처리기 장치는 슬레이브 처리기 장치이며, 상기 처리기 장치중의 제1처리기 장치는 상기 처리기 장치중의 제2처리기 장치의 데이타 신호 입력 포트에 결합된 출력 포트를 갖추며, 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치는 각각 외부의 프로그램된 메모리에 결합된 논리 제어 포트를 포함하고, 상기 마스터 처리기 장치는 부트 모드에서 상기 디지탈 처리기 수단에 결합된 부트 ROM을 포함하고, 상기 부트 ROM은 상기 디지탈 처리기 수단이 상기 마스터 처리기 장치의 상기 논리 제어 포트를 제어하게 하는 부트 모드 마이크로 명령어를 포함하며, 상기 처리기 장치의 부트-업 모드에서 상기 정보 처리 방법은, 상기 마스터 처리기 장치의 외부의 프로그램된 메모리로부터 상기 논리 제어포트를 통해, 상기 마이크로 명령어, 구성 정보, 및 파리미터 데이타를 판독하는 단계; 상기 마스터 처리기 장치의 상기 프로그램 메모리 수단에 적절한 상기 마이크로 명령어를 전송하고, 다른 적절한 상기 마이크로 명령어를 각각의 논리 제어포트를 통해 각각의 슬레이브 처리기 장치의 프로그램 메모리 수단에 전송하는 단계; 각각의 상기 데이타 RAM 버스를 통해, 상기 데이타 RAM, 상기 데이타 신호 수신 수단, 및 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 상기 출력 포트에 적절하게 상기 구성 정보를 전송하는 단계; 및 각각의 상기 데이타 RAM 버스를 통해 상기 마스터 처리기 장치 및 상기 슬레이브 처리기 장치의 각각의 상기 데이타 RAM에 적절하게 상기 파라미터 데이타를 전송하는 단계를 더 포함하는 정보 처리 방법.
KR1019920702896A 1990-05-18 1991-05-15 실시간 프로그램 가능 신호 처리기 아키텍쳐 KR100240158B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US52597790A 1990-05-18 1990-05-18
US525,977 1990-05-18
PCT/US1991/003386 WO1991018342A1 (en) 1990-05-18 1991-05-15 Programmable signal processor architecture

Publications (2)

Publication Number Publication Date
KR937000906A KR937000906A (ko) 1993-03-16
KR100240158B1 true KR100240158B1 (ko) 2000-01-15

Family

ID=24095404

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920702896A KR100240158B1 (ko) 1990-05-18 1991-05-15 실시간 프로그램 가능 신호 처리기 아키텍쳐

Country Status (8)

Country Link
US (1) US5428749A (ko)
EP (1) EP0530310A4 (ko)
JP (1) JPH05509425A (ko)
KR (1) KR100240158B1 (ko)
AU (1) AU665927B2 (ko)
CA (1) CA2084420C (ko)
IL (1) IL98161A (ko)
WO (1) WO1991018342A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630161A (en) * 1995-04-24 1997-05-13 Martin Marietta Corp. Serial-parallel digital signal processor
US5696985A (en) * 1995-06-07 1997-12-09 International Business Machines Corporation Video processor
US5764884A (en) * 1996-10-31 1998-06-09 International Business Machines Corp. Method and apparatus for improved instruction counting schemes
US6374320B1 (en) 1998-08-10 2002-04-16 Micron Technology, Inc Method for operating core logic unit with internal register for peripheral status
US6233627B1 (en) 1998-08-10 2001-05-15 Micron Technology, Inc. Processor with internal register for peripheral status
US6219720B1 (en) 1998-08-10 2001-04-17 Micron Technology, Inc. Core logic unit with internal register for peripheral status
DE69814182T2 (de) * 1998-08-10 2004-04-01 Micron Technology, Inc. Prozessor oder zentraleinheit mit internem register für peripheriezustand
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7809928B1 (en) * 2005-11-29 2010-10-05 Nvidia Corporation Generating event signals for performance register control using non-operative instructions
US8253748B1 (en) 2005-11-29 2012-08-28 Nvidia Corporation Shader performance registers
JP5460409B2 (ja) * 2010-03-25 2014-04-02 京セラドキュメントソリューションズ株式会社 情報処理システム
JP2013061851A (ja) * 2011-09-14 2013-04-04 Ricoh Co Ltd メモリコントローラ及びsimd型プロセッサ
WO2015140113A1 (en) * 2014-03-21 2015-09-24 Thomson Licensing Realization of recursive digital filters on parallel computing platforms
CN107844321B (zh) * 2016-09-21 2021-09-07 上海芯旺微电子技术有限公司 一种mcu处理系统
CN110825378B (zh) * 2019-09-17 2023-07-18 秦皇岛米格教育科技有限公司 基于程序积木的编程系统和控制系统
CN110780877B (zh) * 2019-09-17 2023-10-03 秦皇岛米格教育科技有限公司 基于程序积木的编程系统及其配置装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3815104A (en) * 1973-01-18 1974-06-04 Lexitron Corp Information processing system
DE2966916D1 (en) * 1978-10-06 1984-05-24 Hughes Aircraft Co Modular processor system
US4435759A (en) * 1981-06-15 1984-03-06 International Business Machines Corporation Hardware monitor for obtaining processor software/hardware interrelationships
US4439839A (en) * 1981-08-24 1984-03-27 International Telephone And Telegraph Corporation Dynamically programmable processing element
US4477873A (en) * 1982-04-29 1984-10-16 International Telephone & Telegraph Corporation Channel monitor for connection to channel lines
US4750111A (en) * 1984-08-22 1988-06-07 Crosby Jr Edward D Computer system for processing analog and digital data
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
US4701860A (en) * 1985-03-07 1987-10-20 Harris Corporation Integrated circuit architecture formed of parametric macro-cells
US4748573A (en) * 1985-06-28 1988-05-31 Honeywell Inc. Test management system to acquire, process and display test data
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
US4740894A (en) * 1985-09-27 1988-04-26 Schlumberger Systems And Services, Inc. Computing processor with memoryless function units each connected to different part of a multiported memory
US4868785A (en) * 1987-01-27 1989-09-19 Tektronix, Inc. Block diagram editor system and method for controlling electronic instruments
GB2217058A (en) * 1988-03-23 1989-10-18 Benchmark Technologies Processing integral transform operations
EP0350911A3 (en) * 1988-07-13 1990-09-05 Modular Computer Systems Inc. Tightly coupled multiprocessor structure for real-time applications
US5031111C1 (en) * 1988-08-08 2001-03-27 Trw Inc Automated circuit design method
US5210862A (en) * 1989-12-22 1993-05-11 Bull Hn Information Systems Inc. Bus monitor with selective capture of independently occuring events from multiple sources
US5150313A (en) * 1990-04-12 1992-09-22 Regents Of The University Of California Parallel pulse processing and data acquisition for high speed, low error flow cytometry

Also Published As

Publication number Publication date
EP0530310A1 (en) 1993-03-10
CA2084420A1 (en) 1991-11-19
US5428749A (en) 1995-06-27
WO1991018342A1 (en) 1991-11-28
JPH05509425A (ja) 1993-12-22
EP0530310A4 (en) 1993-07-21
AU7980391A (en) 1991-12-10
AU665927B2 (en) 1996-01-25
CA2084420C (en) 2002-10-22
IL98161A0 (en) 1992-06-21
IL98161A (en) 1997-01-10

Similar Documents

Publication Publication Date Title
KR100278730B1 (ko) 처리 태스크들을 신호 프로세서 및 이것과 인터페이스하는 의사결정 마이크로프로세서로 분할하는 시스템
US5590349A (en) Real time programmable signal processor architecture
KR100240158B1 (ko) 실시간 프로그램 가능 신호 처리기 아키텍쳐
JP2519226B2 (ja) プロセツサ
EP0241946B1 (en) Information processing system
CA2380077C (en) Programmable event counter system
US4486827A (en) Microprocessor apparatus
US5036453A (en) Master/slave sequencing processor
US4166289A (en) Storage controller for a digital signal processing system
US3953833A (en) Microprogrammable computer having a dual function secondary storage element
EP0910827A2 (en) Circuits, system, and methods for processing multiple data streams
WO1998035301A9 (en) Circuits, system, and methods for processing multiple data streams
KR100499720B1 (ko) 시스템 엘에스아이 설계 방법
JP3896177B2 (ja) エミュレーションシステム
US5263143A (en) Real time probe device for internals of signal processor
David et al. Self-timed architecture of a reduced instruction set computer
JP3851008B2 (ja) プロセッサおよびそれを有する半導体集積回路、処理装置ならびに命令処理方法
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
Haug et al. Reconfigurable hardware as shared resource in multipurpose computers
Jelemensky et al. The MC68332 microcontroller
US20060161418A1 (en) Time multiplexed interface for emulator system
Kammer The SUPRENUM vector floating-point unit
Coelho et al. Redesigning hardware-software systems
JP2510173B2 (ja) アレ−・プロセツサ
Esteban et al. Multiport implementation of real time 16kbps sub-band coder

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20081023

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee