KR930004949B1 - 전화시스템과 컴퓨터 시스템간의 정보 전송을 제어하기 위한 펌웨어 스테이트 장치 - Google Patents

전화시스템과 컴퓨터 시스템간의 정보 전송을 제어하기 위한 펌웨어 스테이트 장치 Download PDF

Info

Publication number
KR930004949B1
KR930004949B1 KR1019880003664A KR880003664A KR930004949B1 KR 930004949 B1 KR930004949 B1 KR 930004949B1 KR 1019880003664 A KR1019880003664 A KR 1019880003664A KR 880003664 A KR880003664 A KR 880003664A KR 930004949 B1 KR930004949 B1 KR 930004949B1
Authority
KR
South Korea
Prior art keywords
state
data
processor
line
address
Prior art date
Application number
KR1019880003664A
Other languages
English (en)
Other versions
KR880012050A (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 KR880012050A publication Critical patent/KR880012050A/ko
Application granted granted Critical
Publication of KR930004949B1 publication Critical patent/KR930004949B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • 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/10Program control for peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54575Software application
    • H04Q3/54583Software development, e.g. procedural, object oriented, software generation, software testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Telephonic Communication Services (AREA)

Abstract

내용 없음.

Description

전화시스템과 컴퓨터 시스템간의 정보 전송을 제어하기 위한 펌웨어 스테이트 장치
제1도는 본 발명의 펌웨어 개념과 관련하여 채용된 하드웨어를 도시하는 데이타 통신시스템의 블럭도.
제2도는 펌웨어 상태들의 주 블럭도.
제3a 내지 3h도는 제2도에 예시된 상태들의 보다 상세한 블럭도.
제4도는 기억된 16라인 테이블중의 하나에 대한 라인 테이블도.
제5a 내지 5b도는 2가지 종류의 대표적인 펌웨어 리스트를 예시한 도면.
제6도는 특정의 라인에 대한 지속적인 작업과 관련하여 기능의 일시정지를 설명하기 위한 펌웨어 상태도.
제7도는 채널 넘버들의 시퀀스동작을 설명하기 위한, 송신 및 수신 마이크로 프로세서의 시퀀스를 예시하는 도면.
제8도는 송신 및 수신 마이크로 프로세서를 위한 사이클들의 삽입동작을 설명하는데 이용되는 타이밍도.
제9도는 채널 충돌 상황에서의 일시정지 기능을 설명하는데 이용되는 타이밍도.
제10도는 특정의 펌웨어 상태와 관련하는 명령들의 흐름을 예시하는 개략적 블럭도.
제11도는 전화 통신 시스템 및 컴퓨터 시스템과 데이타 통신 시스템과의 상관관계를 나타내는 일반적인 블럭도.
제12도는 중간에 일시정지를 이용하지 않고 한 상태에서 다른 상태로 천이하는 시퀀스를 설명하기 위한 개략적 블럭도 및 흐름도.
* 도면의 주요부분에 대한 부호의 설명
3 : 전화 시스템 4 : 컴퓨터 시스템
5 : 데이타 통신 시스템 6 : 멀리 라인 제어기
10 : 수신 마이크로 프로세서 12 : 송신 마이크로 프로세서
22 : XRAM 28 : IRAM
31,35 : 트랜시버 40 : 수신기
50 : 멀티플렉서(MUX) 52 : 수신 클럭 정류기
52,62,63 : 트랜시버 64 : 수신 데이타 DMA제어기
73 : X-버스 경쟁 로직
본 발명은 일반적으로 데이타 통신 시스템, 특히 전화 시스템과 컴퓨터 시스템 사이에서 데이타 정보, 제어 정보 및 신호 발생 정보를 전달하는 데이타 통신 시스템에 관한 것이다.
이와 같은 유형의 시스템에 있어서는 일반적으로 펌웨어(firmware)나 소프트웨어(software)의 주의를 요하는 사건이 생길때마다 인터럽트가 발생되어 마이크로 프로세서의 주위를 그 라인에 대한 특정의 요구로 돌리게 하는 인터럽트 구동형 운형체제가 제공된다. 이러한 인터럽트 구동형 운영체제에 있어서의 한가지 문제점은 인터럽트들이 통상 랜덤하게 발생한다는 것이다.
또, 마이크로 프로세서내에서는 상당한 양의 콘텍스트(context)가 보류되어 있어야 한다. 즉, 인터럽트 태스크가 재개될 때 레지스터들내에 유지되고 재배치되어야 할 중요한 데이타가 있을지도 모르기 때문에 인터럽트 발생시 이들 레지스터의 모든 것이 메모리내에 일단 기억되었다가 회복되어야 한다. 이러한 콘텍스트 스워핑(swapping)은 시간을 매우 많이 소요하며, 또 콘텍스트를 일시 기억시키는 데에도 많은 기계 사이클(machine cycle)이 소요된다. 예를들면, 인터럽트를 취했다가 복귀시키는데 통상 20 내지 30μsec 정도의 많은 시간이 소요된다.
본 발명의 환경에서는 최대 60μsec 이내에 모든 문자에 대한 처리를 완수할 것이 요구된다. 이 시간은 초당 한 라인에 960문자의 비율로 모두 16라인을 처리할때 문자당 할당되는 시간이다. 콘택스트 스워핑을 갖는 인터럽트 구동형 구성은 통상 상당한 처리 경비를 요한다.
컴퓨터내의 운영체제는 일반적으로 프로세서의 주위를 각종의 태스크 가운데로 편성 및 지향시키는 역할을 하는 것으로, 통상은 복수의 태스크를 동시에 제어할 수 있는 멀티 태스킹 체제로 이루어진다. 보통의 운영체제에서 이들 태스크의 대부분은 본질적으로는 실시간 요건을 갖는 것들은 아니다. 모든 라인에 대한 적절한 액세스 동작을 보강하기 위하여 시간 할당이 필요하게 된다. 운영체제는 소정의 시간 주기동안 고우선 순위 작업에 대한 작업을 행한 후 보다 저우선 순위 작업으로 돌아가도록 구성하는 것이 일반적이다.
여기서, 인터럽트 구동형 운영체제 타입의 제어와 관련한 중대한 결점들중의 하나는 동작의 효율성 문제이다. 운영체제에 기능을 부여하여 작업 할당을 어떻게 할 것인가에 대한 결정을 내릴 수 있도록 하는데 통상 프로세서 파워(power)의 10 내지 40퍼센트가 이용된다. 그래서 이것은 특히 작업수행 및 그 작업에 관한 결정을 위해 충분한 시간이 할당되어 있지 않은 환경에서는 문제점들을 야기하게 된다.
또 다른 종래의 기술로서는 펌웨어로 하여금 각 라인을 차례로 시퀀스(sequence)하여 특정의 활동을 탐색케하고 활동을 요구중인 라인에 주의를 기울이게 하는 폴링 루우프(polling loop)를 채용하는 것이 있다. 이 구성은 루우프를 통한 탐색동작에 상당한 시간이 전용되어 필요한 작업 태스크들을 수행하기 위한 시간이 줄어든다는 점에서 동작상 매우 비효율적이다.
따라서, 본 발명은 펌웨어 스테이트 장치를 사용하는 개선된 데이타 통신 시스템을 제공하는 것을 그 목적으로 한다.
본 발명의 다른 목적은 프로세서 경비를 줄인, 전기한 목적에서 사용되는 펌웨어 스테이트 장치를 제공하는데 있다.
본 발명의 또다른 목적은 기계가 운영체제의 사용을 반드시 필요로 하지 않고, 그래서 태스크 취급능력을 현저히 단순화할 수 있는, 전화 통신 시스템과 컴퓨터 시스템에서의 데이타 전달을 제어하는데 사용하기 위한 펌웨어 스테이트 장치를 제공하는데 있다.
본 발명의 또 다른 목적은 인터럽트 구동형 및 폴리 구성 시스템들과 관련된 문제점들을 제거한 펌웨어 스테이트 장치를 제공하는데 있다.
본 발명의 전술한 목적들 및 기타의 목적들과, 특징 및 장점들을 달성하기 위하여, 본 발명의 일반적 태양(aspect)에 따르면, 전화 통신 시스템과 컴퓨터 시스템 사이의 다수의 독립 데이타 라인들 상에서의 데이타 전달을 제어하기 위한 펌웨어 스테이트 장치가 제공된다. 본 발명의 장치는 적어도 하나의 프로세서와 하나의 관련된 프로세서 메모리를 구비한다. 이 프로세서 메모리에는 복수의 펌웨어 명령이 기억되어 있는 바, 이 명령들은 전화 통신 시스템과 컴퓨터 시스템 사이에서의 데이타 전달을 위해 요구되는 상태들의 수에 따라서 몇개의 그룹으로 분할되어 있다. 프로세서에 기억된 프로그램 명령들을 여기서 “펌웨어”라고 한다. 어떤 명령 그룹들은 라인에 관련된 조건들을 평가해서 다음의 미리 지정된 상태로서 시퀀스 동작을 제어하도록 하는 테스트 동작을 정의하는 하나의 명령을 포함한다. 적어도 하나의 라인에 대한 라인 테이블 정보를 위한 복수의 기억장소를 갖는 공유 메모리가 제공된다. 그중 적어도 하나의 기억장소는 어드레스, 바람직하게는 프로세서에 의해 실행될 명령 그룹중 그 라인에 상당하는 것의 개시명령을 규정하는 프로그램 카운터 어드레스를 포함한다. 프로세서는 그 명령 그룹에 응답하여 그 라인에 대해 지정된 동작을 수행하고, 또 상기 조건에 대한 기능으로서의 테스트 명령에 응답하여 다음 상태에 관한 명령 그룹의 개시 명령에 상당하는 새로운 값을 로드(load)한다. 프로세서는 프로그램 카운터를 포함하는 것이 바람직하고, 또 공유 메모리 기억장소는 그에 상당하는 프로그램 카운터 어드레스를 포함하는 것이 바람직하다. 개시된 실시예에서의 프로세서는 송신 마이크로 프로세서와 수신 마이크로 프로세서를 포함하는 제1 및 제2마이크로 프로세서를 구비한다. 전기한 명령 그룹들은 또한 일시 정지 동작을 정의하는 적어도 하나의 명령을 포함한다. 이것은 하나의 라인에 대한 동작을 일시 정지시켜서 프로세서로 하여금 다른 라인을 서비스할 수 있도록 하거나, 또는 소정 시간후에 본래의 라인으로 복귀하도록 제어하는 것이다.
이 일시 정지 동작은 다수의 명령에 의해 정의될 수도 있다. 어떤 명령 그룹들에는 또한 전화 통신 시스템과 컴퓨터 시스템 사이에서의 데이타 전달을 인에이블 시키는데 필요한 작업 태스크들을 수행케 하는 추가의 명령들이 제공된다. 양호한 실시예에 있어서 공유 메모리는 라인마다 개별적으로 모든 데이타 라인에 대한 라인 테이블 정보를 기억하고 있다. 모든 라인 테이블이 액세스를 얻게 되는 소정의 미리 결정된 시퀀스내에서 프로세서가 한번에 한 라인 테이블씩만 액세스하도록 제어하는 수단이 제공된다. 각 라인 테이블은, 그 데이타 라인에 대한 액세스가 다시 얻어질때 복귀되어야 하는 미리 지정된 상태를 나타내는, 일시 정지 어드레스로서 식별되는 어드레스를 포함한다. 어떤 명령 그룹들은 또한 일시정지 어드레스를 세트시키고 프로그램 카운터내에 다음의 상태에 관한 명령 그룹의 개시 명령에 상당하는 새로운 값을 로드하도록 하는 적어도 하나의 명령을 포함한다. 일시정지 어드레스를 세트시키는 명령 이외에 하나의 라인에 대한 동작을 일시정지시키고 프로세서로 하여금 소정시간 후에 본래의 라인으로 복귀하게 하거나 또는 소정시간 후에 다른 라인을 서비할 수 있도록 하는 전술한 일시정지 동작을 정의하는 명령도 있다.
상술한 바와같이, 본 발명의 펌웨어 스테이트 장치의 한가지 태양은 데이타 전달을 제어함에 있어 그 제어가 라인에서 라인으로 이동할 수 있게 하는 수단인 일시정지 특성을 이용하는 것과 관련된다. 일시정지 동작의 한가지 중요한 태양은 하나의 태스크로부터 다른 태스크로의 변환시 보류되어야 할 레지스터 콘택스트가 전혀 없다는 것이다. 콘택스트의 모든것은 라인 테이블 기억장치 자체내에 기억된다. 각 라인마다 하나씩의 라인 테이블이 관련되어 있다. 프로그램 카운터 자체를 제외하고는 가능한한 일시 기억할 것이 없어서 시스템은 소정시간 후에 라인에 대한 처리를 적절히 픽업(pick-up)하여 재개하고자 할때 그 라인상의 어느곳에서 처리를 픽업 및 재개해야 할지를 알게 된다.
본 발명의 펌웨어 스테이트 장치의 또다른 태양은 특정의 상태, 특히 “대기”상태에서 소비되는 시간이 최소가 되도록 펌웨어 코드가 설계된다는 것이다. 이러한 상태에서는 태스크가 수행되어야 할 지를 결정하기 위한 테스트가 행해지고, 그렇지 않은 경우 시스템은 다음 상태로 진행한다. 테스트 결과 일시 정지가 수행되어야 함을 나타내는 경우에는, 시스템은 다음 라인으로 제어를 절환하여 그에 따른 직업 및 테스트를 수행한다. 따라서, 비작업, 대기 조건에 대한 테스트에는 최소의 시간이 소비된다.
본 발명의 펌웨어 스테이트 장치의 또다른 태양은 테스트가 덜 빈번하게 행해지기 때문에, 작업 부하가 증가하여 기계 사이클의 보다 많은 퍼센트가 유용한 작업을 위해 쓰인다는 것이다. 그러므로, 기계가 보다 바빠지게 되고, 처리 경비의 양(즉, 각 상태에서 실제로 일시정지를 처리하는데 걸리는 시간)은 전체 기계처리 시간의 보다 적은 퍼센트를 차지하게 된다. 그래서, 본 발명의 개념에 따르면, 인터럽트 구동형 시스템에서 기계가 바빠질수록 추가의 경비를 취하는 것에 반하여, 기계가 바빠질수록 오히려 경비가 줄어드는 장치가 제공된다.
본 발명은 첨부도면을 참조한 이하의 상세한 설명으로부터 보다 명백히 이해될 것이다.
우선, 본 발명의 펌웨어 스테이트 장치 개념에 따라 채용되는 하드웨어의 일실시예에 관한 블럭도인 제1도와, 동작의 송신 및 수신축에 대한 개략적으로 정의된 펌웨어 상태들의 일반적 블럭도인 제2도, 그리고 전환 시스템(3)과 컴퓨터 시스템(4) 사이에서의 데이타 전달을 제어하기 위한 시스템의 개략도인 제11도의 블럭도를 참조로 한다. 전화 시스템(3)과 컴퓨터 시스템(4) 사이에는 데이타 통신 시스템(5)과 멀티라인 제어기(6)가 상호 접속되어 있다. 멀티 라인 제어기(6)에 대한 상세한 설명은 여기서는 생략하기로 한다. 본 발명의 개념은 주로 전화 통신 시스템(3)과 컴퓨터 시스템(4) 사이에서의 데이타 전달을 제어하는 데이타 통신 시스템(5)에 관련하는 것이다. 전화 시스템(3)은 PBX라인들과 같은 전화선들로 결합된 복수의 단말장치를 포함한다. 컴퓨터 시스템(4)은 예를들어 Honeywell사의 DPS-6타입의 것이다.
펌웨어 스테이트 장치의 개념으로 들어가기에 앞서 제1도의 하드웨어 블럭도를 참조한다. 제1도는 동도면 좌측으로의 전화선에 의해 결합되는 복수의 단말장치(동도면 중에는 도시되어 있지 않음)와 동도면 우측으로부터 결합될 컴퓨터 시스템 및 관련 제어기(역시 동도면 중에는 도시되어 있지 않음) 사이에서의 동작들을 서포트하는데 필요한 데이타 정보, 제어정보 및 신호 발생 정보를 전달하기 위한 디지틸 비동기 다중송신 어댑터 시스템을 나타낸다. 보다 구체적으로, 단말장치들은 AT& T사의 단말기 어댑터들과, AT & T사의 시스템의 85PBX 및 PBX 디지탈 다중송인 인터페이스 트렁크를 통해서 접속되고, Honeywell사의 DPS-6타입과 같은 컴퓨터 시스템내에서 동작하는 응용기기들은 비동기 다중송신 어댑터 시스템 및 멀티라인 통신 제어기를 통해서 서포트된다. 설명을 간략화하기 위하여, 단말 장치들과 멀티라인 통신 제어기에 대한 상세한 설명은 여기서 생략한다.
제1도에서의 마이크로 프로세서들은 수신 마이크로 프로세서(10)와 송신 마이크로 프로세서(12)로서 설명된다. 이들 양 마이크로 프로세서는 종래의 68008 타입의 것일 수 있다. 수신 마이크로 프로세서(10)에는 수신 데이타 버스(14)와 수신 어드레스 버스(16)가 연결된다. 송신 마이크로 프로세서(12)에는 송신 데이타 버스(18)와 송신 어드레스 버스(20)가 연결된다.
제1도는 또한 관련 데이타 버스(24) 및 어드레스 버스(26)를 갖는 XRAM(22)을 나타내고 있다. 제1도의 블럭도에서, XRAM(22)에 근접하게 IRAM(28)이 배치된다. IRAM(28)도 마찬가지로 관련 데이타 버스(30) 및 어드레스 버스(32)를 갖는다. 데이타 버스(30)는 트랜시버(31)에 의해 출력 데이타 버스(33)에 결합되고, 이 출력 데이타 버스(33)는 동도면 중에는 도시되어 있지 않은 멀티라인 통신 제어기에 결합된다. 마찬가지로, 어드레스 버스(32)는 트랜시버(35)에 의해 어드레스 버스(36)에 결합되고, 이 어드레스 버스(36)도 역시 멀티라인통신 제어기에 결합된다.
여기서, 어드레스 버스 및 데이타 버스들과 관련하여 사용되는 예를들면 트랜시버(35)와 같은 트랜시버들의 이용에 관해 살펴보기로 한다. 그런데, 몇몇 변형에서의 이들의 장치는 3상태 버퍼로 대체될 수 있다.
전술한 바 있듯이, 제1도의 블럭도에 도시된 시스템은 디지탈 다중송신 인터페이스 트렁크를 통해 일시에 최대 16대까지의 단말장비를 접속할 수 있는 것이다. 이 접속에서 제1도의 블럭도의 좌측에 있는, 송신기(40)로부터의 신호들을 전송하기 위한 커플링 변압기(X1)와, 또 수신기(42)에 의해 수신될 신호들의 수신을 위한 커플링 변압기(X2)에 주목하기 바란다. 송신기와 수신기 사이에는 프레이머(410가 결합되어 있다. 송신기(40), 수신기(42), 그리고 프레이머(41)는 모두 AT & T사의 표준회로 들이다. 송신기는 606HM 타입의 것이고, 프레이머 회로는 229GB타입, 그리고 수신기는 630AG타입의 것이다.
제1도의 블럭도는 또한 송신기(40) 및 수신기(42)의 데이타 회로(44)들에 대한 통신을 보여주고 있다. 이 회로(44)들은 공통적으로 DUSCC칩들로서 구성된다. 이들 각각은 2중의 범용 시리얼 통신 제어기(DUSCC)이다. 이 회로 칩들은 상용의 것이고, 예를들어, Signetics사의 부품 번호 68562칩들이 사용된다. 제1도에 도시된 바와같이, 8개의 데이타 회로(44)가 구비된다. 각 회로(44)는 2개의 통신 채널 프로세서를 구비한다. 또, 제1도에서 어드레스 버스(46)를 주목하기 바란다. 각 데이타 회로(44)는 2개씩의 통신채널을 구비하고 있으므로, 모두 16개의 라인이 DUSCC데이타 버스(48) 결합된다.
또, 데이타 회로(44)들에서의 통신과 관련하여, 제1도에 있어서, 각 데이타 회로(44)와 송신기(40)간에 통신을 제공하기 위한 멀티플렉서(50)가 제공되어 있음에 주목하기 바란다. 이 멀티플렉서(50)에 대해서는 차후에 보다 상세히 설명하기로 하겠다. 또, 제1도의 블럭도에는 데이타 회로(44)들로부터 수신기(42)로의 데이타 전달을 제어하는 수신 클럭 정류기(52)가 도시되어 있다. 이것의 동작도 후술하기로 하겠다.
기본적으로, 데이타 회로(44)들로부터의 출력들은 멀티플렉서(MUX)(50)에 의해 다중송신되어 시분할 다중송신 방식으로 송신기(44)에 결합된다. 각 데이타회로(44)의 수신기 입력들은 도면에 도시된 바와같이 공통으로 접속되고, 각 데이타회로(44)에 순차적으로 8개의 클럭펄스를 전달하는 클럭킹 구성(정류기(52) 참조)이 제공된다. 수신기(42)로부터의 클럭 신호들은 시분할 다중송신 기술에 따라 디멀티플렉스되고 디코드된 후 데이타회로(44)들의 16개의 채널의 각각으로 전달된다.
전술한 바와같이, 데이타회로(44)들은 공통 어드레스 버스(46)를 갖는다. 이 어드레스 버스는 송신 마이크로 프로세서(12)로부터 반 직접적으로 구동될 수 있는 6개의 어드레스 라인을 구비한다. 제1도에서 송신 어드레스 버스(20)가 버퍼(47)를 통해 데이타 회로들의 어드레스 버스(46)에 연결되어 있음을 주목하기 바란다.
전술한 바 있듯이, 송신 마이크로 프로세서(12)는 68008타입의 것이다. 이 송신 마이크로 프로세서(12)는 그것의 어드레스 버스를 통해 데이타 회로(44)들을 대체로 직접 어드레스 한다. 데이타회로(44)들을 위한 어드레스 버스(46)는 직접 메모리 액세스(DMA)제어 로직으로부터 제어될 수도 있음에 유의하기 바란다. 이것과 관련하여 제1도에서 버퍼(45)를 통한 결합에 주목하기 바란다. 이 특수한 DMA 어드레스 제어는 데이타 수신을 위해 데이타회로(44)들을 액세스 하는데 이용된다. 반면에 송신 마이크로 프로세서(12)는 데이타 송신 및 세트 업(set-up)을 위해 데이타 회로(44)들의 어드레스 버스(46)를 직접 액세스한다.
데이타 회로(44)들은 모두 DUSCC데이타 버스로 지칭되는 공통 데이타 버스(480를 갖는다. 이 데이타 버스(48)는 트랜시버(55)에 의해 수신 선입선출(FIFO) 데이타 버스(54)로부터 분리되어 있음을 유의하기 바란다. 버스(54)에는 제1도의 블럭도에서 2부분으로 도시된, 수신 데이타 FIFO(60A)와 수신 상태 FIFO(60B)를 포함하는 대용량 FIFO가 결합된다. 이하에서는 이것을 때때로 FIFO(60)로 지칭한다. 수신 데이타 FIFO(60A)는 트랜시버(62)를 통해 FIFO데이타버스(54)에 결합된다. 마찬가지로, 수신상태 FIFO(60B)는 트랜시버(63)을 통해 FIFO데이타 버스(54)에 결합된다. 제1도에는 또한 FIFO(60)를 제어하는 수신데이타 DMA제어기(64)가 도시되어 있다. 또, 제1도에서 DUSCC 데이타 버스(48)로부터 제어기(64)로의 결합라인(65)을 주목하기 바란다.
2버스 사이클 동안 데이타 회로(44)들로부터 상태 및 데이타를 포함하는 정보가 독출되고, 이 정보는 수신 데이타 DMA제어기(64)의 제어하에 트랜시버(55, 62, 63)를 통해 FIFO(60) 내에 저장된다. 이 데이타 및 상태 정보는 FIFO(60) 내에 저장되었다가 수신 마이크로 프로세서(10)에 의해 액세스된다. 이것과 관련하여, 수신 마이크로 프로세서(10)와 관련된 데이타 버스(14)가 트랜시버(66)를 통해 FIFO데이타 버스(54)에 결합되어 있음을 주목하기 바란다. 수신 마이크로 프로세서(10)는 기회가 있을 때마다, 그리고 폴링 구성으로 될때마다 FIFO(60)를 액세스한다. 보다 구체적으로, 수신 마이크로 프로세서(10)는 FIFO(60)를 탐문하고 그 내부의 상태 지시를 검사하여 FIFO(60)의 데이타 내부에 무엇인가 저장되어 있는지를 탐색한다. 무엇인가 저장되어 있는 경우에는, 상태 및 데이타 정보를 판독하여 XRAM(22)내에 기억시킨다. 실제로 수신 마이크로 프로세서(10)는 데이타를 XRAM(22)내에 기억시키고, 상태를 검사하여 필요한 경우 적절한 동작을 취한다. 이것과 관련하여, 수신 마이크로 프로세서(10)로부터의 통신은 수신 데이타 버스(14)와 트랜시버(68)를 거쳐 X-데이타 버스(24)로 이어짐에 주목하기 바란다. X-데이타버스(24)를 I-데이타버스(30)와 상호 결합시키기 위한 트랜시버(69)도 존재한다.
수신 데이타 버스(14)에는 수신 마이크로 프로세서(10) 이외에도 펌웨어 PROM(79)이 결합되어 있다. 이 PROM(70)은 16K×8비트 PROM 또는 ERROM인 것이 바람직하다.
전술한 바 있듯이, X-데이타 버스(24)는 트랜시버(68)에 의해 수신 데이타 버스(14)와 결합되어 있다. X-데이타 버스(24)를 송신 데이타버스(18)와 상호 결합시키기 위한 트랜시버(71)도 존재한다. 제어 논리회로에 의해 수신 마이크로 프로세서(10)와 송신 마이크로 프로세서(12)가 동시에 X-데이타 버스(24) 상에 존재하는 일은 절대로 없게 한다.
전술한 바 있듯이, X-데이타 버스(24)는 트랜시버(69)를 통해 I-데이타 버스(30)와 결합한다. I-데이타 버스(30)는 계속해서 트랜시버(31)를 통해 제어기 출력버스(33)와 결합한다. 마찬가지로, I-어드레스 버스(32)는 X-어드레스 버스(26)와 제어기 어드레스 버스(36) 사이에 상호 결합한다. 이 상호 결합은 트랜시버(29, 35)에 의해 제공된다. X-버스의 제어를 갖는 마이크로 프로세서는 동시에 I-버스를 액세스할 수 있는 유일한 것이다. 이것과 관련하여, X-버스에 대한 액세스를 제어하기 위해 X-버스 경쟁 로직이 사용된다. 이 X-버스 경쟁 로직이 제1도에서 블럭 73으로 도시되어 있다. 수신 마이크로 프로세서(10)나 송신 마이크로 프로세서(12)중 어느 하나만이 X-데이타 버스(24)를 액세스할 수 있음을 유의하기 바란다.
수신 마이크로 프로세서(10)와 관련되는 것으로는 수신 데이타 버스(14) 이외에 수신 어드레스 버스(16)도 있다. 이 수신 어드레스 버스(16)도 펌웨어 PROM(70)과 상호 결합한다. 어드레스 버스(16)의 디코드도 발생하는데, 이것과 관련하여서는 제1도의 수신 어드레스 디코더(76)를 참조하기 바란다. 이 디코더(76)는 어드레스 버스(16)의 보다 상위 비트들을 디코드한다.
디코더(76)의 출력단에는 각종 시스템 부품들과의 통신을 위한 디코드를 지시하는 3개의 개별 라인이 도시되어 있다. 예를들어, 출력 라인(77)에서의 하나의 디코드는 수신 마이크로 프로세서 PROM(70)으로의 데이타 액세스를 지시한다. 라인(78)에서의 또다른 디코드는 XRAM(22)으로의 데이타 액세스를 지시한다. 라인(79)에서의 또다른 디코드는 FIFO(60)로부터의 데이타 전달을 지시한다.
제1도의 블럭도에서 송신 어드레스 버스(20)를 또한 참조한다. 송신 어드레스 디코더(80)가 이 어드레스 버스로부터 결합되어 있음에 주목하기 바란다. 이 디코더(80)도 3개의 출력 라인을 갖고 있다. 라인(81)에서의 제1의 디코더는 송신 마이크로 프로세서 PROM(84)으로부터의 데이타 전달을 지시한다. 이것과 관련하여, 펌웨어 PROM(84)은 송신 데이타 버스(18) 및 송신 어드레스 버스(20)의 양자와 결합하는 16K×8비트 PROM임을 유의하기 바란다. 이 어드레스 디코더(80)는 X-RAM(22)으로의 액세스를 디코드하는 제2디코드 출력을 라인(82)에 갖고 있다. 또, 송신 어드레스 디코더(80)로부터의 라인(83)에서의 제3디코드는 DUSCC버스(48)로의 데이타 전달을 지시한다.
송신 마이크로 프로세서(12)는 FIFO(60)를 액세스할 수 없기 때문에, 송신 마이크로 프로세서의 데이타 회로(44)들을 위해 동일한 어드레스 공간이 이용된다. 마찬가지로, 수신 마이크로 프로레서(10)는 어드레스 버스나 데이타 버스와 직접적으로 결합할 수 없기 때문에 데이타 회로(44)들을 물리적(실제적)으로 어드레스할 수 없다. 그러므로, 수신 데이타 FIFO(60)를 위해 전기한 어드레스 공간이 이용된다.
마이크로 프로세서(10, 12)중의 하나는 IRAM(28)을 지적하는 어드레스 공간을 액세스할 수 있다. 개시된 실시예에 있어서, 이 어드레스 공간은 16진 16,000에서 16진 18,000 사이의 어드레스이다. IRAM(28)에 대한 액세스는 X-버스[데이타 버스(24) 및 어드레스 버스(26)]를 통해 이루어진다.
제1도에는 또한 후술하게 될 X-버스 경쟁로직(73)이 도시되어 있다. 그것에 대한 입력들은 수신 마이크로 프로세서가 XRAM(22)으로 고우 투(GO TO)하기를 원하는지, 또는 송신 마이크로 프로세서가 XRAM(22)으로 고우 투(GO TO)하기를 원하는지를 나타내는 2개의 개별신호이다. 이 신호들은 라인 85와 86을 통해 로직(73)에 결합된다. 마찬가지로, 라인 87 및 88상에는 제1도에서 개별신호 R2XBUS 및 T2XBUS로서 식별되는 출력들이 존재한다. 버스 경쟁 로직(73)은 기본적으로 하나의 프로세서가 XRAM을 액세스하는 것은 허용하지만, 양 프로세서가 모두 XRAM을 액세스하는 것은 허용하지 않는다. 다시, 라인(87)에서의 신호 R2XBUS와 라인(88)에서의 신호 T2XBUS를 참조한다. 이 신호들은 어드레스 멀티플렉서(90, 92)에 각각 어드레스 입력으로서 결합함에 유의하기 바란다. X-버스 경쟁로직(73)은 공지의 구성을 갖는 것으로 고려된다.
제1도의 블럭도의 각 부분에 대한 보다 구체적인 회로 설명은 1987년 3월 31일자로 토마스 홀티등에 의해 “듀얼 마이크로 프로세서 제어 시스템”이란 명칭으로 출원되고 그후 본 출원인에게 양도된 미합중국 특허출원 제032,902호(이하 간단히 “032,902호 출원”이라 함)를 참조하기로 한다. 마이크로 프로세서(10, 12)중의 하나가 실제로 X-버스를 요청 및 수신하였다고 하면, 그 마이크로 프로세서로부터의 어드레스들은 수신 어드레스 버스(16)나 송신 어드레스 버스(20)를 거쳐 제1도에 도시된 멀티플렉서(90 또는 92)와 결합한다. 멀티플렉서(90)는 수신 마이크로 프로세서 어드레스들을 수신하고, 멀티플렉서(92)는 송신 마이크로 프로세서 어드레스들을 수신한다. 이 어드레스들은 멀티플렉서들중의 하나가 그 인에이블 입력에 결합된 신호에 의해 인에이블됨에 따라 마이크로 프로세서들을 통해 결합된다. 이들은 개별신호, 즉 R2XBUS 및 T2XBUS들이다. 멀티플렉서들의 출력은 X-어드레스 버스(26)와 공통으로 결합한다.
제1도를 다시 참조하면, X-어드레스 버스의 디코딩은 더이상 발생을 중지한다. 이것과 관련하여, 어드레스 라인(96)이 어드레스 디코더(97)를 X-어드레스 버스에 결합시킴을 주목하기 바란다. 디코더(97)로부터의 라인(99)과 함께 다른 라인(98)은 또 하나의 디코더(100)와 결합한다. 디코더(97, 100)에 결합된 어드레스들은 어드레스 버스(26)의 상위 비트들이다. 이들은 X-버스 사이클(XB5CYC)의 존재시 디코드되어 신호들이 XRAM, IRAM, SRAM 또는 하드웨어 스트로브의 어느곳에 결합되어야 할지를 결정한다. 제1도에서 이들 각종 신호들이 X-버스 어드레스 디코더(97)의 출력에 나타나 있다. 제1도는 또한 각 신호의 우측에 특정의 어드레스가 포함되어 있음을 나타낸다. 하드웨어 스트로브들은(12XXX)16의 어드레스로 나타나고, XRAM 액세스는 (10XXX)16의 어드레스로 디코드되며, I-버스 어드레스는 (16XXX)16로 나타난다.
제1도에서 X-버스 어드레스 디코더(97)를 참조한 바 있다. 이것은 0.32,902호 출원의 제2도에 도시된 디코더(97)와 동일한 디코더로서, 여기에는 4개의 출력신호가 있다. 첫번째 라인상에는 XRAM 인에이블 신호 XRAMEN이 존재한다. 다음 라인상에는 하드웨어 스트로브 레지스터 인에이블 신호인 신호 XREGEN이 존재한다. 그 다음의 라인에는 SRAM 액세스 신호인 신호 SBUSAC가 존재한다. 최종 라인상에는 IRAM 액세스 신호인 신호 IBUSAC가 존재한다. SRAM을 참조하는 것과 관련하여, 이 장치는 본 발명의 개념의 설명에 필수적인 것은 아니므로 여기서는 상세한 설명을 생략한다.
제1도에서 디코더(100)는 실제로 74LS138타입의 한쌍의 디코더로 이루어진다. 이 디코더들은 하드웨어 디코더 스트로브들을 제공한다. 제1디코더는 판독 전용 스트로브들을 제공할 수 있다. 다른 디코더는 기입전용 스트로브들을 제공할 수가 있는데, 특히 그들로부터 관심있는 2가지 신호가 결합된다. 그 신호들은 제1도에 도시된 바와같이 (12,004)16과 (12,005)16의 물리 하드웨어 어드레스에 상당하는 신호 POPRCN-과 POPTCN-으로 지칭된다. 어드레스 12,004는 수신 채널넘버를 변경하는 신호 POPRCN-(POP 수신채널넘버)를 지시한다. 어드레스 12,005는 신호 POPTCN-(POP 송신 마이크로 프로세서 채널넘버)를 지시한다.
송신 및 수신 채널넘버들을 독특하게 제어하는 시스템의 부분들을 설명하기 위해 다시 제1도의 블럭도를 참조한다. 여기서, 제어 PROM(104)을 주목하기 바란다. PROM(104)의 용량은 최소한 1K×4비트 이상이어야 한다. 제1도에는 또한 수신 채널넘버 레지스터(106)와 송신 채널넘버 레지스터(108)가 도시되어 있다. 이들 각 레지스터(106, 108)는 4비트 레지스터이다. 그 4비트는 최대 16개의 독립 채널 또는 테이블로 식별된다. 그래서, 레지스터(106)로부터 PROM(104)의 입력으로 라인(107)을 거쳐 4비트가 결합된다. 마찬가지로, 레지스터(108)로부터 PROM(104)의 입력으로 라인(109)을 거쳐 4비트가 결합된다. 각 라인(111, 112)에 있는 레지스터(106, 108)의 출력들은 수신 및 송신 마이크로 프로세서 X-버스 멀티플렉서(90, 92)에 결합된다. 이 멀티플렉서들은 교대로 X-버스(26)를 어드레스 한다. 제1도에 도시된 바와같이, 멀티플랙서들의 한쪽에서는 레지스터(106, 108)들로부터의 어드레스들이 수신 어드레스 버스(16)나 송신 어드레스 버스(20)로부터의 다른 어드레스들과 함께 결합된다. 이 레지스터들로부터의 4비트는 다소의 중산 웨이트 어드레스 비트들은 변경시킨다. 그들은 X-버스를 어드레스할 때 X-버스 어드레스들을 256바이트 단위로 분리하는 방식으로 하여 상기한 기능을 수행한다. 이들 4비트 아래에 8 어드레스 비트가 있고, 그래서 상위 비트들이 실제로 X-어드레스를 디코드하는데 이용된다.
송신 마이크로 프로세서(12)가 채널넘버 4에서 페이지된 XRAM(22)을 액세스한다고 가정하자. 채널넘버 4에 대한 라인테이블에 의해서 액세스가 제공되는데, 이점에 있어서는 복수의 라인테이블로 분리된 XRAM(22)을 나타내는 전술한 032,902호 출원 제6도의 개략도를 참조한다. 실제로는 16개의 라인테이블이 존재한다. 그러나 간략화 하기 위하여 제6도에는 라인테이블 0∼7만을 도시하였다. 032,902호 출원의 제6도는 또한 라인테이블 지정부의 좌측에 관련 어드레스를 도시하고 있는데, 상기 라인테이블 넘버 4의 물리적 어드레스는 10,004이다. 하위 2개의 숫자는 256 기억장소에 대한 상기 라인테이블내의 실제 기억장소이며, 4개의 디지트 라인 넘버 어드레스가 존재하는 후속 디지트는 라인넘버 4로서 사용된 104이다.
분리 라인테이블에 대해서는, 라인테이블의 하나, 즉 10,000의 어드레스를 갖는 라인테이블 넘버로 표시되는 제4도의 상세도를 참조하기로 하자. 라인테이블은 테이블 방식내의 기억장소 0-9 및 A-F에 의해 지정된 256바이트로서 구성된다. 이 각각의 바이트는 8비트로서 이루어지며, 이 라인테이블의 모든 데이타를 XRAM(22)에 기억하기 위해서는 256 기억장소 x16 라인테이블의 용량 즉, 다시 말하면 4K×8비트의 용량이 필요하다. 제1도에 도시된 특정실시예에 있어서, 사용용량은 사실상 해당 크기의 두배이고 나머지는 비페이지된 방식으로 사용된다.
전술한 바와같이, 채널 4에 대한 어드레스는 10,4xx이다. 만일 채널넘버 5상에 동일한 기억장소가 존재한다면, 어드레스는 10, 5xx이다. 마찬가지로 시스템이 동일한 버스로 구동되는 페이지 IRAM으로 진행한다면 동일한 방식으로 동일한 메카니즘에 의해 페이지된다. 따라서 하나는 라인 4상의 어떤 것을 위해 어드레스 16, 4xx로 진행하거나 라인 5상의 어떤 것을 위해 어드레스 16, 5xx로 진행하게 된다. 동일한 넘버는 수신 마이크로 프로세서에서 유효하며, 이것은 상기 수신 및 송신 마이크로 프로세서가 서로간의 사이에서 정보를 매우 용이하게 통과시키는 방법이 된다.
마이크로 프로세서(10, 12)중 어느 하나가 이러한 페이징 방법을 이용하여 XRAM(22)을 어드레스하고자 할 경우에는 라인 4에 의해 어드레스 XX, 104XX를 어드레스하는 대신에 단일의 상위 비트를 이용하는 방법을 통하여 어드레스가 행하여진다. 대신 행하여지는 어드레스는 50, 0XX이며, 이것은 어느 마이크로 프로세서가 제어되는가의 여부에 따라 수신 라인넘버 또는 송신 라인넘버로 입력된다. 상기 어드레스 송신 모우드 또는 수신 모우드의 여부에 따라 동일한 물리적 어드레스 위치에 있는 상기 바이트의 중간 비트로 다중송신된다. 이러한 기술에 의하면, 수신 마이크로 프로세서 및 송신 마이크로 프로세서는 현재 어느 라인이 적절한 라인테이블을 액세스하기 위하여 액세스되고 있는가를 탐비할 필요가 없다. 상기 마이크로 프로세서는 단순히 50, 0XX를 어드레스하여 그것의 라인넘버를 얻고, 관심있는 바이트의 여부에 관계없이 하드웨어에 의해 정확한 물리적 어드레스를 행한다. 이것의 상기 페이징 알고니즘의 작동 방법이다.
다음은 수신 마이크로 프로세서(10) 또는 송신 마이크로 프로세서(12)중 어느 하나의 라인넘버를 변환하는 실제적인 하드웨어 및 펌웨어에 관하여 설명한다. 하기의 설명은 논리의 작동방법 및 펌웨어에서 논리가 실행되는 방식에 관한 것이다. XRAM의 특정 라인테이블을 선택하기 위한 채널넘버 선택은 레지스터(106, 108) 및 멀티플렉서(90, 92)와 함께 제1도에 도시된 PROM(104)에 의하여 행하여진다. PROM(104)은 82S185타입의 회로이다. 채널 레지스터(106,108)들은 74S175타입의 회로이다. 멀티플렉서(90, 92)들은 74LS257타입의 회로이다. 멀티플렉서들은 양자 모두 인에이블을 위해 부의 논리 입력을 필요로 하는 인에이블 입력을 갖는다. 따라서, 수신용 페이징 멀티플렉서는 신호 R2XBUS-에 의해 인에이블되고, 송신용 페이징 멀티플렉서는 신호 R2XBUS+에 의해 인에블된다. 수신 모우드에 있어서는 신호 R2XBUS+는 정(+)이고 신호 R2XBUS-는 부(-)이므로 멀티플렉서(90)만 인에이블하여 X-버스로 수신 마이크로 프로세서 어드레스들을 구동한다.
채널선택 PROM(104)은 1K 또는 2K×4비트 PROM일 수 있다. 이 PROM(104)은 9개의 어드레스 비트를 수신한다. 이들 비트중 4개는 수신라인 레지스터로부터의 것이고, 다른 4개의 비트는 송신라인 레지스터로부터의 것이다. 나머지 하나의 비트는 송신 또는 수신 마이크로 프로세서중 어느것이 테이블 넘버를 변환시키는가를 결정한다. 이것은 PROM(104)의 중간 입력단자에 결합되는 신호 XADR19+이다.
채널선택 PROM(104)으로부터의 4개의 출력은 2개의 레지스터(106, 108)에 결합된다. 이들은 각각 수신채널넘버 레지스터와 송신채널넘버 레지스터이다. 이 레지스터들은 4비트 레지스터들이다.
멀티플렉서(90, 92)는 있는 그대로의 마이크로 프로세서 어드레스들 또는 중간 비트들이 치환된 라인 넘버를 갖는 마이크로 프로세서 어드레스들을 구동한다. 또, 송신 멀티플렉서는 있는 그대로의 송신 마이크로 프로세서 어드레스들, 또는 중간 비트들이 치환된 라인 넘버를 갖는 마이크로 프로세서 어드레스들을 구동한다.
전술한 바와같이, X-버스와 XRAM은 마이크로 프로세서에 의해 직접 모우드 또는 라인 페이징 모우드로 어드레스될 수 있다. 이 경우에, 제1도를 참조하여 보면, 수신 어드레스 버스(16)는 비트 치환을 행하지 않고 멀티플렉서(90)의 일측에 직접 결합됨을 알 수 있다. 이와 마찬가지로, 송신 어드레스 버스(20)도 멀티플렉서(92)의 일측에 직접 결합한다. 이와 같이 X-어드레스 버스(26)의 어드레싱이 다른 형태로 행하여지는 이유는 하나의 모우드가 특정라인을 취급할 때의 인터럽트 모우드에 있어서와 같이 비라인넘버 콘텍스트에 제어가 행하여지는 경우가 있기 때문이다. 상기 라인이 어느 것인지는 판명되지 않았지만, 사실상 작동중인 라인이 아닌 다른 라인일 수도 있다.
전술한 바와같이, 채널 선택 PROM(104)은 수신 라인 레지스터(106)로부터 채널선택 PROM(104)에 결합된 4개의 비트를 가진다. 이러한 접속관계에 있어서는 제1도의 복귀라인(107)을 유의한다. 또한, 송신라인 레지스터(108)로부터도 PROM(104)에 4개의 비트가 결합된다. 이 접속은 제1도의 복귀라인(109)을 유의한다. 또한, 이상은 2K의 PROM에 의해 실행되었으나, 비트의 총수가 10이 되도록 2개의 다른 비트를 PROM(104)에 결합시켜서 1K의 PROM이 되도록 하는 것도 효과적이다. 2개의 다른 비트중 하나는 품질논리 테스트에 관계된 QLT의 모우드에 사용된다. 이것은 본 발명에 직접 관계가 없기 때문에 본 명세서에서는 더이상의 상세한 설명은 생략한다. 채널선택 PROM에 결합하는 신호는 신호 XADR19+00이다. 어드레스 XADR19는 X-어드레스 버스의 최하위 비트이다.
제1도의 블럭도에 있어서, 디코더(97)와 디코더(100)를 다시 참조한다. 디코더(97)에 있어서, 이것으로 부터의 최하위 라인 결합은 하드웨어 스트로브, 즉 어드레스 12,XXX로서 인용되었다. 그 출력은 라인(99)에 의해 하드웨어 디코드된 스트로브를 제공하도록 디코더(100)에 결합된다. 기입 스트로브가 있고, 또 디코더(100)로부터 인출돈 2개의 리드가 있다. 전술한 바와 같은 신호 POPRCN-과 POPTCN-도 있다. 수신 채널넘버는 12,004의 물리적 어드레스를 가지는 한편, 송신 채널넘버는 12,005의 물리적 어드레스를 가진다. 마이크로 프로세서중 어느 하나가 어드레스 12,004에 물리적 기입을 행하면, 신호 POPRCN-은 일단 ‘로우’로 되었다가 다시 ‘하이’로 된다. 이 신호의 시간주기는 대략 2버스 사이클, 즉 250nsec이다. PROM(104)의 사이클은 대략 85nsec이기 때문에 출력은 사이클의 말기에 스트로브된다.
디코더(100)와 수신 채널넘버 출력신호 사이에는 어드레스가 12,005인 송신 채널넘버 신호가 있다. 마이크로 프로세서중 하나가 12,005의 물리적 어드레스에 기입을 행하면, 당해 라인은 ‘로우’로 되었다가 약 2사이클, 즉 250nsec 후에 다시 ‘하이’로 환원된다.
제1도, 특히 수신 및 송신 채널 레지스터(106, 108)들을 참조하면, 신호 POPRCN-OO은 레지스터(106)로 클럭하고 신호 POPTCN-OO은 레지스터(108)로 클럭한다. 이 신호들은 제1도의 디코더(100)의 출력으로부터 취해진 것들이다. 마이크로 프로세서(10 또는 12)는 상대방 혹은 자신의 라인 레지스터를 클럭할 수 있다. 그러나, 수신 마이크로 프로세서는 물리적 어드레스 12,004에만 기입을 하고 송신 마이크로 프로세서는 어드레스 12,005에만 기입할 수 있다는 규칙이 엄격히 지켜져야 한다. 상기 규칙이 일단 설정되면 송신 마이크로 프로세서가 자체 채널넘버를 변환하려 할때에는 최하위 어드레스 비트가 항상 “1”로 되고, 수신 마이크로 프로세서가 자체 채널넘버를 변환하려 할때에는 최하위 어드레스 비트가 “0”으로 된다. 따라서, 하나의 하위 비트, 즉 신호 XADR19+00이 PROM(104)으로 옮겨져서 그 PROM으로 하여금 2개의 채널번호들중 어느것이 변경되어야 하는지를 결정하게 한다.
이제, 레지스터들(106, 108)이 변경되는 방식을 결정하도록 PROM(104)이 프로그램되는 방식을 설명하기로 한다. 단지 하나의 마이크로 프로세서만이 1회의 버스 사이클중에 X-버스를 액세스할 수 있기 때문에 단지 하나의 마이크로 프로세서만이 한번에 하나의 채널번호를 변경시킬 수 있다. 제어중이었던 2개의 레지스터(106, 108)는 마이크로 프로세서들이 자체의 채널들을 독립적으로 변경시킬 수 있도록 별개의 클럭을 갖는다. 또, 전술한 바와같이, 이 레지스터들의 클럭킹은 단지 1개의 어드레스 비트만 상이한 메모리 어드레스들의 하드웨어 디코드에 의해 유발된다. 통상, 수신 마이크로 프로세서는 그 자체의 스트로브만 액세스할 수 있고, 송신 마이크로 프로세서도 그 자체의 스트로브만을 액세스할 수 있다. 어느 하나의 프로세서에 대한 다음 채널이 어떤 것인지의 판단은 PROM(104)에 의해 이루어진다. 이 PROM은 자체의 채널넘버의 변경을 원하는 마이크로 프로세서가 어느 것이냐에 따라 각 마이크로 프로세서에 대한 현재 채널의 정보를 갖는다.
PROM(104)은 하기의 사항들을 고려하여 프로그램된다. 수신 마이크로 프로세서(10)는 채널번호들을 통해 역방향으로 진행한다. 16진으로 표시되는 채널들 0-9와 A-F중에서 수신 마이크로 프로세서는 채널 F, E, D, C, B, A, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, F의 순으로 서비스한다. 송신 마이크로세서는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 0의 방향 즉, 정상적인 순방향으로 진행한다. 진행-역행 구성을 통해 모든 채널을 빠뜨리지 않고 액세스한다는 것을 알 수 있다. 스킵된 채널이 있으면 다음 사이클에서 액세스된다.
이와같이 시퀀스는 충돌이 존재하지 않음을 가정한 것이다. 그런데, 어드레스 구성에서는 시퀀스가 한번 순환할 때 충돌이 존재하기 쉽다. 이것은 PROM(104)에 의해 취급된다.
송신 및 수신 마이크로 프로세서는 서로 협동하여 다수의(본 실시예에서는 16개) 데이타 채널을 통한 데이타 송신 및 수신의 조합태스크를 취급한다. 하나의 마이크로 프로세서가 일시정지에 의해 어떤 특정의 라인테이블에 대한 그 자체의 동작처리 이득 액세스를 가질 때, 그 라인테이블 및 그 내부의 모든 정보에 대한 적용 액세스를 갖는 것이 사실상 허락된다. 단, 어느 하나의 마이크로 프로세서에 대한 인터럽트에 의해 처리되는 부분들의 정보는 예외이다. 이 예외에 관한 것은 본 발명과는 무관하므로 본 명세서 내에서는 설명하지 않겠다. 이것은 어느 하나의 마이크로 프로세서가 액세스를 취했는지의 여부에 대해 다른 하나의 마이크로 프로세서가 검사해서는 안된다는 것을 의미하고, 하드웨어/펌웨어의 정의에 의해 전자의 마이크로 프로세서가 동시에 정보를 사용내지 변경시킬 수 없음을 의미한다.
충돌이 존재할 때, 수신 마이크로 프로세서가 라인 “1”에 존재하는 같은 시간에 송신 마이크로 프로세서가 “0”에서 “1”로 진행하려고 한다면, 그것은 송신 마이크로 프로세서이기 때문에 스트로브되는 어드레스는 어드레스 12,005이다. 이 어드레스의 최하위 비트는 “1”이고 따라서 PROM내로의 신호 XADR19는 “1”이 될 것이다. 그 시점에서 상기 신호가 “1”로 되는 순간에 PROM은 그 자체의 어드레스들을 스위치한다. 송신 마이크로 프로세서는 채널 0에서 채널 1로 진행하려고 한다는 것을 알 수 있을 것이다. 그러나, 수신 마이크로 프로세서가 이미 채널 1에 존재하고 있으면, 그 기억장소에서 PROM내에 코드화된 넘버는 2가 될 것이므로 송신 마이크로 프로세서는 채널 1을 간단히 스킵하고 대신에 채널 2로 진행하게 된다. 클럭이 하이로 되면 채널 2어드레스는 송신 채널넘버로 클럭된다.
PROM(104)은 채널넘버들을 연속적으로 감시한다. 그러나, PROM(104)으로부터 무엇인가가 출력되는 것에 관해 주의해야 할 시점은 단지 신호 POPRCN-이 로우로 되거나, 또는 신호 POPTCN-이 로우로 될때 뿐이다.
이제 본 발명과 관련된 펌웨어를 설명한다. 여기서, 본 발명의 시스템은 마이크로 프로세서들간의 통신에 있어 인터럽트들을 이용하여 동작하기 보다는 태스크 일시정지에 근거하여 동작함을 유의하여야 한다. 즉, 하나의 마이크로 프로세서가 해당 라인테이블을 일시정지시켜서 그 라인테이블에 대한 제어를 얻을 때, 그 마이크로 프로세서는 그 라인테이블에 표시된 “일시정지시점”에서 개시하고, 다시 다른 라인테이블을 일시 정지시킬 때까지 해당 작업 부분의 처리를 계속함으로써 그 채널 대신에 이미 시작되었던 처리를 계속한다. 이 시간주기동안 마이크로 프로세서는 그 라인테이블을 전용하고, 그 라인테이블의 일시정지 해제시 포기한다.
이 개념은 하나의 마이크로 프로세서가 카운트 다운하는 동안 다른 하나의 마이크로 프로세서가 채널들에 대한 태스크를 상향순서로 작업하도록 하는 전술한 구성에 따라 수행된다. 일시정지 개념은 재개시에 사용하기 위한 일시정지 어드레스의 저장을 포함한다. 이 일시정지는 적절한 채널넘버 레지스터의 인덱싱후에 수행된다. 그 다음에는 재개시 어드레스가 픽업되고 분기된다.
본 발명의 제어 개념을 이해하는데 도움이 되도록 송·수신 기능을 위해 2중 마이크로 프로세서에 적용되는 타이밍도를 참조하여 이하 설명한다. 제7도는 채널넘버의 시퀀스 동작을 설명하는 송신 및 수신 마이크로 프로세서의 시퀀스를 도시한 것이다. 제8도는 송신 및 수신 마이크로 프로세서들을 위한 사이클들의 상호 간섭을 설명하기 위한 타이밍도이다. 제9도 역시 타이밍도로서, 채널넘버 충돌 상황에서의 일시정지 기능을 설명하기 위한 것이다.
제7도의 타이밍도는 2개의 마이크로 프로세서가 각각 한번에 한 채널을 대표하여 동작하는 것을 보인 것이다. 또, 제7도는 하나의 마이크로 프로세서가 이미 어떤 채널상에서 작업중인 경우 각 마이크로 프로세서가 그 채널에 관하여 동작하는 것이 배제됨을 보인 것이다. 특히 제7도에서 송신 마이크로 프로세서가 채널 4에서 채널 6으로 진행하는 시점을 주목하기 바란다. 이것은 송신 마이크로 프로세서가 일시정지하려는 시점에서 수신 마이크로 프로세서가 이미 채널 5상에서 작업중이기 때문에 감지된 충돌의 일예로 된다. 따라서, 여기서 설명되는 하드웨어에 의해, 송신 마이크로 프로세서는 채널 6으로 보내지고, 이로 인해 양 마이크로 프로세서가 동시에 같은 라인을 액세스하는 동작은 회피할 수 있다.
제7도에서, 마크 M은 일반적으로 X-버스 사이클을 나타낸다. 채널의 주기는 통상 수 μsec 정도이다. 제7도에서 채널 0은 예컨대 20μsec 의 주기를 갖는다.
제8도는 송신 채널 1과 수신 채널 9에 대한 영역에서의 제7도의 일부에 대한 타이밍도이다. 제8도는 X-버스상에서의 송신 및 수신 마이크로 프로세서들에 대한 사이클의 상호간섭을 설명하는 것으로, 1버스 사이클동안 오직 하나의 마이크로 프로세서만이 액세스를 가짐을 보여주고 있다. 만약 이 레벨에서 경쟁 충돌이 존재하면 경쟁에서 진 마이크로 프로세서는 다른 하나의 마이크로 프로세서가 그 버스 사이클을 종료할 때까지 정지되어 버린다. 신호 POPTCN 및 POPRCN은 X-버스로부터 디코드된 신호들이기 때문에, 이 신호들이 동시에 발생할 수는 없다.
제8도에 있어서, 수신 마이크로 프로세서는 채널 9에 대응하는 라인테이블을 먼저 액세스 동작시키기 위한 액세스를 갖는다. 이어서, 송신 마이크로 프로세서에 의한 액세스 요구가 있는 경우 송신 마이크로 프로세서는 다음 버스 사이클동안 액세스를 갖는데, 이러한 액세스는 채널 1에 대응하는 라인테이블을 액세스 동작시키기 위한 것이다. 제8도에서의 각각의 버스 사이클 주기는 250nsec 정도이다.
제9도는 또한 채널 4에서 채널 6까지 일시정시키는 송신 마이크로 프로세서를 예시한 타이밍도이다. 제9도에서는 송신 마이크로 프로세서와 관련하여 새로운 일시정지점, 즉 상기한 라인테이블로의 복귀시에 픽업하는 점을 설정키 위한 2개의 초기 버스 사이클이 존재한다. 또한, 신호 POPTCN은 송신 레지스터를 클럭동작시키는 효과를 갖는 물리적 어드레스 12,005이다. 이러한 특정예에 있어서는, 수신기가 이미 채널 5상에 있기 때문에 PROM(104)을 수반하는 논리부는 송신 레지스터에 대한 채널 4에서 채널 6까지 클럭시킨다.
제9도에서의 신호 TC#는 송신채널 또는 라인넘버 레지스터의 내용을 나타낸다. 또, 신호 RC#는 수신채널 또는 라인넘버 레지스터의 내용을 나타낸다.
제9도와 관련하여 송신 마이크로 프로세서가 관계하는 한은 비록 채널 5가 스킵되었더라도, 이러한 채널은 시퀀스 동작후에 픽업된다. 따라서, 어떤 마이크로 프로세서라도 어떤 라인 테이블의 액세스동작을 배제하지 않으며, 다만, 동시에 다른 마이크로 프로세서와 동일한 라인 테이블을 액세스 동작하는 것만이 배제된다.
이미 설명한 바와같이, 수신 마이크로 프로세서 및 송신 마이크로 프로세서는 68008형 마이크로 프로세서이다. 이들 마이크로 프로세서는 통상 8개의 어드레스 레지스터와 8개의 데이타 레지스터를 갖는다. 이 어드레스 레지스터는 통상 레지스터 A0-A7로서 표시된다. 각각의 마이크로 프로세서에 있어서, 어드레스 레지스터는 라인 테이블내의 적당한 일시정지 어드레스를 표시하는데 사용된다. 또, 레지스터 A0는 라인 테이블의 개시부에 있는 위치 0인 물리적 어드레스 50,000을 표시하도록 구성된다. 그리고, 어드레스 레지스터 A4는 물리적 어드레스 50,002를 가리킨다. 이것은 라인 테이블내의 수신 마이크로 프로세서 일시정지 어드레스를 의미한다. 다시 제4도를 참조하면, 어드레스 레지스터 A4는 판독을 보다 용이하게 하기 위하여 항상 물리적 어드레스 50,002의 좌측에 존재한다. 상기 판독은 2개의 바이트량으로 발생한다.
요약하면, 제1도는 본 발명의 펌웨어 스테이트 개념이 구현될 수 있는 시스템을 예시한 하드웨어도이다. 그러나, 이들 개념은 또한 보다 적거나 혹은 보다 많은 갯수의 프로세서를 포함하는 다른 시스템에서도 사용될 수 있다. 본 발명의 펌웨어의 개념은 다중 데이타 라인상에서 데이타 전송이 불규칙적으로 일어날때 그 데이타의 적절한 전송을 최적화된 방식으로 인에이블 하는데 유용하다. 펌웨어 스테이트 개념 가운데서, 지금까지 개략적으로 설명했던 일시정지 특징은 시스템의 주의(atfention)가 라인별로 이루어지게 하는 수단이다. 이미 설명한 바와같이, 상기 일시정지의 특징은 하나의 태스크로부터 다른 태스크로 변환하는 어떤 시점에서 감소될 콘텍스트가 전혀 없다는 것이다. 양호한 실시예에서는 모든 것이 카운터 위치에 기억되므로 시스템이 적절한 시간에 특정라인상의 처리를 픽업 및 재개시하는 위치를 알 수 있게 된다. 하드웨어 면에서의 일시정지 특징은 각각의 라인에 할당된 메모리 세그먼트를 가진 페이지된 메모리의 사용을 가능하게 한다.
본 발명의 펌웨어 스테이트 개념에 따르면, 어떤 특정시간에서의 특정 펌웨어 상태는 처리 목적을 위해 그 상태가 재 액세스시의 실행 코드를 스타트하게 될 프로그램카운터 위치로서 간단히 정의된다.
본 발명의 펌웨어 상태 개념에 관해서는 제6도에서 예시되는데, 제6도의 좌측에는 일련의 펌웨어 상태 S1-S6이 도시되어 있다. 상호접속 라인들은 펌웨어 상태에서 다음 펌웨어 상태로의 시퀀스 동작을 도시하는 것이다. 제6도의 우측상에는 데이타 라인 넘버가 표시된다. 제6도의 좌측 및 우측을 상호접속시키는 화살표는 라인 넘버 5를 강조한 것이다. 이 도면은 라인 넘버 5가 액세스를 얻는 순간 라인 넘버 5상의 처리가 분리 세그먼트에서 행해지는 것을 분명히 나타낸 것이다. 여러가지 상태에서의 많은 프로그램 단계는 몇몇 사건이 발생하는 것에 대한 대기를 나타낸다. 주요 대기 사건에는 통상 3가지가 있는데, 첫째로는 수신축상의 데이타 수신에 대한 대기이며, 둘째로는 컴퓨터로 데이타가 통과되었음을 나타내는 응답에 대한 대기이고, 셋째로는 시간이 경과함에 따라 발생하는 대기이다. 컴퓨터에는 제1도에서 어드레스 및 데이타 버스(33, 36)에 각각 접속된 멀티 라인 제어기가 결합되어 있다. 이미 설명한 바와같이 상기 컴퓨터는 Honeywell사의 DPS6형일 수 있다.
이제 제6도를 다시 참조하면, 예컨대 먼저 라인 3에 대한 작업이 수행되고, 다음 라인 4에 대한 작업이 수행되며, 이하 이러한 작업이 계속적으로 수행된다. 각각의 라인들은 상이한 태스크로 동작하며 한번에 하나의 라인에 대해서만 액세스된다. 앞에서 설명한 바와같이, 시간의 실제량은 사실상 대기에 따라 초래되는데, 예를들어 전화에 대한 대기는 “링”신호로 발생한다. 제6도는 이들 모든 상태의 인터리이빙을 예시하며, 제6도에 있어서의 화살표는 이들 상태가 예를들면 라인 5에 대하여 함께 분리될때 완전한 상태 시퀀스가 존재함을 나타낸다.
제6도는 또한 각각의 펌웨어 상태에서 상태의 종료부에 S로서 표시된 “일시정지”를 나타낸다. 사실상 특정상태에 따라 그 상태내에서 일어나는 일련의 일시정지가 있다. 예를들면 라인 5에 대한 펌웨어 상태 S3에 있을때, 특정 처리의 작업이 종료된 후에 일시정지가 일어날 수 있다. 이 상태에 대한 일시정지 어드레스가 세이브되고, 그 다음에 라인 5가 액세스되며, 처리는 그 상태에서 개시한다. 상태가 완료되었음을 테스트가 가리키면, 새로운 일시정지 어드레스가 다음 상태에 대응하도록 설정될 수 있다. 프로세서가 이 라인에 다시 복귀하는 경우, 검출되는 어드레스는 다음 상태에 대한 일시정지 어드레스로 된다.
이제 제2도의 전체 펌웨어 상태 블럭도를 참조하면, 좌측에는 송신상태가 우측에는 수신상태가 예시되어 있다. 각 측부상에서의 상태들은 시퀀스의 과정을 예시한다. 이들 각각의 상태는 제3a-3h도와 관련하여 하기 설명되는 바와같이 다수의 보다 작은 상태들로 수행된다.
제2도의 각 측부상에는 “다운” 또는 “티어 다운” 상태가 있다. 이러한 상태는 간단히 말해서 전화기가 내려진 상태이다. 이들 상태는 제2도에서 상태 TXDWN(150) 및 상태 RXDWN(152)으로서 예시되어 있다. 이들 상태는 전화기를 내려 놓는 것과, 컴퓨터에 대한 접속을 분리시키는 것과, 모든 이전 호출상태를 클리어링하는 것과, 동일 라인상에서 다른 호출을 얻을 수 있도록 시스템을 초기화하는 것에 대한 책임을 지고 있다.
제2도에서 예시된 다음 상태는 상태 TXEST(154) 및 RXEST(156)이다. 이들은 “확립”상태로서 언급된다. 이것은 동일한 라인상에서, 새로운 호출을 확립하는 것을 허용한다. 통상, 이 “확립”상태란 대기 상태이다. 이러한 “확립”상태 중에는 사용자는 단순히 “전화가 울릴때까지 대기”한다. 어느 일측에서 호출을 개시하려고 할때는 먼저 정확한 조건이 존재하는지를 검사하고, 이어서 특정라인이 호출을 수용 또는 개시할 수 있는 라인인지를 검사하며, 추가의 진행을 위하여 적소에 있어야 할 특정조건들을 설정한다. “확립”상태 이후 송신측에서는 송신기가 상태 TXHSK(158)로서 약칭된 핸드세이크 상태로 이동한다. 마찬가지로, 수신측에서는 수신기가 상태 RXOFF(160)로 이동한다.
수신측에서는 상태 RXOFF가 수신기의 주의를 통신/전화 라인에 초래되게 하지만, 그것은 컴퓨터가 소망의 데이타를 전송하지 않는 상태이다. 상태 RXOFF에서, 입력되어온 어떤 데이타가 디스 카드되기는 하지만 갱신 메시지의 주기적 처리는 연속적으로 수행된다.
제2도에서 예시한 바와같이, 상태 XROFF에 대응하는 것은 상태 RXDAT(162)이다. 그 상태에서는 데이타가 인입되어 사실상 컴퓨터로 전송된다. 상기 상태들 RXOFF 및 RXDAT는 한 상태(RXOFF)에서 통신라인으로부터의 데이타가 디스카드되는 점과 그리고 다른 상태(RXDAT)에서 통신라인으로부터 데이타가 컴퓨터로 통과되어 여기에 도시되지 않은 다중 라인제어기를 거쳐 데이타 및 어드레스 버스(33, 36)에 접속하는 점을 제외하고는 거의 유사하다. 상태 RXOFF에서는 컴퓨터에서의 데이타의 수신을 동기화하는 몇가지 특수단계가 있다.
수신측상에서의 최종 상태는 상태 RXBRK(164)이다. 이것은 갱신 메시지를 거쳐 “차단”신호가 통신라인으로부터 수신될때 인입되는 상태이다. 상기 “차단”이란 데이타 설비를 활용하지 않고도 수신기에 대한 주의를 끌게 되는 오버라이드 신호가 전송될 수 있음을 의미하는 개념이다. 상기 상태 RXBRK는 상태 RXOFF와 유사하다. 상태 RXBRK를 인입하는 경우, 그 요구가 “차단”상태의 통지로 컴퓨터에 포스트된다. 그러면, 상기 상태 RXBRK는 브레이크의 종료를 가리키는 갱신 메시지가 수신될때까지 데이타를 디스카드하도록 진행된다. 그후에는 상태 RXDAT로 복귀한다.
제2도의 송신측에서는 전화가 울리고 그에 대해 응답하여 라인이 최초로 확립되었을때, 제어기와 전화기 사이에서 교환되는 다수의 핸드세이킹 메시지가 있다. 이들 핸드세이크 메시지는 2개의 장치가 한 장치에서 다른 장치로 통신할 수 있도록 보장하기 위하여 통과된다. 송신기가 “핸드세이크”모드에 있을 동안 수신기는 “오프”상태에 있고, 수신기가 “오프”상태에 있을 동안은 데이타를 디스카드시킬 수 있다. Honeywell사의 DPS6형과 같은 컴퓨터는 라인에서 핸드세이크 메시지를 찾아내어 이들 메시지들의 존재를 송신 마이크로 프로세서(12)에 알려준다. 핸드세이킹이 고장인 경우, 시스템은 “다운”상태로 복귀한다. 몇가지 이유로 비호환성 데이타 율이나 혹은 비호환성 장치가 존재한다는 것이 발견되면, 접속이 티어 다운된다.
송신측에서의 핸드세이크가 성취되면, 시스템은 상태 TXOFF로 진행한다. 제2도에서 예시한 바와같이, 상태 TXOFF(166) 및 TXDAT(168) 양자가 있는데, 이들 상태는 송신이나 혹은 비송신 데이타에 필요한 DPS6 컴퓨터에 해당한다. 이 컴퓨터가 데이타를 송신하기를 원할때는 송신기를 턴온시키고, 시스템은 상태 TXDAT로 진행한다. 또, 데이타를 송신하려는 의도가 전혀 없는 경우에는 송신기를 턴 오프시키고 시스템을 상태 TXOFF 상태로 되게 한다. 상태 TXOFF에서는 기본적으로 단지 송신기가 턴 오프되었는지의 여부에 대해서만 테스트한다. 데이타가 전혀 전송되지 않을때는, DSP6 컴퓨터가 접속을 해제하고자 하는지 혹은 어떤 다른 방식으로 접속의 성질을 변경하여 처리 작업량이 상태 TXDAT 및 TXOFF 사이에서 공유되게 하고자 하는지를 알기 위하여 추가의 테스트가 이루어진다. 시간의 견지에서 보면, 송신기는 대부분의 시간동안 상태 TXOFF에서 유지된다.
이제, 제2도에서 예시된 각각의 메인 상태에 수반된 서브스테이트에 대해 구체적인 설명을 하기 위하여 제3a 내지 3h도를 참조한다. 특히 서브 스테이트와 관련된 정의 및 서브스테이트들간의 천이의 설명을 위하여는 제3g도를 참조한다. 제3g도는 수신 마이크로 프로세서 상태 천이 사건과 아울러 송신 마이크로 프로세서 상태 천이 사건을 예시한 것이다.
제3a도에는 도시된 바와같이 상태 RXDAT 및 여러가지 서브스테이트가 예시되어 있다. 이들은 서브스테이트 RXDA00-RXDA10는 물론 상태 RXDAD1, RXDAD2, RXDAH1 및 RXDAE1-RXDAE3를 포함한다. 이러한 상태를 엔터 동작시킴에 따라 서브스테이트 RXDA00(202)이 엔터되는데, 이것은 각각의 프레임에 대한 제1바이트가 검출된 상태이다. 데이타 프레임은 헤더 바이트와 제1 내지 제9데이타 바이트로 구성된다. 상태 RXDA00은 헤더 바이트가 수신되고 수신 FIFO의 마이크로 프로세서 단부까지 진행하는 것을 대기하는 상태이다. 이 상태는 바이트가 전혀 수신되지 않을 동안에 유지된다. 또, 이 상태는 화살표로 표시된 바와같이 진행한다. 좌측으로의 사건은 에러를 나타낸다. 제3a도에는 상기 에러가 사건 A 또는 B로 예시되어 있다. 또, 제3g도를 참조하기로 한다.
사건 B는 몇가지 종류의 에러가 존재함을 나타내는 수신 상태이다. 사건 A는 그 바이트상에 프레임 표시의 단부가 있을 때에 발생한다. 정의에 따른 모든 메시지는 적어도 두 바이트 이상이기 때문에, 제1바이트의 프레임 단부를 참조하는 것은 적합치 않다.
상태 RXDA00에서 수신된 바이트는 라인 테이블내의 어셈블리 버퍼이 헤더위치에 기억되어 있다. 상태 RXDA01(204)에서는, 현재 제1데이타 바이트가 검출되고 있는 경우를 제외하고는 동일한 시퀀스가 발생한다. 또, 에러는 에러 처리 루틴에 전송될 수 있다.
상태 RXDA00에는 상태 RXDA01-RXDA09(204∼220)가 뒤따른다. 이들은 메시지의 제1 내지 제9데이타 바이트의 수신에 해당한다.
펌웨어 상태 머신의 한가지 태양은 카운터 또는 어드레스 포인터는 유지되지 않으나 그밖의 바이트는 수신되게 한다는 점이다. 그 표시는 코드자체로 인지된다. 데이타 바이트가 수신되어 상태 RXDA02(206)로 나타날때, 그것은 라인 테이블내의 어셈블리 버퍼의 제2바이트에 놓이게 된다.
마찬가지로, 이들 상태에서 우측으로 갈때는 전체 메시지가 어셈블리 되었음을 알린다. 바이트의 수는 그것이 존재하는 상태로부터 알 수 있다. 예를들어, 상태 RXDA03(203)이 이탈되면 3개의 바이트 메시지가 있음을 나타내는 지시자(indicator)를 설정한다. 상태 RXDA07(216)로부터 벗어남은 7개의 바이트 메시지가 있음을 나타낸다. 이들 모두는 정보가 기억된 버퍼를 통해 카운팅 및 인덱싱 함에 따라 시간을 절감한다.
또하나의 표시는 상태 RXDA09(220)에 도달할때 단부 상태가 수신되지 않는 경우에 이것이 에러를 나타낸다는 것이다. 프레임은 너무 길다. 상태 RXDA10(222)에 엔터링하게 되면, 데이타는 적합한 메시지 단부가 수신될 때까지 선입선출 장치로부터 연속적으로 얻어진다. 상기 데이타가 소정의 시간 이내에 수신되지 않으면 라인이 티어다운된다. 또, 데이타가 검출된 경우에는 에러처리 루틴이 엔터된다. 에러는 에러처리상태인 상태 RXDAE1, RXDAE2 및 RXDAE3로 진행하게 한다.
상태 RXDAE1(224)은 종래의 CRI 완료에 대한 대기 상태이다. 상태 RXDAE2(226)는 적절한 시간동안 대기하여 CRI를 포스트한다. 상태 RXDAE3(228)은 에러를 갖는 CRI의 종료를 기하고, 종료시 사건 U로 엔터된다.
정상적인 경우에는 데이타의 1 내지 9바이트가 엔터될때 데이타 전달상태인 상태 RXDAD1(230)을 엔터한다. 모든 경우에 있어서, CRI는 프로세서에 초래되는 인터럽트이다. 유전은 새로운 것을 포스트할 수 있기 전에 종래의 인터럽트가 완료되었는지를 알기 위하여 대기하여야 하고, 완료되었을 때는 서로 너무 밀접한 인터럽트들은 발생시키지 않게 하기 위하여 데이타가 컴퓨터에 주어질때 그 데이타를 측정하려고 시도하기전에 시간을 체크하여야 한다. 소정시간동안 대기하고 CRI를 포스트한 다음에는 메시지내에 얼마나 많은 바이트가 있는지에 대하여 설정된 지시자를 테스트한다. 이것은 다운카운트되는 카운터를 포함한다.
데이타의 단부가 전송될때는 제3a도의 사건 L로 복귀하는데, 그에 따라 다음 데이타 프로레임을 추출할 수 있게 된다. 제3a도에서 예시한 바와같이, 상태 RXDAD1으로부터 상태 RXOFF로 변환하는 사건이 있는데, 이것은 수신기가 턴 오프된 상태를 카바한다. 수신기가 턴 오프된 경우에는 상기 상태가 인출되고 상태 RXOFF는 엔터된다. 수신시가 턴 오프되지 않았다면, 사건 M이 발생하며, 또한 상태 RXDAD1 및 RXDAD2(232) 사이의 상호 변경이 적당한 회수만큼 발생한다.
또한, 제3a도와 관련하여 발생하는 다른 테스트가 있다. 제3a도에서 좌측세트의 상태들을 우측세트의 상태들에 이동하는 3가지 다른 브랜치가 취해질 수 있다. 그 하나는 데이타 전달에 대한 것이며, 다른 하나는 갱신 프레임이고, 세번째는 사건 H이다. 이것은 상태 RXBRK가 엔터되는 위치인데, 이것에는 또한 상태 RXOFF가 엔터될 수 있는 조건이 있다. 통상, 이것은 데이타 세트 상태지시자를 변경시키는 갱신 메시지를 처리하여 데이타 추출상태로 복귀시킨다.
제3a도의 우측에 있는 제3의 상태는 상태 RXDAH1(234)이다. 이것은 핸드세이크 메시지가 발생하는 경우 수신기가 그것을 수신하는 위치이다. 상기 핸드세이크 메시지는 통상 호출의 개시부분에서 발생한다. 이것은 또한 호출의 중간부분에서 발생한다. 핸드세이크의 경우, 데이타 블록이 버퍼내에 보존되고, 송신 마이크로 프로세서는 그 핸드세이크 상태로 초래된다. 수신되는 메시지는 송신 마이크로 프로세서가 수신 마이크로 프로세서를 최종적으로 해제할 때까지 처리하기 위해 그 송신 마이크로 프로세서를 통해 통과되어, 정상 데이타의 복구로 복귀하게 된다.
따라서, 제3a도는 상태 RXDAT내의 데이타의 기본적인 내부 흐름을 도시한 것이다. 대부분의 액티브상태는 제3a도의 좌측에 예시된 것이다. 일반적으로, 몇몇 마이크로 프로세서 명령은 각각의 상태에 대하여 실행되고, 따라서 시간은 이들 특성을 처리하기 위하여 최소로 된다.
수신 마이크로 프로세서 상태 RXOFF의 예시에 대해서는 제3b도에 도시되어 있다. 이러한 상태는 상태 RXOFH1(272)과 함께 서브스테이트 RXOF00-RXOF10(250∼270)을 포함한다. 상기 상태 RXOF00-RXOF10은 제3a도에서 예시된 상태 RXDA00-RXOF10과 중복된다. 또, 상기 상태 RXOF00은 헤더 바이트를 예시하는 태스크를 갖는다. 더욱이 그것은 수신기가 턴온되었음을 지시하기 위하여 버퍼내에 삽입되어 있는 표시용 버퍼를 모니터한다. 수신기가 턴온될 때는 그 상태가 검출되며, 또한 데이타의 상향 프레임을 DSP6 컴퓨터에 전달되도록 하기 위하여 상태 RXDAT가 엔터된다. 그밖에, 상태 RXOF00-RXOF10은 대응하는 상태 RXDA00-RXDA10과 사실상 같은 상태를 행한다.
상태 RXOF에서는 많은 코드가 상태 RXDAT에서 사용된 코드와 동일하다. 펌웨어 상태 머신의 개념하에서는, 서브스테이트에서 서브스테이트까지의 처리가 매우 간단한 테스트에 의해 수행된다. 상기 코드는 이미 언급된 이들 2가지 상태 사이에서 사실상 동일하다.
제3b도에서 예시된 다른 상태는 상태 RXDAH1이다. 제3b도의 이러한 부분은 데이타 전달상태가 상태 RXOFF에서는 없기 때문에 제3a도의 대응하는 부분과는 상이하다. 사건 G에서 데이타 메시지가 있는 경우, 메시지가 디스카드된다. 갱신 및 핸드세이크 메시지는 상태 RXDAT에서의 메시지와 동일하다. 이미 설명한 바와같이, 데이타 전달상태는 DPS6 컴퓨터에 에러를 지시할 필요가 전혀 없기 때문에 전달이 이루어지지 않는다. 모든 에러는 블럭을 하나의 에러가 다음 에러주위로 오게될 때까지 디스카드 되게 한다.
이제, 제3c도에서 예시된 추가의 서브스테이트 세트에 대해 설명한다. 이들은 메인상태 RXBRK에 대한 서브스테이트이다. 데이타 흐름에 관한 “차단”상태는 “오프”상태나 매우 유사하다. 또, 상기 데이타는 디스카드된다. 제3c도에 있어서, 데이타 엔트리 점은 도면의 하부에 있다. 이것은 상태 RXBRK1-RXBRK3(302∼306)을 엔터한다. 상기 RXBRK1은 우선 선행 CRI의 완료를 대기한다. 이것은 차단신호를 프로세서에 알리기 위하여 소정시간동안 대기한후, 역시 CRI가 완료되기를 대기한다. 그 다음에는 다시 데이타 처리를 계속한다. 일반적으로 차단상태에 있지 않은 데이타블록들이 발생하지만, 만일 이들이 차단상태에 있다면 그 데이타블록들은 디스카드된다. 갱신 메시지의 수신에 있어서 데이타블럭은 상태 RXDAT로 복귀하는 것을 감지한다. 상태 RXBRK는 항상 상태 RXDAT로 부터 엔터되며, 상태 RXBRK는 항상 상태 RXDAT로 복귀된다.
코드와 관련하여 살펴보면, 예컨대 서브스테이트 RXBR00-RXBR10(308∼328)에서 수행되는 모든 명령은 메인 상태 RXOFF 및 DXDAT에서의 대응하는 서브스테이트와 동일하다.
이제 제3d도를 참조하면, 여기에는 상태 TXDAT에 대한 송신 마이크로 프로세서 상태도가 예시되어 있다. 유사하게 제3e도는 상태 TXDAT에 대한 송신 마이크로 프로세서 상태도가 예시되어 있다. 유사하게 제3e도는 상태 TXOFF에 대한 송신 마이크로 프로세서 상태도를 예시한 것이다. 상태 TXDAT에서는 수신측에서의 반대 동작이 일어난다. 또, DPS 컴퓨터에서 문자가 수신되어 메시지들이 어셈블리된다. 데이타 블럭은 9바이트까지 수신되지만, 하드웨어상의 여러가지 이유로 프레임내에는 헤더 바이트와 함께 단지 3개의 데이타 바이트가 전송된다. 따라서, 상태 TXDAT에서 송신되는 가장 긴 프레임은 4바이트 프레임이다. 이에 대해서는 제3d도의 상태 TXDAT1, TXDAT2 및 TXDAT4를 참조하면 된다. 상태 TXDAT에서는 제1의 CRI가 대기하고 있다. 이것은 상태가 엔터된 이후 1msec 내지 수백 msec까지의 시간동안 발생할 수 있다. 2개의 분리 사건은 사건 B에 포함하는 이러한 상태를 가리킨다. 제3도에서 예시한 바와같이, 3개의 분리상태에 있어서는 3가지 사건 B가 존재한다. 이들 상태로부터의 다른 인출은 그 상태가 사실상 데이타를 갖고 있을때 사건 A에 의해 행해진다. 상태 TXDAT1에서는 수신된 데이타가 메시지 버퍼의 제1바이트에 놓여진다. 다음, 상태 TXDAT2에서는 다음 데이타가 전달될 대기상태를 갖는다. 데이타가 전달되는 경우, 그 데이타는 버퍼의 제2바이트에 놓여지며, 또 그 시스템은 제3바이트 동안 대기하는 상태 TXDAT4로 진행하여, 이 데이타를 데이타 버퍼의 제3바이트 위치에 삽입한다. 이것은 3개의 바이트행이 수신된 경우에 대한 정상 흐름이다. 그것이 제어단계를 포함하는 경우에는 상태 TXDAT6으로 천이한다. 이것은 대기상태이다.
본 발명의 시스템은 데이타를 수신할 수 있는 대부분의 터미널보다 훨씬 더 빠르게 데이타를 전송하는 능력을 갖는다. 핸드세이크 시간에서 설정된 시간주기에 대한 대기와 또 문자시간에 대한 대기를 갖는데, 전자는 문자당 하나의 문자 시간이 존재하며, 후자는 메시지를 전송하는 시간을 경과시키기 위한 대기상태를 의미한다. 상태 TXDAT6에서는 추가의 테스트가 있으며, 그 다음에 TXDAT7(358)로 진행한다. 제3d도에서와 사건 C를 참조하면, 상태 TXDAT7는 갱신 메시지를 전송할 시간이 될 경우에 가정된다. 이들 메시지는 주기적으로, 통상 매 1.5sec마다 전송되어야 한다. 상태 TXDAT6에 있어서, 송신 시간에 대한 대기는 수신터미널이 수신할 수 있음을 알 수 있음을 알려줄 뿐만 아니라 전송 장치가 클리어되고 있음도 나타내는데, 이는 선행 프레임이 폐쇄되어 있는 경우 새로운 메시지를 제공할 수 있다. 만일 이러한 메시지가 갱신시간이라면, 그 갱신 메시지가 먼저 전송되고, 이어서 그 전송시간이 경과한 후에는 데이타 메시지를 전송할 수 있도록 하는 대기주기가 발생한다. 또, 갱신 메시지 대기상태에서는 시스템을 상태 txdwn으로 되게 하는 상태가 감지된다. 이러한 상태가 발생할 수 있도록 하는 2가지 상태가 있는데, 그 하나는 호출이 중단될때 발생하고, 그 다른 하나는 메시지가 몇몇 주기 동안에는 수신될 수 없도록 할때 발생한다.
갱신 메시지들과 관련하여, 수신 마이크로 프로세서와 송신 마이크로 프로세서는 카운터와 통합되어 있는데, 만일 어떤 갱신 메시지 넘버가 그것들을 수신함이 없이 전송되면 몇가지 이유에 기인하여 다른 단부에서의 터미널 아답터가 파괴되거나 언플러그되고, 그에 따라 라인이 티어 다운된다. 이러한 상태가 일어나지 않는 경우에는 상태 TXDAT6이나 혹은 TXDAT7중 어느 하나가 진행되어 그 3바이트 메시지가 전송된다. 그후, 그 흐름은 시스템이 DPS6 컴퓨터로부터의 다음 메시지를 픽업하기 시작하는 상태 TXDAT1으로 되돌아간다.
지금까지 서브스테이트 TXDAT1, TXDAT2 및 TXDAT4로부터의 사건 B에 대하여 설명하였다. 이들 사건은 송신기가 오프되었음을 나타낸다. 상태 TXOFF1에서 송신기가 오프되면, 그 송신기는 전혀 데이타를 전송하지 않으면 이에 따라 그 동작은 즉시 상태 TXOFF로 복귀한다. 상태 TXDAT2에서 데이타의 1바이트가 이미 누산되어 있는 경우 그 시스템은 상태 TXOFF3으로 복귀한다.
마찬가지로, 상태 TXDAT4로부터의 사건 B에서 발생하는 인출에 의해 송신기의 오프상태가 감지되면, 누산된 2바이트의 데이타를 얻을 수 있게 된다. 상태 TXDAT5는 송신시간동안 대개를 발생시키도록 엔터된다. 이것은 먼저 2바이트 메시지를 전송시키고, 이어서 시스템이 상태 TXOFF로 진행되게 한다.
제3d도와 관련하여 설명된 바와같이 한 상태에서 다른 상태로의 천이는 콘텍스트의 절감에 대한 아무런 요구조건을 필요로 하지 않는다. 그러나, 누산된 바이트를 갖고 있는지의 여부, 다시말해서 상태 TXOFF로 가기 이전에 얼마나 많은 데이타 바이트가 존재하는지의 여부를 기억할 필요가 있다. 본 발명의 펌웨어 스테이트 개념에 따르면, 상태 TXDAT5에 2개의 문자가 있는 경우 그 하나는 메시지를 전송되게 하는 우측시간에 대한 대기상태이며, 그 다른 하나는 메시지가 전송되자 마자 상태 TXOFF로 진행하는데에 따른 대기상태이다.
제3d도에서 예시된 바와같이, 상태 TXDAT에서의 제어는 매우 중요한데, 이것은 컴퓨터로 하여금 16개까지의 터미널에 대한 전체 데이타 전송 스트림을 고속으로 제공케하는 16개의 상이한 라인들을 취급할 수 있도록 하는 상태이기 때문이다. 따라서, 이러한 상태에서 문자당 총처리 속도를 가능한한 천천히 유지할 수 있다. 이러한 시간은 문자당 약 45 내지 50μsec 사이에 있는데, 이 시간은 초당 9600비트용의 60μsec이 제한치보다 훨씬 아래에 있다.
다음에, 상태 TXOFF에 대한 송신 마이크로 프로세서 상태도가 도시된 제3e도를 참조한다. 이러한 특정상태는 상태 TXOFFO(370) 및 TXOFMV(372)를 포함하는 2개의 보조 상태로 분리된다. 상태 TXOFF에 있어서의 송신 시간에 대한 대기는 시간 리소오스를 유지한다. DSP6 컴퓨터 인터페이스의 경우, 여러가지 특징을 주기적으로 모니터하는 것이 필요하다. 상태 TXOFF는 조건들을 주기적으로 모니터하는데 사용된다. 이러한 상태 TXOFF는 송신 시간이 종료될때 그 상태 또는 인터페이스를 감시하고 또 아무것도 변경되지 않았을 때에는 시스템이 상기 상태 TXOFF와 그리고 다른 문자시간에 대한 대기 상태로 유지된다.
사실상, 이들 대기주기 동안은 일시정지 특징이 유지된다. 시스템은 특정 동작을 취하기 위한 시간이 필요한지의 여부를 결정하기 위하여 충분히 오랫동안 테스트한다. 만일 그렇지 않은 경우에는 시스템이 즉시 일시정지하게 된다. 또, 상기 시스템은 그 상태에서 약 10 또는 12μsec의 시간을 소모한다. 다른 경우에는 상기 시스템이 갱신시간을 모니터하여 그 갱신시간을 곧바로 관련된 상태 TXDAT로 수행되게 한다.
또다른 예는 상태 TXOFF0에서 TXOFMV까지 천이할때 발생한다. 이것은 컴퓨터가 더 많은 데이타를 송신하기를 원할때 일어나는데, 이는 송신시가 다시 턴온될때 검출된다. 이제 처리는 측정 벡터 세트업 상태인 TXOFMV라 하는 상태로 진행한다. 처리는 때때로 수신 측정을 변화에 응답하며, 모든 문자에 대하여 테스트할 필요가 없게끔 소정의 지점에서 감지된다. 처리는 다른 측정시간을 세트업하고, 그 다음에는 제3e도에서 TXOFMV로 부터의 출력으로 표시되어 있는 바와같이 항상 상태 TXDAT로 진행한다.
이제 제3h도를 참조하면, 메인상태 TXDWN 및 RXDWN과 관련된 보조상태가 예시되어 있다. 이들 상태는 기본적으로 다음의 초기화 단계나 혹은 라인이 티어 다운되는 어떤 시점에 엔터된다. 수신측에는 서브 스테이트 RXDWNF(402) 및 RXDWN1-RXDWN5(404∼412) 있고, 또 송신측에는 상태 TXDWN1-TXDWN6(414∼424)가 있다.
수신측에는 송신기를 엔터티어다운하기 위한 상태 RXDWNF(402)를 갖는다. 수신기가 티어다운 상황을 인지하게 되면, 그 수신기는 바로 데드 단부 상태인 상태 RXDWNF를 엔터한다. 그러나, 송신기에 대한 일시정지 어드레스를 변경시킴으로써 엔터하려고 하는 경우에는 시퀀스의 시작부분에서 상태 TXDWN을 인지하게 된다.
송신기는 수신기를 상태 RXDWN으로 되게 하는데, 이것은 제3h도에서 상태 RXDWN1(404)으로 예시되어 있다. 각각의 경우에 있어서, 상태 머신 개념은 다른 마이크로 프로세서를 특정 상태로 되도록 하기 위하여 각각의 마이크로 프로세서에서 사용되었다.
상태의 진행을 동기화하는데 사용되는 플래그가 있는데, 이것은 다운 플래그로서 호칭되며 제3h도에서 신호 DWNFLG로서 표시하였다. 송신기가 “다운”상태를 엔터할때는 F0의 전수값을 그 플래그내에 놓은 다음 상태 TXDWN1을 엔터한다. 그곳에서 신호 DWNFLG가 값 “FF”와 같아질 때까지 대기한다. 수신기가 상기 값을 “다운”상태에서 인지할때, 그 수신기는 머신의 어떤 특징을 초기화하고 이어서 그 플래그를 “FF”로 설정한다. 그후, 송신기 및 수신기는 그 상태로 남아있게 된다.
시퀀스에서의 다음 단계는 송신기가 PBX라인을 온 후크 상태로 되도록 하기 위하여 대기상태로 두는 단계이다. 이것은 처리가 “다운”상태를 통해 진행하기전에 접속이 완전히 분리되게 하기 위한 것이다.
송신기가 라인 접속이 완전히 분리된 것을 검출하는 동안, 상태 RXDWN1에 있는 수신기는 미해결 CRI가 될때까지 대기하며, 그것이 완료되었을때는 라인 테이블을 초기화하도록 진행한다. 상기 수신기는 완료를 위해 대기하며 이어서 라인 테이블을 초기화하는데, 이는 라인 테이블에 256바이트의 기억을 설정한다. 또, 상기 수신기는 임의의 값인 33의 값을 초기화하기 위하여 신호 DWNFLG에 대한 대기로 진행한다. 송신기 측에서 접속이 분리되었음을 보장하는 경우에는 상태 RXDWN3에서의 신호 DWNFLG가 “33”가 같아진다. 수신기가 “33”의 플래그를 인지한 경우에는 상태는 RXDWN4로 된다. 이것은 선입선출 장치를 클리어하기 위하여 현재 진행하는 상태이다. 이것은 또한 매시간 4바이트씩의 클리어링 아웃을 1025번 반복한다. 상기 선입선출장치는 4096바이트의 능력을 갖는다. 수신 선입선출 장치가 완전히 클리어될때는 최종의 라인 설정단계가 존재한다. 수신측에는 자체 테스트의 특징과 부합하는 몇몇 테스트가 행해진다. 이어서 상기 시스템이 설정된 상태, 즉 상태 RXEST로 진행한다. 만일 자체 테스트가 완료되어 고장임이 검출되면, 상태 RXDWN5로 복귀한다. 상기 시스템은 실질상 그 상태로 행업되며, 또한 머신이 마스터 클리어로서 초기화될 때까지 그 상태를 유지할 수는 없게 되어 있다.
제3h도에는 일련의 타임아웃이 일어나는 수신측에 관해 예시되어 있다. 라인이 분리되었을때, 적어도 6초 동안은 재접속되지 않게 하는 규칙이 설정되어 있다. 이러한 규칙에 따라, 구접속이 충분한 시간 주기동안 종료상태에 있게 된다. 접속이 전혀 없는 경우에는 제3h도의 바이패스 라인에 의해 표시된 바와 같은 2개의 지연을 바이패스 시킨다. 최종 단계는 송신측에서 신호 DWNFLG가 0과 같아졌는지를 검사하는 것이다. 이것으로부터 송신설정 상태, 즉 상태 TXEST로 인출해낸다. 수신기는 먼저 “다운”상태를 클리어하여 송신기를 종료시키도록 인에이블한다. 이어서, 상기 수신기는 새로운 호출에 대한 DPS6 인터페이스를 재인에이블하고 그후 송신설정상태로 복귀한다.
펌웨어 상태 머신의 다른 특징은 핸드세이킹 상태이다. 이것은 상태 TXHSK1-TXHSK9(450∼468)와 상태 TXHFS0-TXHFS2(470∼474)를 포함하는 제3f도에 예시되어 있다. 상기 핸드세이킹은 송신기와 그리고 PBX의 다른 단부상에 터미널에 부착되어 있는 터미널 아답터 사이에서 수행되는 공정이다. PBX에 의해 접속이 이루어지고, 이러한 접속은 다이얼로그 식으로 되어 있는지의 여부를 결정하기 위하여 제어기 및 터미널 아답터 사이에 다이얼로그를 제공하여 그 처리를 계속한다. 초기의 핸드셰이크 서브스테이트 TXHSK1(450)에 있어서 초기 핸드셰이크 메시지를 먼저 설정하고, 이어서 송신이 발생하기전에 몇가지 동작을 검출하는 시간주기동안 대기한다. 이 초기 상태는 송신이 너무 빨리 개시되지 못하게 하기 위한 것이다. 상기 초기 상태 다음의 상태는 핸드셰이크 TXHSK2(452)이다. 이 상태에서는 15msec와 같은 규정된 구간에서 메시지를 전송한다. 이 상태에서는 시스템이 핸드셰이크 메시지의 기본적인 포맷에 뒤따르는 어떤 포맷을 수신하기 위해 수신기를 대기상태로 둔다. 상기한 기본적인 포맷이란 머신의 상태를 충분히 설명하는 8 또는 9바이트 길이의 메시지이다. 수신기가 제1의 핸드셰이크 메시지를 수신하였을 경우, 필요한 데이타 속도를 설정한다. 기본적으로, 길이가 긴 핸드셰이크 메시지에는 수신기를 동작시킬 수 있는 다수의 데이타 속도가 있다. 통상, 수신측에서는 터미널이 설정가능한 하나의 데이타 속도에 대한 표시가 얻어진다. 처리중에는 라인의 양단부가 동작할 수 있는 최고속도를 픽업하는 매칭처리가 있다. 본질적으로, 제2의 핸드셰이크 상태에서는 공통 데이타 속도가 무시되고 제3핸드셰이크 상태 TXHSK3(454)로의 엔트리가 발생한다. 핸드셰이킹의 승인 비트는 메시지의 수신을 다른 측에 지시하기 위해 송출된다.
프로토콜의 룰은 그 프로토콜이 짧은 핸드셰이킹 메시지를 전송하였을 때 다른 측상에 메시지가 수신된 것을 보장하기 위하여 하나의 행내에 그 메시지를 3번 전송하였음을 나타내는 것이다. 상기 프로토콜은 15msec 간격동안 대기하는 3가지 상태를 통해 짧은 핸드셰이킹 메시지를 전송되게 한다. 이와 관련하여, 제3f도에는 다음의 단계 TXHSK4-TXHSK7(456∼462)이 예시되어 있다.
이어서, 시스템은 갱신메시지의 대기동안 갱신메시지의 전송을 계속하는 상태 TXHSK8(464)로 된다. 다음 상태는 상태 RXDWN8로 진행되고, 이어서 다시 상태 RXDWN9(468)로 진행된다. 상태 TXHSK9에서는 갱신 메시지들이 계속적으로 전송되어, DPS6에 대한 대기상태로 된다. 이것이 발생할 때 갱신 메시지들은 대기상태가 되고 그후 상태 TXOFF로 진행한다.
이미 언급한 일련의 상태에 있어서, 시스템은 동일한 상태이지만 그 인출상태를 상이하므로, 상태 TXHSK7에 있어서의 핸드셰이킹 프로토콜의 완료, 상태 TXHDK8에 있어서의 제1갱신 메시지의 수신, SPS6에 의한 승인에 대한 상이한 상태가 테스트된다.
모든 경우에는 고장 사건이 발생하는데, 이러한 사건은 H 또는 I중 어느 하나로서 표시된다. 사건 H는 온 후크된 PBX가 감지되었음을 나타낸다. 또, 상기 I는 메시지가 15msec 간격으로 전송되었을 때의 타임아웃을 나타낸다.
각각의 경우에 있어서, 어떤 관계의 설정 및 보장에 의해 핸드셰이킹 프로토콜이 진행할 때 그 상태에 따라 상기 사건이 이동한다. 어떤 주어진 시간에서 상기 사건은 고장 비트가 수신될 수 있도록 하는 다른 인출사건을 갖는다. 이것은 다른 터미널 아답터가 그 특성에 정합되지 않았음을 의미한다. 이것은 제3f도에서의 상태 TXHSK0-TXHSK2(470∼474)를 포함한다.
고장신호를 수신하는 경우에는 수신기가 핸드셰이킹 메시지를 재전송되게 한다. 이것은 3번 발생하는데, 이때 고장 비트가 전송된다. “다운”송신상태인 상태 TXDWN으로 진행하기 이전에 상기 고장 비트는 3번 이상 전송된다.
이제 제5a도를 참조하면, 본 발명의 펌웨어 상태 개념을 나타내는 본 발명의 시스템에서의 펌웨어 명령의 일례가 예시되어 있다. 이것과 관련하여 또한, 제3h도와 특히 선입선출장치를 클리어링함에 따라 수반되는 상태 RXDWN4를 참조한다. 아울러, 제1도 및 선입선출장치(60)를 참조할 수 있다. 이러한 상태 RXDWN4에 있어서, 선입선출 장치는 한번에 하나씩 클리어된다. 상기 선입선출장치는 또한 한번에 4비트가 클리어 될 수도 있다. 또 한번에 전체 선입선출장치를 클리어하려고 시도하는 경우, 4000 바이트의 데이타 및 4000 바이트의 상태를 보장하는 16msec까지 취해질 수 있다. 이것은 시간주기가 너무 길다. 이러한 시간주기는 다른 데이타 라인들중 각각의 라인에 대한 16개의 문자시간이다. 따라서, 시스템은 16msec 동안 프로세서 시간을 고정되게 할 수는 없다.
선입선출장치의 클리어링은 제5a도에서 설명한 바와같이 펌웨어 제어에 따라 발생한다. 제5a도는 상태 RXDWN4에서 실행되는 실제 명령을 나타낸 것이다.
제5a도의 펌웨어 리스트와 관련하여, 또한 제10도의 순서도를 참조한다. 이것은 엔트리점 E를 예시한 특정상태와 관련하여 명령의 시퀀스를 예시한 것이다. 엔터링하자마자, 블록 502에 의해 표시된 바와 같은 상태 작업이 수행될 수 있다. 이것은 특별히 미리 정의된 상태에 따른 초기화 작업이거나 혹은 아닐 수도 있음을 나타내기 위하여 점선으로 도시되어 있다. 따라서, 제10도의 블럭 502는 그들이 특정상태에 대한 임의 선택부임을 나타내도록 점선으로 도시되어 있다.
또한, 제10도는 수행될 리스트를 나타내는 다이아몬드형 블럭(504)이 예시되어 있다. 이러한 테스트는 제5a도의 리스트와 관련하여 선입선출장치가 완전히 클리어 되었는지 혹은 그렇지 않은지의 여부를 결정하기 위한 테스트 일 수도 있다. 만일 상기 선입선출장치가 클리어되어 있지 않다면, 테스트 블럭 504 아래에 블럭 502로서 표시된 바와같이 부가적인 작업이 수행될 수 있다. 이러한 부가적인 작업은 4비트 이상의 선입선출장치를 클리어할 수도 있다. 그후, 제10도에서 506으로 나타낸 기호에 의해 표시된 바와같이 일시정지가 발생하게 된다.
테스트 블럭 504로부터 일시정지가 설정되었음을 나타내는 블럭 508에는 블럭 502에 의한 다른 경로가 있다. 이것은 또한 제5a도에서 상태 RXDWN3로 예시되어 있다.
제10도에는 본 발명의 펌웨어 스테이트 개념에 따라 발생할 수 있는 상이한 임의 선택을 나타내는 일반적인 도면이 예시되어 있다. 따라서, 테스트 블럭의 우측에 있는 브랜치는 그 브랜치가 일시정지시킬 수 있음을 나타낸 것이다. 사실상 이것은 제5a도에서 일어나는데, 그 상부에서는 일시정지가 설정되고 그 하부에서는 일시정지가 일어난다. 따라서, 일시정지의 설정과 일시정지의 수행에 의해 작업이 성취될 수 있다.
제10도와 관련하여, 특정라인 테이블내에 새로운 프로그램 카운터 어드레스를 설정함으로써 일시정지의 설정이 수행된다. 이것은 프로세서가 이러한 특정라인 테이블로 다시 복귀할 때 그 처리동작이 일시정지 어드레스로 제거됨을 의미한다. 제10도에서 506으로 표시된 기호는 하기에서 보다 상세히 설명될 제5a도에서의 최종 3가지 명령에 의해 예시된 바와 같은 실제의 일시정지수행을 나타낸 것이다.
사실상, 제5a도에 도시된 제1명령은 상태 RXDWN3에서의 인출과 관련된 명령이다. 그 명령은 레지스터 A4에 의해 RXDWN4의 어드레스를 어떤 다른 어드레스로 이동한다. 이것은 일시정지점을 설정한다. 이러한 일시정지 어드레스는 특정 기억위치내의 라인 테이블에 기억되어 있다. 이것은 또한 이러한 특정 라인에서의 다음 동작을 위한 복귀점을 설정한다.
다음, 상태 RXDWN4를 잇따라 엔터링할 때 라인 테이블내의 카운터가 먼저 초기화되어, 4개의 선입선출 위치를 한번에 클리어시킨다. 이러한 방식으로, 머신시간의 단지 16μsec만이 16msec 대신에 사용된다. 상기 클리어링 테스트는 1000이나 혹은 그 이상으로 되풀이하여 수행된다.
따라서, 한번에 4개의 위치가 클리어되고 카운터가 감분된다. 이어서 그 작업이 완료되었는가 판단하기 위한 테스트가 이루어진다. 만일 그 작업이 완료되면, 그 상태로부터 동작을 인계받아 다음 상태로 이동시키는 분기가 발생한다. 이것은 FIFO가 완전히 클리어된 후에 발생된다. 만일 작업이 완료되지 않았기 때문에, 다시 말하여 어떤 특정 시점에서 FIFO가 클리어되지 않았기 때문에 분기되지 않은 경우에는, 일시정지 특성을 제공하는 제5a도의 하부에 도시된 세개의 명령으로 역전시킨다. 이것은 실제로 일시정지 설비를 구성하는 마이크로 프로세서 명령세트이다.
수행되는 단계는 세가지이다. 첫단계는 DO를 RXCHN(A3)으로 이동시키는 것이다. 이것은 하드웨어 스트로브 어드레스 12005이다. 이것은 라인 넘버 레지스터이다. 따라서, 이 명령이 행하는 것은 상술한 바와같이 정상적으로 수신측에서 1증분하고 송신측에서 1감분하는 라인 넘버의 증분을 일으키는 것이다. 전술한 바와같이, 양 경우에 충돌이 있게 되면 다른 마이크로 프로세서가 어떤 특정 시점에서 특정 라인상에 상주하게 되는 경우 1의 계수에 대한 스키핑(skipping)이 있게 된다.
세 명령이 마지막 시리즈중 두번째 갖는 레지스터 A4에 어드레스된 워드를 이동시킨다. 이것은 어드레스를 기억하는 라인 테이블의 위치를 지적하게 되는 인덱스 레지스터이다. 만일 제1명령으로 돌아가면, 그것을 기억하도록 동일한 인덱스 레지스터를 사용하게 된다. 이것은 레지스터에 의해 어드레스된 메모리 장소의 내용이 레지스터 A5내로 들어가게 하며, 다음으로 마지막 명령은 점프 명령이다. 프로그램 카운터로의 점프는 다음 라인이 있는 상태에 적합하다. 이러한 세 명령 시리즈는 전체의 작업(job)을 매우 간단하게 수행한다. 특별한 마이크로 프로세서가 이용되는 경우, 이러한 세명령 시리즈는 실행에 단지 6 또는 7μsec가 소요된다. 따라서 이것은 채널 대 채널 따라서 라인 대 라인의 스위칭시 존재한 유일한 오우버헤드이다. 이것은 인터럽트, 스워핑 상태를 취한 다음 또다른 결정을 만드는데 포함될 40μsec보다 실질적으로 작은 양의 오우버헤드이다.
따라서, 제5a도의 펌웨어도에서 예시한 동작시에, 어떤 종류의 테스트가 행해져서 그 특정 상태에 머무를 것인가의 여부에 대한 결정이 이루어진다는 것을 알 수 있다. 일시정지 어드레스를 변경시키지 않고 일시정지 시키는 것이 가능하다. 주어진 예에서, FIFO를 완전히 클리어시키기 위해서, 한번에 단지 4비트만이 클리어되는 경우에 다수의 일시정지가 있을 것이나 주어진 예에서 상태 RXDWN4인 특정의 상태를 위해 동일한 일시정지 어드레스로 돌아가게 된다. 다른 방법은 한 상태가 완료되었을 때 다음 일시정지 어드레스가 세트되고, 보류된 어드레스는 다음 어드레스의 일시정지 어드레스로 되게 하는 것이다.
예컨대 논리 해석을 위해 주어진 시간에 기계를 동결시켰다면, 16라인 테이블을 관찰하여 관찰이 이루어졌던 시간에 각 라인이 무엇을 행하고 있는지 정확히 알아낼 수 있다. 이것은 각각의 별도의 라인 테이블과 관련된 일시정지 어드레스를 조사함으로써 간단히 판별될 수 있다. 따라서, 본 발명의 개념에 의하면, 두개의 기본적인 특성을 포함하는 것으로 생각될 수 있다. 그중 하나는 가능한한 라인당 60μsec의 기준을 효과적으로 충족하도록 작업부하(work load)를 나누는 것이다. 다른 하나는 액세스에 관한한 하나의 라인이 시스템을 독점할 수 없도록 충분히 작은 부분으로 나누는 것이다.
본 발명에 따른 펌웨어 제어의 또다른 예에 대해서는 제5b도를 참조하기로 한다. 이 예는 수신된 데이타 상태에 관한 것으로 이에 대해서는 제3a도를 참조한다.
이 상태에 관해서는 또한 제12도의 순서도를 참조하기로 한다. 이것은 각 블럭에서 1 내지 9바이트의 데이타를 포함하는 데이타 전송이 있는 상태이다. 일단 한 바이트가 수신되면 차후의 바이트가 함께 들어올 가능성이 있기 때문에, 데이타가 적당한 형태로 들어오는 한 일시정지가 발생하지 않을 것이라는 결정이 이루어 진다. 이것은 제12도에 예시되는데, 여기에는 어떤 상태로의 엔트리(530, 532, 534)가 있고 그 다음에 테스트(536, 538) 및 특정 작업(540, 542)이 후속된다. 조건이 만족되면 시스템은 다음 상태로 역전되고 거기에서 테스트가 행해지고 데이타 바이트의 기억과 같은 추가 작업이 발생된다.
전술한 바와같이, 각 블럭에는 1 내지 9바이트의 데이타를 포함할 수 있는 데이타 전송이었다. 각 블럭은 그것과 관련된 헤더를 가지며 각 블럭의 시작시 헤더가 도달할 때까지의 대기가 존재한다. 초기상태는 제3도에 표시한 바와같이 상태 RXDA00이다. 이것은 헤더가 도달할 것을 기다리는 대기상태이다. 전형적으로 이것은 FIFO에 아직 어떤 것이 있는가를 묻는 테스트가 수행되는 상태이다. 어떤 것이 있다면, 일시정지가 발생한다. 어떤 것이 없으면, 그 바이트는 FIFO로부터 인계되어 수신 마이크로 프로세서내의 버퍼 안으로 들어가게된다. 특정 메시지는 헤더 바이트 및 9 이하의 데이타 바이트를 가질 수 있다. 따라서, 라인 테이블에 10개의 바이트 위치가 제공된다.
따라서, 상태 RXDA00에서 제1바이트가 들어오면 그것은 헤더 바이트가 항상 나타나는 곳인 버퍼의 제1위치로 들어가게 된다. 메시지 종료 신호가 수신되었을 때 특정 상태로부터 벗어날 것인지의 여부를 판별하는 테스트가 이루어진다. 제1위치에서, 이것은 단일 바이트 메시지가 부적합하므로 부적당하며 따라서 그 경우에 에러 처리 루틴으로 제어된다.
한편 에러가 나타나지 않으면 이것이 데이타의 제1바이트이고 메시지 종료 바이트가 아니므로, 다음 상태 즉 상태 RXDA01로 들어간다. 그러나 다시 이 상태에서 FIFO에 또다른 바이트가 있는가 묻는 테스트가 행해진다. 만일 또 다른 바이트가 있다면 그것은 이 메시지의 제1데이타 바이트이다. 만일 없다면, 일시정지가 있게 되고 다음 순서로 다시 들어가게 된다. 그것이 제1데이타 바이트이다. 만일 없다면, 일시정지가 있게 되고 다음 순서로 다시 들어가게 된다. 그것이 제1데이타 바이트라면 대응하는 버퍼 위치로 들어가게 된다. 따라서, 그 데이타 바이트는 라인 테이블의 기억 버퍼내의 순차적 위치로 인계되어 삽입될 수도 있다. 다음, 제5b도와 리스트의 중간 부분에 있는 명령세트를 참조하기로 한다. 이들은 제2데이타 상태 즉 상태 RXDA02에 대한 명령이다. 이 제2상태로 들어가면 “move GKARS(A3), DO”하라는 명령이 있다. 이것은 상태를 판독한다. 그것이 그 상태의 정상 상태인가 알아보기 위한 테스트가 행해진다. 그 상태의 정상상태는 대부분의 메시지가 짧기 때문에 메시지 종료일 것이다. 다음 그것이 메시지 종료인가 알아보기 위한 테스트가 있게 된다. 만일 그것이 메시지 종료가 아니라면, 하나의 분기가 발생된다. 그것이 메시지 종료라면 데이타 바이트를 판독한다. 이것은 제4명령 즉 명령(A3), RXMSG2(A0)이다. 인덱스 레지스터 A3는 데이타 바이트를 얻도록 판독하는 위치를 지시한다. 그것은 RXMSG2로 이동하는데, 그것은 버퍼의 제2위치이다(제4도 참조). 상태 RXDA03에 대하여 말하면(A3), RXMSG3(A0)으로 이동한다. 이것은 그 명령내에서 있게 되는 알려진 수의 위치를 포함하는 개념이다. 따라서, 정확히 바이트를 어디에 넣을 것인지 알아야 하며 이어서 그 상태를 클리어하고 다음 명령에서 그것의 종료시 얼마나 오래 있었는지 알아야 하기 때문에 리스트에서 RXMSG2(A0)로 표시된 위치로 넘버 2를 넣는다. 동작시 그것이 얼마나 오래 있었는지 알 필요는 없다. 한 블럭이 완료될 때 얼마나 오래 걸렸는지 추적해야만 한다.
이제 이 시스템은 모든 데이타를 취하여 그것을 검사하고 정상적인 메시지 종료를 판단하였으므로 메시지를 송출하도록 정상적인 전달상태로 들어가게 된다. 그것이 메시지 종료가 아니었다는 것을 지시하는 분기를 취하였다면 정상적인 데이타 상태를 테스트하였던 장소로 들어가게 될 것이다. 만일 그것이 일치하지 않으면, 분기 종료된다. 이어서 데이타를 제2바이트로 이동시키고 그 상태를 클리어 한다음 제3데이타 상태 즉 상태 RXDA03로 나가게 한다.
주어진 경우에 있어서 처리는, 이들 상태 사이에서 일시정지되지 않으면 이것은 효율성을 위한 것이다. 그 데이타는 떨어져 있는 한 바이트를 125μsec에서 FIFO로 들어가게 한다. 그것이 제1바이트라면 그들중 나머지가 아마도 거기에 있을 것이라는 사실을 통계적으로 알게 된다. 따라서, 정상적인 데이타 또는 정상적인 메시지 종료 상태를 알지 못한 경우를 제외하고는 이들 각각의 사이에서 일시정지를 행하지 않는다. 따라서, 거기에는 아직 아무것도 없기 때문에 정상적인 데이타 또는 메시지 종료를 알아보지 않는 서브 루우틴으로 분기이탈을 취한다. 그 상태는 사용자를 위해 일시정지를 행하는데, 그것으로 들어가는 시점에서 데이타가 거기에 있지 않기 때문에 그 시점에서 일시정지 어드레스를 보류하고 예외 취급 프로그램인 RXGKE로 점프한다.
제5b도 및 상태 RXDA02를 참조하면, FIFO 상태를 판독한 후 정상적인 메시지 종료에 대한 테스트가 있게 된다는 것을 알 수 있다. 정상적인 메시지 종료가 없다면 서브스테이트 RXDA02C로의 분기가 있게 된다. 다음은 정상적인 데이타에 대한 테스트이다. 정상적인 데이타가 있으면 그 바이트가 기억된다. 제5b도의 서브스테이트 RXDA02C 하에서 명령(A3), RXMSG2(A0)에 주목하라. 이 다음에는 FIFO의 클리어링, 증분 인계, 다음상태 RXDA03로의 즉시 천이가 수반된다. 이것은 어떠한 일시정지도 없이 발생하였다는 것에 주목하라.
상태 RXDA02A에서 정상적인 메시지 종료가 있다면 그 데이타 바이트는 명령(A3), RXMSG2(A0)에 의해 지시된 바와같이 다시 기억되고, 이어서 그 데이타가 전달된다.
정상적인 메시지 종료가 없고 더욱이 정상적인 데이타가 아닌 경우에는, 아마도 그 데이타가 이 시점에서 전체적으로 유입되지 않기 때문에 서브스테이트 RXDA02B로의 분기가 있게된다. 이 서브스테이트에서 제1명령은 RXDA02에서 일시정지의 설정임을 주목한다. 이것은 이 라인이 다시 순차적으로 엔터될 때에 서브스테이트가 특정 상태 즉 상태 RXDA02에 있도록 보장한다. 이전의 일시정지 어드레스는 프로그램 카운터 어드레스에 대응하는 라인 테이블에서 설정된다. 일시정지 설정 명령 후의 다음 명령은 명령 RXGKE(PC)이다. 이것은 여기에서 구체적인 설명을 생략한 예외 취급 루틴으로 진행한다. 그러나 이 루틴에는 다른 라인의 서비스가 발생할 수 있도록 본질적으로 일시정지가 존재한다. 또, 이 라인으로 다시 복귀할 때는 일시정지 어드레스가 추가적인 테스트를 위하여 상태 RXDA02에서 설정된다.
따라서, 요약하면, 제5a도에는 일시정지가 수반되는 데이타의 세그먼트를 송신하기 위하여 일시정지 특성을 사용하는 루틴이 도시되어 있다. 제5b도에는 일시정지를 필요로 함이 없이 한가지 상태로부터 후속의 상태로 천이하는 것을 도시하고 있다.
지금까지 본 발명의 몇가지 실시예를 설명하였지만 이 기술에 숙련된 사람이라면 이후의 특허청구 범위에서 정의된 본 발명의 범위에서 벗어남이 없이 본 발명의 실시예를 여러가지로 변경하거나 수정할 수 있을 것이다.

Claims (10)

  1. 복수의 독립 데이타라인을 갖는 통신 시스템과 컴퓨터 시스템 사이의 데이타 전송을 제어하기 위한 펌웨어 스테이트 장치에 있어서, 송신 프로세서 및 수신 프로세서와 ; 상기 송신 프로세서 및 상기 수신 프로세서와 결합되며, 통신 시스템의 상기 각 라인과 컴퓨터 시스템 사이의 데이타 전송을 수행하기 위한 복수의 펌웨어 명령으로서 한가지 상태로부터 다른 상태로의 천이가 상기 모든 라인들을 서비스하는데 소요되는 시간보다 더 적은 시간주기 이내에 실행되도록 대응하는 수의 미지정해진 상태들을 형성하는 복수의 그룹으로 분리되어지는 복수의 펌웨어 명령을 갖는 프로세서 메모리와 ; 미리 정해진 상태의 다음의 것으로의 시퀀스 동작을 제어하기 위하여 상기 라인들중 하나에 관계된 조건을 평가하기 위한 테스트 동작을 정의하는 최소한 하나의 명령을 포함하는 명령 그룹과 ; 상기 라인들에 대한 라인 테이블 정보를 위한 복수의 기억장소를 갖는 공유 메모리와 ; 상기 송신 프로세서와 상기 수신 프로세서에 의한 상기 공유 메모리의 액세스가 분쟁없이 수행되도록 하는 제어수단과 ; 를 포함하는데, 상기 공유 메모리는 상기 명령 그룹중 하나의 개시 명령을 특정하는 어드레스를 포함하고, 상기 프로세서들중 하나는, 명령 그룹에 응답하여 지정된 동작을 수행하고, 상기 조건의 함수로서 상기 테스트 동작을 정의하는 상기 명령에 응답하여, 상기 공유 메모리에서 다른 하나의 명령 그룹의 개시 어드레스를 액세스 하는 것을 특징으로 하는 펌웨어 스테이트 장치.
  2. 제1항에 있어서, 상기 프로세서는 송신 마이크로 프로세서와 수신 마이크로 프로세서를 포함한 것을 특징으로 하는 펌웨어 스테이트 장치.
  3. 제1항에 있어서, 상기 모든 미리 정해진 상태는 모든 데이타 라인에 공통인 것을 특징으로 하는 펌웨어 스테이트 장치.
  4. 제1항에 있어서, 상기 명령 그룹은 소정의 시점에서 일시정지 동작을 지시하는 최소한 하나의 명령을 포함하는 것을 특징으로 하는 펌웨어 스테이트 장치.
  5. 제4항에 있어서, 상기 프로세서는 명령 그룹에 응답하고 상기 프로세서로 하여금 또 다른 라인을 서비스할 수 있게 하기 위한 상기 일시정지 명령에 응답하여 하나의 라인상의 동작을 일시정지시키는 것을 특징으로 하는 펌웨어 스테이트 장치.
  6. 복수의 독립 데이타 라인을 갖는 통신 시스템과 컴퓨터 시스템 사이의 데이타 전송을 제어하는 방법에 있어서, 송신 프로세서 및 수신 프로세서를 제공하는 단계와 ; 통신 시스템의 상기 각 라인과 컴퓨터 시스템 사이에서 데이타 전송을 수행하기 위한 복수의 펌웨어 명령으로서, 이 명령은 지정된 프로토콜에 따라 상기 데이타 라인들을 서비스하는데 사용하는 유일한 상태들을 형성하는 명령 그룹으로 분할되고, 상기 각각의 상태는 다음 상태로의 천이를 야기할 수 있는 행동에 부가하여 그 상태에서 유지되고 있는 동안 일어날 수 있는 행동들을 정의하며, 상기 명령 그룹들은 미리 정해진 상태들중 다음것으로의 시퀀싱을 제어하기 위해 상기 라인들중 하나에 관련된 조건을 평가하기 위한 테스트 동작을 정의하는 하나 이상의 명령을 포함하는 것인 복수의 펌웨어 명령을 기억시키는 단계와 ; 하나의 상기 라인에 대한 라인 테이블 정보를 위한 복수의 기억 장소를 가지며, 상기 명령 그룹들중 하나의 개시 명령을 지정하는 어드레스를 포함하는 라인 테이블을 제공하는 단계와 ; 상기 수신 프로세서와 상기 송신 프로세서에 의한 상기 라인 테이블에 대한 액세스를 충돌없이 수행하도록 제어하는 단계와 ; 를 포함하는데, 상기 프로세서들중 하나는 명령 그룹에 응답하여 지정된 동작을 수행하고 상기 조건의 함수로서 상기 테스트 명령을 정의하는 상기 명령에 응답하여 상기 라인 테이블 메모리에서 다른 명령 그룹의 개시 어드레스를 액세스하는 것을 특징으로 하는 데이타 전송 제어 방법.
  7. 제6항에 있어서, 미리 정해진 지점에서 상기 명령 그룹이 일시정지 동작을 한정하는 최소한 하나의 명령을 포함하는 것을 특징으로 하는 데이타 전송 제어 방법.
  8. 다수의 장치가 복수의 통신 채널을 따라 컴퓨터 시스템과 통신하기 위해 결합되고 ; 제1메모리(22)가 각 채널에 대한 테이블을 유지하는데, 상기 각 테이블은 각 채널에 대한 통신 정보를 유지하고 ; 데이타 프로세서(10, 22)가 연속적으로 상기 메모리내의 상기 테이블을 엑세스하여 상기 채널을 따라 상기 장치로 또는 그로부터의 데이타 전송을 제어하기 위해 상기 메모리에 연결되며; 제2메모리(70, 84)가 상기 각 채널을 따라 상기 장치로 또는 그로부터의 데이타 전송을 제어할 때 각각의 상이한 동작을 실행하도록 상기 프로세서를 제어하기 위한 복수의 펌웨어 명령 시퀀스로서 상기 프로세서를 제어하는 방법에 있어서, 상기 각 펌웨어 명령 시퀀스는 상기 상태들중 하나를 각각 동작시키는 복수의 명령 서브 시퀀스로 형성하고, 상기 서브 시퀀스 각각에는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 현재 데이타를 전송중에 있는 채널에 대한 각 시퀀스의 실행을 중지시키게 하는 특수한 명령을 포함시키고, 상기 프로세서는 그 프로세서가 각 시퀀스의 실행을 중지시키는 상기 특수 명령의 실행시에, 현지 데이타를 전송하고 있는 채널에 대응하는 테이블의 소정이 셀에 실행이 중지된 상기 시퀀스내 지점의 제2메모리 어드레스를 로딩하게 하는 것을 특징으로 하는 프로세서 제어 방법.
  9. 제8항에 있어서, 상기 프로세서는 상기 채널중 하나의 채널을 따라 데이타를 전송하도록 제어될 때, 상기 하나의 채널에 대응하는 테이블의 소정의 셀에 유지되어 있는 제2메모리 어드레스를 판독하며, 상기 어드레스에 의하여 식별되는 상기 제2메모리내의 기억장소에 유지된 명령으로부터 시퀀스를 실행시키는 것을 특징으로 하는 프로세서 제어 방법.
  10. 제9항에 있어서, 상기 데이타 통신 시스템은 추가의 데이타 프로세서를 구비하는데, 상기 데이타 프로세서(10)중 제1프로세서는 상기 채널을 통한 상기 장치로부터의 데이타 수신을 제어하고 상기 데이타 프로세서(12)중 제2프로세서는 상기 채널을 통한 상기 장치로의 데이타의 전송을 제어하며 ; 상기 제1메모리는 그 안에 있는 테이블에 대한 액세스를 제공하기 위해 상기 두 프로세서에서 이용가능하고 ; 제3메모리(84)는 상기 각 채널을 따라 상기 장치에 데이타를 전송할 때 각각의 상이한 작동을 실행하도록 상기 제2프로세서를 제어하는 복수의 펌웨어 명령 시퀀스를 유지하는데 상기 제3메모리내의 상기 펌웨어 명령 시퀀스는 각각 상기 제2프로세서가 각각의 상태에서 동작하게 하는 복수의 명령 서브 시퀀스로 구성되며 ; 상기 제2프로세서는 제2프로세서가 각 시퀀스의 실행을 중지시키는 상기 특수 명령을 실행할 때, 현재 데이타를 전송하는 채널에 대응하는 테이블의 다른 소정의 셀에 실행이 중지된 상기 시퀀스내 지점의 제3메모리 어드레스를 로딩하는 것을 특징으로 하는 프로세서 제어 방법.
KR1019880003664A 1987-03-31 1988-03-31 전화시스템과 컴퓨터 시스템간의 정보 전송을 제어하기 위한 펌웨어 스테이트 장치 KR930004949B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/032,896 US4965721A (en) 1987-03-31 1987-03-31 Firmware state apparatus for controlling sequencing of processing including test operation in multiple data lines of communication
US032896 1987-03-31

Publications (2)

Publication Number Publication Date
KR880012050A KR880012050A (ko) 1988-10-31
KR930004949B1 true KR930004949B1 (ko) 1993-06-10

Family

ID=21867436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019880003664A KR930004949B1 (ko) 1987-03-31 1988-03-31 전화시스템과 컴퓨터 시스템간의 정보 전송을 제어하기 위한 펌웨어 스테이트 장치

Country Status (7)

Country Link
US (1) US4965721A (ko)
EP (1) EP0285003B1 (ko)
JP (1) JPS63271559A (ko)
KR (1) KR930004949B1 (ko)
AU (1) AU595697B2 (ko)
CA (1) CA1287932C (ko)
DE (1) DE3889962T2 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2664950B2 (ja) * 1988-08-31 1997-10-22 日本電気株式会社 入出力処理装置
US5202964A (en) * 1990-10-26 1993-04-13 Rolm Systems Interface controller including messaging scanner accessing state action table
US5317757A (en) * 1992-02-06 1994-05-31 International Business Machines Corporation System and method for finite state machine processing using action vectors
US5325401A (en) * 1992-03-13 1994-06-28 Comstream Corporation L-band tuner with quadrature downconverter for PSK data applications
JP3236720B2 (ja) * 1993-02-10 2001-12-10 三菱電機株式会社 半導体記憶装置およびその製造方法
US6072781A (en) 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US6122709A (en) * 1997-12-19 2000-09-19 Sun Microsystems, Inc. Cache with reduced tag information storage
CN106817280B (zh) * 2017-01-20 2021-10-26 山东大学 一种物联网设备的控制端计时方法及系统
CN114490461B (zh) * 2020-10-27 2024-03-29 Oppo广东移动通信有限公司 一种数据转移控制方法、存储介质及设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3651482A (en) * 1968-04-03 1972-03-21 Honeywell Inc Interlocking data subprocessors
US3670306A (en) * 1971-03-01 1972-06-13 Honeywell Inf Systems Process for data communication between data processing systems
US4133030A (en) * 1977-01-19 1979-01-02 Honeywell Information Systems Inc. Control system providing for the transfer of data in a communications processing system employing channel dedicated control blocks
JPS53136449A (en) * 1977-05-04 1978-11-29 Hitachi Ltd Address control system of communication controller
DE2817567C2 (de) * 1978-04-21 1983-12-29 Siemens AG, 1000 Berlin und 8000 München Verfahren für die Abwicklung von Vermittlungsvorgängen in Fernsprechanlagen, insbesondere Fernsprechnebenstellenanlagen
US4201887A (en) * 1978-05-11 1980-05-06 Cordura Marketing, Inc. Data telecommunications terminal
US4254462A (en) * 1978-06-01 1981-03-03 Honeywell Information Systems Inc. Hardware/firmware communication line adapter
JPS5633731A (en) * 1979-08-27 1981-04-04 Nippon Telegr & Teleph Corp <Ntt> Connecting circuit
US4425616A (en) * 1979-11-06 1984-01-10 Frederick Electronic Corporation High-speed time share processor
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
US4482982A (en) * 1980-09-29 1984-11-13 Honeywell Information Systems Inc. Communication multiplexer sharing a free running timer among multiple communication lines
US4481574A (en) * 1982-02-18 1984-11-06 Pinetree Systems, Inc. Programmable interface between remote terminals and a computer
US4484306A (en) * 1982-03-22 1984-11-20 Exide Electronics Corporation Method and apparatus for controlling access in a data transmission system
US4748656A (en) * 1986-03-21 1988-05-31 American Telephone And Telegraph Company Personal computer--as an interface between a telephone station set and a business communication system
US4831520A (en) * 1987-02-24 1989-05-16 Digital Equipment Corporation Bus interface circuit for digital data processor
US4851991A (en) * 1987-02-24 1989-07-25 Digital Equipment Corporation Central processor unit for digital data processing system including write buffer management mechanism
US4881230A (en) * 1987-10-05 1989-11-14 Ibm Corporation Expert system for processing errors in a multiplex communications system

Also Published As

Publication number Publication date
JPS63271559A (ja) 1988-11-09
EP0285003A3 (en) 1990-07-18
CA1287932C (en) 1991-08-20
US4965721A (en) 1990-10-23
AU595697B2 (en) 1990-04-05
EP0285003B1 (en) 1994-06-08
KR880012050A (ko) 1988-10-31
JPH0564818B2 (ko) 1993-09-16
AU1380088A (en) 1988-09-29
DE3889962D1 (de) 1994-07-14
EP0285003A2 (en) 1988-10-05
DE3889962T2 (de) 1995-03-09

Similar Documents

Publication Publication Date Title
KR930004949B1 (ko) 전화시스템과 컴퓨터 시스템간의 정보 전송을 제어하기 위한 펌웨어 스테이트 장치
EP0366935B1 (en) High-speed switching system with flexible protocol capability
US3916380A (en) Multi-computer multiple data path hardware exchange system
US4156907A (en) Data communications subsystem
US4289934A (en) Integrated automatic call distribution facility and PBX system
US4099233A (en) Electronic data-processing system with data transfer between independently operating miniprocessors
US4292669A (en) Autonomous data communications subsystem
US5048012A (en) Data link controller with flexible multiplexer
EP0068865A1 (en) Processor facilities for integrated packet and voice switching
JP2719522B2 (ja) データリンク制御器
US4809269A (en) Dual-port timing controller
SE421151B (sv) Kommunikationsstyrenhet i ett databehandlingssystem
US5958031A (en) Data transmitting/receiving device of a multiprocessor system and method therefor
US5359709A (en) Apparatus and method for providing multiple operating configurations in data circuit terminating equipment
JP2587190B2 (ja) システム間チャネルページング機構
US4783778A (en) Synchronous packet manager
KR940023090A (ko) 통신 제어 장치
EP0285334B1 (en) Universal asynchronous receiver-transmitter
US6064647A (en) Method and system for sending frames around a head of line blocked frame in a connection fabric environment
CA1301945C (en) Dual microprocessor control system
JPH025666A (ja) 伝送ライン走査方法
US4551835A (en) X.21 Switching system
JPH0693685B2 (ja) フレーム選択受信方法
SU590740A2 (ru) Устройство дл сопр жени мультипрограммной электронной вычислительной машины с группой каналов св зи
US6215861B1 (en) System and method for number presentation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 19990603

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee