KR100785892B1 - 양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그제어 방법 - Google Patents

양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그제어 방법 Download PDF

Info

Publication number
KR100785892B1
KR100785892B1 KR1020060084704A KR20060084704A KR100785892B1 KR 100785892 B1 KR100785892 B1 KR 100785892B1 KR 1020060084704 A KR1020060084704 A KR 1020060084704A KR 20060084704 A KR20060084704 A KR 20060084704A KR 100785892 B1 KR100785892 B1 KR 100785892B1
Authority
KR
South Korea
Prior art keywords
read
write
mode
control unit
transmission
Prior art date
Application number
KR1020060084704A
Other languages
English (en)
Other versions
KR20070059913A (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 JP2006330793A priority Critical patent/JP4904136B2/ja
Publication of KR20070059913A publication Critical patent/KR20070059913A/ko
Application granted granted Critical
Publication of KR100785892B1 publication Critical patent/KR100785892B1/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/38Information transfer, e.g. on bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port

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

본 발명은 대용량, 저가의 외부 SRAM을 통신용 데이터 버퍼로 제공하기 위한 양방향 데이터 통신용 단일 포트 메모리 제어 장치에 관한 것으로서, 그 구성은, 외부 동기 방식 단일 포트 메모리; 송신 패킷 프레임의 쓰기 데이터와 쓰기 인에이블 및 읽기 인에이블을 이용한 읽기 및 쓰기 신호를 발생하는 송신 제어부; 수신 패킷 프레임의 쓰기 데이터와 쓰기 인에이블 및 읽기 인에이블을 이용한 읽기 및 쓰기 신호를 발생하는 수신 제어부; 상기 송신 제어부 및 수신 제어부로부터 인입되는 읽기/쓰기 제어신호에 따라서 상기 메모리로의 읽기/쓰기를 중재하는 중재 제어부; 및 상기 중재 제어부의 동작 모드를 선택하는 모드 선택부로 이루어져, 하나의 외부 동기방식 단일 포트 메모리로부터 송/수신 데이터의 실시간 읽기/쓰기를 가능하게 하며, 또한 이로 인하여 송신 및 수신 데이터의 버퍼링에 필요한 메모리의 수를 줄여 비용 절감이 가능하고 대용량의 메모리까지 제공 가능하다.
패킷 메모리, 단일 포트 메모리, 데이터 통신, 송신 패킷, 수신 패킷

Description

양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그 제어 방법 {Apparatus and method for controlling single port memory of bi-directional data communication}
도 1은 종래기술에 따른 통신용 수신 장치에 관한 블록도,
도 2는 종래기술에 따른 데이터 통신용 데이터 버퍼링 장치에 관한 블록도,
도 3은 본 발명의 바람직한 실시 예에 따른 양방향 데이터 통신용 단일 포트 메모리 제어 장치에 관한 블록도이다.
도 4는 도 3에 도시된 각 부의 동작 타이밍도이다.
도 5는 도 3의 수신제어부에 관한 상세 블록도이다.
도 6은 도 3의 송신제어부에 관한 상세 블록도이다.
도 7은 도 3의 중재제어부의 읽기/쓰기 동작 관계를 나타낸 상태 천이도이다.
도 8은 도 3의 읽기 제어부 및 쓰기 제어부의 제어에 관한 상태도이다.
*도면의 주요부분에 대한 부호의 간단한 설명*
110 : 수신 제어부 120 : 송신 제어부
103 : 중재 제어부 104 : 모드 선택부
105 : 4분주기 106 : 2분주기
200 : 메모리
본 발명은 데이터 통신용 메모리에 관한 것으로서, 더욱 상세하게는 양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그 제어 방법에 관한 것이다.
일반적으로 데이터 통신용 버퍼링 장치는 선입선출(First In First Out, FIFO) 메모리 구조를 이용하고 있다. 이는 통신용 소자 내에서는 비정형적인 데이터가 계속 입력되고, 반대로 통신 소자 외부로는 정형화된 데이터를 내보내야 하기 때문이다. 이러한 FIFO 메모리를 구현하기 위해서 기존에는 2개의 단일 포트(Single Port) SRAM(Static Random Access Memory)을 병렬 연결하는 방식을 이용하고 있다. 즉, 하나의 SRAM 으로는 읽기 및 쓰기 동작을 동시에 수행할 수 없으므로 하나의 SRAM 에서 계속적으로 데이터를 기록하고, 다른 SRAM 에서 데이터를 출력하는 방식이다. 이러한 방식은 가장 일반적이고 간단하게 구현 가능하다는 이유로 많이 이용되고 있다. 그러나, 두개의 메모리를 이용해야 하고, 전송 속도에 따른 적응부 등의 제어부를 구현하기 위한 회로의 크기가 커지는 문제점이 있었다.
종래 기술을 도면을 참조하여 상세히 설명하기로 한다.
도 1은 종래기술에 따른 통신용 수신장치에 관한 블록도이다.
대한민국 특허등록번호 제 10-0353816호에 개시된 통신용 수신 장치는, 도 1 에 도시된 바와 같이 입력 클럭(CLK1) 보다 위상이 빠른 클럭(CLK2)를 생성하기 위한 클럭발생부(1), 입력된 클럭으로부터 주소를 제어하기 위한 신호를 발생하는 주소 제어부(2), 주소 제어부(2)의 제어 신호에 따라 주소를 발생하는 주소발생부(3)와 주소발생부(3)에서 발생한 주소에 따라 입력 데이터(Din)을 저장하거나 출력 데이터(Dout)로써 출력시키는 RAM(4)으로 구성된다. 상기 RAM(4)은 종래에 두 개의 메모리를 병렬 연결하여 구현하던 FIFO 메모리 구조를 2 포트의 단일 메모리로 구성한 것이다.
상기 종래기술은 2 포트의 메모리를 사용하므로, ASIC 이나 FPGA 등에 내부 메모리를 내장할 때 사용가능하지만, 단일 포트 외부 메모리를 사용해야 하는 장치에 적용시키기는 어렵다. 또한 도 1의 주소발생부(3)는 리셋 신호에 리셋되고 읽기 증가신호(Read_Inc)에 따라 읽기 주소가 '1'씩 증가하고, 쓰기 증가신호(Write_Inc)에 따라 쓰기 주소가 '1'씩 증가되어 이를 선택신호(Read_Write)에 따라서 RAM으로 선택적으로 주소를 발생하는 것이다.
도 2는 종래기술에 따른 데이터 통신용 데이터 버퍼링 장치에 관한 블록도이다.
대한민국 특허 등록번호 제10-0181485호에 개시된 데이터 통신용 데이터 버퍼링 장치는 도 2에 도시된 바와 같이, 입력되는 송수신 데이터를 일시 저장 및 그 데이터를 선택하여 출력하는 제1 멀티플렉서(21)와, 제 1 멀티플렉서(21)에 의하여 선택된 송신 및 수신 데이터를 일시 저장하는 메모리(30)와, 메모리(30)에 입력되는 송신 및 수신 데이터를 저장하기 위한 송신 버퍼 주소와 수신 버퍼 주소를 발생 하는 주소생성기(13)와, 그 발생된 송신 버퍼 주소와 수신 버퍼 주소 가운데 하나를 선택하여 출력하는 제2 멀티플렉서(22)와, 메모리(30)의 읽기 및 쓰기 신호를 발생하는 메모리의 읽기 및 쓰기 신호 발생기(14)와, 메모리(30)에서 발생된 송수신 데이터를 송수신하기 위하여 일시 저장하는 송수신용 출력 레지스터(41,42)로 구성된다.
상기 메모리(30)는 이중 버퍼 구조를 갖는 송신 및 수신 버퍼로 설계하여 송수신용 데이터의 일시 저장이 가능하도록 하였다.
상기 종래기술 역시 반드시 2포트 메모리를 사용해야 하므로, 단일 포트 외부 메모리에 대한 적용은 용이하지 않고, ASIC 이나 FPGA 등에 내부 메모리를 내장할 때 사용가능한 기술이다.
그리고 하나의 메모리에 2개의 송신 버퍼 및 2개의 수신 버퍼를 구성하였으나, 송신 및 수신 버퍼의 주소가 클록 및 CPU로부터의 제어신호에 따라서 '1'씩 자동으로 증가하는 구조를 가지고 있으므로 랜덤한 송신 및 수신 버퍼에 대한 제어는 수행하지 못한다.
또한 이중 버퍼 구조에 따라 수신 버퍼 0이 꽉 차야만 수신 버퍼 1에 쓰기 동작을 할 수 있고, 읽기 동작은 쓰기가 완료된 수신 버퍼에 대하여 할 수 있으며 이 경우에 수신 버퍼 0를 먼저 읽는다.
상기 종래기술들은 송신 및 수신단에 각각 2개씩 모두 4개의 램을 사용하여 칩 제작시 램의 면적이 커져서 비용을 상승시키는 문제점이 있고, RAM이 입력 데이터 포트(Din)와 출력 데이터 포트(Dout)로 분리되어야 하므로 2 포트를 물리적으로 지 원할 수 있어야 하므로 저가로 공급하기 어렵다는 문제점이 있다.
따라서 본 발명은 이와 같은 종래의 문제점을 극복하고 대용량, 저가의 외부 SRAM을 통신용 데이터 버퍼로 제공하기 위하여 송신 및 수신 데이터와 송신 및 수신 제어신호를 중재하는 양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그 제어 방법을 제공함에 있다.
이러한 목적을 달성하기 위한 본 발명에 따른 양방향 데이터 통신용 단일 포트 메모리 제어 장치는, 송신 패킷 프레임의 쓰기 데이터와 쓰기 인에이블 신호 및 읽기 인에이블 신호를 이용하여 송신 데이터에 대한 읽기 및 쓰기 신호를 발생하는 송신 제어부; 수신 패킷 프레임의 쓰기 데이터와 쓰기 인에이블 신호 및 읽기 인에이블 신호를 이용한 수신 데이터에 대한 읽기 및 쓰기 신호를 발생하는 수신 제어부; 동작 모드에 따라서 상기 송신 제어부와 수신 제어부의 읽기/쓰기 신호에 의한 단일 포트 메모리로의 읽기/쓰기 동작 순서를 중재하는 중재 제어부; 및 상기 중재 제어부의 동작 모드를 선택하는 모드 선택부로 형성됨을 특징으로 한다.
상기 중재 제어부는 읽기 및 쓰기 제어 신호에 따라서 동작 모드가 핑퐁(ping-pong) 방식으로 서로 독립적으로 동작하는 것을 특징으로 한다.
상기 수신 제어부는 수신 패킷 프레임의 클래스를 분류하는 패킷 분류부; 쓰 기 인에이블 신호 발생시 쓰기 커맨드를 출력하고, 중재 제어부로 쓰기 제어신호를 출력하는 쓰기 제어부; 읽기 인에이블 신호 발생시 읽기 커맨드를 출력하고, 중재 제어부로 읽기 제어신호를 출력하는 읽기 제어부; 프레임 수를 카운트하여 저장하는 적어도 하나 이상의 프레임 카운트 레지스터; 현재 메모리에 기록할 프레임의 크기 정보를 저장하는 적어도 하나 이상의 프레임 사이즈 RAM; 상기 읽기 제어부에서 읽을 데이터의 순서를 제어하는 스케쥴러; 현재 읽을 프레임의 크기를 상기 스케쥴러로 실시간으로 전달하기 위한 신호를 저장하는 적어도 하나 이상의 길이 레지스터; 상기 메모리의 각 큐의 시작 주소를 저장하는 시작 주소 레지스터; 및 상기 메모리의 각 큐의 끝 주소를 저장하는 종료 주소 레지스터를 포함한다.
상기 송신 제어부는 송신 패킷 프레임의 클래스를 분류하는 패킷 분류부; 쓰기 인에이블 신호 발생시 쓰기 커맨드를 출력하고, 중재 제어부로 쓰기 제어신호를 출력하는 쓰기 제어부; 읽기 인에이블 신호 발생시 읽기 커맨드를 출력하고, 중재 제어부로 읽기 제어신호를 출력하는 읽기 제어부; 메모리의 각 큐별로 저장되는 프레임 수를 카운트하여 저장하는 적어도 하나 이상의 프레임 카운트 레지스터; 현재 메모리의 각 큐별로 기록된 프레임의 크기 정보를 저장하는 적어도 하나 이상의 프레임 사이즈 RAM; 상기 읽기 제어부에 의해 읽을 데이터의 순서를 제어하는 스케쥴러; 현재 읽을 프레임의 크기를 상기 스케쥴러로 실시간으로 전달하기 위한 신호를 저장하는 적어도 하나 이상의 길이 레지스터; 메모리의 각 큐의 시작 주소를 저장하는 시작 주소 레지스터; 및 메모리의 각 큐의 끝 주소를 저장하는 종료 주소 레지스터를 포함한다.
상기 시작 주소 레지스터와 종료 주소 레지스터는 개별 큐 크기에 맞게 CPU에 의해 프로그램된다.
상기 모드 선택부는 메모리로부터의 읽기/쓰기 동작을 수행하지 않는 무동작 상태 모드, 수신 패킷 프레임에 대한 읽기/쓰기를 수행하는 수신 모드, 송신 패킷 프레임에 대한 읽기/쓰기를 수행하는 송신 모드, 루프백 입력신호에 의해 수신 프레임을 송신프레임으로 루프백 시키기 위해 읽기/쓰기를 수행하는 루프백 모드의 신호를 순차적으로 발생시키는 것을 특징으로 한다.
또한 상기의 목적을 달성하기 위한 본 발명에 따른 양방향 데이터 통신용 단일 포트 메모리 제어 방법은 모드 선택부의 모드에 따라 중재 제어부로 모드 신호를 출력하는 단계; 모드 신호가 수신 모드이면, 수신 패킷 프레임을 메모리의 수신용 큐로 억세스하는 단계; 및 모드 신호가 송신 모드이면, 송신 패킷 프레임을 메모리의 송신용 큐로 억세스하는 단계를 수행한다.
상기 중재 제어부로 모드 신호를 출력하기 전에, 무동작 상태 모드, 수신 모드, 송신 모드, 루프백 모드를 정의하는 단계를 미리 수행하고, 상기 무동작 상태 모드, 수신 모드, 송신 모드, 루프백 모드 신호는 순차적으로 발생된다.
상기 수신 패킷 프레임을 수신용 큐로 억세스하는 단계에서, 쓰기 인에이블 신호에 따라 쓰기 제어부는 스케쥴러에 미리 정의된 패킷 프레임 종류에 해당하는 큐로 쓰기 커맨드를 전달하는 것을 특징으로 한다.
상기 수신 패킷 프레임을 수신용 큐로 억세스하는 단계에서, 읽기 인에이블 신호에 따라 스케쥴러로부터 읽을 패킷의 프레임 정보를 획득하여, 해당하는 큐로 읽기 커맨드를 전달하는 것을 특징으로 한다.
상기 송신 패킷 프레임을 송신용 큐로 억세스하는 단계에서, 쓰기 인에이블 신호에 따라 쓰기 제어부는 스케쥴러에 미리 정의된 패킷 프레임 종류에 해당하는 큐로 쓰기 커맨드를 전달하는 것을 특징으로 한다.
상기 송신 패킷 프레임을 송신용 큐로 억세스하는 단계에서, 읽기 인에이블 신호에 따라 스케쥴러로부터 읽을 패킷의 프레임 정보를 획득하여, 해당하는 큐로 읽기 커맨드를 전달하는 것을 특징으로 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다.
도 3은 본 발명의 바람직한 실시예에 따른 양방향 데이터 통신용 단일 포트 메모리 제어 장치에 관한 블록도이다.
양방향 데이터 통신용 단일 포트 메모리 제어 장치는 FPGA 또는 ASIC 내부 또는 외부에 SSPRAM(Synchronous Single Port RAM)을 이용하여 구현한다. 특히 송신단 및 수신단에서 입력되는 쓰기 인에이블 신호(Write_en)와 쓰기 데이터(Write_Data)와 읽기 인에이블 신호(Read_en)를 통해 중재제어부의 중재에 의해 쓰기 제어 신호 및 읽기 제어 신호를 단일 포트 메모리에 순차로 출력한다. 상기의 기본적인 개념에 관한 구성을 도 3을 참조하여 설명하면 다음과 같다.
본 발명에 따른 양방향 데이터 통신용 단일 포트 메모리 제어 장치는 수신 제어부(110)와, 송신 제어부(120)와, 중재 제어부(103)와, 모드 선택부(104) 및 메모리(200)를 포함한다.
상기 수신 제어부(110)는 수신 패킷을 처리하는 블록이고, 송신 제어부(120)는 송신 패킷을 처리하기 위한 블록이고, 중재제어부(103)는 상기 수신 제어부(110)로부터 인입되는 패킷을 메모리(200)의 수신용 큐로 전송하고 송신제어부(120)로부터 인입되는 패킷을 메모리(200)의 송신용 큐로 전송하기 위한 블록이고, 모드 선택부(104)는 상기 중재 제어부(103)의 동작 모드, 즉, 송신 모드 또는 수신 모드 등의 제어신호를 출력하는 블록이고, 메모리(200)는 수신 제어부(110)와 송신 제어부(120)로부터 인입되는 패킷 프레임을 해당 주소(어드레스)에 저장하기 위해 단일 포트 형태로 제공되는 메모리로서, 예를 들면, 단일 포트 SRAM이다.
더하여, 기준 클럭(125MHz)을 2분주 클럭으로 생성하여 제공하는 2분주기(106)와 4분주 클럭으로 생성하여 제공하는 4분주기(105)를 더 포함하고, 상기 2분주기(106)와 4분주기(105)를 통한 클럭은 모드 선택부(104)로 제공되어 4개의 동작 모드 제어신호를 출력한다. 또한 4분주기(105)를 통한 클럭은 수신 제어부(110) 및 송신 제어부(120)로 제공되어 4분주 클럭의 타이밍을 제공하기 위한 기준클럭으로 사용된다.
도 4는 도 3에 도시된 양방향 데이터 통신용 단일 메모리 제어 장치의 동작 타이밍도이다. 도 4를 참조하면, 어드레스의 상승에지 클록에서 데이터는 2 클럭 뒤에서 읽거나 쓸 수가 있는 예를 도시하고 있다. 기본 클럭(125MHz)과 동일한 주기마다 어드레스 정보(Address)가 출력되고, 모드 선택부(104)로 제공되는 2분주 및 4분주 클럭에 따라 2 클럭 주기마다 모드 선택신호(Mode)가 출력된다.
도 4에 있어서, 모드 선택부(104)로부터 출력된 모드 선택 신호(Mode)의 값 이 '00'일 때 별도의 동작이 없는 '무동작(No operation)' 상태로 동작하고, '01'일 때 수신 제어부(110)로부터 인가되는 패킷 프레임을 처리하기 위한 수신 모드로 동작하고 , '10'일 때 송신 제어부(120)로부터 인가되는 패킷 프레임을 처리하기 위한 송신모드로 동작하고, '11'일 때 수신 패킷을 송신 패킷으로 루프백 시키기 위한 루프백 모드로 동작하도록 정의한다.
상기 수신제어부(110)와 송신 제어부(120)는 구조가 동일하고 다만 수신 제어부(110)로 인가된 수신 패킷은 수신용 큐로 저장하고 송신 제어부(120)로 인가된 송신 패킷은 송신용 큐로 저장한다는 차이점이 있다.
따라서 수신 제어부(110)와 송신 제어부(120)는 저장하는 메모리의 차이만 있을뿐 기본 구성은 동일하므로 수신 제어부(110)를 기준으로 설명하기로 한다.
상기 수신 제어부(110)는 도 5에 도시된 바와 같이, 패킷 분류부(111)와, 쓰기 제어부(112)와, 프레임 카운트 레지스터들(113)과, 프레임 사이즈 RAM들(114)과, 길이 레지스터들(115)과, 외부에 존재하는 스케쥴러(116)와, 읽기 제어부(117)와, 시작 주소 레지스터들(118), 종료 주소 레지스터들(119)로 구성된다.
쓰기 제어부(112,122)와 읽기 제어부(117,127)에 의해 발생된 쓰기 제어 신호 및 읽기 제어신호가 상기 중재 제어부(103)의 제어에 의하여 메모리(SRAM)(200)로 출력된다. 쓰기/읽기 제어 신호는 도 4에 도시된 바와 같이, 주소정보(Address), 읽기/쓰기 제어신호(RW_n), 메모리 주소 선택신호(CS_n), ADV_n(Address Advance/Load), 출력인에이블 신호(OE_n), 데이터 입력신호(Data_in, 36비트) 등을 포함한다.
패킷 분류부(111,121)에 의한 패킷 프레임의 클래스별 분류 이후에 저장될 큐선택신호가 쓰기 제어부(112,122)로 인가되고, 이 신호에 따라 해당 패킷 프레임이 외부 SRAM의 개별 큐 에 각각 저장된다.
이때 각 큐에 기록된 패킷 프레임별 바이트 크기가 프레임 사이즈 RAM(114,124)에 기록된다. 또한 데이터와 함께 메모리(200)의 각 큐에 한 개 이상의 프레임이 존재할 경우에 각 큐의 전체 프레임 수, 메모리에 남아 있는 전체 프레임의 크기 및 각 큐의 첫번째 프레임의 크기를 별도의 레지스터(113,115,123,125)에 보관하여 외부 스케쥴러(116,126)에 제공한다. 이 정보는 스케쥴러(116, 126)가 데이터를 읽을 순서를 스케쥴링을 할 때 사용되며 할당된 승인기간(grant) 동안 큐에 대기하고 있는 프레임을 전송할 수 있는지 판단하는데 중요하게 사용된다.
도 8은 읽기 제어부 및 쓰기 제어부의 제어 상태에 관한 상태도이다.
상기 쓰기 제어부(112,122)는 도 8의 (a)의 쓰기 제어 상태도와 같이 동작한다. 패킷 분류부(111,121)에서 쓰기 인에이블 신호(Write_en)와 쓰기 데이터(Write_data)를 입력받아서 큐 선택 신호와 px_wren(개별 Priority Queue의 Write Enable, 통상 1 ~ 8개), px_data(개별 Priority Queue의 Write Data, 36비트, 1 ~ 8개) 신호를 생성하여 쓰기 제어부(112,122)로 전달하면, 쓰기 제어부(112,122)는 쓰기 제어 신호를 생성시킨다. 더 구체적으로, 상기 쓰기 제어부(112,122)는 쓰기 인에이블 신호(Write_en)가 발생하는 매 클럭 마다 Idle 상태에서 T1 상태, 쓰기 상태(Write)로 천이하며, 이때 쓰기 인에이블 신호(Write_en) = '1' 이면 쓰기 상태를 계속 유지하고, Write_en = '0' 일 경우에 대기(Wait) 상태를 거쳐서 Idle 상태로 천이한다. 이때, 실제 쓰기 제어신호는 상기 T1 상태에서 발생하여 Wait 상태에서 해지된다. 발생된 쓰기 제어신호는 해당 Priority 큐에 대한 상기 시작 주소 레지스터(118,128)에 기록된 주소에 대한 쓰기 오프셋(Write Offset) 주소를 발생하여 중재 제어부(103)로 전달하고, 종료 주소 레지스터(119,129)에 기록된 값과 쓰기 제어부에서 발생하는 주소가 동일하다면 다음 주소를 해당 큐의 시작 주소 레지스터에 기록된 주소로 쓰기 주소를 회귀시킨다.
상기 읽기 제어부(117,127)는 도 8의 (b)의 상태도와 같이 동작한다. 외부에 존재하는 스케쥴러(116,126)에 의하여 해당 큐에 대한 읽기 인에이블 신호(Read_en)가 발생하면 읽기 제어부(117,127)는 메모리(200)의 해당 큐의 데이터를 읽기 위하여 시작/종료 주소 레지스터(118/128,119/129)에 기록된 주소에 대한 읽기 오프셋 주소 등의 읽기 제어 신호를 발생하여 중재 제어부(103)로 전달한다. 읽기 제어부(117,127)는 스케쥴러(116,126)에 의해 읽기 인에이블 신호(Read_en)가 발생한 클럭에서 Idle 상태로 가고, 다음 클럭에서 T1 상태로, 그 다음 클럭에서 T2 상태로 천이한다. 이때 rd_cnt(현재 읽을 패킷의 크기 값으로써 Down Count 함) 값은 Idle 상태에서 읽고자 하는 패킷의 크기를 프레임 사이즈 RAM(114,124)으로부터 미리 읽어서 저장한다. 다음 클럭에서 읽기 상태(Read)로 천이하게 되고, 이 경우에 rd_cnt = 4가 될 때까지 읽기 상태를 유지한다. Read_en = '1' 이고 rd_cnt = 4 일 경우에 W1 상태로 천이하고, 상기 다음 상태에서 Read_en = '0' 이고 rd_cnt = 1 일 때 Idle 상태로 회귀한다. 상기 T1 상태로 천이할 때, SOF(Start_of_Frame) 신호가 '1'이 되고, T2 상태로 천이할 때 SOF 신호가 '0'이 된다. 읽기 상태(Read)에서 EOF(End_of_Frame) 신호가 '1'로 되고, W1 상태로 천이할 때 SOF 신호가 '0'이 된다. 이런 신호들은 읽은 데이터의 경계를 외부 스케쥴러(116,126)에게 통보하는 기능을 가지며, 개별 큐의 FIFO 상태 정보를 제어하는데 사용된다.
길이 레지스터(115,125)는 외부 스케쥴러(116,126)에게 현재 읽을 프레임의 크기를 실시간으로 전달하기 위한 것으로서, 메모리(200)에 설정된 수신 및 송신 큐의 개수만큼 존재한다.
프레임 사이즈 RAM(114,124)은 메모리(200)에 설정된 송신 및 수신 큐 개수만큼 존재하는 것으로 쓰기 제어부(112,122)에 의하여 현재 각 큐에 기록된 프레임의 크기 정보를 저장한다. 저장된 크기 정보는 큐 길이 레지스터(115,125)로 옮겨져 외부 스케쥴러(116,126)에게 현재 읽을 프레임의 크기를 전달하고, 읽기 제어부(117,127)에 읽을 프레임의 크기 정보를 제공한다.
CPU에 의해 설정 가능한 시작 주소 레지스터(118,128)와 종료 주소 레지스터(119,129)에 의해 각 큐의 크기를 설정할 수 있게 하는 기능을 가지게 한다. 설정 가능한 큐 크기는 1Kx32 단위로 설정 가능하며, 프레임 전송 중에도 변경 가능하다. 예를 들면, 도 5 및 도 6의 큐 시작 주소 레지스터를 다음과 같이 설정한다면 각 큐 크기를 알 수 있다.
- 각 큐를 256K바이트로 할당하고자 한다면, 다음과 같이 할당 할 수 있다.
1. 큐_0_시작_주소 = h'00000, 큐_0_종료_주소 = h'0FFFF
2. 큐_1_시작_주소 = h'10000, 큐_1_종료_주소 = h'1FFFF
3. 큐_2_시작_주소 = h'20000, 큐_2_종료_주소 = h'2FFFF
4. 큐_3_시작_주소 = h'30000, 큐_3_종료_주소 = h'3FFFF
도 7은 중재제어부의 읽기 쓰기 동작 관계에 대한 도면이다.
상기 중재 제어부(103)는 아무런 동작도 하지 않는 Idle 상태, 읽는 동작이 이루어지도록 중재하는 Read 상태, 쓰기 동작이 이루어지도록 중재하는 Write 상태중 하나로 동작하는데, 도 7에 나타낸 바와 같이 읽기(Read) 및 쓰기(Write) 제어 신호에 따라서 동작 상태가 핑퐁(ping-pong)하게 되어 서로 독립적으로 동작할 수 있다. 중재 제어부(103)는 수신 제어부(110) 및 송신 제어부(120)로부터의 제어 신호와 모드 선택부(104)의 모드 신호에 따라서 도 4와 같은 제어 신호를 메모리(200)에 전달한다. 이때, 모드 신호는 무동작(No Operation), 수신, 송신, 루프백 모드의 4 가지로 구분되며, 각 모드 신호가 순차적으로 발생된다. 이에 따라 중재 제어부(103)는 수신 및 송신 제어부(110,120)에서 발생시킨 SRAM 제어신호들 중에서 RW_n에 따라서 쓰기 및 읽기 동작을 수행한다. 만약 읽기 동작을 수행하였을 경우는 메모리(200)에서 출력된 데이터(Data_out)를 모드 신호에 따라서 래치시켜서, 수신용 Read_data 또는 송신용 Read-data 신호를 생성한다.
도 3의 메모리(200)는 도 5와 도 6에 보인 바와 같이, 수신 버퍼와 송신 버퍼로 구분하여 적절한 크기로 할당할 수 있다.
결론적으로, 입력되는 프레임의 규격에 따라 모두 8개의 가상 버퍼가 프로그램 가능한 외부의 단일 버퍼 상에 구현되었고, 버퍼의 크기로 인해 FPGA 또는 ASIC 내 부에 실장이 불가능한 대규모 버퍼가 요구될 때 외부에 SSPRAM(Synchronous Single Port RAM)으로 구현이 가능하다.
이상 본 발명에 대하여 그 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시켜 실시할 수 있다.
이상 설명한 바와 같이, 본 발명에 따르면 하나의 외부 동기방식 단일 포트 RAM으로 구성된 메모리부터 송/수신 데이터를 구분하여 읽기/쓰기가 가능하므로 데이터의 버퍼링에 필요한 RAM의 수를 줄일 수 있어 비용 절감이 가능하며 대용량의 메모리까지 제공 가능하다.
또한 하나의 외부 동기방식 단일 포트 RAM으로 구성된 메모리부터 데이터의 클래스 큐별 송신 및 수신이 가능하므로 데이터의 버퍼링 뿐만 아니라 CoS(Class of Service)까지 제공할 수 있다.

Claims (12)

  1. 단일 포트로 이루어진 메모리의 제어 장치에 있어서,
    송신단에서 발생된 송신 패킷 프레임의 쓰기 데이터와, 쓰기 인에이블 신호 및 읽기 인에이블 신호를 이용하여 송신 패킷 프레임을 위한 읽기 및 쓰기 제어 신호를 발생하는 송신 제어부;
    수신단에서 발생된 수신 패킷 프레임의 쓰기 데이터와, 쓰기 인에이블 신호 및 읽기 인에이블 신호를 이용하여 수신 패킷 프레임을 위한 읽기 및 쓰기 제어 신호를 발생하는 수신 제어부;
    상기 송신 제어부와 수신 제어부로부터 인입되는 송신 패킷 프레임 및 수신 패킷 프레임에 대한 메모리의 읽기 및 쓰기를 동작 모드에 따라서 중재하는 중재 제어부; 및
    상기 중재 제어부로 동작 모드 신호를 출력하는 모드 선택부를 포함하는 양방향 데이터 통신용 단일 포트 메모리 제어 장치.
  2. 제1항에 있어서, 상기 중재 제어부는
    읽기 및 쓰기 제어 신호에 따라서 읽기 상태, 쓰기 상태, 및 아이들 상태가 핑퐁(ping-pong) 방식으로 천이되어, 읽기 및 쓰기가 독립적으로 동작하는 것을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 장치.
  3. 제1항에 있어서, 상기 수신 제어부는
    수신단에서 발생한 수신 패킷 프레임의 클래스를 분류하고 쓰기 인에이블 신호를 발생하는 패킷 분류부;
    상기 패킷 분류부로부터 쓰기 인에이블 신호 및 쓰기 데이터를 입력받아 메모리의 쓰기 커맨드와 주소와 쓰기 데이터를 포함하는 쓰기 제어 신호를 생성하고 이를 상기 중재 제어부로 출력하는 쓰기 제어부;
    수신단에서 읽기 인에이블 신호 발생시 메모리의 읽기 커맨드 및 주소를 포함하는 읽기 제어 신호를 발생시켜 상기 중재부로 출력하는 읽기 제어부;
    상기 쓰기 제어부에 의해서 메모리에 기록되는 프레임 수를 카운트하여 저장하는 적어도 하나 이상의 프레임 카운트 레지스터;
    상기 쓰기 제어부에 의해서 메모리에 기록된 프레임의 크기 정보를 각 큐별로 저장하여 상기 읽기 제어부에 제공하는 적어도 하나 이상의 프레임 사이즈 RAM;
    상기 하나 이상의 프레임 사이즈 RAM에 저장된 크기정보를 가져와 상기 읽기 제어부 및 외부 스케쥴러로 프레임의 크기 정보를 제공하는 적어도 하나 이상의 길이 레지스터;
    상기 읽기 제어부 및 쓰기 제어부에서 읽기 및 쓰기가 수행될 메모리의 각 수신용 큐의 시작 주소를 저장하는 시작 주소 레지스터; 및
    상기 읽기 제어부 및 쓰기 제어부에 의해 읽기 및 쓰기가 수행될 메모리의 각 수신용 큐의 끝 주소를 저장하는 종료 주소 레지스터를 포함함을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 장치.
  4. 제1항에 있어서, 상기 송신 제어부는
    송신단으로부터 송신 패킷 프레임을 입력받아 클래스를 분류하는 패킷 분류부;
    상기 패킷 분류부로부터 쓰기 인에이블 신호 및 송신 패킷 프레임을 입력받아, 상기 송신 패킷 프레임을 메모리에 기록하기 위한 쓰기 커맨드와 주소 및 상기 송신 패킷 프레임을 데이터를 포함하는 쓰기 제어 신호를 생성하여 상기 중재 제어부로 출력하는 쓰기 제어부;
    송신단에서 읽기 인에이블 신호 발생시 메모리에서 데이터를 읽어오기 위한 읽기 커맨드 및 읽어올 주소를 포함하는 읽기 제어 신호를 생성하여 중재 제어부로 출력하는 읽기 제어부;
    상기 쓰기 제어부에 의해서 메모리에 쓰여지는 프레임의 수를 카운트하여 저장하는 적어도 하나 이상의 프레임 카운트 레지스터;
    상기 쓰기 제어부에 의해서 메모리에 쓰여지는 프레임의 크기 정보를 저장하는 적어도 하나 이상의 프레임 사이즈 RAM;
    상기 하나 이상의 프레임 사이즈 RAM에 저장된 프레임 크기 정보를 가져와 상기 읽기 제어부 및 외부의 스케쥴러에 제공된 읽을 프레임의 길이 정보를 제공하는 적어도 하나 이상의 길이 레지스터;
    상기 쓰기 제어부 및 읽기 제어부에 의해서 읽기 및 쓰기가 수행될 메모리의 각 송신 큐의 시작 주소를 저장하는 시작 주소 레지스터; 및
    상기 쓰기 제어부 및 읽기 제어부에 의해서 읽기 및 쓰기가 수행될 메모리의 각 송신 큐의 끝 주소를 저장하는 종료 주소 레지스터를 포함함을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 장치.
  5. 제1항에 있어서, 상기 중재 제어부의 동작 모드는
    아무런 동작을 수행하지 않는 무동작 상태 모드, 수신 패킷 프레임의 읽기/쓰기를 처리하는 수신 모드, 송신 패킷 프레임의 읽기/쓰기를 처리하는 송신 모드, 및 수신 프레임을 송신 프레임으로 루프백시키는 루프백 모드로 이루어지며, 상기 무동작 상태 모드, 수신 모드, 송신 모드, 루프백 모드가 순차적으로 반복 수행되는 것을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 장치.
  6. 모드 선택부의 모드에 따라 중재 제어부로 모드 신호를 출력하는 단계;
    모드 신호가 수신 모드이면, 수신 패킷 프레임을 수신용 큐로 억세스하는 단계; 및
    모드 신호가 송신 모드이면, 송신 패킷 프레임을 송신용 큐로 억세스하는 단계를 수행함을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
  7. 제6항에 있어서, 상기 중재 제어부로 모드 신호를 출력하기 전에,
    무동작 상태 모드, 수신 모드, 송신 모드, 루프백 모드를 정의하는 단계를 미리 수행함을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
  8. 제7항에 있어서,
    상기 중재 제어부로 모드 신호를 출력하는 단계는, 무동작 상태 모드, 수신 모드, 송신 모드, 및 루프백 모드 신호를 순차적으로 발생하는 단계임을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
  9. 제6항에 있어서, 상기 수신 패킷 프레임을 수신용 큐로 억세스하는 단계에서,
    수신단의 쓰기 인에이블 신호에 따라 쓰기 제어부는 스케쥴러에 미리 정의된 패킷 프레임 종류에 해당하는 큐로 쓰기 커맨드를 전달하는 것을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
  10. 제6항에 있어서, 상기 수신 패킷 프레임을 수신용 큐로 억세스하는 단계에서,
    수신단의 읽기 인에이블 신호에 따라 스케쥴러로부터 읽을 패킷의 프레임 정보를 획득하여, 해당하는 큐로 읽기 커맨드를 전달하는 것을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
  11. 제6항에 있어서, 상기 송신 패킷 프레임을 송신용 큐로 억세스하는 단계에서,
    송신단의 쓰기 인에이블 신호에 따라 스케쥴러에서 정의된 패킷 프레임 종류 에 해당하는 큐로 쓰기 커맨드를 전달하는 것을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
  12. 제6항에 있어서, 상기 송신 패킷 프레임을 송신용 큐로 억세스하는 단계에서,
    송신단의 읽기 인에이블 신호에 따라 스케쥴러로부터 읽을 패킷의 프레임 정보를 획득하여, 해당하는 큐로 읽기 커맨드를 전달하는 것을 특징으로 하는 양방향 데이터 통신용 단일 포트 메모리 제어 방법.
KR1020060084704A 2005-12-07 2006-09-04 양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그제어 방법 KR100785892B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006330793A JP4904136B2 (ja) 2005-12-07 2006-12-07 双方向データ通信用単一ポートメモリ制御装置およびその制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050118951 2005-12-07
KR20050118951 2005-12-07

Publications (2)

Publication Number Publication Date
KR20070059913A KR20070059913A (ko) 2007-06-12
KR100785892B1 true KR100785892B1 (ko) 2007-12-17

Family

ID=38356164

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060084704A KR100785892B1 (ko) 2005-12-07 2006-09-04 양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그제어 방법

Country Status (1)

Country Link
KR (1) KR100785892B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546347A (en) 1994-07-22 1996-08-13 Integrated Device Technology, Inc. Interleaving architecture and method for a high density FIFO
KR20010016798A (ko) * 1999-08-04 2001-03-05 정선종 로컬 메모리 중재 및 인터페이스 장치
KR20010058521A (ko) * 1999-12-30 2001-07-06 박종섭 데이터에 대한 읽기 및 쓰기 동작을 동시에 수행할 수있는 단일 포트 메모리 구조의 메모리 장치
KR20020059716A (ko) * 1999-11-12 2002-07-13 밀러 럿셀 비 단일포트 램을 이용한 동시 어드레싱
JP2005018768A (ja) 2003-06-23 2005-01-20 Texas Instr Inc <Ti> 単一ポートセルメモリ装置のための二重ポート機能

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546347A (en) 1994-07-22 1996-08-13 Integrated Device Technology, Inc. Interleaving architecture and method for a high density FIFO
KR20010016798A (ko) * 1999-08-04 2001-03-05 정선종 로컬 메모리 중재 및 인터페이스 장치
KR20020059716A (ko) * 1999-11-12 2002-07-13 밀러 럿셀 비 단일포트 램을 이용한 동시 어드레싱
KR20010058521A (ko) * 1999-12-30 2001-07-06 박종섭 데이터에 대한 읽기 및 쓰기 동작을 동시에 수행할 수있는 단일 포트 메모리 구조의 메모리 장치
JP2005018768A (ja) 2003-06-23 2005-01-20 Texas Instr Inc <Ti> 単一ポートセルメモリ装置のための二重ポート機能

Also Published As

Publication number Publication date
KR20070059913A (ko) 2007-06-12

Similar Documents

Publication Publication Date Title
JP3560056B2 (ja) バッファのためのキュー・マネージャ
US6590901B1 (en) Method and apparatus for providing a packet buffer random access memory
US20020184453A1 (en) Data bus system including posted reads and writes
US6920510B2 (en) Time sharing a single port memory among a plurality of ports
US7725625B2 (en) Latency insensitive FIFO signaling protocol
JP2013520721A (ja) 異なるメモリ種類にアクセスする異なる速度での時分割多重化
US6816955B1 (en) Logic for providing arbitration for synchronous dual-port memory
US20050125590A1 (en) PCI express switch
JP4072583B2 (ja) 共有媒体アクセス制御回路を有する統合マルチポートスイッチ
JP4565966B2 (ja) メモリ素子
US6507899B1 (en) Interface for a memory unit
WO2009000794A1 (en) Data modification module in a microcontroller
KR100288177B1 (ko) 메모리 액세스 제어 회로
CN103516627B (zh) 多芯片通信中数据包发送、接收的方法和装置
JP4812058B2 (ja) Fifo管理方法及びパイプラインプロセッサシステム
US6088744A (en) Multiport data buffer having multi level caching wherein each data port has a FIFO buffer coupled thereto
KR100785892B1 (ko) 양방향 데이터 통신용 단일 포트 메모리 제어 장치 및 그제어 방법
JP4904136B2 (ja) 双方向データ通信用単一ポートメモリ制御装置およびその制御方法
GB2341253A (en) A high-speed dual port synchronous memory device
US6578118B1 (en) Method and logic for storing and extracting in-band multicast port information stored along with the data in a single memory without memory read cycle overhead
US7581072B2 (en) Method and device for data buffering
US6625711B1 (en) Method and/or architecture for implementing queue expansion in multiqueue devices
US6715021B1 (en) Out-of-band look-ahead arbitration method and/or architecture
JP5028710B2 (ja) 半導体記憶装置
US6581144B1 (en) Method and logic for initializing the forward-pointer memory during normal operation of the device as a background process

Legal Events

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

Payment date: 20101201

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee