본 발명은 필요한 사상 (이벤트)의 발생이나 사상의 변화등을 감시하기 위한 시간데이타 취득기술에 관한 것으로써, 특이 타이머회로의 계측방법 및 제어방법, 예를들면 마이크로컴퓨터에 적용해서 유효한 기술에 관한 것이다.
이벤트의 발생이나 변화등을 감시하기 위한 기간데이타를 취득가능하게 하기 위해 종래 마이크로컴퓨터에 포함되는 타이머회로에서는 예를들면 일정주파수의 기본 클럭신호를 계수하는 프리런닝 카운터나 외부에서 공급되는 이벤트펄스의 상승 또는 하강변화에 동기해서 상기 프리런닝 카운터의 그때의 계수데이타를 래치하는 캡치레지스터등이 마련되어 있다. 이 캡처 레지스터에 계수데이타가 레치되면 타이머회로는 중앙처리장치(Centeral Processing Unit, 이하 CPU라 한다)에 인터럽트등으로 필요한 사상의 발생이나 변화를 알리고, 이것을 받는 CPU는 그 캡처레지스터에 래치된 계수데이타를 리드해서 상기 사상의 발생이나 변화에 관한 시간정보를 얻는다.
예를들면 연속적으로 필요한 2개의 이벤트의 발생에 호응해서 그 이벤트간의 시간을 계측하는 경우 CPU는 앞서 발생하는 이벤트의 발생에 따라서 캡처레지스터에 래치된 계수데이타를 원하는 메모리로 전소해서 세이브시키고, 다음의 이벤트의 발생에 호응해서 갱신되는 캡처레지스터의 래치데이타와 상기 세이브시킨 데이터의 차를 연산해서 이벤트간의 시간을 얻는다.
또, 타이머회로를 내장한 데이터처리장치에 대해서 기재된 문허의 예로써는 일본국 특허공개공보 소화61-3223호가 있다.
그러나, 상기 종래기술에서는 착안해야 할 필요한 사상의 발생에 계속에서 다음에 착안해야할 사상이 발생하는 경우 앞서의 사상발생에 호응해서 캡처레지스터에 래치된 계수데이타를 다음에 착안해야할 사상이 발생해서 캡처레지스터가 갱신될때까지의 동안에 세이브시켜 두는 것이 필요하게 된다. 착안해야 할 2이상의 이벤트가 짧은 간격으로 발생하면 캡처레지스터의 레치데이타가 갱신되기 전에 그 래치데이타를 CPU에 의해 메모리등으로 세이브하는 처리가 시간에 맞지 않게 될 염려가 있다. 이것에 의해 듀티가 비교적 작은 펄스의 펄스폭의 측정이나 비교적 좁은 간격으로 발생하는 입력의 펄스형상의 변화측정시 등에 필요한 이벤트의 발생이나 변화에 대한 계측가능한 시간저 측정정밀도나 연속해서 발생하는 이벤트의 계측가능한 간격시간의 최소값이 CPU등이 캡처레지스터를 액세스해서 그 래치데이다를 세이브시킬때까지 필요한 소요시간에 제한을 받아 타이머회로에 의한 시간의 측정한계 또는 정밀도가 프리런닝 카운터의 기본 클럭신호주기에 대해서 매우 거친 것으로 되고 만다.
본 발명의 목적은 시간 정보의 측정정밀도나 최소시간의 측정한계를 개선할 수 있는 방법을 제공하는 것이다.
본 발명의 다른 목적은 시간측정의 고정밀도화를 도모할 수 있는 방법에 관한 것이다.
본 발명의 또 다른 목적은 레지스터간의 데이터전송을 용이하게 할 수 있는 방법을 제공하는 것이다. 본 발명의 상기 및 그 외의 목적과 새로운 특징은 본 명세서의 기술 및 첨부도면에서 명확하게 될 것이다.
본원에서 개시되는 발명중 대표적인 것의 개요를 간단이 설명하면 다음과 같다.
본 발명은 제1의 이벤트와 제2의 이벤트간의 시간을 계측하기위한 계측방법으로서,(a) 상기 제1의이벤트에 응답하여 상기 제1의 이벤트가 발생했을 때 카운터수단이 계수한 제1의 계수데이타를 제1의레지스터수단에 유지하는 공정,(b) 상기 제1의 이벤트에 이어서 발생하는 상기 제2의 이벤트에 응답해서 상기 제1의 레지스터에 유지된 상기 제1의 계수데이타를 제2의 레지스터수단으로 전송하는 고정, (c) 상기 (b) 고정의 완료후에 상기 제2의 이벤트에 응답해서 상기 제2의 이벤트가 발생했을때 상기 카운터수단이 계수한 제2의 계수데이타를 상기 제1의 레지스터수단에 유지하는 공정을 포함한다.
또, 본 발명은 제1 및 제2의 캡처레지스터를 포함하는 타이머회로의 동작을 제어하는 제어방법으로써, 모드제어레지스터의 모드제어비트를 제1의 상태로 설정하고, 상기 제1의 캡처레지스터가 제1의 이벤트펄스의 선택된 에너지에 응답해서 카운터구단이 상기 제2의 이벤트펄스의 상기 에너지의 발생시 계수한 계수데이타를 유지하는 것을 가능하게 하고, 또한 상기 제2의 캡처레지스터가 제2의 이벤트펄스의 선택된 에지에 발생시에 계수한 계수데이타를 유지하는 것을 가능하게 하는 제1의 제어공정, 상기모드제어레지스터의 상기 모드제어비트를 제2의 상태로 설정하고, 상기 제1의 캡처레지스터가 제1의 이벤트펄스의 제1의 에지에 응답해서 카운터수단이 상기 제1의 이벤트펄스의 상기 제1의 에지의 발생시에 계수한 제1의 계수데이타를 유지하고, 상기 제2의 캡처레지스터가 상기 제2의 이벤트펄스의 제2의 에지에 응답해서 상기 제1의 캡처레지스터에 유지된 상기 제1의 계수데이타를 유지하며, 또한 상기 제1의 캡처레지스터가 상기 제1의 이벤트펄스의 상기 제2의 에지에 응답해서 상기 카운터수단이 상기제1의 이벤트필스의 상기 제2의 에지의 발생시에 계수한 제2의 계수데이타를 유지하는 것을 가능하게 하는 제2의 제어 공정을 포함한다.
이하, 본 발명의 구성에 대해서 실시예와 함께 설명한다.
또, 실시예를 설명하기 위한 모든 도면에서 동일한 기능을 갖는 것은 동일한 부호를 붙이과 그 반복적인 설명은 생략한다.
제 3 도에는 본 발명에 관한 타이머회로를 적용한 마이크로컴퓨터가 도시되어 있다. 동일 도면에 도시된 마이크로컴퓨터는 특히 제안되지 않지만 반도체집적회로 제조기술에 의해 실리콘기판과 같은 1개의 반도체기판에 형성된다.
이 마이크로컴뮤터(1)은 특히 제안되지 않지만 프로그랩에 따라서 그 내부의 실행유닛 등을 제어하는 CPU(2), 이 CPU(2)의 동작프로그램등이 저장된 ROM(Read Only Memory) (3), 주로 CPU (2)의 작업 영력을 제공하는 RAM(Random Access Memory)(4), 직력 입출력 회로(5), 병력 입출력 회로(6), 및 타이머회로(7)등을 포함하고, 이들은 내부버스(8)을 거쳐서 서로 접속되어 있다. 동일 도면에서는 도면을 간단이 하기 위해 내부어드레스버스, 내부데이타버스 및 내부제어신호버스를 합쳐서 상기 내부버스(8)로써 나타내고 있다.
상기 CPU(2)는 특히 도시하고 있지 않지만, 예를들면 ROM(3)에서 페치해야할 명령의 어드레스 등을 나타내는 프로그램카운터, 프로그램의 명령이 순차로 페치되는 명령레지스터, 마이크로프로그램이 저장된 마이크로 ROM, 명령레지스터에 페치된 명령의 어드레스부나 마이크로명령의 넥스트 어드레스 필드의 정보에 따라서 상기 마이크로 ROM을 어드레상하기 위한 어드레스정보 등을 생성하는 마이크로어드레스 컨트롤러, 상기 마이크로 ROM에서 리드되는 마이크로 명령을 디스코드 해서 제어신호를 생성하는 마이크로명령디코더, 이 마이크로 명령 디코더에서 출력되는 제어신호 등에 따라서 그 동작이 제어되는 논리연산 유닛이나 어큐뮬레이터 등의 각종 레지스터로 구성 되어 있다.
마이크로컴퓨터(1)에는 특히 제안되지 않지만 외부에서 클럭신호 CLK가 공급되도, 이 클럭신호 CLK는 분주회로(9)에서 분주되어 클럭신호 Φ0,Φ1,Φ2가 형성된다. 상기 클럭신호 Φ0,Φ1은 특히 제안되지 않지만 동작클럭신호로써 CPU (2)등에 공급되어 이들의 동작이 이 동작클럭신호 Φ0,Φ1에 동기된다.
상기 타이머회로(7)에는 특히 제안되지 않지만 동작클럭신호 ΦD,Φ1보다 주파수가 높은 클럭신호 Φ2가 공급되고, 타이머회로(7)은 이 클럭신호 Φ2에 동기해서 개시동작을 한다. 이 타이머회로 (7)에 대해서는 다음에 상세히 설명하지만 예를들면 클럭신호 Φ2에 동기한 개시동작으로 얻어지는 개시데이타와 미리 CPU (2)에서 부여된 시간데이타를 비교해서 일치했을 매 타이머신호를 출력하는 비교기능과 외부에서 공급되는 이벤트펼스 EP0이나 EP1과 같은 신호의 상승 또는 하강에 동기에서 그때의 개시데이타를 레치하고, 이것을 CPU (2)에 부여해서 필요한 이벤트의 발생이나 변화를 감시 할 수 있게 하는 시간데이타 취득기능 (캡처기능)을 실현하는 것이다.
동일도면에서 ''0''는 마이크로컴퓨터(1)에 마련된 외부단자를 도시하고 있으며, 도시되어 있지 않은 외부발진회로에 의해 졍성된 상기 클럭신호 CLK는 외부단자를 거쳐서 상기 분주회로(9)에 공급되고, 상기 이벤트 펄스 EP0, EP1도 외부단자를 거쳐서 상기 다이머회로(7)에 공급된다. 또, 상기 직렬 입출력회로(5)의 입출력도 외부단자를 거쳐서 입력 또는 출력되며, 상기 병력 입출력회로(6)의 입출력도 외부단자를 거쳐서 입력 또는 출력된다.
제 1 도에는 상기 타이머회로 (7)의 1실시예가 도시되어 있다. 도면을 간단이 하기 위해서 동일 도면에는 특히 캡쳐기능을 실현하기 위한 구성이 대표적으로 도시되어 있다.
제 1 도에 도시된 타이머회로(7)은 특히 제안되지 않지만 클럭신호 Φ2에 동기해서 개시동작을 하기 위한 프리런닝카운터(10)을 마련하고, 이 프리런닝카운터(10)의 개시데이타를 래치할 수 있는 2개의 입력캡쳐 레지스터(11),(12)를 갖는다.
입력캡쳐 레지스터(11),(12)의 각각은 특히 제안되지 않지만 에지트리거형의 D형 플립플롭회로가 소정 개수 병렬로 마련된 패러렐인 및 패러렐아우트형식의 래치회로에 의해서 구성되어 있다. 이들 캡쳐레지스터(11),(12)는 CPU(2)에 의해서 상기 내부버스(8)을 거쳐서 임으로 리드액세스할 수 있게 되어 있다. 즉, 상기 캡쳐 레지스터(11),(12) 및 다음에 기술하는 제어레지스터(15)의 각각은 서로 다른 어드레스에 할성되어 있고, CPU(2)가 레지스터에 할성된 어드레스를 나타내는 내부어드레스신호를 형성하는 것에 의해 그 레지스터를 선택해서 리드할 수 있게 되도록 되어 있다. 이 때문에 상기 타이머회로(7)에는 내부어드레스버스를 거쳐서 CPU(2)로 부터의 내부어드레스신호가 공급되고, 내부제어신호버스를 거쳐서 CPU(2)로 부터의 제어신호가 공급되는 레지스터선택신호(20)이 마련되어 있다. 레지스터선택회로(20)은 내부어드레스신호를 디코드해서 캡쳐 레지스터(11),(12) 또는 제어레지스터(15)를 선택하는 선택신호를 형성한다. 이것에 의해 CPU(2)가 예를 들면 캡쳐 레지스터(11)에 할당한 어드레스를 나타내는 내부어드레스신호를 출력한 경우 상기 선택회로(20)에서 상기 캡쳐 레지스터(11)에 대한 레지스터선택신호가 출력된다. 마찬가지로 CPU(2)에서 캡쳐 레지스터(12)에 대해서 내부어드레스신호가 출력된 경우에는 캡쳐 레지스터(12)에 대해서 레지스터선택신호가 출력되고, 제어레지스터(15)를 나타내는 내부어드레스신호가 출력된 경우에는 제어레지스터(15)에 대해서 레지스터 선택신호가 출력된다. 또, 상기 제어신호버스를 거쳐서 상기 선택회로(20)에 공급되는 제어신호로써는 CPU(2)에서 출력되고 있는 내부어드레스신호가 유효한 것인지 아닌지를 나타내는 스트로브신호 등이다. 또한, 동일 도면에는 도시되어 있지 않지만 캡쳐 레지스터(11),(12) 및 제어레지스터(15)에는 CPU(2)에서 리드/라이트신호가 공급되고 있다. 특히 제한되지 않지만 상기 캡쳐 레지스터(11),(12)는 내부데이타버스에 대해서 리드전용으로 되고, 상기 제어레지스터(15)는 내부테이타버스에 대해서 리드/라이트가능하게 되어 있다.
상기 캡쳐 레지스터(11)의 입력 노드(병렬입력)는 상기 프리런닝카운터(10)의 출럭노드에 결합되어 있고, 캡쳐 레지스터(11)의 출력노드(병렬출력)는 다음에 기술하는 멀티플렉서(17)의 한쪽의 입력노드에 결합됨과 동시에 상술한 선택회로(20)으로 부터의 선택신호와 상기 리드/라이트신호에 의해서 제어되는 케이트회로 (도시 하지 않음)를 거쳐서 내부데이타버스에 결합되어 있다. 이 도시하지 않은 게이트회로는 상기 리드/라이트신호가 리드상태를 나타내고 있을 때 상기 선택신호에 응답해서 캡쳐 레지스터(11)에 유지되어 있는 데이터를 상기 내부데이타버스에 전달한다. 또한, 상기 멀티플렉서(17)의 다른쪽의 입력노드에는 상기 리드런닝카운터(10)의 출력노드가 결합되어 있다. 또, 상기 캡쳐 레지스터(12)는 그 입력노드 (병렬입력)가 상기 멀티플렉서(17)의 출력노드에 결합되고, 상기 선택회로(20)으로 부터의 선택신호와 상기 리드/라이트신호에 의해 제어되는 게이트회로(도시하지 않음)를 거쳐서 그 출력노드(병렬출력)가 상기 내부데이타버스에 결합되고 있다. 이 게이트회로는 상기 리드/라이트신호가 리드상태일 때 상기 선택신호에 응답해서 상기 캡쳐 레지스터 (12)의 유지데이타를 상기 내부데이타버스에 전달한다.
상기제어레지스터(15)는 상기 리드/라이트신호가 라이트상태로 되어 있을 때 상기 선택회로(20)으로부터의 선택신호에 응답에서 내부데이타버스에 있어서의 데이터를 패치하여 유지한다. 또, 상기 리드/라이트신호가 리드상태로 되어 있을때에는 상기 선택신호에 응답에서 유지하고 있는 데이터를 상기 내부 데이타버스에 전달한다.
여기에서, 타이머회로(7)에 공급할 수 있게 되는 계열이 다른 2종류의 캡쳐 레지스터(11),(12)은 특히 제안되지 않지만 소정 사상의 발생이나 변화에 따라서 상승변화 또는 하강변화하는 신호로 되고, 예를들면 본 실시예의 마이크로컴퓨터(1)등에 의해서 제어되는 외부기기에 마련된 센서에서 출력되고, 각각의 센서는 소정 사상을 검출하는 것에 의해 그 고유의 이벤트펄스 EP0이나 EP1을 레벨변화시킨다. 예를들면 제1의 센서는 외부기기가 제1의 상태로 되는 것에 의해 이벤트펄스 EP0을 저레벨에서 고레벨로 변화시키고, 외부기기가 다른 상태로 변화하는 것에 의해 상기 이벤트펄스 EP0을 고레벨에서 저레벨로 변화시킨다. 또, 제2의 센서는 외부기기가 제2의 상태로 되는 것에 의해 이벤트펄스 EP1을 고레벨에서 저레벨로 변화시키고, 다른 상태로 변화하는 것에 의해 이벤트펄스 EP1을 저레벨에서 고레벨로 변화시킨다.
본래 상기 2개의 캡쳐 레지스더(11),(12)는 계열이 다른 2종류의 이벤트펄스 EP0이나 EP1에 대응되고, 프리런닝카운터(10)에서 출력되는 개시데이타, 즉 계수데이타를 각각의 이벤트펄스 EP0이나 EP1의 상승변화 또는 하강변화에 따라서 개별적으로 래치한다. 각각의 캡쳐 레지스터(11),(12)에 대한 데이터 레치의 타이밍은 각각에 공급되는 이벤트펄스 EP0, EP1의 변화에 따라시 캡처레지스터용의 래치타이밍제어회로(13),(14)에 의해 제어된다.
래치타이밍제어회로(13),(14)는 개별적으로 공급되는 이벤트펄스 EP0, EP1의 에지를 검출하는 기능을 갖고, 필요한 에지를 검출하면 캡처 레지스터(11),(12)의 제어단자, 즉 D형 플립플롭의 클럭입력단자에 상승에지를 갖는 트리거 신호Tg0, Tg1을 부여한다. 캡쳐 레지스터(11),(12)는 트리거신호Tg0, Tg1의 상승에지에 응답에서 입력노드에 공급되어 있는 데이터를 래치한다. 상기 래치타이밍제어회로(13),(14)에 있어서 검출해야 할 이벤트필스 EP0, EP1의 에지의 증류는 제어레지스터(15)의 내용에 따라서 프로그램가능하게 설명할 수 있게 되어 있다. 이것에 의해 이벤트펄스 EP0, EP1의 상승변화, 하강변화 또는 쌍방의 변화에 동기해서 상승에지를 갖는 트리거신호Tg0, Tg1이 캡처 레지스터(11),(12)에 부여된다. 또한, 제어레지스터(15)는 상술한 바와 같이 내부버스(8)을 걸쳐서 CPU (2)에 의해 리드/라이트의 액세스가 가능하게 되어 있다.
타이머회로(7)에 관한 지금까지의 설명, 즉 1개의 이벤트펄스에 대해서 1개의 캡처레지스터를 할당한다는 내용은 통상적인 타이머회로에 있어서의 캡처기능과 기본적으로 다른 것은 아니지만 본 실시예의 타이머회로(7)은 또 그 기능에 부가하여 시간정보의 측정정밀도나 최소시간의 측정한계를 개선하기 위해서 상기 캡처레지스터(12)를 캡처 레지스터(11)에 있어서의 래치데이타를 위한 세이브레지스터로써 이용할 수 있는 기능을 선택할 수 있게 되어 있다.
이 기능을 실현하기 위해서 상기 캡처 레지스터(11)에 래치된 계수데이타 또는 프리런닝카운터(10)에서 출력되는 계수데이타중 어느 한쪽을 선택적으로 다른쪽의 캡처 레지스터(12)에 부여하기 위한 멀티플렉서(17)이 마련되고, 또 상기 래치타이밍제어회로(14)에 부여되는 이벤트펄스를 상기 이벤트펄스 EP0, EP1중 어느 한쪽으로 전환제어하는 이벤트펄스전환회로(18)이 마련되어 있다. 상기 멀티플렉서(17)과 이벤트펄스전환회로(18)은 제어레지스터(15)에서 출력되는 선택신호 SE1에 의해서 그 동작이제어되고, 멀티플렉서(17)이 한쪽의 캡처레지스트(11)에 래치된 계수데이타를 선택하는 상태로 되면 이것에 따라서 이벤트펄스전환회로(18)은 이벤트펄스EP0을 선택하는 상태로 제어된다.
이것에 의해 타이머회로(7)은 캡처 레지스터(11)에 대한 데이터레치타이밍을 이벤트펄스 EP0의 변화예 동기시키고, 동시에 캡처 레지스터(12)에 대한 데이터래치타이밍을 이멘트펄스 EP1의 변화예 도이시키는 제1모드와 실질적으로 직렬 접속상대로 된 캡처 레지스터(11),(12)에 대한 데이터래치타이밍을 이벤트펄스 EP0의 변화에 동기시키는 제2모드를 선택가능하게 한다.
제 1 도에 도시된 인터럽트제어회로(19)에는 상기 래치타이밍제어회로(13),(14)에서 출력되는 트리거신호 Tg0, Tg1이 공급된다. 이 인터럽트제어회로(19)는 특히 제안되지 않지만 제어레지스터(15)의 설정상태에서 따라서 타이머회로(7)에 제1모드가 설정되어 있는 경우에는 트리거신호 Tg0, Tg1의 상태와 미리 제어레지스트(15)에 설정된 조건을 비교하여 그것이 일치했을 매 CPU(2)에 인터럽트신호 IRQi, IRQj를 부여한다. 이 인터럽트신호 IRQi, IRQj는 이벤트펄스 EP0, EP1에 할당되어 있는 사상의 발생을 각각 개별적으로 CPU(2)에 알리는 의미를 갖는다. 또, 인터럽트제어회로(19)는 특히 제안되지 않지만 제어레지스트(15)의 설정상태에 따라서 타이머회로(7)에 제2모드가 설정되어 있는 경우에는 트리거신호 Tg0, Tg1의 상태와 미리 제어레지스터(15)에 설정된 조건을 비교하여 그것이 일치했을 때 CPU(2)에 인터럽트신호 IRQK를 부여한다. 이 인터럽트신호 IRQK는 이벤트펄스 EP0에 할당되어 있는 사상의 발생을 CPU(2)에 알리는 의미를 갖는다.
제 5 도(b)에는 상기 제어레지스터(15)의 1실시예가 도시되어 있다. 제어레지스터(15)는 8비트의 레지스터로 구성되어 있고, 각 비트가 각각 소정의 의미를 갖도록 되어 있다.
즉, 비트 BUFE는 버퍼인에이블비트로써, 이 비트를 예를들면 1이 라이되는 것에 의해 상기 선택신호Sel은 상기 멀티플렉서(17)에 대해서 상기 캡처레지스터(11)의 유지데이타를 상기 캡처레지스터(12)의 입력노드에 전달하도록 지시함과 동시에 이벤트펄스전환회로(18)에 대해서 상기 이벤트펄스 EP0을 상기 래치타이밍제어회로(14)에 전달하도록 지시하는 전위로 된다. 즉, 버퍼인에이블비트 BUFE에 1을 라이트하는 것에 의해서 상기 제2모드가 설정되고, ''0''을 라이트하는 것에 의해서 상기 제1모드가 결정된다. 비트 IGEA1, IEGA2는 래치타이밍제어회로(13)의 동작을 제어하기 위한 입력비트로써, 이들 비트의 내용에 따라 상기 래치타이밍제어회로(13)은 공급되어 있는 이벤트필스의 어떤 에지(상승, 하강 또는 쌍방의 에지)에 응답하는가가 정해진다. 예를들면 입력에지 IGEA1,IEGA2에 0, 0이 설정되어 있던 경우 래치타이밍제어회로(13)은 이벤트펄스의 상승변화에 응답해서 상승에지를 갖는 트리거신호를 형성하고, 0, 1이 설정되어 있던 경우에는 이벤트필스의 하강변화에 응답해서 상기 트리거신호를 형성하고, 0, 1이 설정되어 있던 경우에는 이벤트펄스의 상승변화 및 하강변화에 각각 응답해서 상기 트리거신호를 형성한다. 비트 IGEA1, IEGA2는 상기 비 역에지비트 IGEA1, IEGA2와 같이 입력에지비트이다. 단, 이 입력에지비트 IGEA1, IEGA2는 상기 래치타이밍제어회로(14)의 동작을 제어하는 것이다. 따라서, 상술한 설명에 있어서 래치타이밍제어회로(13)을 래치타이밍제어회로(14)와 대처하는 것에 의해 그 작용을 용이하게 이해할 수 있을 것이다.
비트 EICA, 댜츄 ALC EICC의 각각은 캡처인터럽터인에이블비트로써, 이들 비트로 부터의 신호는 상기 인터럽터제어회로(19)에 공급되어 있다. 캡처인터럽터인에이블비트 EICA는 상기 트리거신호 Tg0이 형성되어을때 치터럽더신호 IRQI를 형성하는지 하지 않는지를 결정하는 비트이고, 캡처인터럽터인에이블비트 BICB는 상기 트리거신호Tg1이 형성되었을 때 인터럽트신호 IRQJ를 형성하지 않은지를 결정하는 비트이다. 상기 인터럽트제어신호(19)는 캡처인터럽터인에이블비트 EICA(EICB)에 예를들면 1의 인터럽트 허가 플래그가 미리 라이츠 되어 있으면 상기 트리거신호 Tg0(TG1)의 발생에 응답해서 인터럽트신호 IRQI(IRQJ)를 형성한다. 또, 상기 캡처인터럽터인에이블비트 EICC는 상술한 제2모드가 설정되어 있을때 상기 트리거신호 Tg0, Tg1에 응답해서 상기 인터럽트신호 IRQk를 형성하는지 하지 않는지를 결정하는 비트이다. 이 캡처인터럽터인에이블비트 EICC에 인터럽트허가프래그가 미리 라이트 되어 있던 경우 인터럽트제어회로(19)는 예를들면 다음에 제 2 도에 따라 기술하는 바와 같이 상승에지를 갖는 트리거신호가 3회 발생되면 인터럽트신호 IRQk를 발생한다. 또한, 특히 제한되지 않지만 상기 인터럽트제어회로(19)에는 설정되어 있는 모드를 식별할 수 있도록 상기 버퍼인에이블비트 BUFE로 부터의 제어신호도공급되어 있다. 상술한 설명에서 이해할 수 있는 바와 같이 이들 각 비트에는 CPU(2)에 의해 바라는 조건을 나타내는 데이터가 미리 라이트 된다. 또, 미리 설정되어 있는 조건을 CPU(2)에 의해서 리드할수도 있다.
다음에 상기 실시예의 동작의 1예를 제 2 도(A)∼(G)에 따라 설명된다.
다음의 동작설명에서는 첫번째의 이벤트의 발생에 의해 상승하고, 두번째의 이벤트의 발생에 의해 하강하는 이벤트펄스 EP0의 폭을 상기 제2모드에 설정한 타이머회로에 의해서 측청하는 경우에 예로 한다.
제어레지스터(15)가 CPU(2)에 의해 미리 상기 제2모드로 설정되는 것에 의해 멀티플렉서(17)은 캡처레지스터(11)의 레치데이타를 선택에서 캡처레지스터(12)로 출력하는 상태로 제어됨과 동시에 이벤트펄스전환회로(18)은 이벤트펄스 EP0을 래지타이밍제어회로(14)에 공급가능하게 하는 상태로 제어된다.
이러한 이벤트펄스 EP0의 폭을 측정하는 경우 래치타이밍제어회로(13)은 이벤트펄스 EP0의 상승 및 하강 양쪽의 변화를 검출하는 것에 의해 상승에지를 갖는 트리거신호 Tg0을 캡처레지스터(11)에 부여하도록 제어레지스터(15)를 거쳐서 그 동작이 초기 설정된다. 또, 래치타이밍제어회로(14)는 이벤트펄스 EP0의 하장 변화를 검출하는 것에 의해 상승에지를 갖는 트리거신호 Tg1을 캡처레지스터(12)에 부여하도록 초기 설정된다. 인터럽트제어회로(19)는 양쪽의 트리거신호 Tg0, Tg1이 합계 3회의 상승에지변화될때마다 인터럽트신호 IRQk를 어서트하도록 초기설정된다.
이와 같이 해서 타이머회로(7)에 제2모드가 설정된후 시각 t0에서 이벤트펄스EP0(제 2 도(B))이 상승변화되면 래치다이밍제어회로(13)이 이것을 검출하는 것에 의해 시각 t1에서 트리거신호Tg0(제 2 도(C))을 상승에지변화시킨다. 이것에 의해 캡처레지스트(11)은 그때의 프리런링카운터(10)의 계수데이타Dr을 래치한다.
계속해서 시각t2에서 이벤트펄스 EP0이 하강에지변화되면 래치타이밍제어회로(13),(14)가 이것을 검출하는 것에 의해 시각T3에서 트리거신호 Tg0, Tg1를 상승에지변화시킨다. 이것에 의해, 캡처레지스터(11)은 그때의 프리런닝카운터(10)의 계수데이타 Dr을 래치한다. 캡처레지스터(11)이 그 계수데이타 Dr을 래치할 때 그 전의 이벤트발생시킨 대응하는 계수데이타 Dn은 이미 멀티플랙서(17)을 거쳐서 캡처레지스터(11)에서 캡처레지스터(12)로 세이브되어 있다.
이와 같이 해서 캡처레지스터(11),(12)에 필요한 계구데이타 Dr, Dn이 래치되면 인터럽트신호 IRQk가 어서트 되는 것에 의해 CPU (2)는 그들 캡처레지스터(11),(12)의 래치데이타를 리드, 액세스하고, 리드한 계수데이타 Dr과 계수데이타 Dn의 차를 산출해서 그 이벤트펄스 EP의 폭을 따른 정보를 얻는다.
특히 제한되지 않지만 상기 캡처레지스터(12)는 트리거신호 Tg1의 상승에지예 응답해서 그 입력노드에 전달되어 있는 계수데이타 Dn을 래치한다. 이 경우 멀티플렉서(17)을 거쳐서 캡처레지스터(11)의 유자데이타 Dn이 미리 캡처레지스터(12)의 입력노드에 전달되어 있으므로 상기 캡처레지스터(11)이 새로운 계수데이타 Dr을 래치해도 캡처레지스터(12)의 입력로드에 있어서의 데이터는 계수데이타 Dn에서 데이터Dr로 즉시 변화하지 않는다. 그 때문에 캡처레지스터(12)에 계수데이타 Dn대신에 계수데이타 Dr이 래치되고 마는 것을 방지할 수 있다.
이와 같이 이벤트펄스 EP0의 폭을 측정하는 동작을 상술한 제1모드에서 처리하는 경우 이벤트펄스EP0의 상승변화 동기해서 캡처레지스터(11)에 계수데이타 Dn이 래치하면 CPU(2)는 다음의 이벤트발생에 호응해서 이벤트펄스 EP0이 하강변화되어 캡처레지스터(11)의 래치데이타 Dn이 데이터 Dr로 갱신될때까지 이 계수데이타 Dn을 RAM(4)의 소정의 영역등으로 세이브시키지 않으면 안된다.
제 4 도에는 본 발명에 관한 타이머회로의 다른 실시예가 도시되어 있다.
제 4 도에 도시된 타이머회로(22)도 제3도에 도시된 마이크로컴퓨터(1)에 내장되지만 제 1 도에 도시된 타이머회로(7)과는 캡처기능이 다르다. 즉, 캡처레지스터(11)에 래치된 계수데이타를 세이브시키는 레지스터로써 전용의 세이브레지스터(21)을 갖고, 쌍방의 레지스터(11),(21)에 의해 이벤트펄스 EP0에 대한 캡처기능을 실현하는 전용구조로 되어 있다, 또, 제 4 도에서 제 1 도와 같이 회로블록에는 같은 부호를 부티고 그 상세한 설명은 생략한다.
제 4 도에 도시된 구성의 타이머회로(22)에 있어서도 예를들면 상술한 제 1 도의 실시예의 경우와 마찬가지로 첫번째의 이벤트의 발생에 의해 상승하고, 두번째의 이벤트의 발생에 의해 하강하는 이벤트펄스 EP0의 폭을 측정하는 경우 래치타이밍제러회로(13)은 이벤트펄스 EP0의 상승변화와 하강변화의 양쪽을 검출하는 것에 의해 상승에디를 갖는 트리거상호Tg0을 캡처레지스터(11)에 부여하도록 제어레지스터(15)를 거쳐서 그 동작이 초기설정된다. 또, 래치타이밍제어회로(14)는 이벤트펄스 EP0의 하강변화를 검출하는 것에 상승에지를 갖는 트리거신호 Tg1을 세이브레지스터(21)에 부여하도록 초기에 설정된다. 인터럽트제어신호(19)는 양쪽의 트리거신호 Tg0,Tg1이 합계 3회의 상승에지 변화될때마다 인터럽트신호 IRQk를 어서트하도록 초기설정 된다. 이 상태에서 이벤트펄스 EP0이 상승변화되면 래치타이밍제어회로(13)에서 출력되는 트리거신호Tg0이 상승에지 변화되는 것에 의해 캡처레지스터(11)은 그 때의 프리런닝카운터(10)의 계수데이타를 래치한다.
계속해서 이벤트펄스 EP0이 하강변화되면 래치타이밍제어회로(13),(14)가 이것을 검출하는 것에 의해 트리거신호Tg0,Tg1을 상승에지 변화시킨다. 이것에 의해 캡처레지스터(11)은 그때의 프리런닝카운터(10)의 계수데이타를 래치한다. 캡처레지스터(11)의 래치데이타가 그 계수데이타에 의해 갱신될때 그전의 이벤트발생시간에 대응하는 계수데이타는 이미 세이브레지스터(21)에 세이브되어 있다.
이 실시예에 있어서도 세이브레지스터(21)은 트리거신호 Tg1의 상승에지에 응답해서 세이브레지스터(21)의 입력로드에 미리 전달되어 있는 개시데이타를 래치한다. 미리 캡처레지스터(11)에서 세이브레지스터(21)의 입력로드에 개시데이타가 전달되어 있으므로, 캡처레지스터(11)이 프리런닝카운터(10)에서 새로운 개시데이타를 래치하는 것에 의해 그 레지스터(11)의 출력로드에 있어서의 데이터가 변화하기 전에 세이브레지스터(21)은 입력로드에 전달되어 있는 앞의 개시데이타를 래치할 수 있다.
그러나, 세이브레지스터(21)이 확실하게 앞의 개시데이타를 래치할 수 있게 하기 위해서 레지스터(11)과 레지스터(21)사이에 지연회로를 마련하도록 해도 된다.
본 실시예에 있어서도 제1도의 실시예와 마찬가지로 듀디가 비교적 작은 펄스폭의 측정이나 비교적 좁은 간격으로 발생하는 입력의 펄스형상변화의 측정시에 필요한 이벤트폭의 발생이나 변화에 대한 계측가능한 시간적 측정 정밀도나 연속에서 발생하는 이벤트의 계측 가능한 간격시간의 최소값을 CPU(2)가 캡처레지스터(11)을 액세스해서 그 레지스터를 세이브시킬때까지 필요한 소요시간에 제한받지 않도록 할 수 있어 다이머회로의 신뢰성을 향상시킬 수 있다.
또, 본 실시예에 있어서는 제 1 도의 실시예에서 설명한 바와 같은 멀티플렉서 및 이벤트펄스 전환회로가 마련되어 있지 않다. 그 때문에 제어레지스터에는 상술한 바와 같이 비트BUFE는 특별이 필요하게 되지 않는다. 또한, 비드 EICA, 댜츄도 특별히 필요하게 되지 않는다.
이상 본 발명자에 의해서 이루어진 발명의 상기 실시예에 따라 구체적으로 설명했지만 본 발명은 상기 실시예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에시 여러 가지로 변경가능한 것은 물론이다.
예를들면 제 1 도의 실시예에서는 멀틱플렉서(17)이 이벤트펄스전환회로(18)에 의해 캡처레지스터를 2단 직렬로 접속해서 그 후단을 세이브레지스터로 이용한 구성으로 했지만 또 캡처레지스터의 직렬단수의 증가시킬 수 있도록 멀틱플렉서나 이벤트펄스전환회로를 증설해도 좋다. 제 4 도의 실시예에서 설명한 구성에서도 세이브레지스터를 여러단 직렬접속해도 좋다. 또한, 세이브레지스터를 직렬로 접속하는 경우(제 4 도의 실시예), 더나아가서는 직렬접속상태가 선택된 캡쳐레지스터를 세이브레지스터로써 이용하는 경우(제 1 도의 실시예), 상술한 바와 같이 각각의 레지스터는 임의로 CPU에 의해 액세스 가능하게 되고, 또 동일 계열의 이벤트펄스(예를들면 이벤트펄스 EP0)에 할당되는 것이 필요하게 된다. 이것에 의해 CPU는 원하는 레지스터를 랜덤하게 액세스해서 필요한 연산데이타를 자유롭게 리드해서 필요한 이벤트의 발생이나 변화를 감시할 수 있다.
또, 상기 실시예에서는 캡처레지스터나 세이브레지스터의 래치데이타가 갱신된 것을 CPU에 인터럽트 신호를 부여하는 것에 의해 알리도록 하고 있지만 그 이외의 적절한 수단으로 변경할 수 있다.
예를들면 제 1 도에 있어서, 제어레지스터(15)의 비트 구성을 제 5 도(A)와 같이 변경하여 제 1 도에 점선으로 표시되어 있는 바와 같이 트리거신호 Tg0, Tg1이 제어레지스터(15)에도 공급되도록 변경한다.
제 5 도(A)에 도시되어 있는 제어레지스터(15)에 있어서, 비트 BUFE는 제 5 도(B)에 도시되어 있는 버퍼인에이블비트 BUFE와 같이 버퍼인에이블비트이고, 비트 IEGA(IEGB)는 레치타이밍제어회로(13),(14)의 동작을 제어하기 위한 입력에지비트이고, 비트ICFA(ICFB)는 트리거신호 Tg0(Tg1)의 상승에지에 응답해서 1의 플래그가 설정되는 입력캡처 비트이고, 비트 EICA,EICB,EICC는 제 5 도(B)에 있어서의 캡처인터럽트 인에이블비트 EICA,EICB,EICC와 같은 캡처인터럽트인에이블비트이다.
제 5 도(A)의 실시예에 있어서는 각 래치타이밍제어회로(13),(14)에 대한 입력에지비트가 1비트이므로 입력에지비트 IEGA(IEGB)에 예를들면 1이 설정되어 있던 경우 래치타이밍제어회로(13),(14)는 이벤트펄스 EP0(EP1)의 상승에지를 검출해서 트리거신호Tg0(Tg1)을 상승하고, 입력에지비트 IEGA(IEGB)에 0이 설정되어 있던 경우 래치타이밍회로(13),(14)는 이벤트펄스EP0(EP1)의 하강에지를 검출해서 트리거신호 TG0(TG1)을 하강하도록 구성된다. 상기 트리거신호 Tg0(Tg1)이 상승하는 것에 의해 상기 입력캡처비트 ICFA(ICFB)에는 플리그 1이 설정된다. 그 때문에 CPU(2)에 의해 상기 제어레지스터(15)를 리드액세스해서 상기 입력캡처비트 ICFA,ICFB의 값을 검사하는 건에 의해 입력캡처레지스터(11),(12)에 개시데이타가 유지되었는지 아닌지를 식별할 수 있다. 즉, 소위 폴링에 의해서 캡처레지스터(11),(12)의 상태를 알수 있다. 이 실시예의 경우 특히 제안되지 않지만 상기 입력캡처비트 ICFA,ICFB의 값, 버퍼인에이블비트 BUFE의 값 및 캡처인터럽트인에이블비트 EICC의 값은 인터럽트회로(19)에 공급된다. 이것에 의해 타이머회로(7)이 상기 제2모드로 설정되어 있는지 아닌지를 상기 버퍼 인에이블비트 BUFE로 식별에서 인터럽트허가 플리그가 캡처인터럽트인에이블비트 EICC에 설정되고, 제2모드가 설정되어 있던 경우 캡처인터럽트인에이블비트 EICC의 각각의 플리그1이 설정되면 상기 인터럽트제어회로(19)가 인터럽트신호 IRQk를 향상되도록 구성되어 있다. 이 인터럽트신호 IRQk에 응답해서 제 1 도의 실시예와 마찬가지로 CPU(2)는 2개의 캡처레지스터(11),(12)의 유지데이타를 리드해서 이벤트펄스 EP0의 펄스폭의 시간 등을 연산으로 구한다. 또, 이 경우 특히 제한되지 않지만 상기 입럭에지비트 IEGA에는 1이 미리 라이트 되고, 상기 입력에지비트 IEGA에는 0이 미리 라이트 되어 있다. 이 실시예에 있어서도 제어레지스터(15)로의 초기데이타의 라이트는 CPU(2)에 의해 실행된다.
상기 입력캡처비트 ICFA,ICFB의 리세트 CPU(2)에 의해서 그 비트에 데이터를 라이트 하는 것에 의해 실행되도록 해도 되고, 도시되어 있지 않은 리세트신호에 의해 리세트하도록 해도 된다.
또, 제 3 도에 있어서, 이벤트신호 EP0,EP1이 공급되는 외부단자와 병렬입출력회로(6)이 결합되어야 할 외부단자를 공통으로 해도된다. 즉, 이벤트신호가 공급되어야 할 외부단자와 다른 신호용의 외부단자를 공통으로 해도된다. 이 경우, 예를들면 마이크로컴퓨터(1)에 CPU(2)에 의해서 라이트액세트가능한 레지스터를 마련하고, 그 레지스터의 소정비트에 의해서 상기 공통으로 된 외부단자가 상기 타이머회로(7)의 이벤트입력노드에 결합될지 또는 다른 회로의 입력 또는 출력노드에 결합될지를 결정하도록 하면 된다. 이것은 예를들면 상기 소정비트에 의해서 제어되는 선택회로로 용이하게 달성할 수 있다.
상술한 실시예에 있어서는 제어레지스터, 입력캡처레지스터를 선택하기 위한 선택회로(20)이 타이머회로에 마련되어 있었지만 이것은 타이머회로 한정되지 않고 마이크로컴퓨터(1)내에 마련되어 있으면 된다. 리드/라이트신호도 상기 선댁회로에 공급되도록 하여 리드시에 입력캡처레지스터에 레지스터 선택신호가 공급되도록 하고, 리라이트시에 제어레지스터에 레지스터선택신호가 공급되도록 해도 된다. 또,선택회로(20)은 상술한 실시예에 한정되지 않고 여러 가지 실시형태를 취할 수 있다. 마찬가지로 선택회로(17), 전환회로(18), 레지스터(11),(12) 및 (15)의 구성도 여러 가지 형태를 취할 수 있다.
또, 멀티플렉서(선택회로)(17)대신에 캡처레지스터(11) 또는 (12)에 선택신호 Sel에 따라서 선택동작을 하는 선택기능을 갖게 하도록 해도 좋다.
상술한 각 실시예에 의하면 다윽 같은 작용효과를 얻을 수 있다.
(1) 착안해야 할 필요한 사상의 발생에 이어서 다음에 착안해야 할 사상이 발생하는 경우, 앞서의 사상발생에 호응하는 이벤트펄스 EP0의 변화에 따라서 캡처레지스터(11)에 래치된 계수데이타는 다음의 사상발생에 호응하는 이벤트펄스 EP0의 변화에 의해서 갱신대기전에 멀티플렉서(17)을 거처서 다른 캡처레지스터(12)로 세이브되므로, 착안해야 할 2개 이상의 이벤트가 짧은 간격적으로 발생하였을때 캡처레지스터(11)의 레치데이타가 갱신되기전에 그 레치데이타를 CPU(2)가 액세스해서 RAM(4)등으로 세이브시키는 처리를 필요로 하지 않고, 뒤부터 캡처레지스터(11),(12)에 축적된 데이터를 임으로 리드해서 소정의 펄스폭 또는 이벤트 간격시간의 정보를 확실히 얻을 수 있다. 따라서, 듀디가 비교적 작은 펄스폭의 측정이나 비교적 좁은 간격으로 발생하는 입력의 펄스형상변화의 측청시등에 필요한 이벤트의 발생이나 변화에 대한 계측가능한 시간적 측정정밀도나 연속에서 발생하는 이벤트의 계측가능한 간격시간의 최소값을 CPU(2)가 캡처레지스터(11) 또는 (12)를 액세스해서 그 래치데이타를 세이브시킬때까지의 소요시간에 제한받지 않도록 할 수 있고, 더 나아가서는 타이머회로(7)에 있어서의 시간의 측정한계 또는 징밀도가 프리런닝카운터의 기본콜럭신호의 주기에 대해서 매우 거칠은 것으로 되는 사태를 방지 할 수 있고, 이것에 의해 타이머회로의 신뢰성향상을 달성할 수 있다.
(2)1개의 이벤트펄스에 대해서 1개의 캡처레지스터를, 할당해서 실현되는 제1캡처기능에 또 시간정보의 측정정밀도나 최소시간의 측정한계를 개선하기 위해서 다른쪽의 캡처레지스터(12)를 한쪽의 캡처레지스터(11)에 있어서의 래치데이타를 위한 세이브레지스터로써 이용하는 제2캡처기능을 선택적으로 실현할 수 있다는 법용성이 있다.
(3) 각각의 캡처레지스터에 대한 데이타래치타이밍은 래치타이밍제어회로에 의해 이벤트필스의 변화에 따라서 프로그램이 가능하게 설명할 수 있게 되므로, 이벤트펄스의 어떤 변화에 대응해도 자유롭게 필요한 계수데이타를 취득할 수 있다.
(4) CPU(2)가 결합된 내부버스와는 다른 버스b(제 1 도 및 제 4 도의 실시예에서 캡처레지스터(11)의 유지데이타를 캡처레지스터(12) 또는 세이브레지스터(21)로 전달하기 위한 버스를 거쳐서 레지스터의 유지데이타가 다른 레지스터에 전송되므로, 이 전송이 실행되고 있는 동안에도 CPU는 내부버스를 사용한 처리를 실행할 수 있다. 그 때문에 마이크로컴퓨터의 전체로써의 처리시간의 단축화를 도모할 수 있다.
이상 본 발명자에 의해서 이루어진 발명을 그 배경으로 한 이용분야인 마이크로컴퓨터에 적용한 경우에 대해서 설명했지만, 본 발명은 그것에 한정되는 것은 아니고, 유나버셜펄스프로세서나 타이머회로 그 자체, 더나아가서는 서보컨트롤러등에도 널리 적용할 수 있다.
본 발명은 펄스폭 등에 의해서 필요한 사상의 간격이나 펄스폭을 측정하는 조건의 것에 적용할 수 있다.
본원에서 개시되는 발명중 대표적인 것에 의해서 얻을 수 있는 효과를 간단히 설명하면 다음과 같다. 즉, 캡처레지스터에 래치된 개시데이타를 받아서 이것을 임으로 리드가능하게 래치하는 세이브레지스터를 마련하고, 이 세이브레지스터로의 데이터래치타이밍을 치벤트펄스의 변화에 연동해서 제어하도록 한 것이므로, 이벤트가 발생할때마다 캡처레지스터의 내용을 CPU등이 그 때마다 세이브시키는 처리가필요하게 된다. 따라서, 듀디가 비교적 작은 펄스폭의 측정이나 비교적 좁은 간격으로 발생하는 입력의 필스향상 변화의 측정시에 필요한 이벤트의 발생이나 변화에 대한 계측가능한 시간적 측정정밀도나 연속에서 발생하는 이벤트의 그 래치데이타를 세이브시킬때까지의 소요시간에 제한받지 않도록 할 수 있고, 더 나아가서는 타이머회로에 있어서의 시간의 측정한계 또는 정밀도가 프리러닝카운터의 기본클럭 신호주기에 대해서 매우 거칠은 것으로 되는 사태를 방지할 수 있게 되고, 이것에 타이머회로의 신뢰성을 향상시킬 수 있다는 효과가 있다.
또, 1개의 캡처레지스터에 래치된 개시데이타 또는 개시수단에서 출력되는 개시데이타중 어느 한쪽을 선택적으로 다른 캡처레지스터에 부여하기 위한 선택수단을 마련하고, 이 선택수단이 1개의 캡처레지스터의 데이터래치타이밍을 동일한 이벤트펄스에 따라 제어하도록 2계통의 이벤트필스를 전환제어가능하게 하는 것에 의해 1개의 이벤트펄스에 대해서 1개의 캡처레지스터를 할당해서 실현되는 캡처기능에또 시간정보의 측정정밀도나 최소시간의 측정한계를 개선하기 위해 다른쪽의 캡처레지스터를 한쪽의캡처레지스터에 있어서의 래키데이타를 위한 세이브레지스터로써 이용하는 캡처기능을 선택적으로 실현할 수 있다는 법용성을 타이머회로로 얻을 수 있다.