KR101563989B1 - 집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러 - Google Patents

집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러 Download PDF

Info

Publication number
KR101563989B1
KR101563989B1 KR1020107029544A KR20107029544A KR101563989B1 KR 101563989 B1 KR101563989 B1 KR 101563989B1 KR 1020107029544 A KR1020107029544 A KR 1020107029544A KR 20107029544 A KR20107029544 A KR 20107029544A KR 101563989 B1 KR101563989 B1 KR 101563989B1
Authority
KR
South Korea
Prior art keywords
data
sipu
memory
state machine
cpu
Prior art date
Application number
KR1020107029544A
Other languages
English (en)
Other versions
KR20110079576A (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 KR20110079576A publication Critical patent/KR20110079576A/ko
Application granted granted Critical
Publication of KR101563989B1 publication Critical patent/KR101563989B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/34Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
    • G09G3/36Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source using liquid crystals
    • G09G3/3611Control of matrices with row and column drivers
    • G09G3/3622Control of matrices with row and column drivers using a passive matrix

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

집적된 SIPU와 프로그램가능 사이클 상태기를 갖는 마이크로컨트롤러가 개시된다. SIPU는 출력 데이터의 집중 처리의 오프로딩을 가능하게 하고 프로그램가능 사이클 상태기는 마이크로컨트롤러를 외부 디스플레이에 연결하는데 필요한 맞춤형 오프 칩 회로의 양을 최소화한다.

Description

집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러{MICROCONTROLLER WITH INTEGRATED GRAPHICAL PROCESSING UNIT}
본 발명은 집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러에 관한 것이다.
마이크로컨트롤러들은 작은 비용 증가로 수준 높은 사용자 상호작용 및 디지털 제어를 제공하기 위해 소비자 제품 및 산업 제품들에 광범위하게 사용된다. 예를 들면, 커피 머신을 제어하기 위해 스위치 및 간단한 타이머를 구비하는 것 보다는, 작은 터치스크린 LCD(liquid crystal display)를 갖는 마이크로컨트롤러는 우수한 사용자 경험을 제공하며 브류(brew) 사이클, 프로세스의 실시간 상태, 및 다른 가정용 기기와의 가능한 상호작용의 개별화를 증가시킬 수 있다. 냉장고는 냉장고의 성능 뿐만 아니라 냉장고의 내용물들을 추적하기 위하여 마이크로컨트롤러를 그래픽 디스플레이와 통합할 수 있다. 이것에 의해 식품 유통기한의 경고, 쇼핑 목록의 자동 생성, 및 배달 서비스로부터의 식료품들의 자동 주문이 가능하다. 산업 제품은 백업 전력 발생기의 동작 상태 뿐만 아니라 수행된 유지 및 보수의 기록과 연관된 정비 스케쥴을 나타낼 수 있다.
그래픽 디스플레이가 요구되는 경우에, 마이크로컨트롤러는 디스플레이의 타입에 특유하고 아마도 특정 형상들 및 컬러 깊이들로 제한된 맞춤형 상태기를 이용하여 그래픽 디스플레이와 인터페이싱한다. 맞춤형 상태기는 디스플레이의 특성들이 변하면 재설계되어야 한다. 예를 들면, 사용자 요구사항들은 시간에 따라 변할 수 있어 새로운 또는 현재의 상태기에서 모노크롬 디스플레이가 컬러 디스플레이로 업그레이드될 수 있다. 대안적으로, 컴포넌트 가격이 크게 변하거나 또는 새로운 환경 상태들이 생기는 경우에는 다른 디스플레이 기술이 대신할 수 있다. 본 발명 이전에는, 모노크롬 LCD에서 능동 매트릭스 박막 트랜지스터(TFT) 디스플레이로 변함으로써 마이크로컨트롤러 및 상태기가 내장되어 있는 ASIC(application specific integrated circuit)를 재설계 할 필요가 있었다. 알려진 다른 접근방식은 시스템에 비용 및 복잡도를 추가하는 오프-칩 LCD 제어기를 이용하는 것이다.
현재의 제품들 및 시스템들의 기능성을 강화하거나 또는 컴퓨터 처리 능력만으로 가능한 새로운 제품들 및 시스템들을 만들기 위해 다른 병렬 데이터 소스들 또는 입/출력 디바이스들을 구비한 마이크로컨트롤러들이 사용될 수도 있다. 이러한 주변기기들은 센서 어레이들, 네트워크 인터페이스들, 및 멀티-포인트 감압 터치 스크린을 포함한다. 병렬 데이터 인터페이스 및 하나 이상의 제어 신호들을 이용하는 많은 수의 가능한 입력 또는 출력 디바이스들이 통합될 수 있다. 그래픽 디스플레이들과 마찬가지로, 이들 입/출력 디바이스들과 마이크로컨트롤러를 인터페이싱하기 위해 커스텀 로직 또는 외부 제어기들이 요구되고 있다.
여기에 기재된 많은 애플리케이션들은 비용에 민감하며 종래 기술들로 구현하기에 비용이 엄청나게 비쌀 것이다. 현재, 임베디드 환경하에서의 비용 효율이 높은 그래픽 디스플레이의 구현은 고객 ASIC(application specific integrated circuitry)이며 ASIC의 연구, 개발, 및 툴링 비용이 상각되는 고 볼륨의 생산품은 비용을 초과한다. 이러한 접근법은 유연하지 않아 제품 조업시간을 줄이거나 다른 디스플레이 기술을 대신 사용하는 시장 역학에 제조업자가 부합하는 것을 막는다. 이러한 종류의 비유연성은 프로젝트의 위험성에 부가되어 비용을 더 상승시킬 수 있다.
따라서, 본 발명은 집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러를 제공하는 것을 목적으로 한다.
일실시예에 따르면, 마이크로컨트롤러는 제1 CPU(central processing unit); 메모리; 프로그램가능 사이클 상태기; SIPU(special instruction processing unit); 및 출력 디바이스에의 연결부를 포함하고, 상기 SIPU는 상기 CPU로부터의 명령에 응답하여 상기 메모리내의 복수의 값들을 조작하고, 상기 프로그램가능 사이클 상태기는 상기 메모리에서 상기 출력 디바이스로 데이터를 연속적으로 전송하고, 상기 프로그램가능 사이클 상태기는 상기 데이터 전송을 상기 출력 디바이스의 입력 타이밍 요건들과 조화시키기 위해 상기 출력 디바이스로 제어 신호를 주기적으로 송신한다.
또 하나의 실시예에 따르면, 마이크로컨트롤러는 CPU(central processing unit); SIPU(special instruction processing unit); 프로그램가능 사이클 상태기; 및 DMA(direct memory access) 컨트롤러를 포함하고, 다른 태스크들을 위한 CPU 사이클들을 자유롭게 하는 상기 SIPU에 의해 출력 데이터의 집중 처리가 수행된다.
또 하나의 실시예에 따르면, 마이크로컨트롤러는 16 비트 CPU(central processing unit); SIPU(special instruction processing unit); 프로그램가능 사이클 상태기; 및 DMA(direct memory access) 컨트롤러를 포함하고, 다양한 사이즈들, 컬러 깊이들, 및 액정 디스플레이들(LCD)의 기술들로 그래픽 정보를 디스플레이할 수 있고 외부 인터럽트들에 실시간으로 응답하기에 충분한 CPU 대역폭을 갖는다.
본 발명 및 그 장점들이 상세히 설명되었지만, 다음의 청구항들에 의해 한정된 본 발명의 정신과 범위를 일탈하지 않고 다양한 수정물, 대체물, 및 변형물이 가능하다는 것이 이해되어야 한다.
동일한 참조부호들은 동일한 구성요소들을 지시하는 첨부한 도면과 관련된 다음의 설명을 참조하면 본 발명과 그 장점들을 보다 완전히 이해할 수 있다. 본 발명의 바람직한 실시예들 및 그 장점들은 도 1-17을 참조하여 가장 잘 이해된다.
도 1은 입/출력 디바이스에 연결된 마이크로컨트롤러 및 프로그램가능 사이클 상태기 인터페이스의 일실시예의 코어 컴포넌트들을 나타낸 블록도이다.
도 2는 프로그램가능 사이클 상태기의 일실시예의 내부 컴포넌트들을 나타낸 블록도이다.
도 3은 프로그램가능 사이클 상태기의 일실시예의 입력 및 출력 신호들을 나타낸 블록도이다.
도 4는 데이터 시프트 신호를 디스플레이 클록 도메인에서 CPU 클록 도메인으로 변환하기 위한 일실시예에서 요구되는 회로를 나타낸 블록도이다.
도 5는 프로그램가능 사이클 상태기의 일실시예의 내부 컴포넌트들을 나타낸 블록도이다.
도 6은 시프트 바이패스 옵션이 디스에이블된 상태로 모노크롬 또는 포맷 2 STN(super twisted nematic) 디스플레이를 구동하도록 프로그램된 일실시예에서의 프로그램가능 사이클 상태기의 출력 신호들을 나타낸 타이밍도이다.
도 7은 시프트 바이패스 옵션이 인에이블된 상태로 모노크롬 또는 포맷 2 STN 디스플레이를 구동하도록 프로그램된 일실시예에서의 프로그램가능 사이클 상태기의 출력 신호들을 나타낸 타이밍도이다.
도 8은 시프트 바이패스 옵션이 디스에이블된 상태로 포맷 1 STN 디스플레이를 구동하도록 프로그램된 일실시예에서의 프로그램가능 사이클 상태기의 출력 신호들을 나타낸 타이밍도이다.
도 9는 시프트 바이패스 옵션이 인에이블 상태로 포맷 1 STN 디스플레이를 구동하도록 프로그램된 일실시예에서의 프로그램가능 사이클 상태기의 출력 신호들을 나타낸 타이밍도이다.
도 10은 박막 트랜지스터 디스플레이를 구동하도록 프로그램된 일실시예에서의 프로그램가능 사이클 상태기의 출력 신호들을 나타낸 타이밍도이다.
도 11은 프로그램가능 사이클 상태기의 일실시예에 따른 그래픽 디스플레이를 구동하는데 필요한 단계들의 블록도이다.
도 12는 픽셀들의 레이아웃을 나타낸 전형적인 컬러 액정 디스플레이 패널을 나타낸 도면이다.
도 13은 픽셀들의 레이아웃을 나타낸 전형적인 모노크롬 액정 디스플레이 패널을 나타낸 도면이다.
도 14는 CPU, SIPU, 메모리, 및 출력 디바이스에 동작가능하게 연결될 수 있는 프로그램가능 사이클 상태기를 포함하는 마이크로컨트롤러의 일실시예의 내부 부품들을 나타낸 블록도이다.
도 15는 마이크로컨트롤러의 요소들을 연결하는 DMA 부품을 갖는 것을 제외하고 도 14에 예시한 요소들을 포함하는 마이크로컨트롤러의 일실시예의 블록도이다.
도 16은 SIPU, DMA 부품, 프로그램가능 사이클 상태기, 컬러 룩업 테이블, 및 두개의 메모리 인터페이스들을 포함하는 마이크로컨트롤러의 일실시예의 내부 부품들을 나타낸 블록도이다.
도 17은 ALU, 레지스터 뱅크, 및 다양한 멀티플렉서들을 포함하는 SIPU의 일실시예의 내부 부품들을 나타낸 블록도이다.
본 발명의 일실시예에 있어서, CPU(central processing unit) 및 메모리와 함께 동일한 칩상에 프로그램가능 사이클 상태기를 포함하는 마이크로컨트롤러가 제조된다. 이 마이크로컨트롤러는 병렬 데이터 인터페이스를 갖는 액정 디스플레이(LCD) 모듈의 대부분의 타입들을 포함하는 다양한 외부 디스플레이 모듈들로의 직접 연결에 적합하다. 전형적으로 이 LCD 모듈은 병렬 인터페이스에서 각 픽셀들로 데이터를 전송하기 위한 카운팅 및 어드레싱 로직을 포함한다. 하지만, LCD 모듈은 비디오 메모리, 예를 들어 DMA(direct memory access) 로직과 직접 인터페이싱할 수 있게 하는 어떠한 추가 타이밍 또는 어드레싱 로직도 포함할 필요가 없다. 이 실시예에 있어서, 마이크로컨트롤러에서 실행되는 소프트웨어는 이미지의 디지털 표현을 만든다. 이 이미지는 스틸 이미지 또는 비디오의 단일 프레임일 수 있다. 이는 현재의 이미지 파일을 메모리로 간단히 로딩하거나 또는 소프트웨어를 이용하여 이미지를 만드는 잘 알려진 많은 기술들 중 하나를 이용하여 이미지를 만듬으로써 행해질 수 있다. 애플리케이션이 사용자 상호작용을 제공하면, 이미지는 데이터 디스플레이, 텍스트 또는 숫자들을 위한 인식가능한 요소들 및 GUI(graphical user interface)를 만들기 위해 결합된 시스템 제어 함수들을 포함할 수 있다. 소프트웨어가 한 픽셀을 바꿀 필요가 있으면, 메모리에서 그 픽셀을 나타내는 데이터 값을 바꾸기만 하면 된다.
CPU와 독립적으로 (및 전형적으로 비동기적으로) 동작중이면, 프로그램가능 사이클 상태기는 그 이미지를 나타내는 각 값을 메모리로부터 읽고 병렬 인터페이스를 통해 LCD 모듈로 그 값을 전송하는 연속 루프를 수행중이다. 그 연속 루프내의 정해진 점들에서, 프로그램가능 사이클 상태기는 특정 타입 또는 모델의 LCD 모듈이 요구한대로 하나 이상의 제어 신호들을 활성화 또는 비활성화시킨다. 많은 그래픽 디스플레이 기술들의 특징 때문에, 이 루프는 이미지 데이터가 변경되지 않았더라도 지속되며, 디스플레이의 개개의 광 차단 또는 광 발생 요소들은 작은 시간 윈도우동안 그들의 현재 상태를 유지하므로 주기적으로 리프레시되어야 한다.
추가 실시예에 있어서, 제어 입력은 필요한 제어 출력 신호 파형들 및 타이밍 스펙들을 결정하기 위해 일반적인 LCD 디스플레이 기술들의 소정의 서브셋에서 선택된다. 또한, 제어 입력은 그래픽 디스플레이의 물리적인 형상(픽셀들의 너비 및 높이) 뿐만 아니라 그레이스케일 레벨들의 견지에서 그 그래픽 디스플레이에 의해 지원되는 픽셀 깊이 또는 컬러 디스플레이의 컬러 깊이를 특정한다. 이 실시예에서의 프로그램가능 사이클 상태기의 제1 제어 출력은 픽셀 정보의 프레임 경계, 픽셀 정보의 라인 경계, 버스를 지나는 데이터의 단일 이동의 완전한 제공, 및 다목적 신호를 나타내는 신호들을 지원하여야 한다. 다목적 신호는 전용 제어 입력들, 예를 들어 시프트 제어 입력 LSHIFT2 입력, 모드 제어 입력 MOD, 또는 데이터 준비 제어 입력 DRDY 또는 어떤 다른 적절한 제어 입력에 연결될 수 있다. 제2 제어 출력은 상태기가 메모리로부터 다음 데이터를 전송할 준비가 되어 있다는 것을 나타내는 데이터 시프트 신호를 지원하여야 한다. 이 실시예에서, 상태기는 프레임 카운터, 라인 카운터, 및 데이터 레지스터를 포함하여야 한다. 마지막으로, 상태기는 카운터들의 적절한 값들을 유지하고, 출력들을 인에이블 또는 디스에이블하고, 다양한 제어 신호들을 발생시키기 위한 로직을 포함하여야 한다.
또 하나의 실시예에 있어서, 프로그램가능 사이클 상태기는 마이크로컨트롤러 및 그래픽 프로세싱 회로와 동일한 집적회로내에 포함된다. 이 실시예에서, 마이크로컨트롤러는, 예를 들어 60 MIPS(million instruntions per sencond) 보다 적은 명령들을 실행할 수 있는 16 비트 CPU를 포함하지만, 외부 디스플레이상에 컬러 그래픽들, 이미지들 또는 비디오를 디스플레이하는 능력을 가질 수 있다. 디스플레이는 적어도 64×64 픽셀만큼 작고 적어도 852×480 픽셀만큼 클 수 있다. 보다 큰 디스플레이들을 지원하는 것도 가능하다. 픽셀 깊이는 전형적으로 픽셀 당 1 비트 내지 24 비트일 수 있으며, 여기서 픽셀 당 24 비트는 3원색의 각각의 8 비트를 나타낸다. 3원색은 레드, 그린, 및 블루이거나 또는 다른 형태들로 표현될 수 있다. 특히, 디스플레이 기술이 감색 기술을 이용하면, 3원색은 레드, 옐로우, 및 블루일 수 있다.
또 하나의 실시예에 있어서, 픽셀 정보의 연속적인 리프레시에 대한 필요성을 없앨 수 있는 바이스테이블 (또는 멀티스테이블) 디스플레이가 사용될 수 있다. 이 실시예에서, 프로그램가능 사이클 상태기는 변화들을 위해 메모리를 폴링하거나 또는 변화가 있을 때 CPU에 의해 트리거될 수 있다. 변화가 검출되거나 또는 알려지면, 프로그램가능 사이클 상태기는 상술한 것과 동일한 일반적으로 프로세스로 이미지 데이터의 전체 블록을 디스플레이로 출력할 수 있다. 또한, 최적화도 가능하며 디스플레이는 이미지 데이터의 블록들 또는 심지어는 개별 픽셀들을 어드레싱할 수 있게 한다. 이러한 최적화들은 블록 레벨 또는 심지어는 픽셀 레벨로 변화를 검출하기 위한 로직 및 추가 메모리를 필요로 할 것이다. 이 변화 검출은 디스플레이되어야 하는 것과 현재 디스플레이되는 것 간의 비교를 언제든지 가능하게 하도록 이미지 데이터의 부본의 유지를 통해 처리될 수 있다. 대안적으로, 만약에 있다면, 이미지 데이터의 어느 부분이 수정되었는지를 결정하기 위해 다양한 해쉬 알고리즘들이 사용될 수 있다. 각각의 실시예에서, 변경된 블록 또는 블록들 또는 변경된 픽셀 또는 픽셀들은 적절히 정해진 제어 신호들과 함께 프로그램가능 사이클 상태기에 의해 읽혀져 전송될 수 있다.
이 프로그램가능 사이클 상태기가 다른 출력 디바이스들에 유용하다는 것을 이 기술분야의 당업자는 이해할 것이다. 예를 들면, 오디오 코덱은 메모리로부터 읽혀진 디지털 오디오 데이터의 일정한 스트림을 필요로 하며 프로그램가능 사이클 상태기로 제어될 수 있다. 일원화된 타이밍 또는 제어 신호들을 갖는 디지털 데이터의 스트리밍을 필요로 하는 병렬 데이터 인터페이스를 갖는 모든 출력 디바이스는 커스텀 로직을 갖지 않는 또는 최소 오프-칩 커스텀 로직을 갖는 이 실시예의 프로그램가능 사이클 상태기에 연결될 수 있다.
또 하나의 실시예에 있어서, 프로그램가능 사이클 상태기는 외부 데이터 소스로부터의 입력이 가능하도록 추가 제어 로직을 포함할 수 있다. 이 데이터 소스는 오디오 또는 다른 신호 캡쳐 목적을 위한 아날로그-디지털 변환기이거나 또는 센서들의 어레이, 예를 들어 이미지 캡쳐 디바이스일 수 있다. 이 실시예에서, 프로그램가능 사이클 상태기는 CPU 또는 외부 입력 디바이스로부터의 트리거 신호를 수용하고 외부 입력 디바이스로부터 하나 이상의 읽기 사이클들을 시작할 수 있다. 표준 그래픽 디스플레이를 구동시키는 실시예의 경우에서와 같이, 이 실시예는 데이터에서의 변화를 상관하지 않고 캡쳐된 데이터를 연속적으로 읽도록 구성되거나 또는 데이터 변화에 의해 트리거되는 필요 기준에 따라 동작하도록 구성될 수 있다.
이 기술분야의 당업자가 특정 애플리케이션 또는 마케팅 플랜을 근거로 특정 설계 트레이드-오프들을 만들 필요성을 이해할 수 있기 때문에 여기에서의 특정 설명은 한정으로서 간주되지 않아야 한다. 여기에 설명된 데이터 경로는 전형적으로 병렬 데이터 경로이며 버스 또는 직접 연결일 수 있지만, 이 기술분야의 당업자는 직렬 연결 또는 직렬 버스를 이용하여 데이터 경로가 구현될 수 있다는 것을 알 수 있을 것이다. 또한, 상태기는 직렬 데이터 소스를 병렬 데이터 소스로 변환시키거나 또는 병렬 데이터 소스를 직렬 데이터 소스로 변환시킬 수 있다. 데이터 입력을 통해 데이터 출력으로 전달된 데이터는 디지털 오디오 및/또는 그래픽 데이터일 수 있다. 제2 제어 출력은 상태기가 추가 데이터에 대한 준비가 되었다는 것을 데이터 소스에 알린다. 데이터 소스는 레지스터, DMA(direct memory access) 디바이스, 또는 FIFO(first in first out) 메모리일 수 있다. 데이터 소스의 특정 구현은 본 발명에 아무런 의미도 없어 대체물이 여기에 적절하다는 것을 이 기술분야의 당업자는 이해할 것이다. 제어 입력은 레지스터, ROM(read only memory), 플래시 메모리, 기계 스위치들(예를 들면, DIP(dual-inline-pin) 스위치들), 또는 어떤 다른 소스에 의해 제공될 수 있다.
추가 실시예에 있어서, CPU는 범용 CPU에서 소프트웨어로 구현되면 상당한 프로세싱 전력을 필요로 하는 그래픽 특정 루틴들을 구현할 수 있는 전용 GPU(graphics processing unit)와 조를 이룬다. 이 실시예는 다른 애플리케이션 로직을 다루기 위한 별도의 처리 용량을 가지고 있으면서 적당한 CPU, 예를 들어 16 비트의 로우 MIPS 설계가 외부 디스플레이로 그래픽들을 보여줄 수 있게 할 수 있다. 이 실시예의 GPU는 비트맵 패턴을 결합하거나 간단한 컴퓨터 그래픽들을 랜더링하기 위해 프로세서가 고레벨 래스터 동작들을 전달할 수 있게 하는 비트 블리팅 동작들 또는 하드웨어 스프라이트 드로잉을 수행할 수 있다. 대안적으로, GPU는 라인들, 윈도우들, 및 메뉴들을 포함하는 그래픽 유저 인터페이스 요소들을 그릴 뿐만 아니라 이미지 또는 비디오 디코딩 함수들을 다루기 위해 매크로들을 구현하는 보다 정교한 루틴들을 구현할 수 있다. 이 실시예에서, CPU는 디스플레이 출력에 변화를 만들기 위해 명령을 GPU로 전달한다. 이 명령은 메모리내의 비디오 데이터를 수정하기 위해 GPU에 의해 구현될 수 있다. 전형적인 실시예에 있어서, 프로그램가능 사이클 상태기는 비디오 디스플레이를 출력하기 위해 메모리로부터 이 비디오 데이터를 비동기적이고 연속적으로 읽는다. 수정들이 완료되기 이전의 비디오 데이터의 디스플레이로 인한 어떠한 시각적인 "아티팩트들"도 프로그램가능 사이클 상태기에 의한 비디오 데이터의 다음 리프레시에 의해 중첩될 것이다.
추가 실시예에 있어서, CPU는 플로팅 포인트 연산 및 어레이 동작들을 구현할 수 있는 DSP(digital signal processing) 유닛과 조를 이룬다. 이 실시예에서, CPU는 사용자 요구들 및 실시간 태스크들에 응답할 만큼 CPU 이용률이 낮게 유지되도록 특수화된 집중 데이터 프로세싱 요구들을 DSP로 오프로드할 수 있다.
또 하나의 실시예에 있어서, CPU는 SIPU(special instruction processing unit)와 조를 이루며 프로그램가능 사이클 상태기, 메모리, 및 DMA 디바이스를 더 포함한다. 이 실시예에서, 범용 CPU는 그 처리 대역폭을 일반적인 동작들, 흐름 제어, 및 실시간 인터럽트들에 대한 응답으로 전용할 수 있다. 반복적이거나 복잡한 태스크들은 SIPU로 오프로드되어 저가의 MIPS CPU와 SIPU의 저렴한 결합물이 풀컬러 그래픽을 생성하거나 오디오 또는 비디오 데이터를 실시간으로 디코딩할 수 있다. 이 SIPU는 바람직하게는 하나 이상의 애플리케이션들(예를 들면, 그래픽 처리 또는 비디오 데이터 또는 오디오 데이터의 실시간 디코딩)에 특정될 수 있는 제한된 명령 세트를 처리한다. DMA 디바이스와 조를 이루면, SIPU는 메모리로부터의 데이터 블록들을 처리 태스크들의 일부로서 패치 및 저장하기 위한 DMA 명령들을 발생시킨다. 그렇지 않으면, SIPU는 처리 태스크들의 일부로서 데이터 스토리지의 연속적인 블록들을 통해 직접 순환시키기 위한 로직을 포함하여야 한다.
SIPU의 명령어 세트는 바람직하게는 AND, OR, 및 XOR의 세개의 주요 논리연산들을 포함하며 여기서 첫번째 오퍼랜드는 그래픽 출력의 현재 상태를 나타내는 메모리의 일부로부터의 현재값이다(이 메모리의 일부는 비디오 버퍼라 하며 프로그램가능 사이클 상태기에 의해 주기적으로 출력되는 데이터의 소스이다). 대안적으로, 첫번째 오퍼랜드는 그래픽 데이터의 "오프 라인" 조작을 가능하게 하는 비디오 버퍼를 제외한 메모리 위치일 수 있다. 그리고, 이 "오프 라인" 버퍼는 픽처-인-픽처 동작을 이용하여 또는 적절하다면 이 병렬 비디오 퍼버로부터 읽기 위해 PCSM을 리다이렉팅함으로써 디스플레이될 수 있다. 두번째 오퍼랜드는 CPU에 의해 특정된 상수, SIPU에 의한 조작을 받는 국부 변수, 또는 메모리로부터의 데이터 값일 수 있다. 이러한 동작들은 SIPU가 어떠한 수의 공통 비트 블리팅 동작들을 수행할 수 있게 한다. SIPU의 명령 세트는 그래픽 유저 인터페이스의 요소들을 드로잉하는데 일반적으로 사용될 수 있는 일반적인 형상들(예를 들면, 점들, 라인들, 사각형들, 원들, 타원형들, 둥근 사각형들 또는 어떤 다른 형상)을 드로잉하기 위한 명령들도 포함할 수 있다. SIPU의 명령 세트는 전체 비디오 버퍼 전체에 걸쳐 특수화된 1차원 또는 2차원 패턴을 복제할 수 있는 백그라운드 필 동작도 포함할 수 있다. SIPU는 바람직하게는 메모리의 한 부분에서 또 하나의 부분으로 또는 한 메모리에서 또 하나의 메모리로 복수 데이터 워드들의 전송을 가능하게 하는 블록 전송 명령을 포함한다. 마지막으로, SIPU 명령 세트는 메모리의 한 부분에서 비디오 버퍼의 특정 부분으로 데이터를 복사하는 픽쳐 인 픽쳐 동작을 포함할 수 있다. 픽쳐 인 픽쳐 동작은 한번 또는 연속적으로 실행될 수 있다. 부가적으로, 이 동작은 비디오 메모리의 타겟 부분에 맞추기 위해 소스 이미지를 리사이즈 또는 크랍하는데 필요할 수 있다. 픽쳐 인 픽쳐 동작에 대한 논의는 원래의 로우 및 컬럼들의 스펙 뿐만 아니라 타겟 영역의 길이 및 폭도 포함하여야 한다.
또 하나의 실시예에 있어서, SIPU는 둘 이상의 데이터 구조로 동작할 수 있으며, 각각은 현재 디스플레이된 그래픽의 한 측면을 나타낸다. 하나의 데이터 구조는 백그라운드 이미지를 나타내는 반면에, 또 하나의 데이터 구조는 사용자 상호작용 요소들(예를 들면, 가상 버튼들, 가상 라이트들, 문자/숫자 심볼들 등)의 배열을 나타낸다. 그리고, SIPU는 메모리의 비디오 버퍼부에서 합성 이미지를 이루기 위해 논리적인 AND, OR, 및 XOR 연산들을 이용하여 데이터 구조들을 결합할 것이다.
이하, 본 발명의 바람직한 실시예를 도면을 참조하여 설명한다. 도 1은 입/출력 디바이스(103)에 연결된 마이크로컨트롤러(113) 및 프로그램가능 사이클 상태기 인터페이스(102)의 일실시예의 코어 컴포넌트들을 나타낸다. 메모리(111) 및 제1 데이터 버스(104)에 연결된 CPU(101)가 도시되어 있지만, 본 발명의 기능 또는 유용성에 영향을 주지 않고 이들 컴포넌트들의 특정한 상호연결들이 변할 수 있다는 것을 이 기술분야의 당업자는 이해할 것이다. 또한, 적절한 선택 신호들 또는 어드레싱 신호들(120)이 제공될 수 있다. 마찬가지로, 마이크로컨트롤러의 성능 특성들을 증가시킴으로써 본 발명의 목적들을 추진하기 위해 추가 CPU(101) 또는 메모리(111) 컴포넌트들을 추가하는 방법을 이 기술분야의 당업자는 이해할 것이다. 프로그램가능 사이클 상태기(102), 메모리(111), 및 CPU(101)에 연결된 제1 데이터 버스(104)가 도시되어 있다. 메모리(111)로의 직접 연결 또는 DMA 디바이스도 고려된다. 메모리(111)는 레지스터, FIFO 메모리 디바이스, 또는 어떤 다른 일반적인 메모리 타입일 수 있다. 도면에서, 메모리(111)는 제어 입력(106)을 위해 값들을 제공하지만, 제어 입력(106)에 값들 중 일부 또는 모두를 제공하기 위한 다른 구성들(그에 한정되지는 않지만, 물리적인 스위치들, 또는 PROM(programmable read only memory)을 포함)이 고려된다. 제어 입력(106)에 값을 제공할 목적으로, 레지스터와 같은 단일 계층의 메모리가 바람직할 수 있다.
메모리로부터의 순차적인 읽기 또는 메모리로의 순차적인 쓰기를 가능하게 하는 구성으로 상태기(102)를 메모리(111)에 연결하는 제2 제어 출력(107)이 도시되어 있다. 제2 제어 출력(107)을 CPU(101)의 인터럽트 포트에 연결할 수 있다는 것을 이 기술분야의 당업자는 이해할 것이다(여기서 입력은 입/출력 디바이스(103)에서 검색되며 상태 입력(112)은 하나 이상의 상태 또는 타이밍 신호들로 입/출력 디바이스(103)의 상태를 나타낸다). CPU 클록(114)이 상태기(102)에의 입력으로서 도시되어 있지만, 이 클록 신호가 어떠한 마이크로컨트롤러 컴포넌트에도 이용가능하다는 것을 이 기술분야의 당업자는 이해할 것이다. 디바이스 클록(115)은 프로그램가능 사이클 상태기가 디바이스 타이밍 도메인과 동기화된 신호들을 발생시킬 수 있게 한다. 제2 데이터 버스(108)는 상태기(102)와 입/출력 디바이스(103) 간의 데이터 경로를 제공한다. 이 데이터 경로는 아마도 버스, 예를 들어 병렬 버스이지만, 직접 연결, 예를 들어 직렬 데이터 경로일 수 있다. 제1 제어 출력(110)은 입/출력 디바이스(103)에 제어 신호를 제공하며 많은 애플리케이션들은 제어 및/또는 타이밍 정보를 제공하는 많은 제어 신호들을 제공할 것이다.
도 1에서는 입/출력 디바이스(103)가 마이크로컨트롤러(113)의 외부에 있는 것으로 도시되어 있지만, 입/출력 디바이스가 동일한 집적회로에 포함될 수 있다는 것을 이 기술분야의 당업자는 이해할 것이다. 예를 들면, 비용 및 애플리케이션 사이즈와 전력 요구들을 저감시키기 위해 이미지 캡쳐 센서가 마이크로컨트롤러와 동일한 집적회로에 포함될 수 있다. 또한, 마이크로컨트롤러에 하나 이상의 프로그램가능 사이클 상태기(102)를 포함시키는 값을 이 기술분야의 당업자는 이해할 것이며, 여기서 하나 이상의 입/출력 디바이스(103)가 연결되어야 한다.
다음 도면들 및 설명은 마이크로컨트롤러를 다양한 디스플레이 타입들과 인터페이싱하는데 사용되는 프로그램가능 사이클 상태기의 애플리케이션에 관한 것이다. 하나의 애플리케이션에 있어서, 프로그램가능 사이클 상태기는 LCD 모듈의 병렬 데이터 인터페이스와의 인터페이스이다. LCD 모듈로의 디지털 입력은 '프레임들' 형태로 데이터를 수용하며, 여기서 한 프레임은 디스플레이 정보의 하나의 풀 스크린으로서 정의된다. 각 프레임내에 일련의 '라인들'이 있으며, 하나는 각 로우이다. LCD 디스플레이의 너비는 LCD 모듈로의 데이터 경로보다 실질적으로 넓기 때문에 각 라인내에는 다수의 데이터 전송들이 있다. 따라서, 프레임, 라인 및 시프트 주기들은 이 실시예에서 상태기 설계의 근거로서 사용된다. 이는 지원되는 LCD 타입들 모두에 필요한 타이밍의 수퍼세트를 커버하는 상태기의 구성을 고려한다. 특정 LCD 타입이 인터페이싱되면, 상태기 상태에서의 모든 변화들은 출력들의 극성 및 타이밍이다. 이러한 변화들과 각 신호의 상대적인 시간 배치들 및 듀레이션은 외부 입력들을 이용하여 이루어진다.
도 2는 비디오 디스플레이 디바이스를 구동하기 위해 인에이블된 프로그램가능 사이클 상태기(102)의 일실시예를 나타낸다. 프레임 카운터(204)는 전송된 데이터 값들을 카운트하고 비디오 데이터의 풀 프레임이 전송되면 리셋된다. 프레임 발생기(205)는 프레임 카운터(204)의 값과 제어 입력(106)의 값을 근거로 프레임(212) 출력상의 신호를 발생시킨다. 라인 카운터(206)는 전송된 데이터 값들을 카운트하고 비디오 데이터의 풀 라인이 전송되면 리셋된다. 라인 발생기(210)는 라인 카운터(206)의 값과 제어 입력(106)을 근거로 라인(214)상의 신호를 발생시킨다. 시프트 발생기(202)는 라인 카운터(206)의 값과 제어 입력(106)을 근거로 라인 시프트(201)상의 신호를 발생시킨다. 시프트 발생기(202)는 라인 카운터(206)의 값과 제어 입력(106)에 근거하여 데이터 시프트(218)상의 신호를 발생시키며, 이 신호는 제1 데이터 버스(104)로 데이터를 요구하는데 사용된다. 제1 데이터 버스(104)는 메모리(220)에 저장되고 제2 데이터 버스(108)로 전달되는 그래픽 데이터의 소스를 제공한다. 다목적 발생기(222)는 다양한 LCD 타입들에 의해 요구되는 DRDY, MOD, 또는 DSHIFT2 입력을 발생시키는데 사용될 수 있는 다목적 출력(224)상의 신호를 발생시킨다. 레지스터(226)는 프로그램가능 사이클 상태기를 위한 프로그램을 저장하며 제어 입력(106)을 제공한다. 타이밍 동기화기(200)는 프로그램가능 사이클 상태기의 컴포넌트 부분들의 서브셋이다. 디바이스 클록(115)은 프로그램가능 사이클 상태기(102)의 타이밍 대부분을 제어한다.
도 3은 LCD 디스플레이 드라이버들과 인터페이싱하기 위해 인에이블된 프로그램가능 사이클 상태기(102)의 일실시예를 나타낸다. 각 입력 및 출력은 다음 표에 기재되어 있다. 이 도면 및 표에서의 입력들 및 출력들의 일부는 일정한 데이터 폭들과 하드코딩 값들을 갖지만, 데이터 폭들 및 하드코딩 값들은 다른 애플리케이션 요건들을 충족시키기 위해 조정될 수 있다.
입/출력명 설명
reset State machine reset
lcd_clk Clock input in the LCD timing domain
cfg_per_en State machine enable
lcdif_en_sync Start LCD timing engine and associated counters
freeze_en Debug mode
dtype[1:0]

Display type:
00=Monochrome
01=STN Format 1
10=STN Format 2
11=TFT
line_width[9:0] Number of columns in the glass
frame_per[15:0] Number of lcd_clk cycles in one frame
line_per[7:0] Number of lcd_clk cycles in one line
mod_rate[7:0] Toggle frequency
fm_start[7:0] Frame counter value at which to make frame output active
fm_per[7:0] Frame counter value at which to make frame output inactive
ln_start[7:0] Line counter value at which to make line output active
ln_per[7:0] Line counter value at which to make line output inactive
shift_start[7:0] Line counter value at which to start clocking out valid data
on data_out[15:0]
shift_bypass_en Output lcd_clk on the lshift output whenever lcdif_en=0
data_in[15:0] LCD data input
lcd_dwidth[1:0] LCD glass data width indicator:
00=1 to 4 bits wide
01=5 to 8 bits wide
1X=9 to 16 bits wide
frame LCD frame sync output
line LCD line sync output
lshift LCD line shift clock
M LSHIFT2 when dtype[1:0]=01
DRDY when dtype[1:0]=11
MOD when dtype[1:0]=10 or 00
dshift_sync Input data accepted
data_out[15:0] LCD data output
모듈은 lcd_clk 도메인에서 기능하며, 여기서 이 lcd_clk 도메인은 LCD 디스플레이를 관통하는 신호들을 제어하는 클록이다. 이 실시예에서, 모듈로의 모든 입력들은 CPU 클록 도메인에 있다. 동기화 로직을 최소화하기 위해, lcdif_en_sync 신호가 하이에 이르기 전에 모든 입력들이 안정적일 필요가 있다. 신호 lcdif_en_sync는 동기화기들을 통해 전달되고 언제든지 변할 수 있다.
도 3에 도시되지 않은 데이터 소스는 상태기에 데이터를 제공한다. 데이터 소스는 DMA, FIFO, 레지스터, 또는 이들의 어떤 결합물일 수 있다. 이 데이터 소스의 정확한 구현은 이 실시예의 목적에 중요하지 않다. 데이터는 data_in[15:0] 입력을 통해 제공된다. dshitf_sync 출력은 현재 데이터 워드가 시프트 인되어 다음 워드가 제공될 수 있다는 것을 데이터 소스에 알린다. lcd_dwidth[1:0] 입력은 LCD 모듈로의 데이터 버스 입력의 폭을 나타내며, '00'은 4 비트를 나타내고, '01'은 8 비트를 나타내고, '11'은 16 비트를 나타낸다. LCD 모듈로의 병렬 데이터 버스 입력의 폭이 정확히 4, 8 또는 16 비트가 아니면, lcd_dwidth[1:0]은 다음으로 가장 높은 값으로 세트되어야 한다. 예를 들면, 12 비트 입력은 '11'(16 비트)로 세트된 데이터 폭을 가지며 4개의 MSB가 사용되지 않을 것이다.
전형적으로, 레지스터 인터페이스는 모든 제어 입력들을 상태기에 제공한다. 이 레지스터는 소프트웨어 명령을 이용하여 제어 입력들에 대한 변화가 가능하도록 바람직하게는 CPU에 연결된다. 하지만, 다른 구성들도 고려된다. 일부 애플리케이션들에 있어서, 값들은 전기기계 스위치들(예를 들면, 듀얼 인라인 핀 스위치들 또는 로터리 스위치들)의 이용을 통해 직접적으로 또는 간접적으로 세트될 수 있다. 다른 애플리케이션들에 있어서, 값들은 비휘발성 메모리(예를 들면, EPROM, EEPROM, 또는 플래시 메모리)의 이용을 통해 직접적으로 또는 간접적으로 세트될 수 있다.
다양한 디스플레이 기술들이 프로그램가능 사이클 상태기와 인터페이싱할 수 있다. 이용가능한 디스플레이 기술들의 서브셋이 하기에 상세히 기술되어 있지만, 이 서브셋은 한정으로 보지 않아야 한다. 본 발명과 관련된 다른 기술들은, 그에 한정되지는 않지만, 제로-파워 바이스테이블 디스플레이, 플라즈마 디스플레이, LCOS 디바이스, 디지털 마이크로미러 디바이스, 발광 다이오드 패널, 및 OLED 디스플레이를 포함한다. 본 발명의 특성은 애플리케이션 엔지니어들과 마케터들에게 이전에 관심이 없거나 쓸모가 없던 새로운 디스플레이 기술들 또는 종래의 기술들에의 적응에 적합하다.
모노크롬 LCD 디스플레이들은 전형적으로 4 비트 또는 8 비트 인터페이스를 갖는다. 컬러 정보가 필요없기 때문에, 각 데이터 비트는 한 픽셀의 상태를 나타낸다. 도 13은 패널(1300) 및 픽셀들(1302)을 갖는 122×32 모노크롬 LCD 디스플레이의 픽셀 레이아웃을 나타낸다. 데이터는 한번에 n 비트들이 입력되며(여기서 n은 패널의 데이터 버스 폭), lshift 펄스는 각 유효 데이터 전송을 알린다. 스캔 패턴은 일반적으로 row1의 pixel1에 있는 글래스의 상부 좌측에서 시작하여 row1의 pixel[last]에 도달하기까지 우측으로 진행하며, 그리고 나서 row2에 있는 픽셀부터 시작하는 등을 행한다. 라인 출력에서의 펄스는 새로운 로우의 시작을 알린다. 각 로우의 종료 이전에, 대부분의 디스플레이들은 '수평 비표시 주기(horizontal non-display period)'를 필요로 할 것이다. 프레임 출력에서의 펄스는 풀 디스플레이 프레임의 종료 및 row1로의 리셋을 알린다. 각 프레임의 종료 이전에, 대부분의 디스플레이들은 '수직 비표시 주기(vertical non-display period)'를 필요로 할 것이다. 이들 비표시 주기들은 라인 및 프레임 신호들의 펄스폭들에 담겨질 수 있다.
특정 디스플레이 형상들이 다양한 실시예들에서 인용되었지만, 이들에 한정되지는 않는다. 다양한 LCD 기술들을 포함하는 그래픽 디스플레이들이 광범위한 형상으로 이용될 수 있다. 저가의 내장형 애플리케이션들에 대하여, VGA(640×480 픽셀) 또는 심지어는 QVGA(320×240 픽셀) 보다 작은 디스플레이들이 주요 관심대상이다. 이러한 모듈들은 122×32 픽셀만큼 작을 수 있다. 하지만, 애플리케이션에 따라, 여기에 설명된 하나 이상의 실시예들은 WVGA(854×480 픽셀) 이상의 형상을 갖는 LCD 모듈들을 구동하는데 사용될 수 있다. 일실시예에 있어서, 프로그램가능 사이클 상태기는 모노크롬, STN, 및 TFT 디스플레이 기술들, 가변 종횡비, 최대 VGA(640×480 픽셀), 최대 1024 lcd_clk 펄스 퍼 라인, 최대 65,536 lcd_clk 펄스 퍼 프레임의 분해능들, 및 최대 24 비트의 데이터 폭을 지원한다.
STN(super twisted nematic) 디스플레이들은 전형적으로 4, 8, 또는 16 비트 인터페이스를 갖는다. 스크린상의 각 컬러점은 나란히 배치된 세개의 픽셀들(레드, 그린, 블루)로 이루어진다. 예를 들면, 패널(1200) 및 픽셀들(1202)을 갖는 컬러 QVGA(320×240 픽셀) 패널이 도 12에 도시되어 있다. 따라서, 320×240 픽셀의 패널이 960×240 픽셀을 갖는 패널로서 보여질 수 있으며, 각 픽셀은 하나의 컬러이다. 데이터는 한번에 n 비트가 패널로 출력되며(여기서, n = 패널의 데이터 버스 폭), lshift 펄스는 각 유효 데이터 전송을 알린다. 데이터내의 각 비트는 컬러들 중 하나의 '온' 또는 '오프' 값을 나타낸다.
스캔 패턴은 일반적으로 row1의 pixel1에 있는 글래스의 상부 좌측에서 시작하여 row1의 pixel[last]에 도달하기까지 우측으로 진행하고, 그리고 나서 row2의 pixel1에서 시작하는 등을 행한다. 라인 출력에서의 펄스는 새로운 로우의 시작을 알린다. 각 로우의 종료 전에, 대부분의 디스플레이들은 수평 비표시 주기를 필요로 할 것이다. 프레임 출력에서의 펄스는 풀 디스플레이 프레임의 종료와 row1로의 리셋을 알린다. 각 프레임의 종료 전에, 대부분의 디스플레이들은 수직 비표시 주기를 필요로 할 것이다. 예를 들면, 글래스가 R1G1B1R2G2B2... 등으로 배열된 컬러들을 갖는다고 가정한다. 완전한 레드 픽셀에 이은 완전한 화이트 픽셀은 8 비트 데이터 버스에서 100111xx로서 나타난다. xx로 나타낸 마지막 두 비트는 픽셀들 R3B3인 등이다.
STN 인터페이스의 세개의 일반적인 변형물이 있다. 포맷 1은 lshift 클록과 180°다른 위상에 있는 LSHIFT2라 불리는 제2 클록을 사용하는 STN 인터페이스의 변형물이다. 프로그램가능 사이클 상태기가 STN 포맷 1이 되면, M 출력은 LSHIFT2 클록이 된다. 포맷 2는 상태기의 M 출력에 연결된 (LCD 모듈상의) MOD로 불리는 신호를 사용하는 STN 인터페이스의 변형물이다. 이 신호의 타이밍은 LCD 모듈에 의존하며, mod_rate[7:0] 입력에 따라 프레임 출력의 토글마다 1회 이상 토글할 수 있다. 마지막으로, 듀얼 스캔 STN 디스플레이들은 디스플레이의 상부 및 하부 절반이 동시에 업데이트될 수 있게 하는 보다 넓은 데이터 버스 인터페이스를 갖는다(예를 들면, 240개의 로우와 8 비트 인터페이스를 갖는 디스플레이는 R1G1B1R2R121G121B121R122를 송신하는 data_out[7:0]을 가질 것이다). 이들 디스플레이들은 2배의 데이터 폭과 절반의 로우들을 갖는 STN 디스플레이들로서 간주될 수 있기 때문에 상태기는 듀얼 스캔 디스플레이들을 지원하기 위한 특수 설정을 가질 필요가 없다. 따라서, 메모리에 의해 data_in[7:0]에 제공된 값들은 단지 재정리되어야 할 것이다. DSTN 디스플레이들은 일반적으로 포맷 2 데이터 인터페이스를 갖는다.
박막 트랜지스터(TFT) 패널들은 세가지 기술들 중 가장 우수한 컬러와 콘트라스트 품질을 제공한다. 이 기술은 각 픽셀을 위한 글래스상에 제조된 하나의 트랜지스터를 갖는다. 데이터 인터페이스는 각 컬러에 대하여 별도의 비트들을 갖는다. 예를 들면, 24 비트 컬러 TFT는 레드, 그린, 및 블루 컬러 각각에 대하여 8 비트 입력을 가질 것이다. 따라서, 데이터는 한번에 24 비트 또는 한 픽셀로서 디스플레이에 입력된다. M 출력이 하이인 동안의 lshift 입력상에서의 펄스는 유효 데이터 전송을 알린다. 일반적으로 스캔 패턴은 row1의 pixel1에 있는 글래스의 상부 좌측에서 시작하여 pixel[last]에 도달하기까지 우측으로 진행하고, row2의 pixel1에서 시작하는 등을 행한다. 라인 출력상의 펄스는 새로운 로우의 시작을 알린다. 각 로우의 종료 전에, 대부분의 디스플레이들은 수평 비표시 주기를 필요로 할 것이다. 프레임 출력에서의 펄스는 풀 디스플레이 프레임의 종료 및 row1로의 리셋을 알린다. 각 프레임의 종료 전에, 대부분의 디스플레이들은 수직 비표시 주기를 필요로 할 것이다. 상태기의 M 출력은 DRDY라 불리는 디스플레이로의 입력에 연결된다. 이 신호는 하이가 되어 출력 데이터가 유효하다는 것을 나타낸다(즉, 상태기는 현재 수직 또는 수평 비표시 주기에 있지 않다).
보다 일반적으로, 동작 특성들은 다음과 같다. 상태기는 lcdif_en = 1일 때 인에이블된다. lcdif_en = 0이면, 모든 출력들은 로우가 된다. 타이밍 동기화기 모듈(200)은 상태기의 마스터 타임 키퍼이다. 모듈은 두개의 카운터로 이루어진다. 첫번째는 제로에서 frame_per[15:0]까지 카운트하는 프레임 카운터(204)이다. 두번째는 제로에서 line_per[7:0]까지 카운트하는 라인 카운터(206)이다. 두 카운터들은 lcd_clk의 동일한 에지에서 카운팅을 시작한다. 프레임 카운터(204)가 제로로 리셋되면 라인 카운터(206)는 항상 제로로 리셋된다. 프로그램가능 사이클 상태기로부터의 다른 모든 출력들은 그들의 출력들에 대한 타이밍을 카운트하기 위해 이들 카운터들을 이용한다.
모듈로의 모든 입력들은 CPU 클록 도메인에 있다. 하지만, lcdif_en_sync와 data_in[15:0]은 상태기가 액티브일 때 변하는 두개의 입력들이다. 이들 입력들 중 첫번째 입력인 lcdif_en_sync는 신호 lcdif_en(도시하지 않음)을 산출하기 위해 동기화기들을 통해 lcd_clk 도메인으로 전달된다. 이들 입력들 중 두번째인 data_in[15:0]은 다음 이유들로 인해 동기화될 필요가 없다.
·첫번째 data_in[15:0]이 클록 인되면(도 5 참조), data_in[15:0]은 서너개의 lcd_clk 주기들동안 안정적일 것으로 예상된다.
·그 후, data_in[15:0]은 dshift_scync 출력이 하이가 되기까지 변하지 않을 것이다. dshift_sync는 신호 dshift로부터 발생되고, 교대로 lcd_clk에 의해 발생됨으로써, 필요한 동기화가 제공된다.
lcdif_en_sync가 하이가 되면 다른 모든 입력들은 안정적일 필요가 있다. CPU 클록 도메인으로 돌아가는 이 모듈로부터의 출력은 dshift_sync이다. 이 신호는 (아래에 기재된) 데이터 동기화기 블록(400)내에서 동기화된다.
도 4는 dshift를 CPU 타이밍 도메인에 동기화시키고 LCD 패널들의 입력 데이터 폭들의 변화를 설명하도록 설계된 회로인 데이터 동기화기 블록(400)의 일실시예를 나타낸다. 동기화기는 두개의 D 플립 플롭들(402), 카운터(404), 및 비교기(406)를 포함한다. 결과적인 신호는 dshift_sync이다. 데이터 동기화기는 lcd_clk 도메인에 있는 내부 dshift 신호를 CPU 클록 도메인에 있는 dshift_sync 출력 신호로 동기화한다. 또한, dshift_sync 신호는 입력으로의 글래스의 데이터 폭을 포함한다. 이것은:
·lcd_dwidth[1:0] = '00'일 때 4 dshift 펄스마다 한 펄스
·lcd_dwidth[1:0] = '01'일 때 2 dshift 펄스마다 한 펄스
·다른 모든 경우에 dshift 펄스마다 한 펄스
를 발생시킨다.
도 5는 상술한 세부 로직 및 회로의 일부를 포함하는 프로그램가능 상태기(102)의 추가 실시예를 나타낸다. 프레임 발생기(208)는 프레임 출력을 발생시킨다. 프레임 발생기(208)는 frame_counter(204)를 fm_start 입력과 비교하는 비교기를 포함한다. 두개가 동일하면, 프레임 출력은 fm_per 개수의 클록 사이클들 동안 활성화된다. dtype[1:0]='11'이면, 로우는 액티브로 간주된다. 그렇지 않으면, 하이가 액티브로 간주된다. 라인 발생기(210)는 라인 출력을 발생시킨다. 라인 발생기(210)는 line_counter(206)를 ln_start[7:0] 입력과 비교하는 비교기를 포함한다. 두개가 동일하면, 라인 출력은 ln_per[7:0] 개수의 클록 사이클들 동안 액티브가 된다. dtype[1:0]='11'이면, 로우는 액티브로 간주된다. 그렇지 않으면, 하이가 액티브로 간주된다.
시프트 발생기(202)는 lshift, dshift, 및 data_out[15:0] 출력들을 발생시킨다. 시프트 발생기(202)는 line_counter(206)를 shift_start[7:0]과 비교하는 비교기를 포함한다. 라인 카운터(206)가 값 shift_start[7:0]에 도달하면, 입력 data_in[15:0]이 lcd_clk의 라이징 에지에서 메모리로 클록킹된다. data_out[15:0] 포트는 이 메모리의 출력에 직접 연결된다. 동시에, dshift 출력은 하나의 lcd_clk 사이클동안 하이가 된다. 이 프로세스는 전체 로우에 있는 데이터를 시프트 아웃시키기 위해 line_width[9:0] 개수의 시간들 동안 반복된다. 전체 로우가 시프트 아웃되면, data_out[15:0]은 로우가 된다. lshift 출력은 TFT 인터페이스에 연결되었는지 여부에 따라 다르게 작용한다. 이것은 dtype[1:0] 입력을 이용하여 세트된다. dtype[1:0]='11'이면, 인터페이스는 TFT 인터페이스에 연결된 것으로 간주된다. TFT 모드에 있어서, lshift 출력은 lcd_clk의 직접 출력이다. 그렇지 않으면, 인터페이스는 비TFT 패널에 연결된 것으로 간주된다. TFT 모드에 있어서, lshift 출력은 유효한 data_out[15:0]이 시프트 아웃될 때 lcd_clk의 직접 출력이다. line_counter의 값이 shift_start[7:0] 보다 작을 때의 주기동안, lshift 출력은 로우이다. 또한, 마지막 데이터 워드가 시프트 아웃되면, lshift 출력은 로우이다. 연속적인 lshift 출력을 필요로 하는 비TFT 패널이 제공되면, shift_bypass_en 입력은 하이를 취할 수 있다. 이는 lshift 출력으로 lcd_clk를 직접 출력할 것이다.
M 발생기(506)는 다목적 신호 M을 발생시키도록 설계된 로직을 묘사한다. 이러한 묘사는 단 하나의 가능한 구현으로서 기능 또는 구현에 있어서의 한정으로 보여지지 않아야 한다. 타이밍 인터페이스의 M 출력은 dtype[1:0] 및 mod_rate 입력에 의한 설정으로서 기능한다. dtype[1:0]='11'이면, mod_rate 입력은 무시된다. 이 모드에서, M 출력은 데이터 레디 출력(DRDY)로서 기능한다. 라인 카운터(206)가 값 shift_start[7:0]에 도달하면 M 출력은 하이가 된다. 이것은 마지막 data_out[15:0] 워드가 시프트 아웃될 때까지 유지된다. dtype[1:0]='11'이면, mod_rate[7:0] 입력은 M 출력의 토글 속도를 결정한다. mod_rate[7:0]이 제로이면, M 출력은 프레임 출력과 동시에 토글된다. mod_rate가 제로보다 크면, 이것은 M 출력의 토글들 사이의 라인 출력 토클들의 개수를 나타낸다.
소정의 조건들 하에서의 입력 및 출력 신호들을 나타내는 타이밍도(도 6 내지 10)를 통해 본 발명의 추가 실시예가 가장 잘 설명된다. 디바이스는 다양한 제조업자들로부터의 LCD들의 광범위 스펙트럼과 인터페이싱할 것으로 예상되기 때문에, 출력 신호 타이밍은 수정되어야만 한다. 타이밍 엔진은 각 신호에 대한 두개의 입력들(xx_start 및 xx_per 입력들)을 이용함으로써 출력 제어 신호들이 프레임내의 어떤 양의 클록 에지에서 하이 및 로우로 조정되게 할 수 있다. frame_counter와 line_counter로 불리는 두개의 카운터들도 있다.
frame_counter는 얼마나 많은 lcd_clk들이 한 프레임내에 있는 지를 결정한다. 이것은 값 frame_per[15:0]까지 카운트하고, 제로로 리셋되고, 그리고 나서 반복된다. 이들 카운터들은 lcdif_en이 하이로 샘플링되면 첫번째 lcd_clk 에지에서 시작한다.
line_counter는 얼마다 많은 lcd_clk들이 LCD 모듈의 한 라인(로우)에 있는지를 결정한다. 이 카운트는 수평 표시 주기와 수평 비표시 주기의 합이다. 이것은 값 line_per까지 카운트하고, 제로로 리셋되고, 그리고 나서 반복된다. line_counter는 frame_counter가 리셋되는 동시에 리셋될 것이다. 수평 표시 주기내의 lcd_clk들의 개수는 디스플레이의 한 로우내의 픽셀들의 개수와 반드시 같지는 않다는 것을 주목한다. TFT 디스플레이들에 대하여, 하나의 lcd_clk는 일반적으로 하나의 픽셀에 대응한다. 하지만, 다른 디스플레이 기술들에 대하여, 이것은 버스 폭 및 컬러 깊이에 따라 변한다. 따라서, 사용자는 프레임 및 라인의 길이를 프로그래밍할 수 있다.
프레임을 설정할 필요가 있는 마지막 입력은 line_width[9:0] 입력이다. 이 입력은 하나의 로우를 완료하는데 얼마나 많은 data_out[15:0] 버스상의 출력들이 소모되는지를 결정한다. 각 data_out[15:0] 출력은 하나의 lcd_clk 주기를 소모한다고 가정한다. 따라서, (lcd_clk 주가가 곱해지면) 이 입력은 수평 표시 주기내에서의 총 시간을 제공한다.
도 6 내지 10에 대하여, 다음 세팅들이 가정된다.
·frame_per[15:0]=644: 각 프레임내에서의 644 lcd_clk 사이클들을 특정한다. 이것은 표준 디스플레이 형상을 근거로 한 실제 값을 나타내지는 않는다는 것을 주목한다. 오히려, 이 기기가 기능할 수 있는 일반적인 방식을 나타낸 것이다.
·line_per=244: 각 라인에서의 244 lcd_clk들을 특정한다.
·fm_start=4: frame_counter가 값'4'에 도달하면 프레임 출력이 하이가 되어야 한다는 것을 특정한다.
·fm_per=6: frame_counter가 값'6'에 도달하면 프레임 출력이 로우가 되어야 한다는 것을 특정한다.
·ln_start=1: line_counter가 값'1'에 도달하면 라인 출력이 하이가 되어야 한다는 것을 특정한다.
·ln_per=4: line_counter가 값'4'에 도달하면 라인 출력이 로우가 되어야 한다는 것을 특정한다.
·shift_start=4: 프레임 카운터가 값'4'에 도달하면 data_in[15:0]으로부터의 새로운 값으로 메모리(220)가 래치되어야 한다는 것을 특정한다. 메모리(220)의 출력은 data_out[15:0]에 직접 연결한다.
·line_width=n: shift_start에 도달하면 line_counter가 값'n'에 도달하기까지 lcd_clk마다 하나의 값으로 클록킹을 지속한다는 것을 특정한다.
·모든 입력 세팅들은 lcdif_en 입력이 하이를 취하기 전에 설정되어야 한다는 것을 주목한다.
도 6은 모노크롬 또는 STN 포맷 2 디스플레이에 대한 프로그램된 신호 타이밍을 나타낸다(여기서, shift_bypass_en=0). 이 실시예에서, shift_bypass_en=0이고 입력 mode_rate=1이며, 이는 M 출력이 라인 출력과 동일한 속도로 토글된다는 것을 의미한다. 이 타이밍도는 두개의 프레임 신호 펄스들로 나타낸 것과 같이 전송된 한 프레임의 데이터 보다 약간 많은 것을 제공한다. 프로그램가능 사이클 상태기의 출력들은 lcd_clk와 동기화된다. 두개의 카운터들은 리셋 입력이 떨어지고 lcdif_en이 1로 세트된 후(이는 입력들이 안정적이라는 것을 나타냄)에 카운팅을 시작한다. 이 예에서 Line_counter는 0에서 244까지, 즉 각 라인에서의 픽셀들의 개수(240 픽셀)와 필요한 수평 비표시 주기의 길이(4 클록 사이클)의 합을 카운트한다. Frame_counter는 이 예에서 0에서 644까지 카운트한다. frame_counter가 총 프레임 카운터에 도달하면, frame_counter와 line_counter는 리셋되고 프로세스는 반복된다. 라인 신호는 각각 1 및 4인 line_start 및 line_per 값들을 근거로 하여 line_counter가 line_start와 같은 클록 사이클에서 시작하여 line_counter가 line_per와 같은 클록 사이클동안 끝나는 세개의 클록 사이클들동안 하이가 된다. 마찬가지로, 프레임 신호는 각각 4 및 6인 fm_start 및 fm_per 값들을 근거로 두개의 클록 신호들동안 하이가 된다. 이 실시예에서 M 출력은 라인 출력과 실질적으로 동일하다. lshift 출력은 lcd_clk 입력과 실질적으로 동일하지만, 수평 표시 주기들동안만이다. data_out 출력은 수평 표시 주기들동안 유효 데이터를 나타내며 비표시 주기들동안 제로 또는 인액티브 상태이다. dshift 출력은 수평 표시 주기들동안만 하이가 된다.
도 7은 모노크롬 또는 STN 포맷 2 디스플레이에 대한 프로그램된 신호 타이밍을 나타낸다(여기서, shift_bypass_en=1). 하나를 제외하고 출력들은 도 6과 동일하다. shift_bypass_en=1이기 때문에, lcdif_en=1일 때 lshift 신호는 lcd_clk 입력의 통과 신호이다.
도 8은 STN 포맷 1 디스플레이에 대한 프로그램된 신호 타이밍도로서 shift_bypass_en=0이다. 입력 mod_rate는 이 디스플레이 타입에서 무시된다. 여기서, lshift 출력은 수평 디스플레이 주기가 시작하여 그 주기동안 각 lcd_clk 신호에서 토글되기 직전에 액티브 상태이다. 기능적으로 LSHIFT2라 불리는 M 출력에서의 파형은 180도 다른 위상이라는 점을 제외하고 lshift와 실질적으로 동일하다.
도 9는 STN 포맷 1 디스플레이에 대한 프로그램된 신호 타이밍도로서 shift_bypass_en=1이다. 여기서, LSHIFT2를 나타내는 M 출력은 lcdif_en과 함께 하이가 되고 lcd_clk 사이클마다 토글된다. lshift 출력은 동일한 파형이지만, 180도 위상 시프트되어 있다.
도 10은 TFT 디스플레이에 대한 프로그램된 신호 타이밍도이다. 이 디스플레이 타입에서, 입력들 shift_bypass_en과 mod_rate는 무시된다. 기능적으로 DRDY로 불리는 M 출력은 액티브 데이터 전송 사이클들동안만 또는 수평 표시 주기들동안만 하이가 된다. dtype[1:0]=11이기 때문에, 여기서 프레임 출력은 극성이 반전되었다.
도 11은 비디오 디스플레이를 구동하기 위해 프로그램가능 사이클 상태기를 이용하는 방법에서 수행되는 단계들을 나타낸다. 단계(1100)는 제어 입력에서 프로그래밍 명령들을 수신하는 단계이다. 단계(1102)는 제1 제어 출력에서 신호를 발생시키는 단계이다. 단계(1104)는 제2 제어 출력에서 신호를 발생시키는 단계이다. 단계(1106)는 비디오 데이터를 저장 및 전송하는 단계이다.
도 12는 픽셀들(1202)의 레이아웃을 나타낸 전형적인 컬러 액정 디스플레이 패널(1200)을 나타낸 도면이다. 실제 구현은 아마도 디지털 로직에서 통상적인 제로로 시작하더라도, 로우들과 컬럼들은 인덱스 값 1에서 시작하여 순차적으로 번호가 부여된다. 컬러 LCD의 각 픽셀은 다양한 컬러 값들을 만들기 위해 조합되는 3원색 채널들로 구현된다. 이 예시적인 도면에서, 3원색은 레드, 블루, 그린이다. 각 픽셀내의 각 컬러는 다른 값으로 표현되기 때문에, 240×320 컬러 픽셀 디스플레이는 교대로 표현된 픽셀 컬러들을 이용하여 240×960 "모노크롬" 픽셀 디스플레이로서 가장 잘 표현된다. 디스플레이 컨트롤러의 실제 구현은 "모노크롬" 픽셀에 대하여 컬러 당 복수의 데이터 비트를 수용하거나 또는 단 하나만을 수용할 수 있다. 디스플레이 컨트롤러가 한번에 한 비트만을 수용하면, 프로그램가능 사이클 상태기는 픽셀의 펄스폭을 제어하기 위해 사람의 눈이 디스플레이된 이미지내에서의 변화를 감지할 수 있는 것보다 훨씬 빈번하게 "모노크롬" 픽셀의 값을 리프레시할 것이다. 이는 그 픽셀 위치내의 컬러의 세기를 효과적으로 제어하고, 따라서 마이크로컨트롤러에 의해 2, 4, 또는 8 비트 컬러값으로 표현되는 원하는 컬러의 디스플레이를 가능하게 한다. 디스플레이 컨트롤러가 픽셀당 복수의 비트들을 수용하면, 프로그램가능 사이클 상태기는 원하는 컬러를 발생시키기 위해 이 복수의 비트 값을 한번 전달하기만 하면 된다.
도 13은 픽셀들(1302)의 레이아웃을 나타낸 전형적인 모노크롬 액정 디스플레이 패널(1300)을 나타낸 도면이다. 도 12에서와 같이, 실제 구현은 아마도 디지털 로직에서 통상적인 제로로 시작하더라도, 로우들과 컬럼들은 인덱스 값 1에서 시작하여 순차적으로 번호가 부여된다. 이것은 모노크롬 디스플레이이기 때문에, 마이크로컨트롤러는 비디오 정보를 세기로서 표현하기만 하면 된다.
도 14는 CPU(101), SIPU(1401), 메모리(111), 및 출력 디바이스(103)에 동작가능하게 연결될 수 있는 프로그램가능 사이클 상태기(102)를 포함하는 마이크로컨트롤러의 일실시예의 내부 부품들을 나타낸 블록도이다. 이 실시예에서, CPU(101)는 공유 데이터 버스(104)를 통해 메모리(111)로부터 명령들과 데이터를 가져온다. 그리고, CPU는 필요한 만큼 SIPU(1401)로 명령들을 디스패치한다. SIPU(1401)는 메모리(111)에서 직접 데이터 값들을 조작함으로써 이들 명령들을 차례대로 실행한다. PCSM(102)는 독립적이지만 CPU(101)로부터의 구성 명령들에 근거하여 메모리(111)내의 블록으로부터 데이터를 연속적으로 읽고 어떠한 필요한 제어 신호들과 함께 이 데이터를 출력 디바이스(103)로 출력한다. 구성 명령들은 출력 디바이스(103)의 입력 요건들을 따르기 위해 이 데이터 전송의 타이밍을 제어한다. 공유 데이터 버스(104)는 하나 이상의 버스일 수 있고 이 버스에 연결된 각 디바이스는 하나 이상의 데이터 포트를 가질 수 있다는 것을 이 기술분야의 당업자는 이해할 것이다. 따라서, CPU(101)는 전용 포트를 통해 메모리(111)를 액세스하는 반면에 SIPU(1401)와 PCSM(102)는 메모리(111)로의 다른 포트를 이용할 수 있다. 생각건대, 메모리(111)는 3개의 포트를 가져 CPU(101), SIPU(1401) 및 PCSM(102)의 각각에의 직접적이고 독립적인 액세스를 제공할 수 있다.
도 15는 공유 버스(104) 대신에 마이크로컨트롤러의 요소들을 연결하는 DMA 부품(1501)을 갖는 것을 제외하고 도 14에 예시한 요소들을 포함하는 마이크로컨트롤러의 일실시예의 블록도이다. DMA(1501)는 CPU(101), SIPU(1401), 메모리(111), 및 PCSM(102)의 각각에 포트를 제공한다. 도 14에 도시한 실시예와 같이, CPU(101)는 제2 메모리 포트를 통해 메모리(111)에 직접 연결될 수 있다. 하지만, 이 실시예는 SIPU(1401), 메모리(111) 및 PCSM(102)을 DMA(1501)상의 포트들에 연결하여야 한다. DMA(1501)는 마이크로컨트롤러내의 데이터 흐름을 최적화하기 위해 블록 데이터 전송 동작들을 수행한다. PCSM(102)은 전형적으로 DMA(1501)에 하나의 명령을 주고(비디오 버퍼의 컨텐츠들을 읽고) 입력 타이밍 요건들에 따라 그 데이터를 출력 디바이스(103)로 전송할 것이다. 그리고, 이 정확한 명령은 출력 디스플레이의 경우에 무기한 반복되어 디스플레이(103)는 메모리(111)내의 논리 그래픽 또는 비디오 데이터 표현의 디스플레이를 계속해서 리프레시한다. 음성 출력의 경우에, PCSM(102)은 메모리(111)내의 일정한 위치에 있는 버퍼로부터 데이터를 반복해서 요구하거나 또는 메모리(111)내에 저장된 음성 데이터의 순차 블록들로부터 데이터를 요구할 수 있다.
SIPU(1401)는 DMA(1501)로 보다 복잡한 명령들을 발생시키고 하나 이상의 저우선 포트(1505)로부터 데이터를 액세스할 수 있다. 예를 들면, CPU(101)는 SIPU(1401)가 일정한 필터를 이미지 데이터의 블록에 적용하도록 명령할 수 있다. 그리고, SIPU(1401)는 그 이미지 데이터 블록을 위한 제1 저우선 포트(1505)상에서 읽기 요구를 만들 수 있다. SIPU(1401)는 각 데이텀(datum)에 필터를 적용하고 이미지 데이터의 동일 블록에 대한 쓰기 요구의 일부로서 그 데이텀을 제2 저우선 포트(1505)에 전달한다. 따라서, DMA(1501)는 동시 읽기 및 쓰기 동작들을 수행할 수 있다. 쓰기 동작은 SIPU(1401)내에서 필터 동작을 수행하는데 필요한 것과 적어도 동일한 개수의 클록 사이클들의 지연 후에 발생한다. 또 하나의 예에서, CPU(101)는 SIPU(1401)가 2차원 마스크를 한 블록의 이미지 데이터에 적용하도록 명령할 수 있다. 이 예에서, SIPU(1401)는 DMA(1501)상의 세개의 저우선 포트들(1505)에 연결될 수 있다. 하나의 저우선 포트(1505)는 이미지 데이터의 블록을 위한 DMA(1501)로 읽기 명령을 발생시키는데 사용되는 반면에 두번째 저우선 포트(1505)는 2차원 마스크를 저장하는 데이터 블록을 위한 읽기 명령을 발생시키는데 사용될 수 있다. SIPU(1401)는 마스크내의 현재 픽셀을 이미지 데이터의 현재 픽셀과 결합하기 위해 논리 AND, OR 또는 XOR를 이용하는 마스크를 적용하고 동일 블록의 이미지 데이터를 위한 DMA(1505)에의 쓰기 명령의 일부로서 픽셀 정보를 제3 저우선 포트(1505)에 전달한다. 대안적으로, 각 논리 연산의 오퍼랜드들 및 결과를 저장하기 위한 레지스터 뱅크와 결합되면 단일 DMA 포트가 사용될 수 있다.
CPU(101), SIPU(1401), 및 메모리(111)는 각각 저우선 포트들(1505)에 연결되고 PCSM(102)은 고우선 포트(1503)에 연결된다. 이는, 이들 모듈들 각각에 의해 수행될 태스크들의 특성을 반영한다. 저우선 포트들(1505)에 연결된 모듈들은 실시간 민감 태스크들을 수행하지 않고 수개의 CPU 사이클들의 지연으로도 적절히 기능할 수 있다. 반대로, PCSM(103)은 외부 출력 디바이스(103)에 데이터를 제공하는 실시간 민감 태스크를 수행한다. 출력 디바이스(103)는 사람이 식별할 수 있는 출력 에러들을 생성하지 않아야 하는, 어길 수 없는 입력 타이밍 요건들을 갖는다. 예를 들면, 출력 디바이스(103)가 LCD인 경우에, 데이터의 지연 도착은 시각적인 아티팩트들(예를 들면, 조정 불량의 픽셀들, 블랭크 픽셀들 등)을 발생시킬 수 있다. LCD 디바이스는 각 픽셀을 포함하는 물리적인 요소들의 일시적인 특성으로 인해 특정 속도로 리프레시되어야 한다. 출력 디바이스(103)가 오디오를 발생시키기 위한 디지털-아날로그 변환기이면, 데이터의 지연 도착은 피치 시프트, 팝, 또는 의도하지 않은 적막을 발생시킬 수 있다. 이러한 이유들로, 고우선 포트(1503)를 통한 PCSM(102)에 의한 메모리(111)로부터의 데이터 요구들은 어떤 저우선 포트들(1505)상의 어떠한 요구들보다 우선한다. 고우선 요구가 처리되면, 저우선 포트들(1505)상의 요구들이 재개된다. 저우선 포트들(1505)상의 요구들은 라운드 로빈 스케쥴링을 포함하는 어떠한 중재 방식을 이용하여 처리될 수 있다.
도 16은 CPU(101)를 포함하는 마이크로컨트롤러의 일실시예의 내부 부품들을 나타낸 블록도이다. 레지스터들(1601)은 LCD 타이밍 모듈(102)을 위한 구성 설정들 뿐만 아니라 비트 블리터(BLT)(1603)를 위한 DMA 설정들을 저장한다. BLT(1603)는 LCD DMA(1501)로 제어 신호들을 제공하고 독립적이지만 CPU(101)의 지시하에서 그래픽 특정 데이터 처리 동작들을 수행한다. 그래픽 데이터는 DMA(1501)에서, LCD 타이밍(102)이 그 데이터를 LCD(1613)로 중계하기 전에 큰 컬러 공간으로 매핑될 컬러 룩업 테이블(1607)로 전달된다. 메모리 인터페이스(1609)는 DMA(1501)와, 아마도 외부 P/SRAM(1611)과 플래시 메모리(1612)를 포함하는 어떠한 개수의 외부 메모리 디바이스들 간의 데이터 전송 메커니즘을 제공한다. 아비터(1605)는 DMA(1501)와 디바이스 메모리(111) 간의 인터페이스를 제공한다. DMA(1501)는 소스 포트와 목적 포트를 포함하는 각 포트, 전송할 메모리 워드들의 시작 어드레스 및 카운트를 위한 적어도 하나의 기본 명령을 수용한다. DMA(1501)는 복수의 포트들에 의한 경쟁 요구들을 처리하기 위한 중재 메커니즘도 포함한다. 가장 기본적인 구현내의 이 중재 메커니즘은 고우선 포트(포트 0)에 의해 요구가 만들어지면 저우선 포트(이 도면에서 포트들 1,2,3)에 의한 요구의 중단을 가능하게 한다. 이는, 고우선 포트가 실시간 LCD 타이밍 모듈(102)을 충족시키기 때문에 필요한다. 고우선 요구가 만족되면, 저우선 요구가 재개된다.
도 17은 ALU(arithmetic logic unit)(1701)를 포함하는 SIPU의 일실시예의 내부 부품들을 나타낸 블록도이다. ALU(1701)는 오피코드 인터페이스로 명령을 수신하고 CPU(101)(도시하지 않음)로부터의 DMA(1501)(도시하지 않음) 프로그래밍 명령들로의 가시성을 갖는다. 레지스터 뱅크(1703)는 ALU(1701)가 사용하기 위한 오퍼랜드들 및 결과들의 내부 스토리지를 제공한다. 포트 2 CPU 입력들 또는 포트 2 DMA 입력들로부터의 값들이 도달하고 그리고 값들이 포트 2 멀티플렉서(1705)를 통해 DMA(1501)(도시하지 않음) 또는 CPU(101)(도시하지 않음)로 전달될 수 있다. 저우선 포트 멀티플렉서(1707) 및 고우선 멀티플렉서(1709)는 DMA가 CPU(101)(도시하지 않음) 또는 ALU(1701)로부터 포트 프로그래밍 명령들을 수신할 수 있게 한다. 포트 2 멀티플렉서(1705)는 레지스터들의 세트(1703)로부터의 적절한 출력과 ALU(1701)의 직접 출력을 선택한다. 이 실시예는 임시 데이터 스토어로서 레지스터 뱅크(1703)를 이용하는 단일 DMA 포트를 이용하여 ALU가 어떻게 동작하는지를 예시한다.

Claims (20)

  1. 제1 중앙 처리 유닛(CPU);
    메모리;
    프로그램가능 사이클 상태기;
    특수 명령어 처리 유닛(special instruction processing unit; SIPU);
    출력 디바이스에의 연결부; 및
    상기 CPU에 의해 프로그램 가능한 복수의 특수 기능 레지스터들을 포함하고,
    상기 SIPU는 상기 CPU로부터의 명령에 응답하여 상기 출력 디바이스에 전송되도록 상기 메모리 내의 복수의 값들을 조작하고, 여기서 상기 명령은 상기 특수 기능 레지스터들 중 하나에 저장되고,
    상기 프로그램가능 사이클 상태기는 상기 메모리에서 상기 출력 디바이스로 데이터를 연속적으로 전송하기 위해 상기 특수 기능 레지스터들 중 하나를 통해 상기 CPU에 의해 구성되고,
    상기 프로그램가능 사이클 상태기는 상기 데이터 전송들을 상기 출력 디바이스의 입력 타이밍 요건들과 조화시키기 위해 상기 출력 디바이스로 제어 신호를 주기적으로 송신하는 것을 특징으로 하는, 마이크로컨트롤러.
  2. 제1항에 있어서,
    상기 출력 디바이스는 LCD(liquid crystal display)이고,
    상기 LCD의 비트 깊이는 1 비트 내지 16 비트이고,
    각 픽셀은 하나의 값 또는 세 개의 값들로 표현되고,
    상기 LCD의 형상은 64×64 픽셀 내지 854×480 픽셀인 것을 특징으로 하는, 마이크로컨트롤러.
  3. 제1항에 있어서,
    상기 CPU는 16 비트보다 넓지 않은 데이터 경로를 가지며 초당 6천만 개의 명령들보다 적은 명령들을 수행하는 것을 특징으로 하는, 마이크로컨트롤러.
  4. 제1항에 있어서,
    상기 프로그램가능 사이클 상태기는:
    모노크롬 LCD(liquid crystal display),
    컬러 STN(super twisted nematic) 액정 디스플레이,
    DSTN(double-layer super twisted nematic) 액정 디스플레이,
    컬러 TFT(thin-film transistor) 액정 디스플레이,
    제로-파워 바이스테이블(bistable) 디스플레이,
    플라즈마 디스플레이,
    LCOS(liquid crystal on silicon) 디바이스,
    디지털 마이크로미러 디바이스,
    발광 다이오드 패널, 및
    OLED(organic light-emitting diode) 디스플레이
    로 이루어진 세트에서 적어도 4개의 서로 다른 그래픽 디스플레이 기술들에 의해 요구되는 제어 신호 타이밍을 지원하는 것을 특징으로 하는, 마이크로컨트롤러.
  5. 제1항에 있어서,
    하나의 고우선 포트와 적어도 두 개의 저우선 포트들을 갖는 DMA(direct memory access) 컨트롤러를 더 포함하고,
    상기 DMA 컨트롤러의 상기 고우선 포트는 상기 프로그램가능 사이클 상태기에 연결되고,
    상기 DMA 컨트롤러의 제1 저우선 포트는 상기 메모리에 연결되고 상기 DMA 컨트롤러의 제2 저우선 포트는 상기 SIPU에 연결되는 것을 특징으로 하는, 마이크로컨트롤러.
  6. 제1항에 있어서,
    상기 SIPU는 블록 전송 동작들을 수행하도록 동작가능한 것을 특징으로 하는, 마이크로컨트롤러.
  7. 제6항에 있어서,
    상기 SIPU는 XOR, OR, 및 AND의 논리 연산들을 수행가능한 것을 특징으로 하는, 마이크로컨트롤러.
  8. 제6항에 있어서,
    상기 SIPU 명령 세트는 백그라운드 필 동작, 픽셀 세트 동작, 및 라인 드로우 동작을 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  9. 제8항에 있어서,
    상기 SIPU 명령 세트는 픽쳐-인-픽쳐 동작을 포함하는 것을 특징으로 하는, 마이크로컨트롤러.
  10. 제5항에 있어서,
    상기 DMA와 상기 프로그램가능 사이클 상태기 사이에 컬러 룩업 테이블(color lookup table; CLT)을 더 포함하는 것을 특징으로 하는 마이크로컨트롤러.
  11. 제5항에 있어서,
    상기 SIPU는 상기 DMA의 두 개의 포트들에 대한 읽기 액세스권을 갖는 것을 특징으로 하는, 마이크로컨트롤러.
  12. 제11항에 있어서,
    상기 SIPU는 상기 DMA의 제3 포트에 대한 쓰기 액세스권을 갖는 것을 특징으로 하는, 마이크로컨트롤러.
  13. 제1항에 있어서,
    상기 메모리는 적어도 두 개의 포트들을 포함하고, 여기서 제1 포트는 상기 CPU에 결합되고, 제2 포트는 상기 SIPU 및 상기 프로그램가능 상태기에 결합되고, 상기 포트들은 상기 메모리에 대한 독립적인 액세스권을 제공하는 것을 특징으로 하는, 마이크로컨트롤러.
  14. 제1항에 있어서,
    상기 메모리는 적어도 세 개의 포트들을 포함하고, 여기서 제1 포트는 상기 CPU에 결합되고, 제2 포트는 상기 SIPU에 결합되고, 제3 포트는 상기 프로그램가능 상태기에 결합되고, 상기 포트들은 상기 메모리에 대한 독립적인 액세스권을 제공하는 것을 특징으로 하는, 마이크로컨트롤러.
  15. 제5항에 있어서,
    상기 CPU는 상기 메모리로의 액세스를 위해 상기 DMA 컨트롤러와 결합하는 것을 특징으로 하는, 마이크로컨트롤러.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107029544A 2008-10-30 2009-10-27 집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러 KR101563989B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/261,779 US8456478B2 (en) 2008-10-30 2008-10-30 Microcontroller with integrated graphical processing unit
US12/261,779 2008-10-30

Publications (2)

Publication Number Publication Date
KR20110079576A KR20110079576A (ko) 2011-07-07
KR101563989B1 true KR101563989B1 (ko) 2015-10-28

Family

ID=41611069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107029544A KR101563989B1 (ko) 2008-10-30 2009-10-27 집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러

Country Status (6)

Country Link
US (1) US8456478B2 (ko)
EP (1) EP2342656B1 (ko)
KR (1) KR101563989B1 (ko)
CN (1) CN102187331B (ko)
TW (1) TWI517087B (ko)
WO (1) WO2010056507A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8866698B2 (en) * 2008-10-01 2014-10-21 Pleiades Publishing Ltd. Multi-display handheld device and supporting system
WO2011093017A1 (ja) * 2010-01-27 2011-08-04 パナソニック株式会社 パネル制御装置及びパネル制御システム
US8884563B2 (en) * 2010-12-02 2014-11-11 Jerry Fan System and method for supplementing a generated DC power supply
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US8918680B2 (en) 2012-01-23 2014-12-23 Apple Inc. Trace queue for peripheral component
US8677150B2 (en) * 2012-02-01 2014-03-18 Intel Mobile Communications GmbH Low-power multi-standard cryptography processing units with common flip-flop/register banks
US11082490B2 (en) 2012-11-28 2021-08-03 Nvidia Corporation Method and apparatus for execution of applications in a cloud system
US20150009222A1 (en) * 2012-11-28 2015-01-08 Nvidia Corporation Method and system for cloud based virtualized graphics processing for remote displays
US10038553B2 (en) * 2013-12-30 2018-07-31 Empire Technology Development Llc Information rendering scheme
US9739517B2 (en) * 2015-08-21 2017-08-22 Haier Us Appliance Solutions, Inc. Controlling the operation of a dispenser system
EP3319069B1 (en) * 2016-11-02 2019-05-01 Skeyecode Method for authenticating a user by means of a non-secure terminal
US10818067B1 (en) * 2019-05-31 2020-10-27 Texas Instruments Incorporated GPU assist using DSP pre-processor system and method
TWI758097B (zh) * 2021-02-18 2022-03-11 友達光電股份有限公司 驅動電路及相關驅動方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050110783A1 (en) 2003-11-21 2005-05-26 Motorola, Inc. Method and apparatus for dynamically changing pixel depth
US20080001934A1 (en) 2006-06-28 2008-01-03 David Anthony Wyatt Apparatus and method for self-refresh in a display device
US20080077771A1 (en) 1993-11-30 2008-03-27 Guttag Karl M Long Instruction Word Controlling Plural Independent Processor Operations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926644A (en) * 1991-10-24 1999-07-20 Intel Corporation Instruction formats/instruction encoding
KR970002384B1 (ko) * 1994-10-26 1997-03-03 엘지전자 주식회사 휴대형 단말기의 사운드 발생 및 디스플레이 제어장치
US5826106A (en) 1995-05-26 1998-10-20 National Semiconductor Corporation High performance multifunction direct memory access (DMA) controller
US5767866A (en) 1995-06-07 1998-06-16 Seiko Epson Corporation Computer system with efficient DRAM access
EP0863497A1 (en) * 1997-03-06 1998-09-09 Sony Computer Entertainment Inc. Graphic data generation device with frame buffer regions for normal and size reduced graphics data
US6157984A (en) * 1997-05-15 2000-12-05 Seagate Technology, Llc Integrated controller/processor for disc drive having direct memory access
JP3895610B2 (ja) * 2001-03-21 2007-03-22 株式会社リコー 画像形成装置および画像形成方法
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US7768522B2 (en) * 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US7847864B1 (en) * 2002-03-01 2010-12-07 Broadcom Corporation All digital radio frequency modulator
KR100449102B1 (ko) 2002-03-19 2004-09-18 삼성전자주식회사 멀티미디어용 시스템온칩 프로세서
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7538762B2 (en) * 2003-09-30 2009-05-26 Intel Corporation Switching display update properties upon detecting a power management event
US7385607B2 (en) * 2004-04-12 2008-06-10 Nvidia Corporation Scalable shader architecture
US7746350B1 (en) * 2006-06-15 2010-06-29 Nvidia Corporation Cryptographic computations on general purpose graphics processing units
JP2008021228A (ja) * 2006-07-14 2008-01-31 Renesas Technology Corp データ処理装置
TWI333788B (en) * 2006-11-17 2010-11-21 Chunghwa Picture Tubes Ltd Decimation line phenomenon cancellation method and the circuit thereof
JP2009134391A (ja) * 2007-11-29 2009-06-18 Renesas Technology Corp ストリーム処理装置、ストリーム処理方法及びデータ処理システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077771A1 (en) 1993-11-30 2008-03-27 Guttag Karl M Long Instruction Word Controlling Plural Independent Processor Operations
US20050110783A1 (en) 2003-11-21 2005-05-26 Motorola, Inc. Method and apparatus for dynamically changing pixel depth
US20080001934A1 (en) 2006-06-28 2008-01-03 David Anthony Wyatt Apparatus and method for self-refresh in a display device

Also Published As

Publication number Publication date
TW201019264A (en) 2010-05-16
KR20110079576A (ko) 2011-07-07
TWI517087B (zh) 2016-01-11
WO2010056507A1 (en) 2010-05-20
EP2342656A1 (en) 2011-07-13
US8456478B2 (en) 2013-06-04
US20100110085A1 (en) 2010-05-06
CN102187331B (zh) 2015-03-11
CN102187331A (zh) 2011-09-14
EP2342656B1 (en) 2019-09-04

Similar Documents

Publication Publication Date Title
KR101563989B1 (ko) 집적된 그래픽 처리 장치를 갖는 마이크로컨트롤러
JP7034423B2 (ja) 駆動制御デバイス及び電子機器
US5488385A (en) Multiple concurrent display system
US7834869B2 (en) Dual scan display panel driver
JP6806452B2 (ja) 表示制御及びタッチ検出装置
US9471955B2 (en) Multiple display pipelines driving a divided display
KR101513551B1 (ko) 프로그램가능 사이클 상태기 인터페이스
US10762827B2 (en) Signal supply circuit and display device
JP2010156846A (ja) マルチディスプレイシステム
US20160216839A1 (en) Display device and electronic device including the same
US9953591B1 (en) Managing two dimensional structured noise when driving a display with multiple display pipes
US20060184893A1 (en) Graphics controller providing for enhanced control of window animation
JPH09161093A (ja) 液晶表示装置
JP2820998B2 (ja) 発光素子ドットマトリクスディスプレイのスクロール回路
JPH11153980A (ja) 液晶表示装置
JPS62153893A (ja) 文字図形表示装置
KR100586174B1 (ko) 디스플레이 장치를 구동하기 위한 응용 프로세스 및데이터 스케일링 방법
CN104143314A (zh) 显示控制装置

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 5