KR100309615B1 - 고속프로그램가능로직컨트롤러(plc) - Google Patents

고속프로그램가능로직컨트롤러(plc) Download PDF

Info

Publication number
KR100309615B1
KR100309615B1 KR1019950701553A KR19950701553A KR100309615B1 KR 100309615 B1 KR100309615 B1 KR 100309615B1 KR 1019950701553 A KR1019950701553 A KR 1019950701553A KR 19950701553 A KR19950701553 A KR 19950701553A KR 100309615 B1 KR100309615 B1 KR 100309615B1
Authority
KR
South Korea
Prior art keywords
instruction
bit
instructions
programmable logic
high speed
Prior art date
Application number
KR1019950701553A
Other languages
English (en)
Other versions
KR950704730A (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 KR950704730A publication Critical patent/KR950704730A/ko
Application granted granted Critical
Publication of KR100309615B1 publication Critical patent/KR100309615B1/ko

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/052Linking several PLC's
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15055FIFO

Abstract

고속 프로그램 가능한 로직컨트롤러가 도시된다. 메모리를 갖는 짧게 언급된 프로그램 가능 로직컨트롤러, 마이크로프로세서 및 코프로세서는 분리된 데이타 및 명령 버스를 갖기에 하버드 형식 장치를 사용하여 능동적으로 상호 연결된다. 코프로세서는 부울프로세서로서 활동하고 동시에 명령 인출 및 실행을 수행할 수 있고 그것에 의해 추후에 증가된 PLC 의 전체 속도를 이끌고 그러므로 빠른 처리 제어를 허락한다.

Description

[발명의 명칭]
고속 프로그램가능 로직 콘트롤러(PLC)
[본 발명의 분야]
본 발명은, 일반적으로 프로그램 가능 로직 콘트롤러(PLC), 특히 고속으로 명령 및 연산을 실행하기 위하여 부울(boolean) 코프로세서를 사용하는 프로그램 가능 로직 콘트롤러에 관한 것이다.
[발명의 배경]
프로그램 가능 로직 콘트롤러는 공지되어 수년동안 사용되어 왔다. 그러나 프로그램 가능 로직 콘트롤러들은 그것이 본질적으로 컴퓨터로서 가지는 잠재적 능력을 감안할 때 상대적으로 단순하며 시시한 태스크를 맡아 왔다. 더욱이, 가격 문제로 인해, 기존의 프로그램 가능 로직 콘트롤러는 최고 기술의 마이크로 프로세서를 사용하는 것이 아니라 일반적으로 널리 공지되어 흔히 이용할 수 있는 마이크로 프로세서를 사용한다. 따라서, 프로그램 가능 로직 콘트롤러들은 다양한 상황에 적합한 다목적 장치이고, 그러한 목적들을 위해 양호하게 기능한다.
그 결과, 기존의 프로그램 가능 로직 콘트롤러(PLC)들은 일반적으로 사용자 프로그램을 호스트 프로세서의 원시 언어로 번역하거나 때로는 사용자 프로그램을 직접 해석한다. 어떤 제조업자는 심지어 기존의 마이크로 프로세서의 명령 세트에 부울 명령을 포함시키기도 했다. 그러나, 이런 형태의 기존 프로세서와 사용될 수 있는 데이터 엘리먼트의 수는 현재 매우 한정되어 있다.
부울 명령이 프로세서의 속도를 크게 증가시킬 수 있는 우수한 방식임이 알려져 있다. 일반적으로 부울 프로세서는, 분리된 개별 동작을 더욱 빨리 실행될 수 있다는 견지에서, 하나의 동작을 일련의 더 작은 엘리먼트로 분할한다.
오늘날의 제조 경비를 고려할 때, 처리 매개변수를 보다 더 정확하게 제어하기 위하여 고속정밀 기계제어가 구현되고 유지되어야 한다. 이러한 구현은 제조 및 경비의 관점에서 처리동작의 성공을 위해 극히 중요한 것이다.
보다 빠르게 PLC 명령을 실행하기 위해, 어떤 PLC 사용자들은 이러한 속도한계를 극복하기 위해 몇 가지 기술을 사용하고 있다. 이러한 기술들은 PLC 태스크를 보다 작은 태스크로 나누어 이러한 태스크를 별개의 프로그램 가능한 로직 콘트롤러로 프로그래밍해 넣는 하는 것뿐만 아니라; 중요한 태스크를 식별하여 사전에 설정된 속도로 그것들은 실행하는 방법을 적용한 프로그램 가능 로직 콘트롤러를 사용하거나; 또는 기존의 기계의 요구 조건을 만족시키도록 제어처리를 늦추는 방법을 포함한다.
유감스럽게도, 이러한 언급한 모든 기술은 PLC 사용자의 측면에서는 허용할 수 없는 절충안 또는 과도한 사전계획을 요구한다. 게다가, 그러한 PLC의 속도는 고속프로세서와 명령요건이 요구되는 경우에는 여전히 일반적으로 받아들여질 수 없는 정도이다. 예를 들면, 사용자 프로그램을 해석하는 것은 PLC의 실행시간을 부울 명령 당 5-10 마이크로초로 제한한다. 명령을 호스트 프로세서의 원시 언어로 번역함으로써 이 시간을 줄이더라도 이러한 명령속도를 300-500 나노초 범위까지만 줄일 수 있을 뿐이다. 결국 내장된 부울 명령을 가지는 기존의 프로그램 가능 콘트롤러 마이크로 프로세서는 부울 명령 당 대략 160 나노초까지만 얻을 수 있을 뿐이다.
따라서, 고속명령에서 동작할 수 있는 프로그램 가능 로직 콘트롤러를 생산하는 것이 바람직하며, 본 발명의 목적이기도 하다.
본 발명의 다른 목적 및 장점은, 명령 당 40 나노초보다 작은 실행시간을 얻을 수 있는 프로그램 가능 로직 콘트롤러를 생산하는 것이다.
본 발명의 또 다른 목적 및 장점은, 기존의 표준 프로그램 가능 로직 콘트롤러 마이크로 프로세서와 동작 가능한 부울 코프로세서를 구비한 프로그램 가능 로직 콘트롤러를 생산하는 것이다.
본 발명의 또 다른 목적 및 장점은, 사용자에게 PLC 태스크를 분할하거나 추가의 프로그램 가능 로직콘트롤러는 사용하는 것을 요구하지 않으며, 분할하여 태스크를 처리하기 위한 의도로 중요한 태스크를 식별하도록 요구하지 않는 고속 프로그램 가능 로직 콘트롤러를 제공하는 것이다.
본 발명의 또 다른 목적 및 장점은, 기존의 프로그램 가능 로직 콘트롤러의 속도 및 명령 실행 요구조건을 만족시키도록 제어처리를 느리게 할 필요가 없는 프로그램 가능 로직 콘트롤러를 제공하는 것이다.
본 발명의 또 다른 목적 및 장점은, 제조 및 구현에 경비가 상대적으로 적게 드는 프로그램 가능 로직 콘트롤러를 제공하고자 하는 것이다.
본 발명의 또 다른 목적은, 메모리 장치, 부울 코프로세서 및 이미지 램(RAM)에 접속되어 동작하는 마이크로프로세서를 포함하고, 개별 명령 및 데이터 버스가 사용되고, 부울 코프로세서가 마이크로프로세서와 별개로 명령을 조사 및 인출(fetch)할 수 있는 프로그램 가능 로직 콘트롤러를 생산하는 것이다.
이와 같은 장치는 본 발명에 따라 얻어진다.
[도면의 간단한 설명]
제1도는 본 발명의 프로그램 가능 로직 콘트롤러의 블록 다이어그램.
제2도는 본 발명의 코프로세서 부분의 상태 다이어그램.
제3도는 본 발명의 코프로세서의 블록다이어 그램.
[바람직한 실시예의 상세한 설명]
본 발명의 상세한 설명에 앞서, 프로그램가능 로직 콘트롤러의 구조 및 동작에 관한 개요를 설명하면 본 발명의 이해에 큰 도움이 될 것이다. 본 발명의 부울 부분은 고속 프로세서이고, 실제로는 코프로세서이다. 코프로세서(BP)는 사다리(ladder) 로직 프로그램에서 발견되는 간단한 부울 명령들을 실행하는데 사용된다. 코프로세서는 16 레벨을 가진 푸시 다운 스택(PDS)을 이용하는 스택형 기계이다. 코프로세서는 데이터 버스와 분리된 명령 버스를 가지며, 이는 하버드 구조라고 당업계에 널리 공지되어 있다. 이러한 구조에서는 동시에 명령 인출 및 실행이 가능하다.
BP는 코프로세서로서 구현되고 구성 및 시작목적을 위한 주변장치로서 호스트 프로세서에 의해 액세스 가능하다. BP가 명령을 실행할 때 BP는 호스트 프로세서로부터 버스를 얻고 자신의 명령을 인출한다. 이것은 명령 인출 및 명령의 형식(format)에서 호스트 프로세서의 오버헤드를 방지한다. 본 발명의 바람직한 실시예에서, 호스트 프로세서 또는 PLC 프로세서는 68020 형이다. 그러나, 본 발명의 사상과 범위를 벗어나지 않는다면 어떠한 어떤 다른 적당한 호스트 프로세서도 사용될 수 있다.
BP는 두 부분(선행인출장치(prefetch unit) 및 실행장치(execution unit))으로 분리된다. 선행인출장치는 명령 램에서 명령을 인출하여 그들을 디코딩하고, 베이스 레지스터(base register) 및 변위(displacement)로부터 물리적 주소를 계산하는 역할을 한다. 명령은 만약 그것이 직접 데이터에 작용하지 않을 경우, 선행인출장치에 의해서도 실행될 수 있다. 그렇지 않을 경우에는, 명령 완료를 위해 실행장치로 전송된다.
실행장치는 이미지 레지스터로부터 데이터를 인출하고 PDS 상에서 원하는 동작을 수행하는 역할을 한다.
호스트 프로세서와의 작용(OPERATION WITH THE HOST PROCESSOR)
호스트 프로세서는 레지스터를 초기화시키고 프로그램 카운터 레지스터 판독함으로써 BP를 시동시킨다. BP는 상기 레지스터로 판독 사이클을 중단하고 버스를 요구한 후 명령을 실행하여 완료한다. BP가 실행을 완료할 때, 호스트 프로세서는 프로그램 카운터의 판독을 재시도하고 마지막으로 실행된 BP 명령에 이은 다음 명령의 주소를 얻게 된다. BP의 프로그램은 세그먼트 사이에 삽입된 호스트 프로세서 명령을 가진 세그먼트로 분리될 수 있다. 호스트 프로세서는 위에서 기술된 것처럼 단지 프로그램 카운터를 판독함으로써 BP를 재시동시킬 수 있고 BP는 다음 세그먼트에 대한 실행을 시작한다.
다음 세그먼트의 위치는 중지 명령(SUSPEND INSTRUCTION)의 주소 필드에 주어지므로 BP는 중지가 실행된 후에 다음 세그먼트를 어디에서 시작하여야 하는 것을 안다. 중지 명령에서 다음 세그먼트의 주소를 코딩함으로써, 그 주소의 로드에 대한 오버헤드가 방지되고, 이에 따라 BP를 재시동시키는데 걸리는 시간이 감소된다.
제 2도를 참조하여, 부울 프로세서는 4개의 상태: 돈(done), 홀드(hold), 액티브(active) 및 홀드 포 인터럽트(hold for interrupt) 중 하나의 상태에 있을 수 있다. 리셋은 프로세서를 돈 상태에 배치한다. BPPC로부터 판독이 일어날 때, 부울 프로세서는 홀드상태로 들어갈 것이고, 버스 요구를 주장(assert)하여 호스트 프로세서로부터 버스승인을 받을 때까지 대기한다. 부울 프로세서는 또한 정지명령(홀트, halt) 및 버스 에러(베르, BUS error = berr)를 함께 주장함으로써 BPPC 판독을 중단한다.
버스승인이 수신되면, 부울 프로세서는 액티브 상태로 들어가고 실행이 시작된다. 종결 조건을 만날(encounter) 때까지 실행은 계속된다. 종결 조건은 다음과 같다.
1. 무조건부 SUSP(중지) 명령을 만나게 된다.
2. 조건부 SUSP 명령을 만나고 조건이 참이다.
3. 잘못된(illegal) 명령을 만난다.
4. 호스트 프로세서를 향하는 하나 이상의 인터럽트 라인이 주장된다.
만약 조건부 SUSP 명령을 만났으나 이를 취하지 않으면, BP는 종결없이 SUSP 명령에 의해 지시된 주소에서 실행을 계속할 것이다. 이로 인해 부울 프로세서는 인액티브 박스 명령 실행을 생략할 수 있고, 이에 따라 전체 성능이 향상된다.
BP가 종결 조건을 만나면, 명령인출을 정지하고 파이프라인에 남아 있는 명령이 실행된다. BP는 종결 조건을 만난 후에 판독이 정상적으로 완료되는 것을 허용한다. 재시도에서 인출된 값은 어떤 조건이 부울 프로세서를 종결시키는지에 따라 다르다. 만약 PDS 판독이 행해졌다면, 명령 파이프라인이 빌 때까지 아이들 클록(idle clock) 사이클이 삽입된다. 본 발명의 바람직한 실시예에서 삽입될 클록 사이클의 최대 수는 16이다.
만약, 중지(SUSP) 명령이 종결되면, BP는 돈(DONE) 상태에 들어간다. BPPC의 판독은 SUSP 명령 다음 명령의 주소를 인출한다.
만약 잘못된 명령을 만나면 BPPC는, 재판독이 BP 폴트 주소 레지스터(BP fault address register)를 인출하는 것을 제외하고는, SUSP 명령과 동일하게 이 명령을 처리한다. 만약 판독이 문맥복구/기억지역에서 행해졌다면, 이어지는 BPPC의 판독은 BP를 초기화시키지 않고 위반명령(offending instruction)의 주소를 인출한다.
BP 명령인출은 버스승인을 부정(negate)함으로써 일시적으로 홀드상태가 될 수 있다. 명령수행은 내부의 파이프라인이 고갈될 때까지 계속된다. 버스승인 라인이 재주장될때, BP는 명령 인출을 다시 시작할 것이다. 이로 인해, 긴(long) 부울명령 시퀀스 동안에 DMA 장치가 BP로부터 버스를 얻을 수 있다.
BP 실행은 또한 메인 프로세서에 대한 인터럽트에 의해 홀드될 수 있다. 인터럽트가 일어났을 때, BP는 버스요구를 해제하고 홀드 포 인터럽트 상태로 들어가서 BPPC가 판독되어 인터럽트 라인이 모두 부정될 때까지 그 상태를 유지한다. 호스트 프로세서가 PC 판독 사이클을 재시도하는 것이 허용되며, 인출된 값은 인터럽트 재시도 레지스터의 내용이 된다. 이것은 호스트 프로세서가 모든 인터럽트 명령을 수행한 후에 BP를 재시작시키는 코드의 주소이다.
BPPC의 판독이 일어날 때, 부울 프로세서는 홀드 상태로 들어가서, 버스요구를 재주장하고 BPPC 판독사이클을 중단한다. 이것은 인터럽트가 실행을 정지시킨 지점에서 BP를 다시 시작시킨다. 이것은 외부 인터럽트에 대해 BP의 인터럽트를 허용하므로 메인 프로세서의 인터럽트 응답 시간을 감소시킨다.
BP는 액티브 상태에 있지 않은 동안 이미지 레지스터로의 액세스를 허용한다. 이것은 판독 또는 기록요구가 만족될 때까지 파이프라인에서 명령 실행을 정지하는 것에 의해 이루어진다. 이미지 레지스터로의 액세스는, 그것이 BP가 참조하는 데이터를 변화시키지 않는 한, BP의 동작에 영향을 미치지 않는다.
부울 명령은 제 1 명령과 제 2 명령의 두개의 클래스로 나뉘어진다. 제 1 명령은 푸시다운스택(PDS) 및/또는 이미지 레지스터에 작용한다. 제 2 명령은 프로세서의 실행흐름, 베이스 레지스터의 내용 및 다른 갖가지의 태스크를 제어한다. 제 1 명령이 내부 포맷으로 변환되어, 주소는 절대 주소로 변환되고 명령이 출력 명령인 경우에는 mcr/jmp 비트 상태가 포함된다. 이 명령들은 실행장치에 의한 실행을 위해 명령 큐(instruction queue)로 로드된다. 제 2 명령은 선행인출장치에 의해 즉시 실행된다. 제 1 및 제 2 명령이 동시에 실행되기 때문에 베이스 레지스터를 변경하는 것과 같은 명령의 오버헤드가 없어진다.
상세한 동작의 설명(DETAILED OPERATIONAL DESCRIPTION)
제 1도는, 전체의 프로그램 가능 로직 콘트롤러(PLC)의 블록 다이어그램을 도시한다. 일반적으로 PLC의 핵심이고 앞에서 가리킨 것처럼 68020 형식인 마이크로프로세서(μP)가 도시되어 있다. μP는 버스형식구조에 의해 메모리 및 본 발명의 코프로세서(BP)로 연결된다. BP는 버스형식구조에 의해 역시 메모리인 이미지 램으로 연결된다. PLC의 일반적 동작 및 구성은 PLC 기술 분야의 당업자에게 잘 알려져 있으므로 단지 최소한으로 논의될 것이다. 반면 BP의 작업 및 마이크로프로세서와의 동작은 보다 상세히 논의될 것이다.
상술한 바와 같이, 본 발명의 부울프로세서는 하버드형 구조를 사용한다. 하버드형 구조는 동시에 명령인출 및 실행을 허용한다. 본 발명의 바람직한 실시예에서, BP는 응용주문형 집적회로(ASIC : application specific integrated circuit)이며, 본 발명의 바람직한 실시예에서 벗어나지 않는 한 다른 종류도 사용될 수 있다. 명령 주소 공간은 최대 1mWord에 이르는 분기명령을 가진 8mWord이다. 이미지 레지스터는 64K 이산 레지스터(discretes)를 포함하며, 포스(force)는 이미지 램 의 처음 16Kb에 저장된다. 이미지 램의 나머지 16Kb는 워드 포스(word force) 및 1회 히스토리 비트(one-shot history bits)를 포함한다.
부울 프로세서는 명령 인출 동안의 어떤 시점에서도 정지될 수 있고, 자신의 동작에 영향을 미치지 않고 다시 시작될 수 있다. 부울 프로세서가 정지된 동안, 문맥(context)기억/복구 지역의 레지스터를 판독함으로써 문맥기억동작이 수행될 수 있다. 새로운 세트의 레지스터가 로드되어, 앞서 정지되고 기억된 다른 태스크가 계속하여 수행될 수 있다.
제 3도에는, 부울 프로세서(BP)의 블록 다이어그램이 점선의 박스 내부에 도시되고, 밀접하게 관련된 몇몇 기능들이 그에 인접하여 도시되어 있다. BP는 3개의 주요 장치 : 선행 인출장치, 명령큐 및 실행장치로 나뉜다 이들 3개의 장치 외에, 호스트 프로세서에 BP를 프로그램하고 시작하는 능력을 제공하는 부가적인 블록("pdecode")이 존재한다.
선행인출장치(PREFETCH UNIT)
선행 인출장치는 BP에서 논리 회로 중 가장 큰 부분이다. 그것은 제 3도에서 instlat, udecode, ldecode, basereg, jmp, mcr 및 선행인출 블록을 포함한다.
선행인출블록은 부울 프로세서의 명령인출 기능에 관련된다. 선행인출블록은 명령 램으로부터 판독 동작을 시작하고 만약 그것이 제 1 명령이면 실행될 명령을 명령큐에 로드한다. 제 2 명령은 선행 인출 기능에 의해 직접 실행된다. "instlat"는 명령 데이터 버스로부터 명령을 래치오프한다(본 발명의 바람직한 실시예에서 명령 데이터 버스는 68020 데이터 버스이다). instlat는 롱워드(long word) 경계에 걸쳐 둘로 나뉘어진 롱워드 명령을 검출하여 관리한다. instlat 또한 디코드될 2개의 명령을 제공한다. 하나는 버스 uuword/ulword 상에 있고 하나는 버스 lword상에 있다. "udecode" 및 "ldecode"는 동시에 "instlat"에 홀드된 명령을 디코드한다.
이미지 램 주소 및 분기 주소를 위한 모든 주소계산은 두개의 디코드 블록에 의해 수행된다. "basereg"은 디코드 기능의 주소 계산을 위한 베이스 레지스터 데이터를 제공한다. "jmp" 및 "mcr" 블록은 각각 JMP 및 MCR 비트를 관리한다. 이 블록들은 만약 그들의 각각의 레지스터에서 모든 8비트가 0이면 모두 0 신호(all zero signal)를 주장한다.
명령큐(INSTRUCTION QUEUE)
명령큐는 "선입선출기(피포, fifo)"로 표시된 블록에 포함된다. 그것은 선행인출장치에 의해 기록되고 실행장치에 의해 판독되는 4 딥 피포(4 deep fifo)이다. 2개까지의 명령이 동시에 판독되고 기록될 수 있다. 피포는 선행인출 및 실행장치를 위한 빈(empty) 지시 및 충만(full) 지시를 제공한다.
실행장치(EXECUTION UNIT)
실행장치는 "exec"로 표시된 블록에 포함되고 "피포"에 저장된 제 1 명령을 실행하는 역할을 한다.
호스트 프로세서에서 BP로의 인터페이스(HOST PROCESSOR TO BP INTERFACE)
"pdecode"는 68020이 부울 프로세서의 내부 레지스터를 액세스하는 것을 허용하는 프로세서 디코드 기능을 제공한다. 또한, 이미지 레지스터를 직접 판독하여 처리하는 능력이 호스트 프로세서에 제공된다. 이것은 전력이 램 에 복구된 후에 호스트 프로세서가 이미지 레지스터를 초기화시키도록 허용한다.
데이터 및 레지스터의 설명(DATA AND REGISTER DESCRIPTIONS)
데이터 조직(DATA ORGANIZATION)
명령 및 데이터는 대략 16비트 및 1비트 엔터티(entities)로 조직된다. 16비트 값은 68020의 1비트 값의 포맷과 동일한 포맷을 갖고 주로 이미지 레지스터에서 사용되고 임의의 크기의 어레이로 조합될 수 있다.
이미지 레지스터(IMAGE REGISTER)
이미지 레지스터는 65536 엔트리를 포함하는 단일 비트 어레이의 쌍이다. 각 엔트리는 데이터 비트 및 포스 비트(force bit)를 포함한다. 1회 히스토리(one shot history)는 65536 엔트리를 포함하는 비트 어레이이다. 1회 히스토리와 관련된 포스 비트는 없다.
푸시 다운 스택(PUSH DOWN STACK, PDS)
푸시 다운 스택은 모든 제 1 명령에 대한 목적지(destination) 및 소오스(source)로 사용된다. 이는 최상위비트(MSB)가 스택 상단(top)에 설계된 16비트 워드이다. 사용된 비트 번호화 계획에 따르면, 스택 상단에 대한 비트 번호는 15이다.
MCR 및 JMP 레지스터(MCR AND JMP REGISTER)
MCR 및 JMP 레지스터는 4개의 부울 프로세서 명령을 통해 지정되고 소거될 수 있는 엘리먼트를 가지는 8비트 어레이이다. 이 레지스터들은 사다리꼴 로직프로그램에서 사용되는 JMP 및 MCR 명령에 대한 정보를 유지한다.
프로그램 카운터(PROGRAM COUNTER)
부울 프로세서는 2개의 프로그램 카운터를 사용한다. 하나(BPPC)는 현재 디코딩되는 명령의 주소를 포함하고 다른 하나(NBPPC)는 명령 메모리로부터 인출된 명령의 주소를 포함한다. BPPC는 부울 프로세서가 호스트 프로세서에 의해 시작될 때마다 액세스된다. BPPC로의 기록은 또한 NBPPC도 업데이트한다. NBPPC는 스킵명령이 취해질 경우 또는 중지 명령을 만났으나 이를 취하지 않을 경우에도 역시 업데이트될 수 있다. 이 경우에, NBPPC는 스킵 또는 중지 명령의 주소 필드로부터 계산된 절대 주소로 업데이트된다. 두 레지스터 모두 스킵 및 중지 명령에서 발견된 PC 상대 변위(displacement)로부터 절대 주소를 계산하는 데에 소오스 주소로서 사용될 수 있다. 레지스터의 선택은 명령의 정렬 및 길이에 따라 다르다.
베이스 레지스터(BASE REGISTER)
부울 프로세서는 이미지 레지스터로의 모든 액세스에 대해 베이스 변위 어드레싱을 사용한다. 세 개의 16비트 베이스 레지스터 번호 0-2가 존재한다.
명령의 설명(INSTRUCTION DESCRIPTIONS)
AND/AND_N
AND 명령은 이미지 레지스터에서 비트를 판독하고 상기 비트를 스택의 상단 비트와 앤드 연산("ands")하여, 스택의 상단에 결과 값을 다시 위치시킨다. AND_N 명령은 이미지 레지스터로부터 판독된 값이 이용되기 전에 보수화된다(complemented)는 점을 제외하고는 동일한 연산을 수행한다. 이미지 레지스터 비트의 주소는 11비트 부호 표시된(부호를 갖는) 변위(signed displacement)와 선택된 페이지 레지스터와의 합이다.
그 결과는 STEPEN 비트에 의해 조절될 수 있다. 만약 STEPEN 비트가 0이면, 연산의 결과는 0으로 강제된다.
OR/OR_N
OR 명령은 이미지 레지스터로부터 비트를 판독하고, 이를 스택 상단의 비트와 OR 논리 조합("ors")하여, 스택의 상단에 결과를 다시 위치시킨다. OR_N 명령은 이미지 레지스터로부터 판독된 값이 이용되기 전에 보수화된다는 점을 제외하고는 동일한 연산을 수행한다. 이미지 레지스터 비트의 주소는 11비트 부호 표시된 변위와 선택된 베이스 레지스터와의 합이다. 그 결과도 STEPEN 비트에 의해 조절될 수 있다. 만약 STEPEN 비트가 0이면, 연산의 결과는 0으로 강제된다.
OUT/OUT_N
OUT 명령은 스택의 상단의 값을 어드레싱된 이미지 레지스터 비트로 전송한다. OUT_N 명령은 스택의 상단 값의 보수를 전송한다. 스택의 내용은 영향받지 않는다. 이 명령은 MCR, JMP 및 FORCE 비트(포스 비트)에 의해 조절된다. 만약 임의의 JMP 비트가 설정되면 OUT 및 OUT_N 명령은 무연산(nop)을 초래하게 되고, 정상적인 OUT와 동일하게 실행하기 위해서는 동일한 수의 클록 사이클이 필요하게 된다. 임의의 MCR 비트가 설정되면 OUT 및 OUT_N 명령은 0을 이미지 레지스터로 전송한다. 이것은 JMP 비트보다 우선한다. 만약 어드레싱된 비트에 대한 포스 비트가 설정되면 전송은 금지된다. 이것 또한 JMP 및 MCR 비트 모두보다 우선한다. 이미지 레지스터 비트의 주소는 11비트 부호 표시된 변위와 선택된 베이스 레지스터와의 합이다.
STR/STR_N
STR 명령은 어드레싱된 이미지 레지스터 비트를 스택 상단으로 푸시한다. 스택의 하부(bottom) 값은 버려진다. STR_N 명령은 이미지 레지스터로부터 판독된 값이 이용되기 전에 보수화된다는 것을 제외하고 동일한 연산을 수행한다. 이미지 레지스터 비트의 주소는 11비트 부호 표시된 변위와 선택된 베이스 레지스터와의 합이다. 결과는 STEPEN 비트에 의해 역시 조절될 수 있다. STEPEN 비트가 0이면, 연산의 결과는 0으로 강제된다.
SUSP
SUSP 명령은 부울 프로세서가 명령의 목표 주소에서 명령 인출을 중지하거나 인출을 계속하도록 한다. SUSP 명령은 항상 BP를 중지시킨다. 만약 스택의 상단이 1이면 SUSP_T 명령이 BP를 중지시키고, 스택의 상부가 0이면 SUSP_F 명령이 BP를 중지시킨다. 만약 SUSP_T 또는 SUSP_F가 BP를 중지시키지 않으면, SUSP 명령에 이은 다음 명령의 주소에 8비트 부호 표시된 변위를 더함으로써 유도된 주소에서 실행이 계속된다. 만약 BP가 종결되면, BPPC는 종결 후의 첫 번째 판독을 위해 SUSP의 다음 명령의 주소로 설정될 것이다. BPPC의 다음 판독은 SUSP 명령의 목표주소를 인출한다.
OS
OS 명령은 사다리 논리 1회 기능(ladder logic one shot function)을 실행한다. 그것은 입력이 0에서 1로 변할 때마다 1의 출력을 제공한다. 이것은 이미지 램에 기억된 히스토리 비트를 사용하여 실행된다. 히스토리 비트가 0이고 스택의 현재 상단이 1일 때마다 스택의 상단이 0으로 설정되는 반면에, 그렇지 않은 상황에서는 스택의 상단은 1로 설정된다. 히스토리 비트는 항상 스택의 현재 상단으로 설정된다.
LDA/LDAL
LDA/LDAL 명령은 선택된 베이스 레지스터에 부호 없는 피연산자(operand)를 로드한다. LDA 명령은 선택된 레지스터에 로딩하기 전에 16비트 값을 얻기 위하여 8비트 피연산자에 256을 곱한다. LDAL 명령은 16비트 피연산자를 직접 선택된 레지스터로 옮긴다.
SKIPS/SKIPL
스킵 명령은 BP가 명령을 인출하는 곳의 주소를 변경한다. 스킵 명령의 목표주소는 스킵에 이은 다음 명령의 주소와 관련이 있다. SKIPS 명령은 8비트 부호 표시된 변위를 사용하고 SKIPL 명령은 20비트의 부호 표시된 변위를 사용한다. SKIPS_T/SKIPL_T는 스택의 상단이 1이면 프로그램 흐름을 변경한다. SKIPS_F/SKIPL_F는 스택의 상단이 0이면 프로그램 흐름을 변경한다. 만약 스택의 상단이 조건부 스킵에 의해 지정된 조건과 매치되지 않으면, 스킵에 이은 다음 명령으로 인출이 계속된다.
CLRL
CLRL 명령은 스택의 상단이 1이면 어드레싱된 이미지 레지스터 비트를 소거한다. 이 명령은 JMP 및 MCR 비트의 상태에 의해 조절된다. 만약 임의의 JMP 비트가 설정되면, 명령은 무연산(nop)으로 된다. 만약 임의의 MCR 비트가 지정되면, 명령은 정상적으로 실행된다. 바람직하게는, MCR은 JMP 보다 우선한다. 그러나, 포스 비트가 설정될 때, 명령은 무연산(nop)으로 된다.
SETL
SETL 명령은 스택의 상단이 1이면 어드레싱된 이미지 레지스터 비트를 설정한다. 이 명령은 JMP 및 MCR 비트의 상태에 의해 조절된다. 임의의 JMP 비트가 설정되면, 명령은 무연산(nop)으로 된다. 만약 임의의 MCR 비트가 설정되면, 명령은 상기 CLRL 명령처럼 어드레싱된 비트를 소거한다. 역시, MCR은 JMP 보다 우선하며, 포스 비트가 설정되면 명령은 무연산(nop)으로 된다.
AND STR
AND_STR 명령은 스택 상부 2개의 항목에 대해 논리적 "and"를 수행하고, 스택에서 1개의 항목을 팝(pop)하여 상기 결과를 스택의 상단에 위치시킨다. 제로(0)가 스택의 하단에 삽입된다.
OR_STR
OR_STR 명령은 스택 상단 2개의 항목에 대해 논리적 "or"를 수행하고, 스택의 1개의 항목을 팝하여, 상기 결과를 스택 상단에 위치시킨다. 제로(0)가 스택의 하단에 삽입된다.
SET_MCR/CLR_MCR
SET_MCR 및 CLR_MCR 명령은 MCR 비트의 상태를 변화시키는 데에 사용된다. 0-7로 번호가 매겨진 8개의 MCR 비트가 있다. SET_MCR는 선택된 MCR 비트를 설정하고 CLR_MCR는 선택된 MCR 비트를 소거한다.
SET_JMP/CLR_JMP
SET_JMP 및 CLR_JMP 명령은 JMP 비트의 상태를 변화시키는 데에 사용된다. 0-7로 번호가 매겨진 8개의 JMP 비트가 있다. SET_JMP는 선택된 JMP 비트를 설정하고 CLR_JMP는 선택된 JMP 비트를 소거한다.
SET_STE/CLR_STE
SET_STE 및 CLR_STE 명령은 STE 비트의 상태를 변화시키는 데에 사용된다. SET_STE는 STE 비트를 설정하고 CLR_STE는 STE 비트를 소거한다. STE 비트가 소거될 때, 스택의 상단이 소거된다.
RESLV/RESLV_N
RESLV 명령은 스택 상에 선택된 비트들을 서로 and 조합되어 결과 값으로 비트의 상단을 대체한다. RESLV_N 은 결과 값이 스택의 상단에 위치되기 전에 보수화된다는 점을 제외하고는 동일한 연산을 수행한다. 16비트 마스크는 "and" 동작에 포함된 스택의 비트를 선택하는데 사용된다. 마스크의 최상위비트(MSB)는 스택의 상단에 대응하고, 최하위비트(LSB)는 하단에 대응한다. 만약 마스크 비트가 설정되면, 대응되는 스택 비트가 "and" 동작에 포함된다.
LDPDS
LDPDS 명령은 16비트 피연산자를 직접 PDS로 전송한다. 만약 STEPEN 비트가 소거되면, 스택의 상단은 0으로 강제된다. NOP 명령은 1워드 무연산명령(nop)이며, 어떠한 동작도 수행되지 않는다.
LABEL
LABEL 명령은 그 명령에 20비트 데이터 필드가 저장되도록 허용하는 2워드 무연산명령(nop)이다.
기본 명령 포맷(BASIC INSTRUCTION FORMATS)
부울 프로세서 명령 세트는 2개의 명령 길이: 단일(single) 워드 및 롱워드를 포함한다. 롱워드 명령은 항상 연산코드(opcode)의 상위 8비트에 FF를 가지고 시작하며, 두 번째 워드가 데이터를 포함한다. 명령은 워드 정렬되어야(word aligned)하지만, 롱워드 정렬될(longword aligned) 필요는 없다.
단일 워드 명령 포맷(SINGLE WORD INSTRUCTION FORMATS)
비트 부표 표시된 변위(BIT SIGNED DISPLACEMENT)
11비트 주소 포맷을 사용하는 명령은 9개가 있다. 이들 연산코드는 $0000~$D7FF의 범위에 있다. 처음의 5비트는 연산코드 및 베이스 레지스터를 가리키고 최하위 11비트는 부호 표시된 주소 필드이다. 워드의 최상위 2비트에 의해 선택되는 바에 따라 이 포맷에는 2가지 종류가 있다. 제 1 종류는 아래에 도시된다. 이는 두 MSB 중 적어도 하나가 0일 때 선택된다.
만약 2개의 MSB가 모두가 1이면, 제 2 종류가 선택된다. 이 포맷의 내용은 아래에 도시된다. 이 포맷은 1회 명령에 사용되고 따라서 연산코드 필드가 없다.
비트 부호 표시된 변위(BIT SIGNED DISPLACEMENT)
8비트 부호 표시된 변위 필드는 CLRL 및 SETL 명령에 의해 사용된다. 이 명령은 3개의 베이스 레지스터 중 하나를 선택한다. 이 명령의 포맷은 아래에 도시된다.
8 비트 PC 상대 포맷(8 BIT PC RELATIVE)
8비트 PC 상대 포맷은 짧은 스킵(SKIP) 명령 및 중지 명령에 사용된다. 그것은 베이스 레지스터 선택이 없는 것을 제외하고는 8비트 부호 표시된 변위 포맷과 비슷하다. 이 포맷은 스킵/중지 조건의 선택을 제공한다. 중지 명령의 경우, 스킵이 취해지지 않으면 BP는 중지한다. 그러므로, SKIP_T 및 SUSP_F 모두 동일한 조건 선택코드를 사용한다. 이 명령의 포맷이 아래에 도시된다.
8비트 절대 포맷(8 BIT ABSOLUTE)
8비트 절대 포맷은 LDA 명령에 사용된다. 이는 데이터 필드가 부호 표시된 비트를 갖지 않는다는 것을 제외하고는 8비트 부호 표시된 번위 포맷과 유사하다. 이 명령 포맷은 짧은 베이스 레지스터 로드 명령, LDA에 사용되며, 다음과 같다.
4비트 피연산자(4 BIT OPERAND)
이 명령포맷은 어떤 피연산자도 갖지 않거나 4비트에 맞는 피연산자를 갖는 모든 명령에 사용된다. 명령이 어떤 피연산자도 갖지 않으면, "dddd"필드는 0으로 지정된다. 이 포맷은 아래에 도시된다.
이중 워드 명령 포맷(DOUBLE WORD INSTRUCTION FORMATS)
이중 워드 명령 포맷은 피연산자로서 두 번째 워드를 사용하고 연산 코드로서 첫 번째 워드를 사용한다. 아래에 도시된 연산코드 포맷은 단일 워드 4비트 피연산자와 유사하다.
SKIPL_T, SKIPL_F, SKIPL 및 LABEL 명령이 두 번째 워드로의 4비트 확장으로서 "dddd" 필드를 사용하여 20비트 피연산자 필드를 형성함에 유의해야 한다. 이 4비트 필드는 피연산자의 최상위 4비트이다.
메모리 맵의 상세한 설명(DETAILED MEMORY MAP DESCRIPTIONS)
레지스터(REGISTERS)
부울 프로세서는 그것이 명령을 실행중이 아닐 때는 주변장치로서 액세스 가능하다. 이는 적용례(application)의 요구에 따라 프로그래밍 될 수 있다. 게다가 이미지 레지스터 및 다른 레지스터는 판독 또는 기록될 수 있다.
메모리 맵(MEMORY MAP)
주소범위는 이미지 램 및 BP 내부 레지스터를 선택한다. 주소블록은 아래에 도시된 것처럼 8개의 영역으로 분해된다.
주소설명
1. 이산 이미지, 단일 비트, jmp, mcr 및 포스 액티브
2. 이산 이미지, 팩트(packed), jmp, mcr 인액티브, 포스 액티브
3. 이산 이미지, 단일 비트, jmp, mcr 인액티브, 포스 액티브
4. 이산 이미지, 팩트, jmp, mcr 인액티브, 포스 액티브
5. 포스 비트 액세스, 이산
6. 포스 비트 액세스, 워드
7. 이산 이미지 램으로의 직접 액세스, 제한 없음(32킬로바이트)
8. 부울 프로세서 내부 레지스터
이미지 레지스터는 770000 내지 77FFFF를 제외한 모든 메모리 맵을 차지한다. 이 범위는 BP의 내부 레지스터에 액세스하는데 사용된다 내부 레지스터에 대한 메모리 맵이 아래에 도시된다.
주소 설명 길이(비트)
770000 PDS 16
770002 주소 베이스 레지스터 0 16
770004 주소 베이스 레지스터 1 16
770006 주소 베이스 레지스터 2 16
770008 BP 프로그램 카운터 32
77000C 다음 BPPC 32
770010 BP 상태 레지스터 16
770012 MCR 레지스터 8
770013 JMP 레지스터 8
770100 PDS 16
770102 주소 베이스 레지스터 0 16
770104 주소 베이스 레지스터 1 16
770106 주소 베이스 레지스터 2 16
770108 BP 프로그램 카운터 32
77010C 다음 BPPC 32
770110 BP 상태 레지스터 16
770112 MCR 레지스터 8
770113 JMP 레지스터 8
770200 워드 이미지 크기 레지스터 8
770201 워드 이미지 베이스 레지스터 8
770202 대기 레지스터 8
770203 수정 레지스터(R/O) 8
770204 인터럽트 재시작 PC 32
770208 BP 폴트 프로그램 카운터 32
프로그램 카운터(PROGRAM COUNTER)
BP는 2개의 프로그램 카운터 : 현재의 PC 및 다음의 PC를 갖는다. 현재의 PC(BPPC)는 선행인출장치에 의해 현재에 디코딩되는 명령의 주소를 유지하는데 사용된다. 다음의 PC(NBPPC)는 현재 인출되는 명령의 주소를 유지한다. BPPC는 명령이 명령래치에 로딩될 때마다 NBPPC로부터 로딩된다. NBPPC도 이 시점에서 4만큼(또는 16비트 모드에서는 2만큼) 증가된다. NBPPC는 어떤 특별한 상황을 제외하고는 BPPC 보다 일반적으로 4정도(또는 16비트 모드에서는 2정도) 크다. 상기 예외는 스킵 명령, 중지 명령 또는 무효 연산코드의 실행을 포함한다.
스킵이 취해지거나 중지가 취해지지 않을 때, NBPPC에는 절대 주소로서 명령의 목표 주소가 로딩된다. BPPC는 명령이 인출될 때까지는 영향받지 않는다.
종료후 BPPC 값(BPPC VALUE AFTER TERMINATION)
BPPC는 종료가 발생할 때마다 업데이트된다. 종료는 무효 연산코드, 중지명령, 또는 인터럽트일 수 있다. BPPC의 첫 번째 판독은 종료의 형식에 따른 값을 제공한다 아래 표는 레지스터의 첫 번째 및 두 번째 판독에 대한 BPPC의 값을 도시한다.
첫 번째 판독 두 번째 판독
중지명령 업데이트된 BPPC 업데이트된 BPPC
무효 연산코드 폴트 PC 업데이트된 BPPC
호스트 인터럽트 인터럽트 재시작 인터럽트 재시작
폴트 PC는 메모리 맵에 정의된 폴트 PC 레지스터의 내용이다. 이 주소에서의 코드는 시스템의 필요에 의해 요구되는 무효 연산코드를 처리한다. 업데이트 BPPC는 진단 목적으로 제공되고 이 섹션(section)에서 다시 논의될 것이다. 인터럽트 재시작(int restart)은 역시 메모리 맵에 정의된 인터럽트 재시작 PC 레지스터의 내용이다. 이 주소에서의 코드는 인터럽트 처리가 행해진 후 호스트 프로세서가 BP를 재시작하도록 한다.
업데이트된 BPPC는 중지 명령에 이은 다음 명령의 주소 또는 무효 연산코드의 주소이다. 중지 또는 무효 연산코드 이후의 BPPC의 값은 정렬 및 버스 크기(16비트 또는 32비트)에 따라 다르다. 아래 표는 16비트 및 32 비트 연산에 대한 업데이트된 BPPC의 값을 도시한다. BPPC의 예전 값은 항상 중지 명령 또는 무효 연산코드를 포함하는 롱워드의 주소이다.
32비트 버스 : 정렬됨 정렬 안됨
중지 명령 BPPC+2 BPPC+4
무효 연산코드 BPPC BPPC+2
16비트 버스 :
중지 명령 BPPC+2
무효 연산코드 BPPC
NBPPC는 중지가 발생할 때를 제외하고는 현재에 인출되는 명령의 주소를 포함한다. 중지 명령의 경우, NBPPC는 중지 명령의 변위 필드로부터 계산된 중지 명령의 목표 주소를 포함한다.
저장/복구 차이점(SAVE/RESTORE DIFFERENCES)
BPPC 및 NBPPC의 연산은 일반적 레지스터 영역과 저장/복구 레지스터 영역에서 서로 다르다. 일반적 레지스터 영역에서의 BPPC의 판독은 그것이 종료에 이은 첫 번째 판독인 경우를 제외하고는 BP를 시동시킨다. 저장/복구 영역에서의 BPPC의 판독은 결코 BP를 시동시키지 않는다. 일반적 레지스터 영역에서의 BPPC로의 기록은 NBPPC도 기록하는 반면에, 저장/복구 영역에서의 BPPC로의 기록은 그렇지 않다.
베이스 레지스터 0-2(BASE REGISTER 0-2)
프로그램 실행 동안 BP에 의해 사용되는 베이스 레지스터는 3개이다. 이들은 상기 메모리 맵에 도시된 위치에서 액세스될 수 있다. 적어도 워드 폭을 가지며 워드 정렬된(at least word wide and word aligned) 어떠한 기록도 수행되지만, 다른 것들은 무시된다. 이 레지스터는 리셋 시에 초기화되지 않는다.
푸시 다운 스택(PUSH DOWN STACK, PDS)
PDS는 단일 워드로서 액세스될 수 있고, 또는 롱워드 전송에서는 베이스 레지스터 0과 조합될 수 있는 워드 레지스터이다. PDS로의 바이트 기록은 어떤 바이트가 기록되었느냐에 따라 특정한 기능을 수행한다. 최상위 바이트($770000)로의 바이트 기록은 스택의 상단(PDS의 비트 15)을 기록된 바이트의 비트 7로 대체한다. 비트 0은 버려지고, 비트 1은 비트 0으로 시프트된다. 양쪽 바이트 기록 모두 기록된 바이트의 비트 0 내지 6의 데이터를 무시한다. 이 레지스터는 리셋 시에 초기화되지 않는다.
JMP 및 MCR 레지스터(JMP AND MCR REGISTER)
JMP 및 MCR 레지스터는 각각 8비트이고, 이미지 레지스터의 어떤 영역에 이산기록 연산뿐 아니라 OUT, OUT_N, SETL 및 CLRL 명령DMF 수행한다. 호스트 프로세서는 위의 메모리 맵에 도시된 주소에서 이들 레지스터를 액세스할 수 있다. 기록 연산을 위한 이동 크기나 정렬 제한은 없다. 이들 레지스터는 리셋 시에 초기화되지 않는다.
상태 레지스터(STATUS REGISTER)
상태 레지스터는 2개의 바이트 : 상태 바이트 및 부분적으로 로딩된 롱워드 명령의 비트 0 내지 7을 포함한다.
비트 설명(BIT DESCRIPTIONS)
상태 레지스터는 상태 레지스터의 상위 바이트에 포함된 BP 상태 및 STE 레지스터에 관한 정보를 포함한다. 이 바이트의 포맷은 아래에 도시된다.
1111 11 비트 설명
5432 1098
XX.. .... 단지 저장/복구를 위한 상태 비트
..X. .... STE 비트
...X .... =1 : 잘못된 연산코드를 만남
.... X... =1 : 실행 중지
.... .X.. =1 : BPPC 판독은 중단되지 않음
.... ..X. =1 : 부분적 롱워드 명령 로딩
상태 비트는 레지스터가 판독될 시기에서의 선행 인출장치의 상태를 나타낸다. STE 비트는 스테이지 인에이블 비트이며, PDS의 상단을 제한(qualify)하는데 사용된다. "잘못된 연산코드를 만남" 비트는 무효 연산코드에 의해 BP가 종료될 때마다 설정된다. "실행 중지" 비트는 실행장치가 파이프라인의 모든 명령 실행을 완료할 때마다 설정된다. 비트 10이 설정될 때, BPPC의 판독은 BP를 시작하지 않고 레지스터의 판독을 정상적으로 완료되도록 한다. 비트 9는 롱워드 명령의 첫 번째 워드가 명령 래치의 하위 워드에 로딩될 때마다 설정된다. 이것은 명령의 나머지를 얻기 위하여 다음 롱워드에서 추가적 인출이 필요함을 나타낸다. 이 경우에, 상태 레지스터의 하위 바이트는 부분적으로 로딩된 롱워드 명령의 비트 0-7을 포함한다.
저장/복구 차이점(SAVE/RESTORE DIFFERENCES)
상태 레지스터로의 기록 동작은 저장/복구영역과 일반적 영역에서 서로 다르다. 상태 레지스터가 일반적 영역에서 기록될 때, 상태비트는 변경되지 않는다. 이것은 BP의 상태에 영향을 주지 않고도 STE 비트가 변경될 수 있도록 한다. 기록이 기억/복구 영역에서 행해졌을 때, 단지 상태비트의 MSB만이 기록될 수 있다. 이것은 BP가 돈(DONE)상태(MSB=0) 또는 홀드포인터럽트(HOLD_FOR_INTERRUPT)상태(MSB=1)에 놓이도록 허용한다.
대기 레지스터(WAIT REGISTER)
대기 레지스터는 명령인출 및 이미지 램 액세스를 위한 대기상태의 수를 지정한다. 대기 레지스터는 또한 특별한 검사 모드 설정뿐만 아니라 워드 이미지 인에이블 비트를 포함한다. 대기 레지스터에 대한 포맷은 아래에 도시된다.
7654 3210 비트 설명
XXX. .... 명령 인출을 위한 클록 수-1
...X .... 이미지 램 판독/기록을 위한 클록 수-1
.... .X.. 돈케어(don't care)와 무효과(no effect) 설정 및 소거 가능
.... ..X. 워드 이미지 인에이블
.... ...X -1:칩이 테스트 모드일 때 devd 상에 pds(15:8) 출력
비트 5-7은 명령 인출을 위한 대기상태의 수를 설정한다. 비트3-4는 이미지 램 판독 및 기록 사이클을 위한 대기상태의 수를 설정한다. 비트 1은 1로 설정될 때 워드이미지 레지스터를 인에이블시킨다. 비트 0은 PDS의 상부 8비트가 DEVD 버스 상에 출력되도록 한다. 이 기능은 독립형 칩의 생산 테스트를 위해 사용되고 칩이 테스트 모드에 있을 때만 인에이블된다. 이 레지스터는 리셋이 프로세서에 인가될 때 $40으로 초기화된다. 이것은 3개의 클록 명령인출 동안 프로세서를 셋업시키고, 1 클록 이미지 판독 및 기록과 워드이미지는 디스에이블된다.
워드 이미지 베이스 및 크기 레지스터(WORD IMAGE BASE AND SIZE REGISTERS)
메모리에 워드 데이터를 물리적으로 위치시키고 워드 이미지의 길이를 설정하기 위해 두 개의 레지스터가 제공된다. 워드 이미지 크기 레지스터(WISR)는 워드 이미지 크기를 선택한다. 레지스터 값은 아래 표에 도시된다.
WISR 내용 워드 이미지 크기(워드단위)
00 128
01 256
03 512
07 1K
0F 2K
1F 4K
2F 8K
7F 16K
FF 32K
워드 데이터 베이스 레지스터는 메인 메모리에 워드 데이터의 시작주소를 설정한다. 워드 데이터 베이스 레지스터는 워드 이미지가 존재하는 65K 바이트 페이지를 선택한다. 이미지 램에 대한 주소는 프로세서 주소 및 상술된 두개의 레지스터로부터 유도된다.
호스트 프로세서 이미지 액세스(HOST PROCESSOR IMAGE ACCESS)
이미지 레지스터는 이산 이미지 및 워드 이미지로 구성된다. 이미지 레지스터는 이산 및 워드 이미지를 위한 포스 비트 정보를 처리한다. 포스 비트 및 이산 데이터는 이미지 램으로 불리는 32K×8메모리에 저장된다. 그것은 부울 프로세서 논리 회로에 의해 제어되므로 단지 BP를 통해서만 액세스 할 수 있다. 워드 데이터는 시스템 메모리에 저장되며, 포스 비트의 상태는 워드 이미지의 기록 동안 기록펄스를 조절한다. 모든 포스 비트 및 이산 이미지 영역은 호스트 프로세서에 8비트 장치로서 랩핑된다. 워드 이미지 영역은 32비트 장치로서 맵핑된다.
이산 이미지 레지스터(DISCRETE IMAGE REGISTER)
이산 이미지 레지스터는 4회 맵핑되어, PLC 환경에서 일반적으로 만나게 되는 기능을 위한 다양한 하드웨어 지원을 허용한다. 이산 데이터는 단일 비트 포맷 또는 팩트 포맷으로 액세스 될 수 있다. 이것은 유효하거나 또는 유효하지 않은 JMP/MCR로 행해질 수 있다. 단일 비트 데이터는 판독을 위한 바이트의 모든 비트에서 리턴되며(returned), 기록을 위한 바이트의 비트 0부터 취해진다(taken). 팩트 액세스는 바이트의 LSB에서 나타나는 첫 번째 주소에 대한 데이터를 가진 8비트 이산 데이터를 리턴시킨다. 이들은 임의의 이산 레지스터 주소에서 시작되고 시작 주소 +7에서 끝날 수 있다. 만약 팩 싸이클이 팩 영역의 끝을 지나서 확장되면, 기록은 금지되고 판독은 0으로 리턴된다.
$700000 내지 $71FFFF로의 기록은 MCR 및 JMP 비트의 상태에 의해 조건설정된다(conditioned). 만약 어떤 MCR 비트가 설정되면, 이 영역으로의 기록은 소거로 처리된다. 만약 어떤 JMP 비트가 설정되고 모든 MCR 비트가 소거되면, 기록은 무시된다. 대응 포스 비트가 설정된 어떠한 비트로의 기록도 무시된다. $720000 내지 $73FFFF로의 기록은 JMP 및 MCR 비트에 의해 조건설정되지 않는다.
이산에 대한 포스 비트는 $740000 내지 $74FFFF에 저장된다. 만약 포스 비트가 설정되면, 이산영역에서의 모든 기록은 무시된다. 이산 데이터 영역에서의 이산 데이터 비트의 변위 및 대응 포스 비트의 변위는 동일하다. 예를 들면, $710023에서의 이산 비트에 대한 포스 비트는 $740023에 위치 된다.
워드 이미지 레지스터(WORD IMAGE REGISTER)
워드 이미지 레지스터는 비록 그것의 데이터가 시스템내의 다른 곳에 저장됐다 할지라도 BP에 의해 제어된다. 워드이미지를 위한 유일한 하드웨어 지원은 포스 기능이다. $750000 내지 $75FFFF에 저장된 포스 비트는 이산 포스 비트와 유사한 방식으로 조건 워드기록을 결정한다. 포스 비트는 대응 워드 포인트(word point)의 어느 것 또는 모두에 영향을 미치는 바이트 기록, 워드기록 및 롱워드 기록에 효과적이다. 워드 데이터 영역의 시작으로부터의 워드 데이터 비트의 변위 및 대응 포스 비트의 변위는 무시된 주소의 LSB와 동일하다. 홀수주소에 위치된 포스 비트는 사용되지 않고 짝수주소에서의 포스 비트는 워드 포인트의 짝수 및 홀수 바이트 모두에 적용된다. 예를 들면 $C00742에 위치된 워드 포인트에 대한 포스 비트는 $750742에 위치되고 $C003A9 에 위치된 워드 포인트에 대한 포스 비트는 $7503A8에 위치된다.
직접 액세스(DIRECT ACCESSES)
이미지 램으로의 직접 액세스는 $760000 내지 $76FFFF의 주소의 범위에서 허용된다. 32K×8 램의 경우, 이미지 램은 상술한 범위에서 2번 매핑(mapping)된다($760000 및 $768000에서). 직접 액세스는 무조건적이므로 미지의 이미지 램을 초기화시키는데 사용될 수 있다. 첫 번째 16킬로바이트는 이산 이미지 및 대응 포스 비트의 저장에 사용된다.
임의의 포인트에 대한 직접 영역으로의 변위는 영역 $700000, $710000, $720000, $730000 또는 $740000의 변위를 4로 나눈 것과 동일하다. 예를 들면, $720A32에서 이산 포인트는 $76028C에 위치된 바이트의 비트 2에서 발견될 수 있다. 대응 포스 비트는 동일 바이트의 비트 6에 있다.
이미지 램의 다른 절반은 1회 히스토리(one-shot history) 및 워드 포스 비트를 위한 것이다. 1회 히스토리는 바이트의 최하위 니블(nibble)을 차지하고 워드 포스 비트는 최상위 니블을 차지한다. 호스트 프로세서의 1회 히스토리로의 유일한 액세스는 직접 영역을 통하는 것이다.
예를 들면, $65A3(BP 프로그램에 의해 도시된 것처럼)에 위치된 1회 히스토리는 $764000 + $1968 즉, $765968에 위치된 바이트의 비트 3에서 발견된다. WDBR이 'C0'에 설정되는 것으로 가정했다.
하드웨어의 상세한 설명(DETAILED HARDWARE DESCRIPTION)
이 섹션은 부울 프로세서 회로의 동작을 상세히 기술한다. 3개의 부분; 명령 선행인출, 명령실행 및 다른 회로로 나누어 설명한다.
명령 선행인출(INSTRUCTION PREFETCH)
선행인출 회로는 호스트 프로세서 버스로부터 명령을 인출하여, 만약 그 명령이 제 2 명령이면 명령을 디코딩 및 실행하고, 그 명령이 제 1 명령이면 실행장치로 명령을 전송한다. 선행 인출장치는 다음 기능을 수행할 수 있어야 한다;
1. 롱워드 또는 워드 폭(longword or word wide)의 버스로부터 명령 인출.
2. 임의의 워드 정렬 상에서 워드 및 롱워드 명령 처리.
3. 느린 메모리를 사용할 수 있도록, 프로그램 가능한 대기상태 제너레이터 제공.
4. 롱워드 폭 버스로부터 인출할 경우, 2개의 명령을 동시에 디코딩.
5. 베이스 레지스터 및 제 1 명령의 변위 필드로부터 절대 주소 계산.
6. 변위 필드 및 현재의 프로그램 카운터 값으로부터 스킵 명령에 대한 절대 주소 계산.
7. 제 2 명령을 수행하고 베이스, JMP 및 MCR 레지스터를 관리.
8. 동시에 두개의 명령을 FIFO로 전송.
명령 래치출력(INSTRUCTION LATCH OUTPUTS)
명령 래치는 유효성 지시자(validity indicator)를 가진 두개의 명령 버스를 출력한다. 유효성 지시자는 롱워드 상위 절반과 하위 절반에 대응하여, 상위와 하위로 분류된다. 상위 버스 유효성 지시자는 UVOP로 표시된다. 상기 지시자는 그것이 설정될 때마다 상위 버스상의 유효 명령을 가리킨다. 명령버스는 UUWORD 및 ULWORD로 표시된다. 이 16비트 버스는 서로 연결되어 롱워드 명령을 처리할 수 있는 버스를 형성한다. 워드 명령에 대해 ULWORD는 무시된다.
하위 버스 유효성 지시자는 LVOP로 분류된다. 이것은 UVOP와 동일한 기능을 갖는다. 하위 명령 버스는 LWORD로 분류된다. 이 16비트 버스는 인출된 롱워드 중 하위 절반으로부터의 명령을 포함한다. 비록 명령이 롱워드 정렬되지 않았을 경우에 롱워드 명령의 처음 16비트가 버스 상에 나타날 지라도, 롱워드 명령이 하위 명령으로부터 디코딩될 수 없다. 아래 도표는 샘플 명령 스트림 및 명령 래치의 출력을 도시한다. 버스의 음영진 영역은 출력되지만 명령 스트림 때문에 사용되지는 않는 값이다.
ULNORD 상의 'INST B'는 'INST A'가 1워드 명령이기 때문에 사용되지 않으며, 'INST B'가 LWORD 버스 상에 출력된다. LWORD 상의 'INST C'는 그것이 롱워드 명령이기 때문에 사용되지 않으며, UNWORD 및 ULWORD상에 출력된다. 롱워드 정렬된 롱워드 명령의 경우, 단지 명령만이 디코딩될 수 있다. ULWORD 상의 'INST E'는 'INST D'가 단일 워드 명령이기 때문에 사용되지 않는다. 바로 아래의 LWORD 상의 'INST E'는 명령의 나머지 절반이 인출되지 않았기 때문에 사용되지 않는다. 다음 클록 엣지(edge)에서, LWORD상의 일부 명령이 UUWORD로 이동되고, 데이터 버스의 상위 절반은 ULWORD로 클록되고, 데이터 버스의 하위 절반은 LWORD에 클록된다. 그러므로, 'INST E'는 롱워드 명령으로서 UUWORD 및 ULWORD상에서 출력되고 'INST F'는 단일 워드 명령으로 LWORD상에 출력된다.
[샘플 명령 스트림]
명령 버스 이외에, 몇 개의 다른 출력이 있다. CONTPEND는 부분적인 롱워드 명령이 로딩되었다는 것을 가리킨다. ALGNLW는, UUWORD 및 ULWORD 상의, 롱워드 명령이 롱워드 경계 상에 정렬될 때마다 주장된다. 이것은 스킵명령에 대한 주소 계산을 위해 사용된다. UOPFX는 UUWORD의 상부 4비트가 모두 1일 때 주장된다. 이 신호는 UUWORD 4MBS의 논리 AND 조합이 아니라 플립플롭의 버퍼링(buffing)된 출력이다. 이것은 이 신호의 전달지연을 2-3나노초 정도 줄인다.
UOPXF는 비트 8-11이 모두 1일 때마다 주장된다. UOPXB는 비트 8-11이 16진수 'B'와 같을 때마다 주장된다. UOPXF 및 UOPXB는 모두 UUWORD의 비트 8,9 및 11이 주장될 때마다 그 출력이 주장되는 플립플롭(flip-flop)으로부터 유도된다. NA220 및 IV140은 UUWORD의 비트 10과 플립플롭의 출력을 AND 조합하는데 사용되어, 상기 두 신호를 형성한다. 비록 UOPXF 만큼 빠르지는 않지만, 이는 4개의 입력 낸드(NAND)에 이어 IV140을 결합한 것을 사용하는 것보다는 빠르다.
UVOP는 UVOPA 및 UVOPB로 불리는 두개의 신호로 쪼개진다. 이것은 로드를 분할하여 이 신호의 지연을 감소시키기 위해 행해진다.
명령 래치 입력(INSTRUCTION LATCH INPUTS)
명령버스(IDIN) 이외에, 명령 래치 논리는 BP의 다른 블록으로부터 몇몇의 다른 입력을 받아들인다. 이 신호의 대부분은 선행 인출 제어 논리회로로부터 유래된다.
CLKZ는 그 폴링 엣지(falling edge)가 INSTLAT의 모든 플립플롭을 클록하는데 사용되는 클록이다. 이 클록은 로딩을 최소로 유지하기 위해 3개의 버퍼링된 회로로 분할된다. RESET는 명령 래치 로직 조정에 관련된 플립플롭을 소거하는데 사용되는 액티브 하이 시스템 리셋 신호이다.
PWSRBPSR은 부분적인 명령으로 명령 래치를 로드하는데 사용된다. 이것은 멀티태스킹 환경에서 문맥을 복구하기 위해 사용된다.
SUSP는 PREFETCH 블록으로부터 유래하고 BP가 다음의 상승하는 시스템 클록 엣지에서 실행을 중지할 것을 지시한다. LATCHOP도 역시 PREFETCH로부터 유래하고, IDIN 상에 명령을 로드하도록 명령 래치에 명령한다. PCWRT는 선행인출장치가 스킵 명령 또는 중지 명령에 기인하여 정상적인 명령 흐름을 변경할 때마다 주장된다. 프로그램 카운터는 다음 클록 엣지에서 로딩된다. PCWRTDN은 프로그램 카운터로의 기록이 완료되고 명령인출이 새로운 주소에서 발생할 것을 가리킨다.
INSTA(1)은 명령 주소의 비트 1이다. 그것이 설정되면, 현재의 명령인출은 명령버스(IDIN)의 하위 워드에 대해서만 유효하다는 것을 나타내는 것이다.
IN16BIT는 현재의 명령 인출이 16비트 버스 상에 있다는 것을 가리키는데 사용된다. 이 신호는 BP가 한 세그먼트의 코드를 실행함에 따라 변할 수 있다.
명령 래치 동작(INSTRUCTION LATCH OPERATION)
리셋 후에, UVOP, LVOP 및 CONTPEND 신호는 모두 부정된다. 내부적으로는, INSTVLD 및 CNTFLG도 역시 소거된다. INSTVLD는 명령 래치가 적어도 하나의 유효 명령을 포함할 때마다 설정된다. CNTFLG는 부분적으로 인출된 롱워드 명령이 마지막 인출에서 완벽하게 인출됨을 나타낸다.
명령 래치는 LATCHOP가 선행인출제어 논리 회로에 의해 주장될 때까지 이 상태를 유지한다. LATCHOP가 주장될 때, INSTVLD는 다음 클록 엣지에서 주장된다. 명령 주소가 롱워드 주소이면, INST(1)은 0이 되고 UVOP가 주장된다. 그렇지 않으면, UVOP는 여전히 부정된 상태로 남게된다. BP가 이어지는 인출을 롱워드 경계에서 인출하기 때문에, UVOP는 다음 LATCHOP이 주장될 때 주장된다. IDIN 상의 명령이 명령 래치에 로딩된다. LINSTPDU가 액티브이기 때문에 IDIN이 UUWORD에 로딩된다. IDIN은 LINSTPDL에 의해 ULOWRD에 로딩된다. IDIN은 또한 LINSTLW에 의해 LWORD에 로딩된다.
만약 다음 조건이 참이면 CONTPEND가 주장될 수 있다 :
1. UUWORD/ULWORD의 명령이 단일 워드 명령이거나, 마지막 명령인출이 롱워드 경계 상에 있지 않았다(UVOP는 부정된다).
2. LWORD는 LWORD(8:15)=FF로 지시된 롱워드 명령의 부분을 포함한다.
만약 CONTPEND가 주장되면, LWORD가 명령의 일부를 포함하기 때문에 LVOP는 주장되지 않는다. 그렇지 않고, 로딩된 명령이 롱워드 정렬된 2 워드 명령이 아니면, LVOP가 주장된다.
다음 명령 인출은 롱워드 경계 상에서 행해지므로, UVOP가 이미 주장되지 않았다면, UVOP가 주장된다. LATCHOP가 주장되고, 다음 클록 엣지에서 IDIN상의 다음 명령이 명령 래치로 로딩된다. 명령 래치의 로딩은 CONTPEND 신호의 상태에 의존한다. CONTPEND가 부정되면, IDIN 상의 다음 명령(들)은 앞의 경우와 동일하게 로딩된다.
만약 CONTPEND가 주장되면, LWORD의 부분 명령은 완전한 2 워드 명령을 형성하기 위하여 IDIN상의 상위 워드와 결합되어야 한다. IDIN상의 하위 워드는 LWORD로 로딩된 명령이다. CONTPEND 및 LATCHOP가 주장되면, LINSTPD가 주장되고 LWORD의 내용이 UUWORD로 전송된다. 또한, IDIN은 ULWORD로 로딩된다.
만약 LWORD의 명령이 2 워드 명령의 부분이면 CONTPEND가 다시 주장된다. CNTFLG가 주장되어 정렬되지 않은 2 워드 명령이 UUWORD 및 ULWORD상에 출력됨을 가르키면, LWORD가 FF일 경우 CONTPEND가 주장된다. 이 경우에 LVOP는 부정된다. 그렇지 않으면, CONTPEND가 부정되고 LVOP가 주장된다.
SUSP는 BP가 다음 클록 엣지에서 인출 명령을 정지한다는 것을 가리킨다. 이는 INSTYLD, UYOP, CNTFLG가 모두 소거되도록 하여, 인출 래치 논리 회로가 리셋 상태에 놓이도록 한다.
저장/복구 영역에서 상태 레지스터에 기록함으로써 문맥 전환(switch)후에 명령 래치가 복구될 수 있다. 이러한 상황이 발생할 때, PWSRBPSR이 주장된다. IDIN(25)이 설정되어 BP가 인터럽트 된 후에 부분 명령이 인출되었음을 나타내면, INSTVLD가 설정된다. 그렇지 않으면 그것은 소거된다. UVOP 및 CNTFLG는 항상 소거된다. UUWORD 및 ULWORD의 내용은 영향을 받지 않으나, LWORD는 부분적인 명령으로 다시 로딩된다. 모든 2 워드 명령이 처음 8비트에 FF를 갖기 때문에 LWORD는 FF로 설정된다. BP가 인터럽트된 후에 저장된 연산 코드의 두 번째 바이트인 IDIN이 LWORD에 로딩된다. 기록이 완료된 후에, 명령 래치 논리 회로는 부분적 명령의 나머지로 인출을 계속하도록 셋업된다.
본 발명의 많은 변형이 본 발명의 사상 및 범위로부터 벗어나지 않고도 실시될 수 있다. 따라서, 본 발명은 바람직한 실시예에 의해 제한되는 것이 아니라 첨부된 특허청구범위에 의해 한정된다.

Claims (12)

  1. 명령을 저장하기 위한 메모리 수단 ; 데이터를 저장하기 위한 이미지 레지스터 메모리 수단; 상기 명령들의 일부를 처리하기 위한 제 1 프로세서 수단; 상기 명령들의 나머지를 처리하기 위한 부울 프로세서 수단으로서, 상기 제 1 프로세서 수단과는 별도로 명령들을 조회하고 인출하며, 소정의 부울 명령들을 실행하는 부울 프로세서 수단; 그리고 상기 제 1 프로세서 수단, 상기 메모리 수단, 상기 부울 프로세서 수단, 및 상기 이미지 레지스터 메모리 수단을 상호 연결하는 명령버스 및 데이터 버스를 포함하며, 상기 부울 프로세서 수단은, 명령 큐; 상기 명령 메모리 수단으로부터 상기 명령들의 상기 나머지를 인출하여, a) 상기 명령들의 상기 나머지의 제 1 세트를 실행하고 b) 상기 명령들의 상기 나머지의 제 2 세트를 상기 명령 큐에 로딩하는 선행인출장치; 그리고 상기 명령 큐에 저장된 상기 명령들의 상기 나머지의 상기 제 2 세트를 실행하기 위한 실행장치를 포함하는 것을 특징으로 하는 고속 프로그램 가능 로직 콘트롤러.
  2. 제1항에 있어서, 상기 선행인출 장치는 상기 메모리 수단으로부터 판독 동작을 개시하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  3. 제1항에 있어서, 상기 선행인출 장치는 워드 경계에 걸쳐 분리된 명령들을 검출하고 관리하기 위한 수단을 더 포함하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  4. 제1항에 있어서, 상기 부울 프로세서 수단은 명령 인출 동안 어느 곳에서도 중지할 수 있으며 그 동작에 영향을 미치지 않고도 재시작할 수 있는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  5. 제1항에 있어서, 상기 실행 장치는 이전에 중지되고 저장되었던 태스크를 계속할 수 있도록 로딩될 수 있는 다수의 레지스터들을 포함하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  6. 제1항에 있어서, 상기 제 1 프로세서 수단은 상기 부울 프로세서 수단을 시작하고 초기화하는 수단을 포함하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  7. 제1항에 있어서, 상기 부울 프로세서 수단은 16 레벨을 가진 푸시 다운 스택을 이용하는 스택 방식 장치인 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  8. 제7항에 있어서, 상기 소정의 부울 명령들은 AND, AND_N, OR, OR_N, OUT, OUT_N, STR, STR_N, SUSP, OS, LDA, 및 LDAL을 포함하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  9. 제7항에 있어서, 상기 소정의 부울 명령들은 SKIPS, SKIPL, CLRL, SETL, AND_STR, OR_STR, SET_MCR, CLR_MCR, SET_JMP, CLR_JMP, SET_STE, CLR_STE, RESLV, RESLV_N, 및 LDPDS를 더 포함하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  10. 제8항에 있어서, 상기 부울 프로세서 수단은 상기 AND 명령에 응답하여 상기 이미지 메모리 수단으로부터 한 비트를 판독하여 상기 비트를 상기 푸시 다운 스택의 상단과 "앤드"연산하고 그 결과를 다시 상기 푸시 다운 스택의 상단에 위치시키는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  11. 제9항에 있어서, 상기 SKIPS 명령은 상기 부울 프로세서 수단이 명령들을 인출하는 주소를 변경하는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
  12. 제8항에 있어서, 상기 OR_STR 명령은 상기 푸시 다운 스택의 상단의 두 항목에 대해 논리 "오어" 연산을 수행하여 상기 푸시 다운 스택으로부터 하나의 항목을 팝오프하고 상기 논리 "오어" 연산 결과를 상기 푸시 다운 스택의 상단에 위치시키는 것을 특징으로 하는 고속 프로그램가능 로직 콘트롤러.
KR1019950701553A 1992-10-19 1993-08-25 고속프로그램가능로직컨트롤러(plc) KR100309615B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US96314592A 1992-10-19 1992-10-19
US07/963145 1992-10-19
PCT/US1993/007976 WO1994009416A1 (en) 1992-10-19 1993-08-25 High speed programmable logic controller

Publications (2)

Publication Number Publication Date
KR950704730A KR950704730A (ko) 1995-11-20
KR100309615B1 true KR100309615B1 (ko) 2001-12-17

Family

ID=25506808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950701553A KR100309615B1 (ko) 1992-10-19 1993-08-25 고속프로그램가능로직컨트롤러(plc)

Country Status (10)

Country Link
US (1) US5594917A (ko)
EP (1) EP0664897B1 (ko)
JP (1) JPH08505483A (ko)
KR (1) KR100309615B1 (ko)
AT (1) ATE173840T1 (ko)
AU (1) AU681604B2 (ko)
DE (1) DE69322283T2 (ko)
DK (1) DK0664897T3 (ko)
ES (1) ES2125353T3 (ko)
WO (1) WO1994009416A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933651A (en) * 1995-09-29 1999-08-03 Matsushita Electric Works, Ltd. Programmable controller
US6226738B1 (en) 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
US8489861B2 (en) * 1997-12-23 2013-07-16 Round Rock Research, Llc Split embedded DRAM processor
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6760833B1 (en) 1997-08-01 2004-07-06 Micron Technology, Inc. Split embedded DRAM processor
US6411863B1 (en) 1998-11-02 2002-06-25 The Minster Machine Company Auxiliary control system for use with programmable logic controller in a press machine
US6422463B1 (en) * 1999-12-31 2002-07-23 Jonathan C. Flink Access control system
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
JP2004062309A (ja) * 2002-07-25 2004-02-26 Fujitsu Ltd 不当命令処理方法及びプロセッサ
US7444495B1 (en) * 2002-08-30 2008-10-28 Hewlett-Packard Development Company, L.P. Processor and programmable logic computing arrangement
EP1615089A1 (de) * 2004-07-09 2006-01-11 Siemens Aktiengesellschaft Automatisierungsgerät, Verfahren zum Betrieb eines Automatisierungsgeräts, Verwendung eines Co-Prozessors sowie Verwendung eines Personal Computers mit einem Co-Prozessor
US7130196B2 (en) * 2005-01-19 2006-10-31 General Electric Company Apparatus and method for transferring heat from control devices
US7379777B2 (en) * 2006-01-24 2008-05-27 National Instruments Corporation System and method for automatically updating the memory map of a programmable logic controller to customized hardware
US7689727B2 (en) * 2006-01-24 2010-03-30 National Instruments Corporation System and method for automatically updating the memory map of a programmable controller to customized hardware
US8117424B2 (en) 2007-09-21 2012-02-14 Siemens Industry, Inc. Systems, devices, and/or methods for managing programmable logic controller processing
US20090106755A1 (en) * 2007-10-19 2009-04-23 Sundeep Chandhoke Programmable Controller with Multiple Processors Using Scanning and Data Acquisition Architectures
US9336051B2 (en) * 2007-10-19 2016-05-10 National Instruments Corporation Programmable controller with multiple processors using a scanning architecture
US20120137108A1 (en) * 2008-02-19 2012-05-31 Koch Iii Kenneth Elmon Systems and methods integrating boolean processing and memory
KR100925971B1 (ko) * 2009-01-23 2009-11-09 허익준 중앙접근제어유닛
CN102096390B (zh) * 2011-01-30 2014-04-09 深圳市合信自动化技术有限公司 可编程逻辑控制器、组态程序编译器及方法
US9459607B2 (en) 2011-10-05 2016-10-04 Opteon Corporation Methods, apparatus, and systems for monitoring and/or controlling dynamic environments
CN103529749B (zh) * 2013-10-29 2017-07-25 威海麦科电气技术有限公司 一种plc可编程控制器的梯形图程序开发系统及方法
CN104199371A (zh) * 2014-07-22 2014-12-10 刘焕中 建筑陶瓷生产线废品砖电子记录系统及检测流程

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4165534A (en) * 1977-04-25 1979-08-21 Allen-Bradley Company Digital control system with Boolean processor
DE2932394A1 (de) * 1978-08-24 1980-02-28 Texas Instruments Inc Intelligente, programmierbare prozessteueranordnung
US4215399A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Special function control system for a dual microprocessor programmable process control system
DE3302940A1 (de) * 1983-01-28 1984-08-02 Siemens AG, 1000 Berlin und 8000 München Speicherprogrammierbare steuerung mit wort- und bitprozessor
DE3580552D1 (de) * 1984-08-02 1990-12-20 Telemecanique Electrique Programmierbare steuereinrichtung mit zusatzprozessor.
US5287548A (en) * 1988-02-29 1994-02-15 Allen-Bradley Company, Inc. Programmable controller having a stored program with both machine language instructions and source code data
US4912623A (en) * 1988-04-11 1990-03-27 Square D Company Multiple processor communications system
US5068821A (en) * 1989-03-27 1991-11-26 Ge Fanuc Automation North America, Inc. Bit processor with powers flow register switches control a function block processor for execution of the current command
GB2244828B (en) * 1989-04-24 1993-09-01 Yokogawa Electric Corp Programmable controller
JP2834837B2 (ja) * 1990-03-30 1998-12-14 松下電工株式会社 プログラマブルコントローラ
JPH03288906A (ja) * 1990-04-05 1991-12-19 Fanuc Ltd Pcの命令実行方式
CA2048944A1 (en) * 1990-08-31 1992-03-01 Otomar S. Schmidt Processor for a programmable controller
JP2848060B2 (ja) * 1991-10-24 1999-01-20 株式会社日立製作所 プログラマブルコントローラおよびシーケンス制御方法

Also Published As

Publication number Publication date
AU681604B2 (en) 1997-09-04
DE69322283D1 (de) 1999-01-07
DK0664897T3 (da) 1999-08-09
DE69322283T2 (de) 1999-05-20
US5594917A (en) 1997-01-14
JPH08505483A (ja) 1996-06-11
KR950704730A (ko) 1995-11-20
ATE173840T1 (de) 1998-12-15
WO1994009416A1 (en) 1994-04-28
AU5347594A (en) 1994-05-09
ES2125353T3 (es) 1999-03-01
EP0664897A1 (en) 1995-08-02
EP0664897B1 (en) 1998-11-25

Similar Documents

Publication Publication Date Title
KR100309615B1 (ko) 고속프로그램가능로직컨트롤러(plc)
US5247639A (en) Microprocessor having cache bypass signal terminal
US5392408A (en) Address selective emulation routine pointer address mapping system
US5944841A (en) Microprocessor with built-in instruction tracing capability
EP0138419B1 (en) Central processing unit for a digital computer
US5347636A (en) Data processor which efficiently accesses main memory and input/output devices
EP0762280A1 (en) Data processor with built-in emulation circuit
US5263153A (en) Monitoring control flow in a microprocessor
JP2003085000A (ja) トレース情報生成装置およびその方法
US5805930A (en) System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs
US6401197B1 (en) Microprocessor and multiprocessor system
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JPH05204709A (ja) プロセッサ
US5274776A (en) Information processing system having mode signal holding means and selecting operand access mode based on mode signal indicating type of currently executed instruction
US20070156386A1 (en) Linearization of page based memory for increased performance in a software emulated central processing unit
JPS63193239A (ja) 命令順序監視装置と方法
US4893235A (en) Central processing unit for a digital computer
EP0729604B1 (en) Register status protection during read-modify-write operation
US5951676A (en) Apparatus and method for direct loading of offset register during pointer load operation
EP0720087A1 (en) Apparatus and method for a memory extension stack in a data processing system
EP0156307A2 (en) Pipelined processor having dual cache memories
JPH01124049A (ja) マイクロプロセッサ
JPH09505428A (ja) ページアドレスモードを有するマイクロコントローラ
JP3105110B2 (ja) 演算装置
US6237071B1 (en) Multiaccess circuit including arbitration capabilities to effectively perform pipeline and suspend operations according to its priority

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: 20040826

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee