KR100633742B1 - 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법 - Google Patents

주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법 Download PDF

Info

Publication number
KR100633742B1
KR100633742B1 KR1020030095189A KR20030095189A KR100633742B1 KR 100633742 B1 KR100633742 B1 KR 100633742B1 KR 1020030095189 A KR1020030095189 A KR 1020030095189A KR 20030095189 A KR20030095189 A KR 20030095189A KR 100633742 B1 KR100633742 B1 KR 100633742B1
Authority
KR
South Korea
Prior art keywords
data
peripheral device
register
address
channel
Prior art date
Application number
KR1020030095189A
Other languages
English (en)
Other versions
KR20050063939A (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 한국전자통신연구원
Priority to KR1020030095189A priority Critical patent/KR100633742B1/ko
Priority to US10/948,045 priority patent/US20050138236A1/en
Publication of KR20050063939A publication Critical patent/KR20050063939A/ko
Application granted granted Critical
Publication of KR100633742B1 publication Critical patent/KR100633742B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

본 발명은 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는 직접 메모리 액세스 제어 장치 및 방법에 관한 것이다. 본 발명에 따른 직접 메모리 액세스 제어 장치는, 주변 장치로부터 DMA 요구를 수신하는 경우, 주변 장치가 연결된 채널의 상태가 데이터 전송의 첫 부분인지를 판단하는 채널 상태 생성부; 주변 장치와 데이터가 전송될 메모리의 어드레스를 발생시키는 어드레스 생성부; DMA 동작 상태를 나타내는 신호를 생성하는 제어 신호 생성부; 및 주변 장치로부터 전송되는 데이터를 임시 저장한 후 메모리로 전송하는 버퍼를 포함하며, 채널의 상태가 데이터 전송의 첫부분인 경우, 어드레스 생성부는 주변 장치의 데이터 전송 크기를 저장하는 레지스터의 어드레스를 발생시키고, 제어 신호 생성부는 전송 크기 레지스터에 기록된 값을 입력받기 위한 제어 신호를 생성함으로써, 주변 장치로부터 데이터 전송 크기를 자동으로 갱신한다.
DMAC, 데이터 전송 크기, 갱신, 주변 장치, 프로세서

Description

주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는 직접 메모리 액세스 제어 장치 및 방법{DIRECT MEMORY ACCESS CONTROLLER FOR UPDATING DATA TRANSMISSION SIZE AUTOMATICALLY FROM PERIPHERAL, AND CONTROL METHOD THEREOF}
도 1은 본 발명의 일실시예에 따른 시스템을 개략적으로 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 DMAC의 구성을 도시한 것이다.
도 3은 본 발명의 일실시예에 따른 DMAC의 호스트 인터페이스의 구성을 도시한 것이다.
도 4는 본 발명의 일실시예에 따른 DMAC의 동작을 도시한 순서도이다.
도 5 본 발명의 일실시예에 따른 DMAC의 동작예를 도시한 것이다.
도 6은 도 5의 동작이 수행된 뒤 일정 시간이 지난 후 주변 장치에서 새로운 입력 데이터가 발생한 경우의 본 발명의 일실시예에 따른 DMAC의 동작을 도시한 것이다.
도 7은 도 6과 같은 환경에서 종래의 DMAC의 동작을 도시한 것이다.
본 발명은 메모리 액세스 제어 장치 및 동작 방법에 관한 것으로서, 더욱 상 세하게는 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는 직접 메모리 액세스 제어 장치 및 방법에 관한 것이다.
최근 영상 데이터 등의 많은 데이터 양과 빠른 처리 속도를 요구하는 응용 분야가 발달함에 따라, 직접 메모리 액세스 제어 장치(Direct Memory Access Controller, 이하 'DMAC'라 한다)의 중요성이 점차 강조되고 있다. DMAC는 버스의 효율을 최대화하여, 빠른 시간 안에 많은 양의 데이터를 처리할 수 있는 장치이다.
그러나, 종래의 DMAC는 주변 장치에서 직접 메모리 액세스(Direct Memory Access, 이하 'DMA'라 한다) 요구가 발생하는 경우, 주변 장치에서 별도의 데이터 전송 크기에 대한 신호를 생성하여 프로세서로 전송하여야 하고, 이러한 데이터 전송 크기에 대한 신호를 프로세서가 개입하여 DMAC로 전송하여야 하는 단점이 있었다. 이러한 동작으로 인하여 DMA 동작 시간이 길어지고, 필요한 신호가 증가되어 시스템의 효율이 저하되었다.
본 발명이 이루고하 하는 기술적 과제는 주변 장치에서 DMA 요구가 수신된 경우 프로세서의 개입없이 자동으로 전송 데이터의 크기를 갱신할 수 있는 직접 메모리 제어 장치 및 방법을 제공하기 위한 것이다.
또한, 현재 많이 사용되고 있는 AMBA(Advanced Micro-controller Bus Architecture)의 프로토콜과 호환될 수 있는 직접 메모리 제어 장치를 제공하기 위한 것이다.
상기 과제를 달성하기 위하여, 본 발명의 하나의 특징에 따른 직접 메모리 액세스 제어 장치는, 메모리 및 주변 장치와 연결되어 있는 직접 메모리 액세스 제어 장치에 있어서, 상기 주변 장치로부터 DMA(Direct Memory Access) 요구를 수신하는 경우, 상기 DMA를 요구한 주변 장치가 연결된 채널의 현재 상태를 판단하는 채널 상태 생성부; 상기 주변 장치와 상기 메모리 사이의 데이터 전송시, 상기 메모리의 어드레스를 발생시키는 어드레스 생성부; 상기 DMA의 동작 상태를 나타내는 신호를 이용하여 DMA의 처리를 위한 제어 신호를 생성하는 제어 신호 생성부; 및 상기 주변 장치로 상기 데이터를 전송하거나 상기 제어 신호의 입출력 기능을 수행하며, 상기 주변 장치의 어드레스, 상기 메모리의 어드레스, 데이터 전송 크기 정보 및 상기 주변 장치가 상기 데이터 전송 크기에 대한 갱신을 요구하는지 여부를 포함하는 정보를 저장하는 적어도 하나 이상의 레지스터를 포함하는 호스트 인터페이스를 포함하며, 상기 DMA를 요구한 주변 장치가 연결된 채널의 현재 상태가 첫 번째 데이터 전송을 나타내는 경우, 상기 어드레스 생성부는 상기 주변 장치의 데이터 전송 크기가 저장되어 있는 레지스터의 어드레스를 발생시키고, 상기 어드레스에 저장된 상기 데이터 전송 크기를 갱신하는 직접 메모리 액세스 제어 장치를 포함한다.
본 발명의 하나의 특징에 따른 직접 메모리 액세스 제어 장치에 있어서, 적어도 두개의 주변 장치로부터 상기 채널 상태 생성부로 상기 DMA 요구가 수신되는 경우, 상기 DMA의 동작을 수행할 채널을 선택하는 채널 선택부, 및 상기 DMA의 동작 상태를 나타내는 신호를 토대로 상기 메모리로 전송되는 데이터의 전송 완료 여부를 나타내는 신호를 생성하는 전송 완료 신호 생성부를 더 포함한다.
본 발명의 하나의 특징에 따른 직접 메모리 액세스 제어 장치에 있어서, 상기 호스트 인터페이스는 상기 주변 장치가 데이터 전송 크기의 갱신을 요구하는지 여부를 나타내는 제1 레지스터, 및 상기 주변 장치의 상기 전송 크기 레지스터의 어드레스 값을 저장하는 제2 레지스터를 포함한다.
본 발명의 하나의 특징에 따른 직접 메모리 액세스 제어 장치에 있어서, 상기 호스트 인터페이스는 상기 데이터를 전송하는 주변 장치의 어드레스를 저장하는 제3 레지스터, 상기 전송되는 데이터의 형태 정보를 저장하는 제4 레지스터, 상기 데이터의 전송 크기를 저장하는 제5 레지스터, 상기 데이터가 전송될 목적지의 어드레스를 저장하는 제6 레지스터, 상기 목적지로 전송되는 데이터의 형태 정보를 저장하는 제7 레지스터, 및 상기 목적지로 전송되는 상기 데이터의 크기를 저장하는 제8 레지스터를 더 포함한다.
본 발명의 하나의 특징에 따른 직접 메모리 액세스 제어 장치에 있어서, 상기 채널은 AMBA로 형성된다.
본 발명의 하나의 특징에 따른 직접 메모리 액세스 제어 장치에 있어서, 상기 제어 신호 생성부는 상기 DMA 동작 상태를 나타내는 신호가 상기 AMBA 프로토콜과 호환되도록 생성한다.
본 발명의 하나의 특징에 다른 직접 메모리 액세스 제어 방법은, 상기 주변 장치로부터 DMA 요구가 수신되는지를 판단하는 제1 단계; 상기 DMA 요구가 수신된 경우, 상기 주변 장치가 상기 데이터 전송 크기의 갱신을 요구하는지를 판단하는 제2 단계; 갱신을 요구하는 경우 상기 주변 장치에 연결된 채널의 상태가 상기 데이터의 첫 부분인지 여부를 판단하는 제3 단계; 상기 채널 상태가 최초 데이터의 전송인 경우, 상기 주변 장치로부터 상기 데이터 전송 크기를 검출하는 제4 단계; 및 상기 검출된 데이터 전송 크기를 기초로 DMA 동작을 수행하는 제5 단계를 포함한다.
이하, 본 발명의 실시예를 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 시스템을 개략적으로 도시한 블록도이다.
도 1에 도시된 바와 같이, 본 발명의 일실시예에 따른 시스템은 프로세서(100), DMAC(110), 조정기(arbiter, 120), 메모리(130), APB 브리지(140), 및 AMBA(150)를 포함하고, APB 브리지(140)를 통하여 주변 장치(160)가 시스템에 접속되어 있다.
주변 장치(160)는 APB 브리지(140)를 통하여 DMA 요구를 DMAC(110)으로 전송하고, DMAC(110)은 조정기(120)에 버스 마스터를 요구한다.
조정기(120)가 DMAC(110)에 대한 인증을 수행하여, DMAC(110)이 버스 마스터가 되면, DMAC(110)은 주변 장치(160)로부터 읽기 동작을 수행하고, 읽기 동작이 완료되면, 메모리(130)로 쓰기 동작을 수행한다.
본 발명의 일실시예에 따르면, 주변 장치(160)로부터 전송되는 데이터의 크기가 변경된 경우, DMAC(110)은 프로세서(100)의 개입이나 별도의 신호없이 전송 데이터의 크기 정보를 갱신할 수 있는데, 이와 같은 동작에 대해서는 후술하기로 한다.
도 2는 본 발명의 일실시예에 따른 DMAC(110)의 구성을 도시한 것이다.
도 2에 도시된 바와 같이, 본 발명의 일실시예에 따른 DMAC(110)은 호스트 인터페이스(Host Interface, 200), 어드레스 생성부(Address Generator, 201), 채널 상태 생성부(Channel Status Generator, 202), 채널 선택부(Channel Selection, 203), FIFO(204), FIFO 제어부(205), 상태 생성부(State Machine, 206), 전송 제어 신호 생성부(Transmission Control Signal Generator, 207), 제어 신호 생성부(Control Signal Generator, 208), 전송 완료 신호 생성부(Ready Generator, 209), 및 인터럽트 제어부(interrupt Controller, 210)를 포함한다.
호스트 인터페이스(200)는 AMBA(150)에 직접 연결되는 부분으로 프로세서(100)나 선택된 주변 장치(160)로 데이터나 제어 정보의 입출력 기능을 수행한다.
어드레스 생성부(201)는 DMAC(110)이 시스템의 마스터로 동작할 때, 전송 데이터 크기 정보의 갱신을 위하여, 주변 장치(160)의 해당 레지스터 어드레스를 생성하고, 주변 장치(160)와 메모리(130)간의 데이터 전달시 각 장치의 해당 어드레스를 생성한다. 이 때, 생성되는 어드레스는 제어 신호에 따라, 고정/증가/감소의 형태를 갖는데, 본 발명의 일실시예에 따르면, 증가/감소량을 1, 2, 4 중 어느 하나로 선택할 수 있다.
채널 상태 생성부(202)는 전체 데이터 전송량과 상태 생성부(206)의 상태 정보를 입력하여, 현재 채널의 상태가 전체 데이터 전송의 첫 부분인지 여부를 결정한다. 이는 주변 장치(160)의 크기 정보를 반복적으로 갱신하는 오동작을 막기 위한 기능이다.
채널 선택부(203)는 동시에 여러 주변 장치로부터 DMA 요구가 발생했을 때, 각 채널의 우선순위를 고려하여 DMA 동작을 수행할 채널을 선택한다.
FIFO(204)는 입출력 데이터를 임시적으로 보관하기 위한 버퍼이다. 본 발명의 일실시예에 따르면, FIFO(204)는 DMA의 동시 최대 처리 데이터 양인 1Kbyte의 크기를 갖는다.
FIFO 제어부(205)는 상태 생성부(206)의 상태 정보를 입력하여, FIFO(205)의 입출력 제어 신호를 생성하고, 포인트 정보를 생성하는 기능을 수행한다.
상태 생성부(206)는 전송 제어 신호 생성부(207)로부터 DMA 동작상의 상태를 나타내는 제어 신호들을 입력받아, DMA의 현 상태를 나타내는 지표 신호를 생성하는 기능을 수행한다.
전송 제어 신호 생성부(207)는 DMA 동작상의 상태를 나타내는 읽기 시작/완료, 쓰기 시작/완료 등의 신호를 생성하고 및 카운터로 전송 크기를 계산하는 기능을 수행한다.
제어 신호 생성부(208)는 AMBA(150)의 프로토콜에 호환되도록 상태 생성부(206)의 상태 정보에 따라 제어 신호들을 생성한다.
전송 완료 신호 생성부(209)는 데이터의 전송 완료 여부를 나타내는 신호를 생성하는 기능을 수행한다. 이 때, 전송 완료 여부를 나타내는 신호는 상태 생성부(206)의 상태 정보를 바탕으로 생성한다.
인터럽트 제어부(210)는 DMA 동작의 완료 또는 오동작 여부를 프로세서(100)에 전달하기 위한 장치로, 인터럽트를 발생시켜 DMAC(110)의 마스터 권리를 프로세서(100)로 넘겨 인터럽트 상태에 따라 올바른 동작이 이루어지도록 하는 기능을 수행한다.
도 3은 본 발명의 일실시예에 따른 DMAC(110)의 호스트 인터페이스(200)의 내부 구조를 도시한 것이다.
도 3에 도시된 바와 같이, 본 발명의 일실시예에 따른 호스트 인터페이스(200)는 각 채널마다 소스 어드레스 레지스터(301), 소스 전송 타입 레 지스터(302), 소스 전송 크기 레지스터(303), 목적지 어드레스 레지스터(304), 목적지 전송 타입 레지스터(305), 목적지 전송 크기 레지스터(306), 업데이트 인에이블 레지스터(307), 및 크기 등록 어드레스 레지스터(308)를 포함한다.
소스 어드레스 레지스터(301)는 전송 데이터를 가지고 있는 주변 장치(160) 또는 메모리(130)의 어드레스를 갖는 레지스터이다.
소스 전송 타입 레지스터(302)는 소스(주변 장치)에서 DMAC(110)으로 데이터를 전송할 때, 전송되는 데이터의 형태 정보를 나타낸다. 형태 정보는 AMBA(150)의 프로토콜에 따르며, 한 데이터의 크기(8/16/32 비트)와 데이터의 연속성을 알려주는 값을 갖는다. 초기화시 그 값은 32 비트 데이터 비전달 상태를 나타내는 값을 갖는다.
소스 전송 크기 레지스터(303)는 DMA를 통해 전달하고자 하는 데이터의 전체 크기를 나타내는 값으로 초기화시 각 채널에 기본적으로 정해져 있는 데이터 전송 크기 값을 갖는다.
목적지 어드레스 레지스터(304)는 데이터를 전송받는 주변 장치(160) 또는 메모리(130)의 어드레스 값을 갖는 레지스터이다.
목적지 전송 타입 레지스터(305)는 목적지로 전송되는 데이터의 형태 정보를 저장한다. 목적지 전송 타입 레지스터(305)에 저장되는 값은 소스 전송 타입 레지스터(302)에 저장되는 값과 같다.
목적지 전송 크기 레지스터(306)는 목적지로 전달되는 데이터의 전체 크기 값을 나타내는 레지스터이다.
업데이트 인에이블 레지스터(307)는 해당 주변 장치(160) 또는 메모리(130)가 데이터 전송 크기의 갱신을 요구하는지 여부를 나타내는 레지스터이다.
크기 등록 어드레스 레지스터(308)는 업데이트 인에이블 레지스터(307)에서 요구가 있을 때, 그 크기 값을 저장하고 있는 해당 주변 장치(160) 또는 메모리(130)의 레지스터 어드레스 값을 갖는다.
이하, 본 발명의 일실시예에 따른 DMAC(110)의 동작에 대하여 설명한다.
도 4는 본 발명의 일실시예에 따른 DMAC(110)의 동작을 도시한 순서도이다.
먼저, DMAC(110)이 초기화되면, 호스트 인터페이스(100)의 내부 레지스터의 값(301-308)들이 초기화된다(S400).
이 후, 시스템의 정상 운영 중에 DMAC(110)으로 DMA 요구가 발생했는지를 판단하고(S401), 요구가 발생하면 DMAC(110)은 시스템의 마스터가 되기 위한 동작을 하게 된다.
즉, DMAC(110)은 시스템의 마스터가 되기 위하여, 이를 관장하는 조정기(120)로 요구 신호를 출력한다(S402).
이 후, DMAC(110)은 조정기(120)의 동작에 의하여 시스템의 마스터로 인정되었는지 여부를 판단하고, 마스터가 될 때까지 대기한다(S403).
DMAC(110)이 마스터가 되면, DMAC(110)으로 요구 신호를 보낸 주변 장치(160)가 데이터 전송 크기의 갱신을 요구하는지 여부를 판단한다(S404).
갱신을 요하는 장치로 판단되면, 채널 상태 생성부(202)가 현재 해당 채널의 상태가 전체 전송 데이터의 첫 부분인지 여부를 판단한다(S405). 최초 데이터의 전 송의 경우에만, 데이터 전송 크기 값을 해당 주변 장치로부터 입력 받아야만, 올바른 동작이 가능하게 된다.
현재 채널의 상태가 최초 데이터 전송인 경우에는, 해당 채널의 전송 크기 레지스터로부터 그 값을 입력 받는다(S406). 구체적으로는 DMAC(110)의 어드레스 생성부(201)가 해당 주변 장치(160)의 전송 크기 레지스터의 어드레스를 발생시키고, DMAS(110)의 전송 제어 신호 생성부(207)는 전송 받으려는 크기 값의 데이터 형태 정보를 생성한다. 또한, DMAC(110)의 제어 신호 생성부(208)은 그 값을 입력 받는다는 의미의 읽기 신호를 생성한다. 이와 같이 생성된 제어 신호들은 AMBA 프로토콜에 의해 해당 주변 장치(160)를 선택하여, 주변 장치(160)의 크기 레지스터 값을 DMAC(110)으로 전달하는 동작을 수행한다.
이 후, 갱신된 전송 데이터 크기 정보를 토대로 일반적인 DMA 동작을 수행한다(S407). DMA 동작에 대해서는 후술하기로 한다.
DMAC(110)의 동작 중 전송 완료 신호 생성부(209)는 상태 생성부(206)의 값을 감시하고, 현재 상태 정보를 파악한다(S408). 또한, 상태 생성부(206)로부터 출력되는 상태 정보가 데이터 전송 종료를 의미하는 경우에는 인터럽트 신호를 생성하여, DMAC(110)의 동작이 모두 종료하였음을 알린다(S409).
프로세서(100)는 DMAC(110)으로부터 상기 인터럽트 신호를 수신하면, DMAC 인터럽트 핸들러 동작을 수행하고(S410), Ack 신호를 발생시켜 주변 장치(160)의 DMA 요구 신호를 제거한다(S411).
상기의 인터럽트 실행 중 DMAC(110)는 요구 신호를 보낸 주변 장치(160)로 DMA_ACK 신호를 발생 시켜 요구 신호를 제거하고, 프로세서가 생성한 인터럽트 ACK 신호에 의해 DMAC(110)의 인터럽트 요구 신호를 제거하면서 모든 동작을 종료한다(S413).
이와 같은 과정을 통하여, DMAC(110)은 프로세서(100)의 간섭이나 별도 신호의 요구없이 전송 데이터 크기 정보를 갱신할 수 있게 된다.
이하에서는 주변 장치(160)에서 전송 데이터 양을 수신한 후 MAC의 동작을 설명한다.
DMAC(110)의 어드레스 생성부(201)는 주변 장치(160)의 어드레스 값을 생성하여 호스트 인터페이스(100)의 소스 어드레스 레지스터(301)에 저장하고, 전송 제어 신호 생성부(207)는 읽기 신호를 생성한다.
이 후, DMAC(110)의 전송 제어 신호 생성부(207)는 전송 데이터의 비트 수 또는 연속성 여부 등과 같은 형태 정보 신호를 생성하여 소스 전송 타입 레지스터(302)에 기록하고, DMAC(110)과 주변 장치(160)를 연결하는 APB 브리지(140)는 전송되는 데이터의 어드레스 정보, 제어 신호, 데이터 신호 등을 AMBA 버스 특성에 맞도록 변환한다.
이 후, 주변 장치(160)에서 DMAC(110)으로 데이터를 전달하고, DMAC(110)의 FIFO(104)는 전달받은 데이터를 저장한다.
이 후, 어드레스 생성부(201)가 데이터를 저장할 메모리(130)의 어드레스를 생성하여 목적지 어드레스 레지스터(304)에 기록한다.
전송 제어 신호 생성부(207)은 쓰기 신호를 생성하고, 전송 데이터 형태 정 보 신호를 생성하여 목적지 전송 타입 레지스터(205)에 기록한다. 그리고, DMAC(110)과 주변 장치(160)을 연결하는 APB 브리지(140)에서 데이터의 어드레스 정보, 제어 신호, 데이터 신호 등을 AMBA 버스 특성에 맞도록 변환하고, DMAC(110)에서 목적 장치로 데이터를 전달한다.
이로써, 쓰기 과정이 완료되고, DMAC(110)의 인터럽트 제어부(210)는 동작 완료 인터럽트를 발생한다.
이하, 본 발명의 일실시예에 따른 DMAC(110)의 동작을 종래의 DMAC의 동작과 비교하여 설명한다.
도 5 내지 도 6은 본 발명의 일실시예에 따른 DMAC(110)의 동작예를 도시한 것이고, 도 7은 종래의 DMAC(710)의 동작예를 도시한 것이다.
우선, 시스템의 초기 상태에서 DMAC(110)의 각 레지스터에 저장된 값은 다음과 같다고 가정한다.
업데이트 인에이블 레지스터(307): enable
크기 등록 어드레스 레지스터(308): 0x40001008
채널 상태 생성부(202): Idle
채널 카운터 기본 값: 20
채널 카운터: 20
여기서, 크기 등록 어드레스 레지스터(308)에 저장되는 값은 주변 장치(160)에서 전송하는 데이터의 양을 의미한다. 또한, 채널 카운터 기본 값은 주변 장치(160)에서 DMA 버스트 동작을 하는 카운트를 말하고, 채널 카운터는 남아 있는 버스트 카운트를 의미한다.
도 5는 주변 장치(160)에서 DMA 요구가 발생한 경우의 시스템 동작을 도시한 것이다.
주변 장치에서 DMAC(110)으로 DMA 요구가 발생하면(ⓛ), DMAC(110)은 조정기(120)로 버스 마스터를 요구한다(②).
이 후, 조정기(120)가 DMAC(110)의 요구에 대한 인증을 수행하고(③), 주변 장치(160)에서 DMAC(110)의 FIFO(204)로 20번의 데이터 읽기 동작을 실행한다(④).
읽기 동작이 완료되면, DMAC(110)은 메모리(130)로 쓰기 동작을 실행하고(⑤), 쓰기 동작이 완료되면 DMAC(110)의 동작이 완료된다.
도 5에 도시된 과정을 실행한 후 DMAC(110)의 각 레지스터에 저장된 값은 다음과 같다.
업데이트 인에이블 레지스터(307): enable
크기 등록 어드레스 레지스터(308): 0x40001008
채널 상태 생성부(202): IDLE(①②③⑥), RUN(④⑤)
채널 카운터 기본 값: 20
채널 카운터: ④ 단계에서 채널 카운터 기본값에서 -1씩 감소하고, ⑤ 단계가 시작되면서 20으로 증가 후 -1씩 감소
도 6은 일정 시간이 지난 후 주변 장치(160)에서 새로운 입력 데이터가 발생한 경우로 그 데이터의 크기가 40으로 증가한 경우의 동작을 도시한 것이다.
주변 장치(160)에서 DMAC(110)으로 MAC 요구를 발생하면(①), DMAC(110)이 조정기(120)로 버스 마스터를 요구한다(②). 이후, 조정기(120)가 DMAC(110)의 요구에 대한 인증을 수행한다(③). 그리고, 주변 장치(160)는 DMAC(110)에 전송 데이터의 양을 전송하고(④), DMAC(110)은 이 값을 크기 등록 어드레스 레지스터(308)에 기록한다.
주변 장치(160)에서 DMAC(110)의 FIFO(204)로 40번의 데이터 읽기 동작이 실행되면(⑤), DMAC(110)은 FIFO(204)에 저장된 데이터를 메모리(130)로 쓰기 동작을 실행한다(⑥).
도 6에 도시된 과정을 실행한 후 DMAC(110)의 레지스터에 저장된 값은 다음과 같다.
업데이트 인에이블 레지스터(307): enable
크기 등록 어드레스(308): 0x40001008
채널 상태 생성부(202): IDLE(①②③④⑦),RUN(⑤⑥)
채널 카운터 기본 값: 40 (업데이트 됨)
채널 카운터: ⑤ 단계에서 Ch counter base 값에서 -1씩 감소되고, ⑥ 단계가 시작되면서 40으로 증가 후 -1씩 감소된다.
도 7은 도 6과 같은 환경에서 종래의 DMAC(110)의 동작을 도시한 것이다.
우선, 주변 장치(160)는 DMAC(110)의 채널 카운터 기본 값을 변경하기 위하여 프로세서(100)로 인터럽트 신호를 전송하고(①), 주변 장치(160)는 버스트 카운트 값을 프로세서(100)로 입력한다(②).
이 후, 프로세서(100)는 DMAC(110)의 버스트 카운터 기본 값을 갱신시키며( ③), 주변 장치(160)에 DMA 요구 가능 신호를 출력한다. 그리고, 인터럽트를 제거한다(④).
이 후, 주변 장치(160)에서 DMAC(110)으로 DMA를 요구하면(⑤), DMAC(110)은 조정기(120)로 버스 마스터를 요구하고(⑥), 조정기(120)는 DMAC(110)을 인증한다(⑦).
DMAC(110)이 버스 마스터가 되면, 주변 장치(160)로부터 40번의 데이터 읽기 동작을 실행한다(⑧).
이 후, DMAC(110)의FIFO에서 메모리(130)로 쓰기 동작이 실행되고(⑨), DMAC(110)의 동작이 완료된다.
이와 같이, 종래에는 주변 장치(160)가 DMAC(110)의 채널 카운터 기본 값을 변경하기 위하여 인터럽트를 요구하고, 버스트 카운트 값을 프로세서(100)로 입력함으로써, DMAC(110)의 버스트 카운트 기본 값이 프로세서(100)에 의하여 갱신되었다.
즉, 주변 장치(160)는 변경된 데이터의 크기에 대하여 별도의 출력 신호를 생성하여야 하고, DMAC(110)의 버스트 카운트 기본 값을 변경하기 위하여 프로세서(100)가 개입됨으로써, 시스템의 동작 시간이 길어지고 시스템의 효율을 저하시키는 문제가 있었다.
그러나, 본 발명의 일실시예에 따른 DMAC(110)은 데이터의 크기를 자동으로 갱신함으로써, 시스템의 효율을 극대화할 수 있다.
이와 같이, 본 발명의 일실시예에 따른 DMAC(110)은 프로세서의 개입 부분의 불필요한 부분을 제거할 수 있어 동작 시간면에서 보다 효과적인 시스템을 구현할 수 있다.
또한, 시스템 초기화 시 각 주변 장치의 갱신 필요 여부를 판단할 수 있는 레지스터(207), 갱신이 필요한 주변 장치의 데이터 양 값을 가지고 있는 레지스터의 어드레스 값을 저장하는 레지스터(208)를 포함함으로써, 주변 장치의 데이터 전송 양을 자동으로 갱신할 수 있다.
나아가, DMAC의 동시 최대 전송량인 1Kbyte를 초과하는 범위의 데이터 전송을 요구하는 경우, 최초의 전송시에만 주변 장치로부터 전송 양을 입력 받고, 그 이외의 경우엔 주변 장치로 액세스를 하지 않도록 판단해 줄 수 있는 장치를 더 포함할 수 있다.
이상으로 본 발명의 일실시예에 따른 직접 메모리 액세스 제어 장치와 방법에 대하여 설명하였다. 상기 설명된 실시예는 본 발명의 개념이 적용된 일실시예로서, 본 발명의 범위가 상기 실시예에 한정되는 것은 아니며, 본 발명의 개념을 그대로 이용하여 여러가지 변형된 실시예를 구성할 수 있음은 당업자에게 자명하다.
본 발명에 따르면, DMAC이 주변 장치로부터 전송 데이터의 크기를 자동으로 갱신함으로써, 기존의 DMAC을 이용할 때 보다 부가적인 프로세서 동작과 부가적인 신호를 제거할 수 있다. 따라서, 시스템 복잡도 면과 성능면에서 보다 효율적인 시스템을 구현할 수 있게 된다.

Claims (12)

  1. 메모리 및 주변 장치와 연결되어 있는 직접 메모리 액세스 제어 장치에 있어서,
    상기 주변 장치로부터 DMA(Direct Memory Access) 요구를 수신하는 경우, 상기 DMA를 요구한 주변 장치가 연결된 채널의 현재 상태를 판단하는 채널 상태 생성부;
    상기 주변 장치와 상기 메모리 사이의 데이터 전송시, 상기 메모리의 어드레스를 발생시키는 어드레스 생성부;
    상기 DMA의 동작 상태를 나타내는 신호를 이용하여 DMA의 처리를 위한 제어 신호를 생성하는 제어 신호 생성부; 및
    상기 주변 장치로 상기 데이터를 전송하거나 상기 제어 신호의 입출력 기능을 수행하며, 상기 주변 장치의 어드레스, 상기 메모리의 어드레스, 데이터 전송 크기 정보 및 상기 주변 장치가 상기 데이터 전송 크기에 대한 갱신을 요구하는지 여부를 포함하는 정보를 저장하는 적어도 하나 이상의 레지스터를 포함하는 호스트 인터페이스
    를 포함하며,
    상기 DMA를 요구한 주변 장치가 연결된 채널의 현재 상태가 첫 번째 데이터 전송을 나타내는 경우, 상기 어드레스 생성부는 상기 주변 장치의 데이터 전송 크기가 저장되어 있는 레지스터의 어드레스를 발생시키고, 상기 레지스터에 저장된 상기 데이터 전송 크기를 갱신하는 직접 메모리 액세스 제어 장치.
  2. 제1항에 있어서,
    적어도 두개의 주변 장치로부터 상기 채널 상태 생성부로 상기 DMA 요구가 수신된 경우, 상기 DMA의 동작을 수행할 채널을 선택하는 채널 선택부; 및
    상기 DMA의 동작 상태를 나타내는 신호를 토대로 상기 메모리로 전송되는 데이터의 전송 완료 여부를 나타내는 신호를 생성하는 전송 완료 신호 생성부
    를 더 포함하는 직접 메모리 액세스 제어 장치.
  3. 제1항에 있어서,
    상기 호스트 인터페이스는 상기 주변 장치가 데이터 전송 크기의 갱신을 요구하는지 여부를 나타내는 제1 레지스터, 및 상기 주변 장치의 상기 전송 크기 레지스터의 어드레스 값을 저장하는 제2 레지스터를 포함하는 직접 메모리 액세스 제어 장치.
  4. 제3항에 있어서,
    상기 호스트 인터페이스는 상기 데이터를 전송하는 주변 장치의 어드레스를 저장하는 제3 레지스터, 상기 전송되는 데이터의 형태 정보를 저장하는 제4 레지스터, 상기 데이터의 전송 크기를 저장하는 제5 레지스터, 상기 데이터가 전송될 목적지의 어드레스를 저장하는 제6 레지스터, 상기 목적지로 전송되는 데이터의 형태 정보를 저장하는 제7 레지스터, 및 상기 목적지로 전송되는 상기 데이터의 크기를 저장하는 제8 레지스터를 더 포함하는 직접 메모리 액세스 제어 장치.
  5. 제1항에 있어서,
    상기 채널은 AMBA(Advanced Micro-controller Bus Architecture)로 형성되는 직접 메모리 액세스 제어 장치.
  6. 제5항에 있어서,
    상기 제어 신호 생성부는 상기 DMA 동작 상태를 나타내는 신호가 상기 AMBA 프로토콜과 호환되도록 생성하는 직접 메모리 액세스 제어 장치.
  7. 직접 메모리 액세스 제어 방법에 있어서,
    상기 주변 장치로부터 DMA 요구가 수신되는지를 판단하는 제1 단계;
    상기 DMA 요구가 수신된 경우, 상기 주변 장치가 상기 데이터 전송 크기의 갱신을 요구하는지를 판단하는 제2 단계;
    갱신을 요구하는 경우 상기 주변 장치에 연결된 채널의 상태가 상기 데이터의 첫 부분인지 여부를 판단하는 제3 단계;
    상기 채널의 상태가 최초 데이터의 전송인 경우, 상기 주변 장치로부터 상기 데이터 전송 크기를 검출하는 제4 단계; 및
    상기 검출된 데이터 전송 크기를 기초로 DMA 동작을 수행하는 제5 단계
    를 포함하는 직접 메모리 액세스 제어 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 제4 단계는 상기 주변 장치의 데이터 전송 크기를 저장하는 레지스터의 어드레스, 상기 어드레스에 저장된 값의 데이터 형태 정보, 및 상기 레지스터에 저장된 값을 수신하기 위한 읽기 신호를 생성하여 상기 주변 장치로 전송함으로써, 상기 데이터 전송 크기를 검출하는 직접 메모리 액세스 제어 방법.
  10. 제7항에 있어서,
    상기 채널은 AMBA 버스 구조로 형성되고, 상기 주변 장치는 APB 브리지를 통하여 상기 데이터를 전송하는 직접 메모리 액세스 제어 방법.
  11. 제7항에 있어서,
    상기 제5단계는,
    상기 주변 장치의 어드레스 값과 읽기 신호를 생성하는 단계,
    상기 주변 장치로부터 상기 데이터를 수신하여 저장하는 단계,
    상기 데이터가 저장될 메모리의 어드레스 값과 쓰기 신호를 생성하는 단계, 및
    상기 데이터를 상기 메모리로 전송하는 단계
    를 포함하는 직접 메모리 액세스 제어 방법.
  12. 제7항에 있어서,
    상기 제2 단계 이전에, 상기 채널의 마스터가 되기 위하여 조정기에 채널의 마스터를 요구하는 단계와, 상기 조정기가 상기 요구에 대한 인증을 수행하여 상기 채널의 마스터를 결정하는 단계를 더 포함하는 직접 메모리 액세스 제어 방법.
KR1020030095189A 2003-12-23 2003-12-23 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법 KR100633742B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030095189A KR100633742B1 (ko) 2003-12-23 2003-12-23 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
US10/948,045 US20050138236A1 (en) 2003-12-23 2004-09-22 Direct memory access control device and method for automatically updating data transmisson size from peripheral

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030095189A KR100633742B1 (ko) 2003-12-23 2003-12-23 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20050063939A KR20050063939A (ko) 2005-06-29
KR100633742B1 true KR100633742B1 (ko) 2006-10-13

Family

ID=34675944

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030095189A KR100633742B1 (ko) 2003-12-23 2003-12-23 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법

Country Status (2)

Country Link
US (1) US20050138236A1 (ko)
KR (1) KR100633742B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4908017B2 (ja) * 2006-02-28 2012-04-04 富士通株式会社 Dmaデータ転送装置及びdmaデータ転送方法
US20080126600A1 (en) * 2006-08-31 2008-05-29 Freescale Semiconductor, Inc. Direct memory access device and methods
US8402188B2 (en) * 2008-11-10 2013-03-19 Micron Technology, Inc. Methods and systems for devices with a self-selecting bus decoder
KR101202738B1 (ko) * 2008-12-22 2012-11-20 한국전자통신연구원 멀티 채널 데이터 전송 장치
KR101106468B1 (ko) * 2010-01-20 2012-01-20 주식회사 코아로직 프로세스 간의 데이터 전송방법, 그 데이터 전송방법을 위한 코프로세서 및 그 코프로세서를 포함한 전기전자 장치
DE102016206109A1 (de) * 2016-04-13 2017-10-19 Robert Bosch Gmbh Speicherdirektzugriffssteuereinrichtung für mindestens eine einen Arbeitsspeicher aufweisende Recheneinheit

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4271466A (en) * 1975-02-20 1981-06-02 Panafacom Limited Direct memory access control system with byte/word control of data bus
US5535417A (en) * 1993-09-27 1996-07-09 Hitachi America, Inc. On-chip DMA controller with host computer interface employing boot sequencing and address generation schemes
US6532511B1 (en) * 1999-09-30 2003-03-11 Conexant Systems, Inc. Asochronous centralized multi-channel DMA controller
US6816921B2 (en) * 2000-09-08 2004-11-09 Texas Instruments Incorporated Micro-controller direct memory access (DMA) operation with adjustable word size transfers and address alignment/incrementing
KR100440405B1 (ko) * 2001-11-19 2004-07-14 삼성전자주식회사 더블 버퍼링을 이용한 화상 데이터 출력 제어장치
US6941390B2 (en) * 2002-11-07 2005-09-06 National Instruments Corporation DMA device configured to configure DMA resources as multiple virtual DMA channels for use by I/O resources

Also Published As

Publication number Publication date
US20050138236A1 (en) 2005-06-23
KR20050063939A (ko) 2005-06-29

Similar Documents

Publication Publication Date Title
JP3601955B2 (ja) データ転送方法およびそれに適した計算機システム
JP3636157B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP4706720B2 (ja) Dma制御システム、印刷装置、および転送指示プログラム
JP2008502976A (ja) 分割トランザクションを処理するためのバス・コントローラ
EP1063594B1 (en) An interrupt controller and a microcomputer incorporating this controller
US20060236001A1 (en) Direct memory access controller
JPS6375955A (ja) プログラムモ−ド・アクセス制御方式
EP0772831B1 (en) Bidirectional parallel signal interface
KR100375233B1 (ko) 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러
JP2007501472A (ja) 転送ディスクリプタ用メモリを備えるusbホストコントローラ
KR100633742B1 (ko) 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
JP3636158B2 (ja) データ転送制御装置及び電子機器
US20080201498A1 (en) Data communication system, data communication program recording medium, data communication method, data receiving device, and data receiving program recording medium
US6445718B1 (en) Serial interface circuit
CN109992539B (zh) 双主机协同工作装置
KR20010013137A (ko) 통신 dma 장치
TWI416336B (zh) 可共享緩衝器的網路介面卡與緩衝器共享方法
US7577560B2 (en) Microcomputer logic development device
JP2004227580A (ja) 直接メモリ接近媒体のデータ伝送装置及び方法
JPH0844661A (ja) 情報処理装置
JP2533886B2 (ja) デ―タ転送方式
CN116185914A (zh) 一种多通道dma控制器的轮转处理请求方法
JP3678537B2 (ja) データ転送方法及び装置
KR0170742B1 (ko) 엠버스를 이용한 데이터 전송 방법
JP4127071B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee