KR100334044B1 - 통신 기능을 갖는 시스템 lsi - Google Patents

통신 기능을 갖는 시스템 lsi Download PDF

Info

Publication number
KR100334044B1
KR100334044B1 KR1019990012830A KR19990012830A KR100334044B1 KR 100334044 B1 KR100334044 B1 KR 100334044B1 KR 1019990012830 A KR1019990012830 A KR 1019990012830A KR 19990012830 A KR19990012830 A KR 19990012830A KR 100334044 B1 KR100334044 B1 KR 100334044B1
Authority
KR
South Korea
Prior art keywords
buffer
data
write
address
subbuffer
Prior art date
Application number
KR1019990012830A
Other languages
English (en)
Other versions
KR19990083137A (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
Priority claimed from JP10982598A external-priority patent/JP3487759B2/ja
Priority claimed from JP30297298A external-priority patent/JP3573630B2/ja
Application filed by 아끼구사 나오유끼, 후지쯔 가부시끼가이샤 filed Critical 아끼구사 나오유끼
Publication of KR19990083137A publication Critical patent/KR19990083137A/ko
Application granted granted Critical
Publication of KR100334044B1 publication Critical patent/KR100334044B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/126Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 송신 데이터가 기입되고, 상기 송신 데이터를 기입된 순서로 출력하는 FIFO 버퍼와, 기입 인터럽트 신호에 응답하여 상기 송신 데이터를 상기 FIFO 버퍼에 송신하는 컨트롤러와, 상기 FIFO 버퍼의 공백 상태에 따라 상기 기입 인터럽트 신호를 생성하여 상기 컨트롤러에 출력하고, 상기 기입 인터럽트 신호의 간격이 가변 설정되는 FIFO 제어부를 갖는 것을 특징으로 하는 LSI 디바이스를 제공한다.
본 발명에 의하면, FIFO 제어부는 FIFO 버퍼의 공백 상태에 따라 기입 인터럽트 신호를 생성하고, 그 밖에 기입 인터럽트 신호의 간격을 가변 설정할 수 있으므로, 시스템에 최적의 기입 처리가 실현되며, 통신 에러의 발생을 현저하게 저하시킬 수 있다.

Description

통신 기능을 갖는 시스템 LSI{SYSTEM LSI HAVING COMMUNICATION FUNCTION}
본 발명은 통신 기능을 갖는 반도체 장치, 특히 송신용 FIFO 버퍼를 내장하는 시스템 LSI에 관한 것이다.
근래 데이터 통신에서 다양한 통신 프로토콜이 개발되고, 그 통신 프로토콜 전용의 반도체 장치가 존재한다. 이들 반도체 장치, 예를 들면 시스템 LSI에는 통신 매크로가 내장되고, 통신 매크로로 송신하는 데이터를 저장하는 데에 FIFO 버퍼가 많이 사용된다.
통신 매크로를 통해서 접속되는 시스템 전체는 시스템 LSI에 내장되는 제어 장치, 예를 들면 마이크로 컨트롤러에 의해 제어되지만, 시스템 전체의 수행을 향상시키기 위해서는 송신 데이터를 FIFO 버퍼에 기입하는 처리에 대해서도 효율 좋게 행할 필요가 있다.
종래의 송신용 FIFO 버퍼에서는 송신해야 할 데이터가 없어지면, 통신 매크로가 마이크로 컨트롤러에 데이터의 기입 요구를 출력하고, 마이크로 컨트롤러가 다음에 송신하는 데이터를 FIFO 버퍼에 기입하는 식의 처리를 하고 있었다.
그런데 시스템 전체의 규모가 커지면, 마이크로 컨트롤러는 어떤 시간 간격을 두고 송신 처리뿐만 아니라 우선도가 높은 처리, 예를 들면 타이머 인터럽트 등의 처리도 하게 된다. 이 때문에 송신 처리와 그것보다 우선도가 높은 처리가 동일 시에 발생할 경우도 일어날 수 있다.
이 경우에는 우선도가 높은 처리가 우선적으로 행하여지므로, 통신 매크로로로로부터 기입 요구가 와도, 마이크로 컨트롤러는 규정의 시간 내에 FIFO 버퍼에 송신 데이터를 기입할 수 없어서, FIFO 버퍼가 비게 되어 통신 에러가 발생하여 버린다.
이와 같이 처리량이 많아진 시스템에서 상기한 통신 에러의 발생을 회피하기 위해, 종래는 통신 매크로로부터 기입 요구가 있을 때에 FIFO 버퍼에 데이터를 기입할 뿐만 아니라, FIFO 버퍼가 비지 않도록 정기적으로 송신 데이터를 기입하는 식의 소프트웨어 상의 대책이 실시되고 있었다.
즉 통신 매크로로부터 출력되는 기입 요구와는 별도로, 타이머 인터럽트와 같이 우선도가 매우 높은 인터럽트를 사용하여, 마이크로 컨트롤러에 FIFO 버퍼에의 데이터의 기입 처리를 강제적으로 시키고 있었다.
그러나 처리량이 증대한 시스템의 경우에, 통신 매크로로부터 출력되는 기입 요구와는 별도로 타이머 인터럽트를 사용하여 통신 처리를 감시하는 것은 소프트웨어에서의 처리의 번잡을 초래한다.
한편 타이머 인터럽트를 사용하지 않고 FIFO 버퍼가 비게 되었을 때에 기입 요구를 내는 것만으로는 처리량이 증대한 경우에 통신 에러가 빈번하게 발생하여 바람직하지 않다.
제 2 문제로서, 마이크로 컴퓨터 등의 집적 회로 장치와 호스트 컴퓨터나 외부 주변 장치 사이에 데이터 통신을 할 경우, 그 데이터 통신은 데이터의 포맷이나 통신 속도 등을 정한 통신 프로토콜에 따라 행하여진다.
근래 데이터 통신에서, 통신 프로토콜은 복잡화하여 통신 속도는 고속화의 경향이 있지만, 통신 데이터를 수신 또는 송신하는 측인 집적 회로 장치의 처리 속도는 통신 속도를 따라가지 못하는 것이 현상이다. 이 때문에 집적 회로 장치 내에 FIFO 등의 버퍼를 설치하고, 그 버퍼에 송수신하는 데이터를 일시 기억시키고, 버퍼에 기억시킨 데이터에 대하여 집적 회로 장치의 처리 속도에 따른 데이터 처리를 하여 통신 속도와 처리 속도의 차이를 해결하고 있다.
도 21은 종래의 데이터 통신에서의 동작 설명도(I)이다. 도 21a에 나타낸 바와 같이 CPU(180), RAM(181), 버퍼(182) 등을 갖는 집적 회로 장치(100)가 호스트 컴퓨터(201)와 통신 회선(202)을 통해서 데이터 통신을 하는 경우에 대하여 설명한다.
집적 회로 장치(100)가 호스트 컴퓨터(201)로부터의 데이터를 수신할 경우, 그 데이터의 포맷이 도 21b에 나타낸 바와 같이 a바이트의 데이터(A)와 b바이트의 데이터(B)와 c바이트의 데이터C의 데이터열(101)이라고 한다. 이 경우, 집적 회로장치(100) 내의 버퍼(182)가 도 21c에 나타낸 바와 같이 (a+b+c)바이트의 기억 용량을 갖는 경우에는, 데이터열(101)을 일괄해서 일시 기억할 수 있다.
이 경우, 버퍼(182)에 일괄해서 일시 기억된 데이터열(101)은 집적 회로 장치(100) 내의 RAM(181)에 전송되고, 통신 프로토콜로 정해진 바이트수마다 소프트웨어로 해석되어 처리된다.
도 22는 복수의 버퍼를 사용한 종래의 데이터 통신에서의 동작 설명도(II)이다. 이 경우에는, 집적 회로 장치(100) 내에 통신 프로토콜로 정해진 각 바이트수마다의 기억 용량을 갖는 복수의 버퍼(185, 186, 87)와, 수신 데이터의 바이트수를 카운트 하여 적절한 버퍼에 데이터를 분배하는 데이터 분배 회로로가 설치된다. 그리고 데이터 분배 회로로에 의해 통신 프로토콜로 정해진 바이트수마다 수신 데이터의 기입 대상처의 버퍼를 변경한다. 이와 같이 하면, 각각의 버퍼(185, 186, 187)에 일시 기억한 수신 데이터를 독립적으로 처리할 수 있으므로, 데이터의 처리율을 향상시킬 수 있다.
다음에 집적 회로 장치(100)로부터 호스트 컴퓨터(201)에 데이터를 송신하는 경우에 대하여 설명한다. 그 때 도 21과 같이 1개의 버퍼(182)를 사용할 경우에는, 통신 프로토콜로 정해진 포맷에 따라서 RAM(181)에 송신 데이터를 차례로 설정하고, 그 데이터를 버퍼(182)에 전송하고 나서 송신을 한다.
한편 도 22와 같이 복수의 버퍼를 사용할 경우에는, 통신 프로토콜로 정해진 포맷으로 결정되는 수, 사이즈의 버퍼(185, 186, 187)에 송신 데이터를 기입하고, 기입이 종료한 시점에서 버퍼(185, 186, 187)를 포맷에서 결정된 차례로 판독하여송신을 한다.
도 21과 같이 집적 회로 장치 내에 1개의 버퍼를 설치할 경우, 데이터 수신의 경우에는 1개의 버퍼에 일시 기억한 수신 데이터를 RAM 등의 메모리에 전송하고, 통신 프로토콜로 정해진 바이트수마다 그 수신 데이터를 소프트웨어로 해석하고 있었다. 또 데이터 송신의 경우에는 RAM 등의 메모리에 송신 데이터를 차례로 설정하고, 그 데이터를 버퍼에 전송하여 송신을 하고 있었다.
그러나 이들 종래의 방법은 통신 프로토콜로 정해진 포맷이 고정되어 있는 경우에는 유효하지만, 송수신하는 포맷이 복수 종류 존재할 경우에, 포맷마다 버퍼 내의 기입 대상처 및 판독 대상처를 변경하기가 곤란해진다. 또 하드웨어의 변경이 곤란한 경우에는 소프트웨어에 의해 변경할 수 밖에 없어서, 소프트웨어의 부담이 커지고 시스템 처리의 효율도 떨어지는 문제가 생기고 있었다.
한편 도 22와 같이 집적 회로 장치 내에 복수의 버퍼를 설치할 경우에는 통신 프로토콜로 정해진 포맷이 복수일 경우에, 그 복수의 포맷에 대하여 복수의 버퍼가 더 필요해져서, 버퍼의 수가 증대하여 집적 회로 장치의 회로 규모가 커져 버린다.
본 발명은 이상의 점을 감안하여 타이머 인터럽트를 사용한 FIFO 버퍼의 정기적인 기입 처리를 불요로 함과 동시에, 통신 에러가 발생하는 상황을 미연에 회피하는 시스템 LSI를 제공하는 것을 목적으로 한다.
또 본 발명은 통신 프로토콜로 정해진 포맷이 복수일 경우에도, 소프트웨어에의 부담을 최소한으로 하여, 비교적 간단한 하드웨어의 전환으로 복수의 포맷에 대응한 처리나 설정이 가능한 집적 회로 장치를 제공하는 것을 목적으로 한다.
도 1은 본 발명의 실시예의 시스템 LSI의 블록도.
도 2는 본 발명의 실시예의 시스템 LSI를 사용한 LAN의 구성도.
도 3은 본 발명의 실시예의 통신 매크로의 블록도.
도 4는 본 발명의 실시예의 기입 요구 신호의 간격의 설명도.
도 5는 케이스 1의 경우의 FIFO, 라이트 포인터(write pointer), 리드 포인터(read pointer)의 모식도.
도 6은 케이스 2의 경우의 FIFO, 라이트 포인터, 리드 포인터의 모식도.
도 7은 케이스 3의 경우의 FIFO, 라이트 포인터, 리드 포인터의 모식도.
도 8은 케이스 4의 경우의 FIFO, 라이트 포인터, 리드 포인터의 모식도.
도 9는 시스템 LSI로 데이터를 전송할 경우의 설명도.
도 10은 인터럽트 플래그 회로를 부가한 통신 매크로의 블록도.
도 11은 인터럽트 플래그 회로의 블록도.
도 12는 인터럽트 플래그 회로의 동작을 나타내는 순서도.
도 13은 본 발명의 실시예의 집적 회로 장치의 블록도.
도 14는 본 발명의 실시예의 데이터 수신시(기입)의 설명도(I).
도 15는 본 발명의 실시예의 데이터 수신시(판독)의 설명도(II).
도 16은 본 발명의 실시예의 데이터 수신시(판독)의 설명도(III).
도 17은 본 발명의 실시예의 데이터 송신시(기입)의 설명도(I).
도 18은 본 발명의 실시예의 데이터 송신시(기입)의 설명도(II).
도 19는 본 발명의 실시예의 데이터 송신시(판독)의 설명도(III).
도 20은 본 발명의 다른 실시예의 집적 회로 장치의 블록도.
도 21은 종래의 데이터 통신에서의 동작 설명도(I).
도 22는 종래의 데이터 통신에서의 동작 설명도(II).
상기한 목적은 송신 데이터가 기입되고, 상기 송신 데이터를 기입된 차례로 출력하는 FIFO 버퍼와, 기입 인터럽트 신호에 응답하여 상기 송신 데이터를 상기 FIFO 버퍼에 송신하는 컨트롤러와, 상기 FIFO 버퍼의 공백 상태에 따라 상기 기입 인터럽트 신호를 생성하여 상기 컨트롤러에 출력하고, 상기 기입 인터럽트 신호의 간격이 가변 설정되는 FIFO 제어부를 갖는 것을 특징으로 하는 LSI 디바이스를 제공함으로써 달성된다.
본 발명에 의하면, FIFO 제어부는 FIFO 버퍼의 공백 상태에 따라 기입 인터럽트 신호를 생성하고, 그 밖에 기입 인터럽트 신호의 간격을 가변 설정할 수 있으므로, 시스템에 최적의 기입 처리를 실현할 수 있고, 통신 에러의 발생을 현저하게 저하시킬 수 있다.
예를 들면 시스템의 처리량이 많은 경우에는 기입 인터럽트 신호의 간격이 좁아지도록 설정하여 통신 에러의 발생 확률을 낮게 하고, 한편 시스템의 처리량이 적은 경우에는 그 간격을 넓게 하여 시스템에의 기입 인터럽트의 빈도를 내릴 수 있다.
또 본 발명의 LSI 디바이스의 상기 FIFO 제어부는 적어도 상기 FIFO 버퍼가 제 1 공백 상태일 때 제 1 기입 요구 신호를 생성하고, 상기 FIFO 버퍼가 제 1 공백 상태보다 공백 영역이 많은 제 2 공백 상태일 때 제 2 기입 요구 신호를 생성하는 기입 요구 생성 회로와, 상기 기입 요구 생성 회로에서 생성되는 상기 제 I 또는 제 2 기입 요구 신호의 1개를 선택하여, 상기 기입 인터럽트 신호를 출력하는 실렉터를 갖는 것을 특징으로 한다.
본 발명에 의하면, FIFO 버퍼의 공백 상태에 따라 다른 간격의 제 1과 제 2 기입 요구 신호가 생성되고, 시스템에 최적의 간격의 기입 요구 신호의 선택의 자유를 유저에 줄 수 있으므로, 시스템의 인터럽트 처리량이 최적화되어 통신 에러의 발생을 현저하게 저하시킬 수 있다.
또 본 발명의 LSI 디바이스의 상기 FIFO 제어부는 또한 상기 컨트롤러로부터 출력되는 인터럽트 허가 신호에 의해 상기 기입 인터럽트 신호의 출력을 허가 또는 금지하는 인터럽트 제어 회로를 갖는 것을 특징으로 한다.
본 발명에 의하면, 컨트롤러로부터 출력되는 인터럽트 신호에 의해 기입 인터럽트 신호를 허가 또는 금지할 수 있으므로, 시스템 LSI의 다른 인터럽트의 발생 상황 및 인터럽트의 우선도에 따라 그 시스템에 최적의 송신 처리의 제어가 가능해진다.
또 본 발명의 LSI 디바이스의 상기 기입 요구 생성 회로는 상기 FIFO 버퍼의 기입 영역을 기억하는 기입 포인터와, 상기 FIFO 버퍼의 판독 영역을 기억하는 판독 포인터의 관계에 따라, 상기 제 1 및 제 2 기입 요구 신호를 생성하는 것을 특징으로 한다.
본 발명에 의하면, 기입 포인터와 판독 포인터를 이용함으로써, 공백 영역의 크기에 대응한 복수 종류의 기입 인터럽트 신호를 생성할 수 있다.
또 본 발명의 LSI 디바이스는 상기 기입 인터럽트 신호의 간격이 상기 컨트롤러에 입력되는 다른 인터럽트 신호의 인터럽트 우선도에 따라 가변 설정되는 것을 특징으로 한다.
본 발명에 의하면, 기입 인터럽트 신호의 간격이 컨트롤러에 입력되는 다른 인터럽트 신호의 인터럽트 우선도에 따라 가변 설정되므로, 시스템 전체의 처리 능력에 따라 기입 인터럽트 신호의 간격을 동적으로 변경 설정할 수 있어서, 통신 에러의 발생을 현저하게 저하시킬 수 있음과 동시에, 시스템 전체의 처리율을 올릴 수 있다.
또 본 발명의 LSI 디바이스의 상기 실렉터는 상기 기입 인터럽트 신호로서 상기 기입 인터럽트 신호의 인터럽트 우선도보다 높은 인터럽트 우선도를 갖는 상기 다른 인터럽트 신호가 제 1 빈도로 발생할 때, 상기 제 1 기입 요구 신호를 선택하고, 상기 다른 인터럽트 신호가 제 1 빈도보다 낮은 제 2 빈도로 발생할 때, 상기 제 2 기입 요구 신호를 선택하는 것을 특징으로 한다.
본 발명에 의하면, 실렉터는 우선도가 높은 인터럽트 신호의 발생 빈도에 따라 기입 요구 신호의 간격을 선택할 수 있으므로, 시스템 전체의 처리 능력에 따라 기입 요구 신호의 간격을 동적으로 변경 설정할 수 있어서, 통신 에러의 발생을 현저하게 저하시킬 수 있음과 동시에, 시스템 전체의 처리율을 올릴 수 있다.
상기한 목적은 송수신 데이터를 일시 기억하는 버퍼와, 비분할 상태의 상기 버퍼에의 어드레스를 설정하는 비분할용 어드레스 설정부와, 상기 버퍼가 논리적으로 분할된 서브버퍼마다 설치되고, 각각의 상기 서브버퍼에의 어드레스를 설정하는복수의 서브버퍼용 어드레스 설정부와, 상기 서브버퍼의 사이즈가 설정되는 사이즈 설정부와, 상기 사이즈 설정부에 설정된 상기 서브버퍼의 사이즈에 따라 상기 서브버퍼용 어드레스 설정부에 상기 서브버퍼 내의 어드레스 영역을 설정하고, 상기 버퍼가 비분할 상태일 때 상기 비분할용 어드레스 설정부의 어드레스를 유효화하고, 상기 버퍼가 분할 상태일 때 상기 서브버퍼용 어드레스 설정부의 어드레스를 유효화하는 어드레스 설정 제어부를 갖고,
비분할 상태의 상기 버퍼는 상기 비분할용 어드레스 설정부의 어드레스에 따라 상기 송수신 데이터의 기입 또는 판독이 행하여지고, 상기 서브버퍼는 대응하는 상기 서브버퍼용 어드레스 설정부로부터의 어드레스에 따라, 상기 송수신 데이터의 판독 또는 기입이 행하여지는 것을 특징으로 하는 집적 회로 장치를 제공함으로써 달성된다.
본 발명에 의하면, 버퍼는 데이터의 송수신시에 비분할 상태가 되어, 단일의 버퍼로서 송수신이 가능하다. 한편 버퍼는 버퍼에 수신한 데이터의 판독시 또는 송신 데이터의 버퍼에의 기입 시는 분할 상태가 되고, 데이터 포맷에 대응한 사이즈의 서브버퍼로서 독립적으로 판독 또는 기입이 가능하다. 또 서브버퍼의 사이즈를 사이즈 설정부에 설정하기만 함으로써 임의의 사이즈로 분할할 수 있다. 이 때문에 다른 데이터 포맷에 대응하여 버퍼를 서브버퍼으로 분할하여 사용할 수 있어서, 유연성이 있는 송수신 버퍼의 구성이 가능해진다.
또 본 발명의 집적 회로 장치는 복수의 데이터 포맷을 갖는 통신 프로토콜 프로그램을 저장하는 메모리를 갖고, 상기 통신 프로토콜 프로그램에 의해 상기 사이즈 설정부에 각각의 상기 데이터 포맷에 따라서 상기 서브버퍼의 사이스가 설정되는 것을 특징으로 한다.
본 발명에 의하면, 통신 프로토콜에 따른 데이터 포맷이 복수 존재할 경우에도, 통신 프로토콜 프로그램에 의해 서브버퍼의 사이즈를 설정하면 송수신 버퍼를 데이터 포맷에 맞출 수 있어서, 다른 데이터 포맷에 대하여 유연하게 대응할 수 있다.
(실시예)
이하 본 발명의 실시예에 대해서 도면에 따라 설명한다. 그러나 이러한 실시예가 본 발명의 기술적 범위를 한정하는 것은 아니다.
[제 1 실시예]
도 1은 본 발명의 실시예의 시스템 LSI의 블록도이다. 시스템(LSI1)은 시스템 LSI 전체의 제어를 하는 CPU(2), 소정의 타이밍 신호를 생성하는 타이머(3), 화상 데이터나 음성 데이터를 고속으로 처리하는 DSP(Digital Signal Processor)(4), 소정의 시간 간격의 펄스폭 신호를 출력하는 PWC(Pulse Width Counter)(5), 다른 시스템 LSI와 LAN을 구성하여 소정의 프로토콜에 따라 데이터를 송수신하는 통신 매크로(6) 등을 갖는다.
통신 매크로(6)는 다른 시스템 LSI 내의 통신 매크로와 2선식 버스(7)로 접속되어, CPU(2)로부터 내장된 FIFO 버퍼(도시하지 않음)에 기입된 데이터를 2선식 버스(7)에 출력하고, 다른 시스템 LSI 내의 통신 매크로로부터 보내온 데이터를 내장된 FIFO 버퍼에 저장하여 CPU(2)에 출력한다.
도 2는 본 발명의 실시예의 시스템 LSI를 사용하여 자동차 내에서 오디오 장치의 LAN을 구성한 경우를 나타낸다. 튜너(10)와 카세트 테이프 레코더(11)는 시스템(LSI12)에 의해 제어된다. 복수의 시스템 LSI를 사용하여 LAN을 구성할 경우, 1개의 시스템 LSI를 마스터로 하고 다른 시스템 LSI를 슬레이브로 한다. 본 실시예에서는 시스템(LSI12)이 마스터가 되어 있고, 시스템(LSI12)은 튜너(10)와 카세트 테이프 레코더(11)를 제어함과 동시에, 시스템 전체의 제어를 한다.
시스템(LSI12)의 통신 매크로(13)는 2선식 버스(7)를 통해서 콤팩트 디스크 플레이어(14)를 제어하는 시스템(LSI15)의 통신 매크로(16) 및 네비게이션 시스템이나 텔레비전의 모니터(17)를 제어하는 시스템(LSI18)의 통신 매크로(19)와 접속된다.
마스터 시스템(LSI12)은 오디오 시스템의 중심이 되고, 통신 매크로(13)와 2선식 버스(7)를 통해서, 예를 들면 콤팩트 디스크 플레이어(14)에 기동ㆍ정지 등의 제어 데이터를 송신하고, 콤팩트 디스크 플레이어(14)의 슬레이브 시스템(LSI15)으로부터 통신 매크로(16)와 2선식 버스(7)를 통해서 무슨 곡목을 연주 중인지를 나타내는 데이터 등을 수신한다. 또 마스터 시스템(LSI12)은 모니터(17)의 슬레이브 시스템(LSI18)에 연주 중의 곡명을 표시시키는 데이터 등을 송신한다.
도 3은 본 발명의 실시예의 통신 매크로의 블록도이다. 통신 매크로 내에는 송신용의 통신 매크로(22)와 수신용의 통신 매크로(39)가 내장되지만, 본 실시예는 송신용의 통신 매크로(22)에 관한 것이므로, 수신용의 통신 매크로(39)의 블록도는 생략한다.
마이크로 컨트롤러(20)는 다른 시스템 LSI에 송신하는 데이터 및 FIFO 버퍼(34)에 대한 기입 신호를 내부 버스(21)에 출력한다. 버스 인터페이스(23)는 내부 버스(21)에 접속되어 있고, 송신 데이터(S24) 및 기입 신호(S25)를 FIFO 버퍼(34)에 출력한다.
FIFO 버퍼(34)는 본 실시예에서는 8바이트의 기억 영역을 갖고 있고, 입력된 데이터(S24)를 입력된 차례로 기억하고, 기억한 데이터를 송신 타이밍에 따라, 입력된 차례로 2선식 버스(7)에 출력한다.
버스 인터페이스(23)로부터 출력되는 기입 신호(S25)는 라이트 포인터(31)에도 입력된다. 라이트 포인터(31)는 본 실시예에서는 3비트의 카운터로, FIFO 버퍼(34)에 1바이트의 데이터(S24)가 기입될 때마다 1개씩 카운트업한다. 따라서 라이트 포인터(31)의 값에 의해 FIFO 버퍼(34)에 데이터가 기입되는 기억 영역을 감시할 수 있다.
FIFO 버퍼(34)에 기억된 데이터(S24)는 송신 타이밍 생성 회로(33)에서 생성되는 타이밍 신호(S40)에 동기하여 FIFO 버퍼(34)로부터 출력된다. 타이밍 신호(S40)는 3비트의 카운터인 리드 포인터(32)에도 입력되고, 리드 포인터(32)는 FIFO 버퍼(34)의 데이터(S24)가 판독될 때마다 1개씩 카운트업한다. 따라서 리드 포인터(32)의 값에 의해 FIFO 버퍼(34)로부터 데이터가 판독되는 기억 영역을 감시할 수 있다. 따라서 라이트 포인터(31)와 리드 포인터(32)의 양쪽을 감시함으로써 FIFO 버퍼(34) 내의 공백 영역의 크기를 검출할 수 있다.
기입 요구 생성 회로(30)는 라이트 포인터(31)와 리드 포인터(32)의 값으로부터 FIFO 버퍼(34)에 저장되어 있는 데이터 양을 감시하고, 다른 시간 간격을 갖는 4종류의 기입 요구 신호(WRQ1~ WRQ4)를 생성하여 실렉터(26)에 출력한다.
또 기입 요구 생성 회로(30)는 마이크로 컨트롤러(20)에 엠프티플래그 신호(S35), 풀플래그 신호(S36) 및 에러플래그 신호(S37)를 출력한다. 엠프티플래그 신호(S35)는 예를 들면 라이트 포인터(31)의 값이 (000)이고 리드 포인터(32)의 값이(111)으로부터 (000)로 변화하였을 때, 즉 FIFO 버퍼(34)의 데이터가 비었을 때 출력된다.
또 풀플래그 신호(S36)는 예를 들면 리드 포인터(32)의 값이 (000)이고 라이트 포인터(31)의 값이(111)으로부터 (000)로 변화하였을 때, 즉 FIFO 버퍼(34)에 8바이트의 데이터(S24)가 저장되어 풀이 되었을 때에 출력된다. 또 에러플래그 신호(S37)는 송신한 데이터가 올바른지의 여부를 검사하는 신호로서, 패리티 체크 신호, 타이밍 신호, 애크날리지 신호 등이 있다.
실렉터(26)는 기입 요구 생성 회로(30)로부터 입력되는 기입 요구 신호(WRQ1~ WRQ4) 중으로부터 1개를 선택하여, 기입 요구 신호(WRQ)를 인터럽트 신호로 하여 마이크로 컨트롤러(20)에 출력한다. 마이크로 컨트롤러(20)는 이 기입 요구 신호(WRQ)의 인터럽트를 수신하면, 그 우선도에 따라 접수하여 FIFO 버퍼(34)에의 기입 인터럽트 처리를 한다. 기입 요구 신호의 인터럽트 우선도가 낮은 경우에는 그 인터럽트 처리는 행하여지지 않는다. 기입 요구 신호(WRQ)는 나중에 상술하는 바와 같이 FIFO 버퍼(34)의 데이터가 비게 되어 통신 에러가 발생하는 상황을 미연에 회피하기 위해 최적의 기입 간격을 갖는 신호로서 선택된 것이다.
마이크로 컨트롤러(20)는 시스템에 최적의 기입 간격을 선택하기 위한 선택 신호(S38)를 레지스터(29)에 출력한다. 레지스터(29)에 입력된 선택 신호(S38)는 인코더(28)를 경유하여 실렉터(26)에 입력된다.
이와 같이 본 실시예에서는, 마이크로 컨트롤러(20)로부터 레지스터(29)에 출력되는 선택 신호(S38)에 의해, 시스템에 최적의 기입 간격을 임의로 선택할 수 있다. 따라서 송신해야 할 데이터 양, 송신의 빈도 또는 시스템 LSI 내부의 다른 인터럽트 신호의 우선도에 따라 시스템 LSI는 시스템에 최적의 기입 간격을 선택하여, FIFO 버퍼(34)의 데이터가 비워짐에 따른 통신 에러의 발생을 미연에 방지할 수 있다. 또한 시스템에 최적의 기입 간격을 고정할 수 있는 경우에는, 레지스터(29)의 값을 ROM 등에 저장하거나, 또는 배선으로 고정적으로 선택하여도 좋다. 단 그 경우에서도, 시스템 LSI의 유저가 최적의 기입 간격을 선택할 수 있다.
또 수신용의 통신 매크로(39)는 2선식 버스(7)를 통해서 다른 시스템(LSI)으로부터 송신된 데이터를 수신하고, 그 데이터를 내부 버스(21)를 통해서 마이크로 컨트롤러(20)에 출력한다.
도 4는 본 발명의 실시예에서, 송신용 통신 매크로(22)에 내장되는 FIFO 버퍼(34)에 저장 및 송신되는 데이터와, 송신용 통신 매크로(22)로부터 출력되는 기입 요구 신호의 관계를 나타내는 설명도이다.
또 도 5 내지 도 8은 FIFO 버퍼(34)에 저장 및 송신되는 데이터와, 라이트 포인터(31)와 리드 포인터(32)의 값을 나타내는 모식도이다. 도 4 내지 도 8에 의해 라이트 포인터(31)와 리드 포인터(32)의 값에 의해 기입 요구 신호를 다른 시간 간격으로 출력하는 방법을 설명한다.
상술한 바와 같이 FIFO 버퍼(34)는 8바이트의 기억 영역을 갖고, 연속해서 데이터를 송신할 경우에 송신 데이터를 1바이트씩 연속해서 입력하여, 입력한 차례로 1바이트씩 출력한다. 도 4의 FIFO 버퍼(34)의 데이터 신호에 붙여진 번호는 도 5내지 도 8의 FIFO 버퍼(34)에 붙여진 번호의 기억 영역에 저장되는 데이터를 나타낸다.
도 4a에 나타내는 케이스 1은 FIFO 버퍼(34) 내의 나머지 데이터가 1바이트가 되었을 때에 기입 요구 신호(WRQ1)가 출력되는 경우이다. 즉 기입 요구 신호(WRQ1)는 FIFO 버퍼(34)의 기억 영역(7)에 저장되어 있는 데이터가 송신되기 직전에 출력된다.
케이스 1의 기입 요구 신호(WRQ1)가 출력되는 타이밍을 도 5에 의해 설명한다. 도 5a는 데이터가 FIFO 버퍼(34)의 기억 영역(0~ 7)의 전부에 저장되어 있는 경우이다. 또한 데이터가 저장되어 있는 기억 영역을 흑색으로 나타낸다.
라이트 포인터(31)는 FIFO 버퍼(34)가 비었을 때 (000)이다. 입력되는 데이터가 1바이트씩 기억 영역(0)으로부터 기억 영역(1), 기억 영역(2)와 같은 차례로 저장될 때마다 라이트 포인터(31)는 1개씩 카운트업되고, 기억 영역(0~ 7)의 전부에 저장되면 (000)으로 돌아온다. 또 리드 포인터(32)는 아직 1바이트의 데이터도 판독하고 있지 않으므로 (000)이 되어 있다. 또한 리드 포인터(32)가 (000)이고 라이트 포인터(31)가 (111)으로부터 (000)로 변화할 때에, 상술한 풀플래그가 출력된다.
도 5b는 도 4a에서 원(41)으로 나타낸 기입 요구 신호(WRQ1)가 출력되는 타이밍을 나타낸다. FIFO 버퍼(34)의 기억 영역(0~ 6)의 데이터는 이미 판독되어 있어서, 기억 영역(7)의 데이터만이 남아 있다.
기억 영역(7)의 데이터만이 남아 있을 때는 리드 포인터(32)는 (111)이 되어 있고, 기억 영역(7)의 데이터가 판독될 때 리드 포인터(32)는 (111)으로부터 (000)으로 변화한다. 케이스 1의 기입 요구 신호(WRQ1)는 라이트 포인터(31)가 (000)이고 리드 포인터(32)가 (111)로부터 (000)로 변화할 때 출력되고, 상술한 엠프티플래그가 출력되는 타이밍과 동일하다.
즉 기입 요구 신호(WRQ1)는 FIFO 버퍼(34) 내의 공백 영역이 7바이트가 되면 발생하며, 라이트 포인터(31)의 값을 WP으로 하고, 리드 포인터(32)의 값을 RP로 하면 , 기입 요구 신호(WRQ1)는
|WP- RP|≥7
의 경우에 출력된다. 따라서 기입 요구 신호(WRQ1)의 발생 간격은 크고, 발생 빈도는 낮다.
도 4b에 나타내는 케이스 2는 FIFO 버퍼(34)의 나머지 데이터가 4바이트가 되었을 때에 기입 요구 신호(WRQ2)가 출력되는 경우이다. 즉 기입 요구 신호(WRQ2)는 FIFO 버퍼(34)의 기억 영역(4)에 저장되어 있는 데이터가 송신되기 직전에 출력된다.
케이스 2의 기입 요구 신호(WRQ2)가 출력되는 타이밍을 도 6에 의해 설명한다. 도 6a는 도 5a와 같이 데이터가 FIFO 버퍼(34)의 기억 영역(0~ 7)의 전부에 저장되어 있는 경우이다.
도 6b는 도 4b에서 원(42)으로 나타낸 기입 요구 신호(WRQ2)가 출력되는 타이밍을 나타낸다. FIFO 버퍼(34)의 기억 영역(0~ 3)의 데이터는 이미 판독되어 있어서, 기억 영역(4~ 7)의 데이터가 남아 있다.
리드 포인터(32)는 다음에 판독해야 할 기억 영역(4)을 나타내는 (100)이 되어 있고, 기억 영역(4)의 데이터가 판독될 때, 리드 포인터(32)는 (100)으로부터 (101)로 변화한다. 케이스 2의 기입 요구 신호(WRQ2)는 FIFO 버퍼(34) 내의 공백 영역이 4바이트가 되었을 때에 출력된다. 즉 라이트 포인터(31)가 (000)이고, 리드 포인터(32)가 (100)으로부터 (101)로 변화할 때 출력되므로, 기입 요구 신호(WRQ2)는
|WP-RP|≥4
의 경우에 출력된다. 따라서 기입 요구 신호(WRQ2)의 발생 간격은 WRQ1보다 좁고, 발생 빈도는 높다.
도 4c에 나타내는 케이스 3은 FIFO 버퍼(34)의 나머지 데이터가 6바이트가 되었을 때, 즉 2바이트의 데이터가 출력되었을 때 기입 요구 신호(WRQ3)가 출력되는 경우이다. 즉 기입 요구 신호(WRQ3)는 FIFO 버퍼(34)의 기억 영역(2)에 저장되어 있는 데이터가 송신되기 직전에 출력된다.
케이스 3의 기입 요구 신호(WRQ3)가 출력되는 타이밍을 도 7에 의해 설명한다. 도 7a는 도 5a와 같이 데이터가 FIFO 버퍼(34)의 기억 영역(0~ 7)의 전부에 저장되어 있는 경우이다.
도 7b는 도 4c에서 원(43)으로 나타낸 기입 요구 신호(WRQ3)가 출력되는 타이밍을 나타낸다. FIFO 버퍼(34)의 기억 영역(0, 1)의 데이터는 이미 판독되어 있어서, 기억 영역(2~ 7)의 데이터가 남아 있다.
리드 포인터(32)는 기억 영역(2)을 나타내는 (010)이 되어 있고, 기억 영역(2)의 데이터가 판독될 때 리드 포인터(32)는 (010)으로부터 (011)로 변화한다. 케이스 3의 기입 요구 신호(WRQ3)는 FIFO 버퍼(34) 내의 공백 영역이 2바이트가 되었을 때에 출력된다. 즉 라이트 포인터(31)가 (000)이고 리드 포인터(32)가 (010)으로부터 (011)로 변화할 때 출력되므로, 기입 요구 신호(WRQ3)는
|WP-RP|≥2
의 경우에 출력된다. 따라서 기입 요구 신호(WRQ3)의 발생 간격은 WRQ2보다 좁고, 발생 빈도는 높다.
도 4d에 나타내는 케이스 4는 기입 요구 신호(WRQ4)가 FIFO 버퍼(34)의 나머지 데이터가 7바이트가 되었을 때, 즉 1바이트의 데이터가 출력되었을 때에 출력되는 경우이다. 즉 기입 요구 신호(WRQ4)는 FIFO 버퍼(34)의 기억 영역(1)에 저장되어 있는 데이터가 송신되기 직전에 출력된다.
케이스 4의 기입 요구 신호(WRQ4)가 출력되는 타이밍을 도 8에 의해 설명한다. 도 8a는 도 5a와 같이 데이터가 FIFO 버퍼(34)의 기억 영역(0~ 7)의 전부에 저장되어 있는 경우이다.
도 8b는 도 44에서 원(44)으로 나타낸 기입 요구 신호(WRQ4)가 출력되는 타이밍을 나타낸다. FIFO 버퍼(34)의 기억 영역(0)의 데이터는 이미 판독되어 있어서, 기억 영역(1~7 )의 데이터가 남아 있다.
리드 포인터(32)는 기억 영역(1)을 나타내는 (001)이 되어 있고, 기억 영역(1)의 데이터가 판독될 때 리드 포인터(32)는 (001)으로부터 (010)으로 변화한다. 케이스 4의 기입 요구 신호(WRQ4)는 FIFO 버퍼(34) 내의 공백 영역이 1바이트가 되었을 때에 출력된다. 즉 라이트 포인터(31)가 (000)이고 리드 포인터(32)가 (001)으로부터 (010)으로 변화할 때 출력되므로, 기입 요구 신호(WRQ4)는
|WP-RP|≥1
의 경우에 출력된다. 따라서 기입 요구 신호(WRQ4)의 간격은 가장 좁고, 발생 빈도는 가장 높다.
이와 같이 케이스 1은 8바이트 송신하고, 송신 데이터가 없어지기 직전에 기입 요구 신호(WRQ1)가 발생하고, 케이스 2는 4바이트 송신하고, 4바이트 기입하는 것이 가능해지면 기입 요구 신호(WRQ2)가 발생한다.
또 케이스 3은 2바이트 송신하고, 2바이트 기입하는 것이 가능해지면 기입 요구 신호(WRQ3)가 발생하고, 케이스 4는 1바이트 송신하고, 1바이트라도 기입하는 것이 가능해지면 기입 요구 신호(WRQ4)가 발생한다.
케이스 1은 기입 요구 신호(WRQ1)가 발생하는 회수는 적지만, FIFO 버퍼(34)가 비기 전에 데이터를 기입하여야 할 최대 시간(ta)이 짧고, ta 시간 내에 적어도 1바이트의 데이터를 기입하지 않으면 통신 에러가 발생한다.
한편 케이스 4의 경우에는 기입 요구 신호(WRQ4)가 발생하는 회수는 많지만,FIFO 버퍼(34)가 비기 전에 데이터를 기입하여야 할 최대 시간(td)은 길다. 따라서 td 시간 내의 몇개인가의 기입 요구 신호(WRQ4)가 다른 우선도가 높은 인터럽트에 의해 무시되어도 통신 에러가 발생할 가능성은 낮다.
또 케이스 3과 케이스 4의 경우에는, 기입 요구 신호(WRQ3, WRQ4)가 발생하는 회수 및 FIFO 버퍼(34)가 비기 전에 데이터를 기입하여야 할 최대 시간(tb, tc)은 케이스 1과 케이스 4의 중간에 있어서, 케이스 1과 케이스 4의 장점과 단점을 겸비하고 있다.
따라서 본 실시예에서는 실렉터(26)로 기입 요구 신호(WRQ1~ WRQ4)를 선택함으로써, 시스템에서 최적의 기입 요구 신호의 타이밍을 선택할 수 있어서, FIFO 버퍼(34)가 비게 되어 통신 에러가 발생하는 가능성을 현저하게 저하시킬 수 있다.
또 본 실시예에서는 레지스터(29)에 출력하는 선택 신호(38)에 의해 케이스 1~4를 선택할 수 있으므로, 인터럽트의 우선도가 높은 다른 인터럽트 처리가 많을 때는, FIFO 버퍼(34)에의 기입 요구 신호가 무시될 가능성이 높으므로, 케이스 4를 선택하면 된다. 한편 인터럽트의 우선도가 높은 다른 인터럽트 처리가 적을 때는 케이스 1을 선택하고, 마이크로 컨트롤러(20)가 행하는 기입 요구의 인터럽트 처리의 부담을 경감할 수 있다.
이와 같이 본 실시예에 의하면, FIFO 버퍼(34)에 대한 기입 요구 신호가 출력되는 간격, 빈도를 유저가 자유롭게 선택할 수 있으므로, 그 시스템에 최적의 송신 처리의 제어가 가능해진다.
또한 본 실시예에서는, 4개의 기입 요구 신호(WRQ1~ WRQ4)로부터 1개를 선택하지만, 발생 간격이 다를 때마다 다수의 기입 요구 신호를 생성하고, 기입 요구 신호가 출력되는 타이밍을 더욱 세밀하게 선택할 수 있게 하여도 좋다.
도 9는 본 발명의 실시예의 시스템 LSI가 통신 매크로를 통해서 다른 시스템 LSI에 데이터를 전송할 경우의 신호의 흐름을 나타낸다.
시스템 LSI 내의 마이크로 컨트롤러는 내부 버스를 통해서 통신 매크로에 통신 액티브 요구를 출력한다. 이에 따라 통신 매크로는 통신 가능 상태가 된다.
다음에 마이크로 컨트롤러는 데이터 송신 요구를 통신 매크로에 줌과 동시에, 통신 매크로 내의 FIFO 버퍼(34)에 데이터를 기입한다. FIFO 버퍼(34)의 기억 영역은 상술한 바와 같이 8바이트로 한다.
FIFO 버퍼(34)에 8바이트의 데이터가 기입되면, 통신 매크로는 기입된 데이터를 다른 시스템 LSI에 쓰기입된 차례로 출력한다. 그 사이에 통신 매크로는 데이터가 올바르게 송신되어 있는지의 여부를 감시하여, 패리티 또는 타이밍 통지를 마이크로 컨트롤러에 출력한다.
또한 통신 매크로는 FIFO 버퍼(34)가 비지 않도록 기입 요구를 마이크로 컨트롤러에 출력한다. 본 실시예에서는 기입 요구를 출력하는 간격을 케이스 1~4 중으로부터 선택할 수 있으므로, 통신 에러가 발생하는 가능성을 저하시킬 수 있다.
데이터가 다른 시스템 LSI에 올바르게 송신되면, 다른 시스템 LSI는 통신 매크로에 데이터 수신 확인 신호를 출력한다. 통신 매크로는 데이터 수신 확인 신호를 수신하면, 마이크로 컨트롤러에 애크날리지 신호를 출력하고, 데이터가 올바르게 송신된 것을 통지한다.
FIFO 버퍼(34) 내의 데이터가 송신됨으로써 FIFO 버퍼(34) 내에 공백 영역이 발생한다. 이 공백 영역에 따라 기입 인터럽트 요구(WRQ)가 마이크로 컨트롤러(20)에 출력된다. 마이크로 컨트롤러(20)는 기입 요구 신호(WRQ)를 접수할지의 여부를 판단하고, 접수할 경우에는 FIFO 버퍼(34)에 새로운 데이터의 기입을 한다. 단, 기입 인터럽트가 다른 우선도가 높은 인터럽트에 의해 거절되면, FIFO 버퍼(34)에의 데이터의 기입이 행하여지지 않아서, 통신 에러가 발생하는 경우도 있다.
도 10은 본 발명의 실시예의 시스템 LSI에서, 도 3에 나타낸 송신용 통신 매크로(22)에 인터럽트 플래그 회로(60), 인터럽트 비트 레지스터(57) 및 AND 회로(53)를 부가한 것이다.
실렉터(26)로부터 출력되는 기입 요구 신호(WRQ)는 인터럽트 플래그 회로(60)에 입력된다. 인터럽트 플래그 회로(60)는 인터럽트 플래그에 의해 인터럽트 접수 가능 상태인지의 여부를 확인하고, 인터럽트 접수 가능 상태이면 기입 인터럽트 신호(S6)를 출력한다.
인터럽트 허가 비트 레지스터(57)는 마이크로 컨트롤러(20)로부터 내부 버스(21)를 통해서 보내져오는 인터럽트 허가 신호(S4)에 의해 기입 요구에 대하여 인터럽트 요구를 출력할지의 여부를 제어한다.
AND 회로(53)는 인터럽트 허가 비트 신호(S5)에 의해 기입 인터럽트 신호(S6)를 출력할지의 여부를 제어한다. 즉 인터럽트 허가 비트 신호(S5)가 이네이블이면 기입 요구 신호(S6)에 따라 기입 인터럽트 신호(WINT)를 출력한다. 한편 인터럽트 허가 비트 신호(S5)가 디세이블이면 기입 요구가 있어도 기입 인터럽트요구는 출력되지 않는다. AND 회로(53)를 통과한 기입 인터럽트 신호(WINT)는 마이크로 컨트롤러(20)에 출력된다.
도 11은 인터럽트 플래그 회로(60)의 블록도의 일례이다. 인터럽트 플래그 회로(60)에 의해 인터럽트 접수 가능 상태인지의 여부가 확인되어, 기입 요구 신호(WRQ)가 기입 인터럽트 신호(WINT)로서 출력되는 동작에 대하여 설명한다.
(1) 인터럽트가 발생하는지 발생하지 않는지를 나타내는 인터럽트 플래그로서, 마이크로 컨트롤러(20)는 신호(S1)=0 를 내부 버스(21)에 출력하여, 플립플롭(50)에 0을 기입하고, 반전 출력(QX)을 QX=1로 한다. 반전 출력(QX)=1은 NOR 회로(51, 52)로 구성되는 래치 회로의 출력(S6)을 0으로 하여, 인터럽트가 발생하지 않은 상태라고 한다.
이 상태에서, 1 클록 후에 클리어용 제어 회로(56)가 플립플롭(50)을 세트하여 QX=0으로 한다. 기입 요구 신호(WRQ)는 아직 0이므로, S6은 0 그대로이고, 이것으로 인터럽트 접수 가능 상태가 된다.
(2) 인터럽트 접수 가능 상태에서 기입 요구 신호(WRQ)=1이 되면, NOR 회로(52)의 출력이 0이 되고, NOR 회로(51)의 출력이 0으로부터 1이 되어, S6=1이 된다. 인터럽트 비트 허가 레지스터(57)의 출력(S5)(인터럽트 허가 비트)이 1이면, 기입 인터럽트 신호(WINT)=1이 출력되어, 마이크로 컨트롤러(20)는 기입 인터럽트 루틴을 실행한다.
(3) 다음에 마이크로 컨트롤러(20)는 NOR 회로(51, 52)로 구성되는 래치 회로의 출력(S6)이 1인 것, 즉 인터럽트가 발생한 것을 확인한다. 마이크로컨트롤러(20)는 내부 버스(21)를 통해서 확인 신호(S3)=0을 출력한다. S6=1이면 NOR 회로(54)의 출력은 0이 되고, 트랜지스터(54)가 오프가 되어 내부 버스(21)는 1 그대로이다.
한편 S6=0이면 NOR 회로(54)의 출력은 1이 되고, 트랜지스터(54)가 온이 되어 내부 버스(21)는 0이 된다. 이에 따라 마이크로 컨트롤러(20)는 NOR 회로(51, 52)로 구성되는 래치 회로의 상태, 즉 S6이 0인지 1인지를 확인할 수 있다.
(4) 다음의 기입 요구 신호(WRQ)를 출력할 수 있는 상태로 하기 위해, 마이크로 컨트롤러(20)는 신호(S1)을 0으로 하여 플립플롭(50)을 클리어한다. 따라서 QX=1 또 S6=0이 되고, 인터럽트는 발생하지 않은 상태가 된다. 플립플롭(50)은 1 클록 후에 세트되고, 그 후 (I)와 동일 상태가 된다.
도 12는 상기한 인터럽트 플래그 회로(60)의 동작을 나타내는 순서도이다. 스텝(S100)에서는 마이크로 컨트롤러(20)는 인터럽트 플래그 회로(60)에 인터럽트 클리어 신호(S1)=0을 출력하여, 인터럽트 플래그 회로(60)를 인터럽트 접수 가능 상태로 한다.
스탭(S101)에서는 기입 요구 신호(WRQ)가 1이 될 때까지 대기하고, 기입 요구 신호(WRQ)=1이 되면 스탭(S102)으로 이행한다. 스텝(S102)에서는 인터럽트 비트(S5)=0의 경우에는 기입 인터럽트 신호(WINT)는 출력되지 않는다.
인터럽트 허가 비트=1의 경우에는, 스탭(S103)에서 기입 인터럽트 신호(WINT)=1이 마이크로 컨트롤러(20)에 출력된다. 마이크로 컨트롤러(20)는 스탭(S104)에서 인터럽트 확인 신호(S3)를 0으로 하여, 인터럽트가 발생한 것을 확인한다. 또한 인터럽트 확인 후는 스탭(S100)으로 되돌아와서 같은 스탭을 반복한다.
이와 같이 본 실시예의 통신 매크로에서는, 마이크로 컨트롤러(20)가 인터럽트 허가 비트(57)를 제어함으로써 기입 인터럽트 신호(WINT)를 출력할지의 여부를 변경할 수 있다.
이상 설명한 바와 같이 제 1 발명에 의하면, 송신용 FIFO 버퍼에 송신 데이터를 기입 타이밍을 유저가 사용하는 시스템에 최적의 간격으로 설정할 수 있다.
따라서 통신 에러가 발생하는 상황을 미연에 회피할 수 있음과 동시에, 통신 에러의 발생에 의해 재송신을 하는 빈도를 저하시킬 수 있다. 또 소프트웨어의 부담을 경감하고, 대규모의 시스템 제어의 효율을 향상시킬 수 있다.
[제 2 실시예]
도 13은 본 발명의 실시예의 집적 회로 장치(100)의 블록도이다. 집적 회로 장치(100)는 호스트 컴퓨터(201)에 대하여 통신 회선(202)을 통해서 데이터를 송수신하는 버퍼(102), 버퍼(102)에 대한 데이터의 기입 또는 판독 대상처의 어드레스를 설정하는 어드레스 설정부(192), 어드레스 설정부(192)에 대한 포인터 값과 플래그를 설정하는 어드레스 설정 제어부(191), 버퍼(102)에 대한 데이터의 기입 판독부인 레지스터(193), 버퍼(102)를 통신 포맷에 따라서 분할할 경우의 바이트수를 설정하는 사이즈 설정부(103), 통신 프로토콜 제어 프로그램을 저장하는 ROM(190), CPU(180) 등을 갖는다.
버퍼(102)는 복수의 통신 포맷에 대응하여 분할 가능하다. 이 때문에 어드레스 설정부(192)에는 버퍼(102)가 분할된 경우에, 분할된 각각의 서브버퍼에 대한 리드 포인터(RP#01~ RP#2) 및 라이트 포인터(WP#0~ WP#2)가 설치된다. 또한 버퍼(102)가 비분할일 경우에는 리드 포인터(RPM) 및 라이트 포인터(WPM)가 사용된다.
어드레스 설정 제어부(191)는 어드레스 설정부(192)의 포인터 값을 설정함과 동시에, 버퍼(102)가 분할된 경우에 분할된 각각의 서브버퍼에 대한 엠프티플래그(EF#0~ EF#2) 및 풀플래그(FF#0~ FF#2)를 갖는다. 버퍼(102)가 비분할일 경우에는 엠프티플래그(EFM) 및 풀플래그(FFM)가 사용된다. 또 버퍼 분할 플래그(BDF)는 버퍼(102)의 분할 또는 비분할을 나타내는 플래그이다.
버퍼(102)에 대한 데이터의 기입 및 판독을 하는 레지스터(193)는 00H 번지로부터 03H 번지에 할당된다. 레지스터(193)의 00H 번지로부터 02H 번지는 분할된 각각의 서브버퍼에 대한 기입 판독 레지스터로서 이용되고, 03H 번지는 버퍼(102)가 비분할일 때에 이용된다.
CPU(180)와 레지스터(193) 등은 데이터 버스(194) 및 어드레스 버스(195)로 접속된다. 또 CPU(180)는 레지스터(193) 및 어드레스 설정부(192)에 기입 스트로브 신호(197) 또는 판독 스트로브 신호(196)를 출력하여, 레지스터(193) 내의 송신 데이터를 버퍼(102)에 기입하거나, 버퍼(102)로부터 수신 데이터를 레지스터(193)에 판독하는 등의 처리를 실행한다.
또 버퍼(102)로부터 수신 데이터를 판독하거나 송신 데이터를 기입할 경우, 어드레스 설정 제어부(191)는 어드레스 설정부(192)에 리드 라이트 포인터 선택 신호(130), 포인터치 설정 신호(131, 133)를 출력하고, 어드레스 설정부(192)는 어드레스 설정 제어부(191)에 엠프티플래그 설정 신호(132), 풀플래그 설정 신호(134)를 출력한다.
다음에 집적 회로 장치(100)가 호스트 컴퓨터(201)로부터 데이터를 수신할 경우에 대하여 각 부의 동작을 순서에 따라 설명한다.
(1) 먼저 CPU(180)는 ROM(190)에 저장되어 있는 포맷에 따라서 버퍼(102)를 분할하여 얻어지는 서브버퍼의 사이즈를 나타내는 바이트수 a, b, c를 사이즈 설정부(103)에 기입한다. 그리고 집적 회로 장치(100)가 데이터를 수신할 경우, 어드레스 설정 제어부(191)는 버퍼 분할 플래그(BDF)를 '0'으로 설정하고, 버퍼(102)를 비분할로 설정한다.
(2) 다음에 어드레스 설정 제어부(191)는 어드레스 설정부(192)의 비분할용의 리드 포인터(RPM)와 라이트 포인터(WPM)에 초기치 '0'을 설정하고, 또한 소정의 영역에 깊이 'a+b+c'를 설정한다. 또한 깊이 'a+b+c'는 수신 데이터의 전체 바이트수이다.
(3) 비분할용 라이트 포인터(WPM)에 초기치 '0'이 설정되면, 그 포인터 값을 어드레스로 하여 버퍼(102)는 데이터를 수신하여 기입하고, 기입할 때마다 비분할용 라이트 포인터(WPM)를 인크리먼트한다.
(4) 비분할용 라이트 포인터(WPM)가 인크리먼트되어, 비분할용 리드 포인터(RPM)의 값과의 차가 깊이 'a+b+c'와 동일해졌을 때, 즉
WPM-RPM=a+b+c
일 때에 어드레스 설정 제어부(191) 내의 비분할용 풀플래그(FFM)는 '1'로 설정된다. 이 비분할용 풀플래그(FFM)의 '1'로의 설정은 어드레스 설정부(192)에 의해 상기 연산식으로부터 풀플래그 설정 신호(134)가 생성됨으로써 행하여진다.
(5) 비분할용 풀플래그(FFM)가 '1'이 되면, 어드레스 설정 제어부(191)는 어드레스 설정부(192) 내의 분할용 리드 포인터(RP#0, RP#1, RP#2)에 초기치 '0', 'a', 'a+b'을 설정하고, 분할용 라이트 포인터(WP#0, WP#1, WP#2)에 서브버퍼의 사이즈(깊이) a, b, c에 대응하여 'a', 'a+b', 'a+b+c'을 설정하여 유효화한다. 여기서 깊이 'a', 'b', 'c'은 포맷에 따른 수신 데이터의 바이트수이다. 이에 따라 버퍼(102)는 논리적으로 분할된다. 또 비분할용 풀플래그(FFM)='1'의 비반전 논리에 의해 버퍼 분할 플래그(BDF)는 '1'로 설정되어, 분할용 리드, 라이트 포인터가 유효화된다.
(6)버퍼(102)가 논리적으로 분할되면, CPU(180)로부터 레지스터(193)에의 00H 번지 판독 명령에 응답하여, 분할용 리드 포인터(RP#0)의 포인터 값을 어드레스로 하여 버퍼(102)로부터 데이터가 판독되어, 레지스터(193)의 00H 번지에 기입된다. 그리고 분할용 리드 포인터(RP#0)가 인크리먼트된다.
(7) 레지스터(193)의 00H 번지에 대한 데이터의 판독이 종료하여, 분할용 리드 포인터(RP#0)의 값과 분할용 라이트 포인터(WP#0)의 값이 동일해졌을 때, 즉
RP#0=WP#0=a
일 때에, 어드레스 설정 제어부(191) 내의 분할용 엠프티플래그(EF#0)가 '1'로 설정된다. 이 분할용 엠프티플래그(EF#0)의 '1'의 설정은 어드레스 설정부(192)에 의해 상기 연산식으로부터 엠프티플래그 설정 신호(132)가 생성됨으로써 행하여진다.
(8) 분할된 다음의 서브버퍼의 데이터를 판독하기 위해, 상기한 (6), (7)을 레지스터(193)의 001H 번지에 대하여 행한다.
(9) 분할된 다음 다음의 서브버퍼의 데이터를 판독하기 위해, 상기한 (6), (7)을 레지스터(193)의 002H 번지에 대하여 행한다.
(10) 어드레스 설정 제어부(191)는 분할용 엠프티플래그(EF#0, EF#1, 1EF#2)가 전부 1이 됨에 응답하여, 그들의 NAND 논리에 의해 버퍼 분할 플래그(BDF)를 '0'으로 설정하여, 버퍼(102)를 비분할로 전환한다. 이에 따라 버퍼(102)는 다음의 데이터의 수신이 가능해진다.
다음에 집적 회로 장치(100)가 호스트 컴퓨터(201)에 데이터를 송신할 경우에 대하여 설명한다. 데이터 송신은 데이터 수신과 반대의 동작이 되고, 최초에 분할 상태의 서브버퍼에 송신 데이터를 기입하고, 기입 종료 후에 서브버퍼를 비분할 상태의 단일의 버퍼로 변환하여 데이터를 송신한다.
즉 사이즈 설정부(103)는 송신 데이터가 서브버퍼에 기입되기 전에, 송신 포맷에 맞추어서 미리 서브버퍼의 사이즈를 나타내는 a, b, c로 설정되고, 버퍼(102)는 사이즈 설정부(103)의 설정에 따라 3개의 서브버퍼에 논리적으로 분할된다.
논리적으로 분할된 3개의 서브버퍼에 송신 데이터가 기입되면, 어드레스 설정 제어부(191)는 버퍼 분할 플래그(BDF)를 '0'으로 리세트하고, 3개의 서브버퍼를 단일의 비분할 버퍼(102)에 되돌린다.
비분할 버퍼(102)로부터 송신 데이터가 송신되지만, 비분할 버퍼(102)에는 분할 시에 사이즈 설정부(103)의 사이즈에 따른 송신 데이터가 저장되므로, 비분할 버퍼(102)는 통신 프로토콜로 정해진 송신 포맷의 데이터열(101)을 송신할 수 있다.
도 14~ 도 16은 본 발명의 실시예의 집적 회로 장치(100)에서의 데이터 수신시의 설명도(I)~ (III)이다. 도 14~ 도 16에 의해 데이터 수신에서의 버퍼(102) 등의 상태를 설명한다.
도 14a는 통신 프로토콜로 정해진 수신 포맷의 데이터열(101)을 나타내고, 데이터열(101)은 2바이트의 데이터(A), 4바이트의 데이터(B), 2바이트의 데이터(C)의 차례로 통신 회선(202)을 통해서 수신된다.
도 14b는 데이터열(101)의 선두로부터 2바이트의 데이터(A)를 수신한 경우의 버퍼(102), 어드레스 설정부(192), 어드레스 설정 제어부(191)의 상태를 나타낸다. 이 경우, 어드레스 설정부(192) 내의 비분할용 라이트 포인터(WPM)는 '2'가 되어, 버퍼(102)에 2바이트의 데이터(A)가 기입된 것을 나타낸다. 어드레스 설정부(192) 내의 비분할용 리드 포인터(RPM)는 데이터가 아직 판독되어 있지 않기 때문에 계속 초기치 '0' 그대로이다.
한편 어드레스 설정 제어부(191) 내의 비분할용 엠프티플래그(EFM)는 버퍼(102) 내에 데이터가 존재하여 WPM≠RPM이므로 '0'이고, 비분할용 풀플래그(FFM)는 데이터가 버퍼(102)에 전부 기입되어 있지 않고 WPM-RPM=2<8이므로 '0'이다. 또 버퍼 분할 플래그(BDF)는 '0'으로서 버퍼(102)가 1개의 비분할 버퍼로서 동작하고 있는 것을 나타낸다.
도 14c는 데이터열(101)의 수신이 완료한 경우의 버퍼(102) 등의 상태를 나타낸다. 이 경우, 어드레스 설정부(192) 내의 비분할용 라이트 포인터(WPM)는 '8'이 되고, 버퍼(102)에 데이터열(101)의 8바이트의 데이터(A, B, C)가 전부 기입된 것을 나타낸다. 즉 WPM-RPM=8이 되고, 풀플래그 설정 신호(134)에 의해 어드레스 설정 제어부(191) 내의 비분할용 풀플래그(FFM)는 '1'로 세트되어, 버퍼(102)가 수신 완료인 것을 나타낸다. 다음에 비분할용 풀플래그(FFM)='1'의 비반전 논리에 의해 버퍼 분할 플래그(BDF)가 '1'로 설정되어 버퍼는 분할 상태가 된다.
도 15a는 사이즈 설정부(103)의 데이터에 따라 분할된 버퍼(102) 등의 상태를 나타낸다. 이 경우, 사이즈 설정부(103)는 수신하는 데이터열(101)의 수신 포맷에 맞추어서, 미리 Pt0='2', Pt1='4', Pt2='2'로 설정된다. 이 사이즈 설정부(103)에의 설정은 CPU(180)가 ROM(190) 내의 프로그램에 따라서 행한다.
이와 같이 버퍼(102)가 데이터열(101)의 수신을 완료하여, 버퍼 분할 플래그(BDF)가 '1'로 세트되면, 다음과 같이 버퍼(102)는 사이즈 설정부(103)에서 설정한 사이즈의 서브버퍼(120, 121, 122)로 논리적으로 분할된다.
즉 어드레스 설정부(192)의 분할용 리드 포인터(RP#0, RP#1, RP#2)에는 각 서브버퍼의 선두 어드레스를 나타내는 초기치 '0', '2', '6'이 설정되고, 분할용 라이트 포인터(WP#0, WP#1, WP#2)에는 각 서브버퍼의 사이즈에 대응한 최종 어드레스를 나타내는 '2', '6', '8'이 설정되어 유효화된다.
또 버퍼(102)에는 데이터가 기입되어 있고, WP≠RP이 되어 있으므로, 어드레스 설정 제어부(191)의 분할용 엠프티플래그(EF#0, EF#1, EF#2)는 전부 '0'으로 설정되고, WP-RP=서브버퍼 사이즈가 되어 있으므로, 분할용 풀플래그(FF#0, FF#1, FF#2)는 전부 '1'로 설정된다. 이들 엠프티플래그, 풀플래그의 설정은 리드 포인터(RP)와 라이트 포인터(WP) 및 서브버퍼 사이즈가 설정되면, 어드레스 설정부(192)가 생성하는 풀플래그 설정 신호(134), 엠프티플래그 설정 신호(132)에 의해 자동적으로 행하여진다.
도 15b는 버퍼(102)의 판독시의 타임차트를 나타낸다. 집적 회로 장치(100) 내의 CPU(180)는 판독 스트로브 신호(RDS)와 어드레스 신호(ADD)를 출력하고, 각 서브버퍼(122, 121, 120)로부터 수신 데이터의 판독을 한다. 이 경우, 상술한 바와 같이 서브버퍼(122, 121, 120)에는 각각 레지스터(193)의 00H 번지, 01H번지, 02H번지가 할당된다.
도 16b에 나타낸 바와 같이, 시간(t1, t2)에서 서브버퍼(122)에 저장된 2바이트의 데이터(A1, A2)가 판독되고, 시간(t3~ t6)에서 서브버퍼(121)에 저장된 4바이트의 데이터(B1, 1B2, B3, B4)가 판독된다. 또 시간(t7, t8)에서 서브버퍼(120)에 저장된 2바이트의 데이터(C1, C2)가 판독된다. 또한 도 15b에서는 서브버퍼(122, 121, 120)에의 액세스는 그 순번으로 연속하여 할 경우를 나타내지만, 어드레스 신호(ADD)를 변경함으로써 각 서브버퍼에의 액세스를 1개씩 임의의 순번으로 하는 것도 가능하다.
도 16a는 시간(t4)에서의 버퍼(102) 등의 상태를 나타낸다. 시간(t4)에서는 서브버퍼(122)의 데이터(A)는 전부 판독되어 있고, 어드레스 설정부(192) 내의 분할용 리드 포인터(RP#0)는 '2'가 되어, RP#0=WP#0=2가 된 결과, 어드레스 설정 제어부(191) 내의 분할용 엠프티플래그(EF#0)는 '1'로 세트된다. 또한 데이터(A)가 판독됨으로써 분할용 풀플래그(FF#0)는 '0'으로 리세트되어 있다.
시간(t4)에서는 도 15b에 나타낸 바와 같이, 서브버퍼(121)는 데이터(B2)까지 판독되어 있고, 어드레스 설정부(192) 내의 분할용 리드 포인터(RP#1)는 '4'가 되고, RP#1≠WP#1이므로 분할용 엠프티플래그(EF#1)는 '0' 그대로이다. 또 데이터(B)가 판독 중이므로, 어드레스 설정 제어부(191) 내의 분할용 풀플래그(FF#1)는 '1' 그대로이다.
도 16b는 시간(t8)에서의 버퍼(102) 등의 상태를 나타낸다. 시간(t8)에서는 각 서브버퍼(122, 121, 120)의 모든 데이터가 판독되어 있고, 어드레스 설정부(192) 내의 분할용 리드 포인터(RP#0, RP#1, RP#2)는 각각 '2', '6', '8'이 되어, 분할용 라이트 포인터(WP#0, WP#1, WP#2)의 값과 같아진다. 따라서 어드레스 설정 제어부(191) 내의 분할용 엠프티플래그(EF#0, EF#1, EF#2)는 전부 '1'로 세트된다. 또 분할용 풀플래그(FF#0, FF#1, FF#2)는 이미 전부 '0'으로 리세트되어 있다.
도 16c는 판독 종료 후의 버퍼(102) 등의 상태를 나타낸다. 시간(t8)에서 어드레스 설정 제어부(191) 내의 분할용 엠프티플래그(EF#0, EF#1, EF#2)가 전부 '1'로 세트되면, 그들의 NAND 논리에 의해 자동적으로 버퍼 분할 플래그(BDF)가 '0'으로 리세트되고, 비분할용 리드, 라이트 포인터(RPM, WPM)가 유효화되어, 버퍼(102)는 8바이트의 1개의 비분할 버퍼에 되돌아간다. 또 비분할용 리드 포인터(RPM) 및비분할용 라이트 포인터(WPM)는 '0'이 되고, 버퍼 사이즈=8이 되어 다음의 데이터를 수신하기 위한 대기 상태가 된다. 또한 WPM=RPM에 의해 비분할용 엠프티플래그(EFM)는 '1'이 되고, WPM-RPM<8에 의해 비분할용 풀플래그(FFM)는 '0'이 된다.
이와 같이 1개의 실시예의 집적 회로 장치(100)의 버퍼(102)는 데이터 수신시에는 1개의 비분할 버퍼로서 데이터 수신이 가능하고, 수신 데이터의 판독시는 사이즈 설정부(103)의 설정에 의해 수신 포맷에 대응한 사이즈의 서브버퍼로서 독립적으로 판독 가능하다. 이 때문에 다른 데이터 포맷에 대응하여 유연성이 있는 송수신 버퍼의 구성이 가능해진다.
도 17~ 도 19는 본 발명의 실시예의 집적 회로 장치(100)에서의 데이터 송신시의 설명도(I)~(III)이다. 도 17~ 도 19에 의해 데이터 송신에서의 버퍼(102) 등의 상태를 설명한다.
도 17a는 송신 데이터의 기입 전의 버퍼(102), 어드레스 설정부(192), 어드레스 설정 제어부(191), 사이즈 설정부(103)의 상태를 나타낸다. 사이즈 설정부(103)는 송신 포맷에 맞추어서 미리 pt0='2', pt1='4', pt2='2'로 설정된다.
본 실시예의 집적 회로 장치(100)는 전회의 데이터 송신이 완료하면, 어드레스 설정 제어부(191) 내의 버퍼 분할 플래그(BDF)가 '1'로 세트되고, 버퍼(102)는 사이즈 설정부(103)의 설정에 따라 3개의 서브버퍼(120, 121, 22)로 논리적으로 분할된다.
이 경우, 어드레스 설정부(192) 내의 분할용 라이트 포인터(WP#0, WP#1,WP#2)에는 각 서브버퍼의 선두 어드레스를 나타내는 초기치'0', '2', '6'이 설정되고, 분할용 리드 포인터 RP#0, RP#1, RP#2에도 초기치 '0', '2', '6'이 설정되어 유효화된다. 또한 각 서브버퍼의 사이즈'2', '4', '2'는 도시하지 않는 영역에 설정된다. 이 경우, 아직 버퍼(102)에 데이터가 기입되어 있지 않고, RP=WP이므로, 엠프티플래그 설정 신호(132)에 의해 어드레스 설정 제어부(191) 내의 분할용 엠프티플래그(EF#0, EF#1, EF#2)는 전부 '1'로 설정된다. 또 WP-RP=0<2, 4, 2이므로, 풀플래그 설정 신호(134)에 의해 분할용 풀플래그(FF#0, FF#1, FF#2)는 전부 '0'으로 설정된다.
도 17b는 버퍼(102)의 데이터 기입시의 타임차트이다. 집적 회로 장치(100) 내의 CPU(180)는 기입 스트로브 신호(WRS)와 어드레스 신호(ADD)를 출력하고, 각 서브버퍼에 송신 데이터의 기입을 한다. 이 경우, 서브버퍼(122, I21, 120)에는 각각 레지스터(193)의 00H 번지, 01H번지, 02H번지가 할당된다.
도 17b에 나타낸 바와 같이, 시 간(t1, t2)에서 버퍼(122)에 데이터(A1, A2)가 기입되고, 시간(t3~ t6)에서 버퍼(121)에 데이터(B1, B2, B3, B4)가 기입되고, 시 간(t7, t8)에서 버퍼(120)에 데이터(C1, C2)이 기입된다. 또한 도 5b에서는 서브버퍼(122, 121, 120)에의 기입을 그 순번으로 연속하여 할 경우를 나타내었지만, 어드레스 신호(ADD)를 변경함으로써 1개씩 임의의 순번대로 기입하는 것도 가능하다.
도 18a는 시간(t4)에서의 버퍼(102) 등의 상태를 나타낸다. 시간(t4)에서는 서브버퍼(122)에 데이터(A)가 전부 기입되어 있고, 어드레스 설정부(192) 내의 분할용 라이트 포인터(WP#0)는 '2'가 되어, WP#0-RP#0=2가 되므로, 어드레스 설정 제어부(191) 내의 분할용 풀플래그(FF#0)는 '1'이 되어 있다. 또한 데이터(A)가 기입됨으로써 WP#0≠RP#0이 되고, 분할용 엠프티플래그(EF#0)는 '0'이 되어 있다. 서브버퍼(122)에 데이터(A)가 전부 기입되고, 분할용 풀플래그(FF#0)가 '1'로 설정되면, 어드레스 설정 제어부(191)에 의해 분할용 라이트 포인터(WP#1)와 리드 포인터(RP#1)가 유효화된다.
그 후 서브버퍼(121)에는 시간(t4)까지에 데이터(B2)까지의 데이터가 기입되고, 어드레스 설정부(192) 내의 분할용 라이트 포인터(WP#1)는 '4'이 되어, WP#1-RP#1=2<4이므로 분할용 풀플래그(FF#1)는 '0'그대로이다. 단 데이터(B1, B2)가 기입되었기 때문에 WP#1≠RP#1이 되고, 어드레스 설정 제어부(191) 내의 분할용 엠프티플래그(EF#1)는 '0'이 되어 있다.
도 18b는 시간(t8)에서의 버퍼(102) 등의 상태를 나타낸다. 시간(t8)에서는 각 서브버퍼(122, 121, 120)에 모든 데이터가 기입되고, 어드레스 설정부(192) 내의 분할용 라이트 포인터(WP#0, WP#1, WP#2)는 각각 '2', '6', '8'이 되어, 분할용 리드 포인터(RP#0, RP#1, RP#2)의 값의 차이가 각각의 서브버퍼 사이즈와 같아진다. 따라서 어드레스 설정 제어부(191) 내의 분할용 풀플래그(FF#0, FF#1, FF#2)는 전부 '1'로 세트된다. 또 분할용 엠프티플래그(EF#0, EF#1, EF#2)는 RP≠WP가 된 시점에서 전부 '0'으로 리세트되어 있다.
도 19a는 송신 데이터의 기입 종료 후의 버퍼(102) 등의 상태를 나타낸다. 시간(t8)에서 어드레스 설정 제어부(191) 내의 분할용 풀플래그(FF#0, FF#1, FF#2)가 전부 '1'로 세트되면, NAND 논리에 의해 자동적으로 버퍼 분할 플래그(BDF)가 '0'으로 리세트되고, 비분할용 리드, 라이트 포인터(RPM, WPM)가 유효화되어 버퍼(102)는 8바이트의 비분할 버퍼로 되돌아간다. 또 어드레스 설정 제어부(191)에 의해 비분할용 라이트 포인터(WPM)는 '8'로 설정되고, 비분할용 리드 포인터(RPM)는 초기치 '0'으로 설정되어 데이터를 송신하기 위한 대기 상태가 된다. 또한 버퍼(102)는 아직 데이터를 송신하고 있지 않아서, WPM≠RPM이므로, 어드레스 설정 제어부(191)의 비분할용 엠프티플래그(EFM)는 '0'이 되고, WPM-RPM=8이므로 비분할용 풀플래그(FFM)는 '1'이 된다.
도 19b는 통신 프로토콜로 정해진 송신 포맷의 데이터열(101)을 나타내고, 데이터열(101)은 2바이트의 데이터(A), 4바이트의 데이터(B), 2바이트의 데이터(C)의 차례로 버퍼(102)로부터 송신된다. 1바이트의 데이터가 송신될 때마다 비분할용 리드 포인터(RPM)가 인크리먼트된다.
도 19c는 송신 완료시의 버퍼(102) 등의 상태를 나타낸다. 이 경우, 어드레스 설정부(192) 내의 비분할용 리드 포인터(RPM)는 '8'이 되어, 버퍼(102)의 8바이트의 데이터(A, B, C)가 전부 판독된 것을 나타낸다. 또 RPM=WPM=8에 의해 엠프티플래그 설정 신호(132)가 생성되고, 어드레스 설정 제어부(191) 내의 비분할용 엠프티플래그(EFM)는 '1'이 되어 버퍼(102)가 송신 완료인 것을 나타낸다.
이와 같이, 본 실시예의 집적 회로 장치(100)의 버퍼(102)는 데이터 송신시에는 1개의 비분할 버퍼로서 데이터 송신이 가능하고, 송신 데이터의 기입 시에 사이즈 설정부(103)의 설정에 의해 송신 포맷에 대응한 사이즈로 분할 가능하다. 이때문에 다른 데이터 포맷에 대응하여 버퍼를 서브버퍼로 분할하여 사용할 수 있어 서, 유연성이 있는 송수신 버퍼의 구성이 가능해진다. 따라서 CPU(180)는 사이즈 설정부(103)를 설정하기만 하면 되어, 간단한 하드웨어로 송신 데이터의 포맷에 따른 임의의 사이즈의 서브버퍼로 분할할 수 있다.
또한 이상의 설명에서는, 송신 또는 수신에서 8바이트의 버퍼(102)를 통신 포맷의 구성에 따라 3분할하는 경우를 설명했었지만, 버퍼(102)는 3분할 이하이면 2분할로 하는 것도 가능하다.
즉 본 실시예의 집적 회로 장치(100)에서는 버퍼(102)의 분할수는 고정적으로 되지만, 어드레스 설정부(192) 및 어드레스 설정 제어부(191) 내에 통신 포맷의 최대 분할수(Md)만큼의 리드 포인터, 라이트 포인터, 엠프티플래그, 풀플래그를 설치하고, 사이즈 설정부(103)도 최대 분할수(Md)만큼 설치하면, 버퍼(102)를 최대 분할수(Md) 이하의 분할수로 동작시키는 것이 가능하다.
이 경우에는, 통신 포맷에 대응한 최대 분할수(Md) 이하의 리드 포인터, 라이트 포인터, 엠프티플래그, 풀플래그를 사용하고, 그 리드 포인터, 라이트 포인터의 초기치와 깊이(서브버퍼 사이즈)를 통신 포맷에 따라서 설정한다. 그리고 그 엠프티플래그, 풀플래그의 값에 의해 버퍼(102)의 분할, 비분할을 제어하면, 최대 분할수(Md) 이하의 분할수의 통신 포맷에 대응 가능하다.
도 20은 본 발명의 다른 실시예의 집적 회로 장치의 블록도이다. 이 실시예에서는 CPU(180)가 소프트웨어에 의해 버퍼(102)의 분할, 비분할의 전환을 지시할 수 있다. 도 13의 실시예와 공통되는 부분의 설명은 생략하고, 다른 부분에 대하여설명한다.
도 20의 집적 회로 장치(100)에서는 어드레스 설정 제어부(191) 내에 버퍼 분할 플래그를 설치하지 않고, 어드레스 설정 제어부(191)와는 별도로 버퍼 분할 레지스터(104)를 설치한다. 그리고 CPU(180)가 데이터 버스(194) 및 어드레스 버스(195)을 통해서 버퍼 분할 레지스터(104)를 제어한다. 따라서 CPU(180)는 버퍼(102)의 분할, 비분할을 소프트웨어에 의해 전환할 수 있어서, 복수의 통신 포맷에 유연하게 대응할 수 있다.
또한 어드레스 설정 제어부(191)는 분할용 풀플래그(FF#0~ FF#3)의 NAND 논리 또는 비분할용 풀플래그(FFM)의 비반전 논리에 의해, 버퍼분해 레지스터(104)를 설정하는 것은 제 1 실시예와 동일하다.
이상 설명한 바와 같이 본 발명에 의하면, 버퍼는 데이터 송수신시에 단일의 비분할 버퍼로서 송수신이 가능하다. 한편 버퍼로부터 수신 데이터를 판독할 때 또는 버퍼에 송신 데이터를 기입할 때는, 데이터 포맷에 대응한 사이즈의 서브버퍼에 논리적으로 분할되어 독립적으로 판독 또는 기입이 가능하다. 이 때문에 다른 데이터 포맷에 대하여 유연성이 있는 송수신 버퍼의 구성이 가능해진다.

Claims (12)

  1. 송신 데이터가 기입되고, 상기 송신 데이터를 기입된 차례로 출력하는 FIFO 버퍼와,
    기입 인터럽트 신호에 응답하여 상기 송신 데이터를 상기 FIFO 버퍼에 송신하는 컨트롤러와,
    상기 FIFO 버퍼의 공백 상태에 따라 상기 기입 인터럽트 신호를 생성하여 상기 컨트롤러에 출력하고, 상기 기입 인터럽트 신호의 간격이 가변 설정되는 FIFO 제어부를 갖는 것을 특징으로 하는 LSI 디바이스.
  2. 제 1항에 있어서,
    상기 FIFO 제어부는
    적어도 상기 FIFO 버퍼가 제 1 공백 상태일 때 제 1 기입 요구 신호를 생성하고, 상기 FIFO 버퍼가 제 1 공백 상태보다 공백 영역이 많은 제 2 공백 상태일 때 제 2 기입 요구 신호를 생성하는 기입 요구 생성 회로와,
    상기 기입 요구 생성 회로에서 생성되는 상기 제 1 또는 제 2 기입 요구 신호중 1개를 선택하여, 상기 기입 인터럽트 신호를 출력하는 실렉터를 갖는 것을 특징으로 하는 LSI 디바이스.
  3. 제 2항에 있어서,
    상기 FIFO 제어부는 상기 컨트롤러로부터 출력되는 인터럽트 허가 신호에 의해 상기 기입 인터럽트 신호의 출력을 허가 또는 금지하는 인터럽트 제어 회로를 더 갖는 것을 특징으로 하는 LSI 디바이스.
  4. 제 2항에 있어서,
    상기 기입 요구 생성 회로는 상기 FIFO 버퍼의 기입 영역을 기억하는 기입 포인터와, 상기 FIFO 버퍼의 판독 영역을 기억하는 판독 포인터의 관계에 따라, 상기 제 1 및 제 2 기입 요구 신호를 생성하는 것을 특징으로 하는 LSI 디바이스.
  5. 제 1항 내지 제 3항중 어느 한항에 있어서,
    상기 기입 인터럽트 신호의 간격이 상기 컨트롤러에 입력되는 다른 인터럽트 신호의 인터럽트 우선도에 따라 가변 설정되는 것을 특징으로 하는 LSI 디바이스.
  6. 제 5항에 있어서,
    상기 실렉터는 상기 기입 인터럽트 신호로서, 상기 기입 인터럽트 신호의 인터럽트 우선도보다 높은 인터럽트 우선도를 갖는 상기 다른 인터럽트 신호가 제 1빈도로 발생할 때, 상기 제 1 기입 요구 신호를 선택하고, 상기 다른 인터럽트 신호가 제 1의 빈도보다 낮은 제 2 빈도로 발생할 때, 상기 제 2 기입 요구 신호를 선택하는 것을 특징으로 하는 LSI 디바이스.
  7. 송수신 데이터를 일시 기억하는 버퍼와,
    비분할 상태의 상기 버퍼에의 어드레스를 설정하는 비분할용 어드레스 설정부와,
    상기 버퍼가 논리적으로 분할된 서브버퍼마다 설치되고, 각각의 상기 서브버퍼에의 어드레스를 설정하는 복수의 서브버퍼용 어드레스 설정부와,
    상기 서브버퍼의 사이즈가 설정되는 사이즈 설정부와,
    상기 사이즈 설정부에 설정된 상기 서브버퍼의 사이즈에 따라 상기 서브버퍼용 어드레스 설정부에 상기 서브버퍼 내의 어드레스 영역을 설정하고, 상기 버퍼가 비분할 상태일 때 상기 비분할용 어드레스 설정부의 어드레스를 유효화하고, 상기 버퍼가 분할 상태일 때 상기 서브버퍼용 어드레스 설정부의 어드레스를 유효화하는 어드레스 설정 제어부를 갖고,
    비분할 상태의 상기 버퍼는 상기 비분할용 어드레스 설정부의 어드레스에 따라 상기 송수신 데이터의 기입 또는 판독이 행하여지고,
    상기 서브버퍼는 대응하는 상기 서브버퍼용 어드레스 설정부로부터의 어드레스에 따라, 상기 송수신 데이터의 판독 또는 기입이 행하여지는 것을 특징으로 하는 집적 회로 장치.
  8. 제 7항에 있어서,
    상기 어드레스 설정 제어부는 상기 버퍼의 비분할 상태와 분할 상태의 전환을 하는 것을 특징으로 하는 집적 회로 장치.
  9. 제 7항에 있어서,
    상기 어드레스 설정 제어부는 상기 비분할의 버퍼 및 상기 서브버퍼에 대한 데이터의 기입 또는 판독 상태를 나타내는 엠프티플래그 및 풀플래그를 갖고,
    상기 엠프티플래그 또는 풀플래그에 따라 상기 버퍼의 비분할 상태와 분할 상태의 전환을 하는 것을 특징으로 하는 집적 회로 장치.
  10. 제 8항에 있어서,
    상기 어드레스 설정 제어부는 상기 버퍼의 비분할 상태 또는 분할 상태가 지정되는 버퍼 분할 플래그를 갖고,
    상기 어드레스 설정 제어부는 상기 버퍼 분할 플래그에 따라 상기 버퍼의 비분할 상태와 분할 상태의 전환을 하는 것을 특징으로 하는 집적 회로 장치.
  11. 제 7항에 있어서,
    복수의 데이터 포맷을 갖는 통신 프로토콜 프로그램을 저장하는 메모리를 갖고,
    상기 통신 프로토콜 프로그램에 의해 상기 사이즈 설정부에 각각의 상기 데이터 포맷에 따라서 상기 서브버퍼의 사이즈가 설정되는 것을 특징으로 하는 집적 회로 장치.
  12. 제 7항에 있어서,
    상기 서브버퍼용 어드레스 설정부는 복수의 데이터 포맷 중의 최대 분할수에 상당하는 개수 구비되고,
    제 1 데이터 포맷에서는, 모든 상기 서브버퍼용 어드레스 설정부에 상기 서브버퍼의 어드레스가 설정되고,
    제 2데이터 포맷에서는, 상기 최대 분할수보다 적은 상기 서브버퍼용 어드레스 설정부에 상기 서브버퍼의 어드레스가 설정되는 것을 특징으로 하는 집적 회로 장치.
KR1019990012830A 1998-04-20 1999-04-12 통신 기능을 갖는 시스템 lsi KR100334044B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP98-109825 1998-04-20
JP10982598A JP3487759B2 (ja) 1998-04-20 1998-04-20 通信機能を有するシステムlsi
JP98-302972 1998-10-23
JP30297298A JP3573630B2 (ja) 1998-10-23 1998-10-23 送受信バッファを備える集積回路装置

Publications (2)

Publication Number Publication Date
KR19990083137A KR19990083137A (ko) 1999-11-25
KR100334044B1 true KR100334044B1 (ko) 2002-04-26

Family

ID=26449539

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990012830A KR100334044B1 (ko) 1998-04-20 1999-04-12 통신 기능을 갖는 시스템 lsi

Country Status (2)

Country Link
US (1) US6321280B1 (ko)
KR (1) KR100334044B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085266B2 (en) * 2001-03-21 2006-08-01 International Business Machines Corporation Apparatus, method and limited set of messages to transmit data between components of a network processor
GB2397069B (en) * 2001-08-16 2005-01-26 China Petroleum & Chemical A process for adsorptive desulfurization of light oil distillates
US6910092B2 (en) * 2001-12-10 2005-06-21 International Business Machines Corporation Chip to chip interface for interconnecting chips
TWI325532B (en) * 2006-09-14 2010-06-01 Novatek Microelectronics Corp Controlling circuit and method for power saving
KR101671025B1 (ko) * 2010-01-12 2016-11-01 동부대우전자 주식회사 드럼세탁기의 액체세제 보충 시기 알림 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR860009351A (ko) * 1985-05-21 1986-12-22 야마모도 다꾸마 입출력 제어 시스템
JPH06161940A (ja) * 1992-11-18 1994-06-10 Hitachi Ltd データ処理システム
JPH0721121A (ja) * 1993-06-30 1995-01-24 Nec Corp 通信制御lsi
JPH07250089A (ja) * 1994-03-10 1995-09-26 Fuji Electric Co Ltd トークン周回時間一定方式
JPH0816361A (ja) * 1994-07-01 1996-01-19 Nippon Steel Corp 半導体集積回路装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940002905B1 (en) * 1989-12-15 1994-04-07 Ibm Apparatus for conditioning priority arbitration in buffered direct memory addressing
KR960002074A (ko) * 1994-06-29 1996-01-26 김주용 파이포를 이용한 프린터 입력버퍼 및 데이타 입력방법
US5911077A (en) * 1996-05-31 1999-06-08 Micron Electronics, Inc. System for multithreaded disk drive operation in a computer system
FR2759178B1 (fr) * 1997-02-05 1999-04-09 Sgs Thomson Microelectronics Circuit de gestion de memoire dans un environnement multi-utilisateurs avec requete et priorite d'acces
US6118835A (en) * 1997-09-05 2000-09-12 Lucent Technologies, Inc. Apparatus and method of synchronizing two logic blocks operating at different rates
US6226698B1 (en) * 1997-11-10 2001-05-01 Sun Microsystems, Inc. Method and apparatus for dynamically calculating degrees of fullness of a synchronous FIFO

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR860009351A (ko) * 1985-05-21 1986-12-22 야마모도 다꾸마 입출력 제어 시스템
JPH06161940A (ja) * 1992-11-18 1994-06-10 Hitachi Ltd データ処理システム
JPH0721121A (ja) * 1993-06-30 1995-01-24 Nec Corp 通信制御lsi
JPH07250089A (ja) * 1994-03-10 1995-09-26 Fuji Electric Co Ltd トークン周回時間一定方式
JPH0816361A (ja) * 1994-07-01 1996-01-19 Nippon Steel Corp 半導体集積回路装置

Also Published As

Publication number Publication date
KR19990083137A (ko) 1999-11-25
US6321280B1 (en) 2001-11-20

Similar Documents

Publication Publication Date Title
JP4571671B2 (ja) 通信モジュールのメッセージメモリのデータへアクセスする方法および装置
EP0149392B1 (en) Digital computer system
RU2398357C2 (ru) Способ сохранения сообщений в памяти сообщений и соответствующая память сообщений
US5463756A (en) Memory control unit and associated method for changing the number of wait states using both fixed and variable delay times based upon memory characteristics
KR100375233B1 (ko) 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러
KR100334044B1 (ko) 통신 기능을 갖는 시스템 lsi
US5497466A (en) Universal address generator
US20030048677A1 (en) Semiconductor device having a dual bus, dual bus system, shared memory dual bus system, and electronic instrument using the same
JP7401050B2 (ja) バス制御回路
US6353864B1 (en) System LSI having communication function
KR20010053612A (ko) 기억 장치 및 상기 기억 장치를 동작시키기 위한 방법
JP3487759B2 (ja) 通信機能を有するシステムlsi
US20030053573A1 (en) Microcontroller having a transmission-bus-interface
JPS6224830B2 (ko)
TW502171B (en) Data transmitting system
JP3418734B2 (ja) シリアルデータ転送方法
JP3573630B2 (ja) 送受信バッファを備える集積回路装置
JPH10207762A (ja) メモリおよび電子装置
KR0169789B1 (ko) 클럭주기가 다른 블럭들의 데이타 전송방법 및 회로
JP2001319470A (ja) Fifo回路
JPH09297732A (ja) シリアルi/o
SU1672459A1 (ru) Устройство дл сопр жени ЭВМ с внешним накопителем
JP2001526810A (ja) プロセッサをasicに接続する方法及び構成体
KR20050067324A (ko) 마스터/슬레이브 디바이스간의 인터페이스 장치 및 그 방법
JPH05143561A (ja) 複合計算機システム

Legal Events

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

Payment date: 20130321

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140325

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee