KR102564391B1 - 반도체 칩들 사이의 통신을 위한 데이터 코딩 방법 - Google Patents

반도체 칩들 사이의 통신을 위한 데이터 코딩 방법 Download PDF

Info

Publication number
KR102564391B1
KR102564391B1 KR1020160084867A KR20160084867A KR102564391B1 KR 102564391 B1 KR102564391 B1 KR 102564391B1 KR 1020160084867 A KR1020160084867 A KR 1020160084867A KR 20160084867 A KR20160084867 A KR 20160084867A KR 102564391 B1 KR102564391 B1 KR 102564391B1
Authority
KR
South Korea
Prior art keywords
control character
buffer
character
characters
stored
Prior art date
Application number
KR1020160084867A
Other languages
English (en)
Other versions
KR20170108744A (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 US15/442,968 priority Critical patent/US10353758B2/en
Publication of KR20170108744A publication Critical patent/KR20170108744A/ko
Application granted granted Critical
Publication of KR102564391B1 publication Critical patent/KR102564391B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/28Programmable structures, i.e. where the code converter contains apparatus which is operator-changeable to modify the conversion process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0042Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

반도체 칩들 사이의 통신을 위한 데이터 인코딩 방법에서, 복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함하는 데이터 시퀀스를 수신하고, 데이터 시퀀스를 미리 정해진 개수의 문자들 단위로 구분하여 버퍼에 저장하고, 구분 코드들에 기초하여 버퍼에 적어도 하나의 제어 문자가 저장되어 있는지 여부를 판단하고, 버퍼에 적어도 하나의 제어 문자가 저장되어 있는 경우, 적어도 하나의 제어 문자 각각을 버퍼에서 다음 제어 문자의 위치를 나타내는 레퍼런스 번호를 포함하는 내부 제어 문자로 변환하고, 버퍼에 저장된 데이터 문자들 및 적어도 하나의 제어 문자에 대응되는 적어도 하나의 내부 제어 문자를 포함하는 제1 타입 데이터 블록을 생성한다.

Description

반도체 칩들 사이의 통신을 위한 데이터 코딩 방법 {DATA CODING METHOD FOR A COMMUNICATION BETWEEN SEMICONDUCTOR CHIPS}
본 발명은 데이터 코딩 방법에 관한 것으로, 보다 상세하게는 반도체 칩들 사이의 통신을 위한 데이터 코딩 방법에 관한 것이다.
일반적으로 반도체 칩들 사이의 통신 프로토콜에 따르면, 전송되는 문자(character)들 각각에 상기 문자가 실제 데이터를 나타내는 데이터 문자인지 통신 제어를 위한 제어 문자인지 여부를 나타내는 구분 코드가 부착된 상태로 데이터 통신이 수행된다.
따라서 상기 전송되는 문자들 각각에 부착된 상기 구분 코드는 통신 오버헤드(overhead)가 된다.
이와 같이, 반도체 칩들 사이의 통신을 위한 채널의 대역폭(bandwidth)의 일부가 상기 문자들 각각에 부착되어 있는 상기 구분 코드에 의해 사용되므로, 데이터 통신의 실질적인 대역폭(bandwidth)이 감소되는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 반도체 칩들 사이의 통신 오버헤드(overhead)를 감소시킴으로써 채널 대역폭(bandwidth)을 증가시킬 수 있는 데이터 인코딩 방법을 제공하는 것이다.
본 발명의 다른 목적은 반도체 칩들 사이의 통신 오버헤드를 감소시킴으로써 채널 대역폭을 증가시킬 수 있는 데이터 디코딩 방법을 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 반도체 칩들 사이의 통신을 위한 데이터 인코딩 방법에서, 복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 상기 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함하는 데이터 시퀀스를 수신하고, 상기 데이터 시퀀스를 미리 정해진 개수의 문자들 단위로 구분하여 버퍼에 저장하고, 상기 구분 코드들에 기초하여 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는지 여부를 판단하고, 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는 경우, 상기 적어도 하나의 제어 문자 각각을 상기 버퍼에서 다음 제어 문자의 위치를 나타내는 레퍼런스 번호를 포함하는 내부 제어 문자로 변환하고, 상기 버퍼에 저장된 상기 데이터 문자들 및 상기 적어도 하나의 제어 문자에 대응되는 상기 적어도 하나의 내부 제어 문자를 포함하는 제1 타입 데이터 블록을 생성한다.
일 실시예에 있어서, 상기 버퍼에 저장된 상기 적어도 하나의 제어 문자 중의 마지막 제어 문자에 대응되는 상기 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에 저장된 상기 적어도 하나의 제어 문자 중의 첫 번째 제어 문자의 위치를 나타낼 수 있다.
일 실시예에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 적어도 하나의 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에서 상기 적어도 하나의 제어 문자의 위치를 나타내는 링크드 리스트(linked list)에 상응할 수 있다.
일 실시예에 있어서, 상기 버퍼에 하나의 제어 문자가 저장되어 있는 경우, 상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 하나의 제어 문자에 대응되는 내부 제어 문자일 수 있다.
일 실시예에 있어서, 상기 버퍼에 복수의 제어 문자들이 저장되어 있는 경우, 상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 복수의 제어 문자들 중의 마지막 제어 문자에 대응될 수 있다.
일 실시예에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 데이터 문자들의 순서는 상기 버퍼에 저장된 상기 데이터 문자들의 순서와 동일할 수 있다.
일 실시예에 있어서, 상기 버퍼의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 상기 미리 정해진 개수의 문자들에 연결되는 상기 구분 코드들의 사이즈의 합에 상응할 수 있다.
일 실시예에 있어서, 상기 데이터 문자의 비트 수, 상기 제어 문자의 비트 수, 및 상기 내부 제어 문자의 비트 수는 서로 동일할 수 있다.
일 실시예에 있어서, 상기 내부 제어 문자는, 상기 내부 제어 문자에 대응되는 제어 문자의 값에 대응되는 매핑 코드, 상기 버퍼에서 상기 내부 제어 문자에 대응되는 제어 문자의 다음 제어 문자의 위치를 나타내는 상기 레퍼런스 번호, 및 상기 다음 제어 문자가 상기 버퍼에 저장된 상기 적어도 하나의 제어 문자 중의 마지막 제어 문자인지 여부를 나타내는 종료 플래그를 포함할 수 있다.
상기 버퍼에 하나의 제어 문자가 저장되어 있는 경우, 상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 하나의 제어 문자에 대응되는 내부 제어 문자이고, 상기 하나의 제어 문자에 대응되는 상기 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에서 상기 하나의 제어 문자의 위치를 나타낼 수 있다.
상기 버퍼에 복수의 제어 문자들이 저장되어 있는 경우, 상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 복수의 제어 문자들 중의 마지막 제어 문자에 대응되는 내부 제어 문자에 상응하고, 상기 복수의 제어 문자들 중에서 마지막에서 두 번째 제어 문자에 대응되는 내부 제어 문자에 포함되는 상기 종료 플래그는 제1 값을 갖고, 상기 복수의 제어 문자들 중에서 상기 마지막에서 두 번째 제어 문자를 제외한 나머지 제어 문자들 각각에 대응되는 내부 제어 문자에 포함되는 상기 종료 플래그는 제1 값과는 다른 제2 값을 가질 수 있다.
일 실시예에 있어서, 상기 버퍼에 제어 문자가 저장되어 있지 않은 경우, 상기 버퍼에 저장된 상기 데이터 문자들을 포함하는 제2 타입 데이터 블록을 생성하는 단계를 더 포함할 수 있다.
상기 제1 타입 데이터 블록은 제1 값을 갖는 블록 타입 코드를 더 포함하고, 상기 제2 타입 데이터 블록은 제1 값과는 다른 제2 값을 갖는 상기 블록 타입 코드를 더 포함할 수 있다.
상기 제1 타입 데이터 블록의 사이즈 및 상기 제2 타입 데이터 블록의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 상기 블록 타입 코드의 사이즈의 합과 동일할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 반도체 칩들 사이의 통신을 위한 데이터 디코딩 방법에서, 블록 타입 코드 및 미리 정해진 개수의 문자들을 포함하는 데이터 블록을 수신하고, 상기 블록 타입 코드에 기초하여 상기 데이터 블록이 제1 타입 데이터 블록인지 제2 타입 데이터 블록인지 여부를 판단하고, 상기 데이터 블록이 상기 제1 타입 데이터 블록인 경우, 상기 제1 타입 데이터 블록의 첫 번째 문자를 버퍼에 저장하고, 상기 버퍼에 저장된 문자에 포함되는 레퍼런스 번호 및 종료 플래그에 기초하여 상기 제1 타입 데이터 블록에 포함되는 상기 문자들 각각이 데이터 문자인지 내부 제어 문자인지 여부를 결정하고, 상기 제1 타입 데이터 블록에 포함되는 상기 내부 제어 문자들에 포함되는 레퍼런스 번호 및 종료 플래그에 기초하여 상기 제1 타입 데이터 블록에 포함되는 문자들의 출력 순서를 결정하고, 상기 데이터 문자를 출력하는 차례에, 제1 값을 갖는 구분 코드와 상기 데이터 문자를 순차적으로 출력하고, 상기 내부 제어 문자를 출력하는 차례에, 상기 내부 제어 문자에 포함되는 매핑 코드를 변환하여 제어 문자를 생성하고, 제2 값을 갖는 상기 구분 코드와 상기 제어 문자를 순차적으로 출력한다.
일 실시예에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 첫 번째 문자는 상기 내부 제어 문자일 수 있다.
일 실시예에 있어서, 상기 제어 문자를 출력하는 경우, 상기 제어 문자에 대응되는 상기 내부 제어 문자에 포함되는 상기 레퍼런스 번호 및 상기 종료 플래그를 상기 버퍼에 저장하여 상기 버퍼에 저장된 상기 레퍼런스 번호 및 상기 종료 플래그를 각각 업데이트할 수 있다.
일 실시예에 있어서, 상기 데이터 블록이 상기 제2 타입 데이터 블록인 경우, 상기 제2 타입 데이터 블록에 포함되는 모든 문자들이 상기 데이터 문자인 것으로 판단하고, 상기 제2 타입 데이터 블록에 포함되는 상기 데이터 문자들을 순차적으로 상기 제1 값을 갖는 상기 구분 코드와 교번하여 출력할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 인코딩 장치는 버퍼 및 인코딩 엔진을 포함한다. 상기 인코딩 엔진은 복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 상기 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함하는 데이터 시퀀스를 수신하고, 상기 데이터 시퀀스를 미리 정해진 개수의 문자들 단위로 구분하여 상기 버퍼에 저장하고, 상기 구분 코드들에 기초하여 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는지 여부를 판단하고, 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는 경우, 상기 적어도 하나의 제어 문자 각각을 상기 버퍼에서 다음 제어 문자의 위치를 나타내는 레퍼런스 번호를 포함하는 내부 제어 문자로 변환하고, 상기 버퍼에 저장된 상기 데이터 문자들 및 상기 적어도 하나의 제어 문자에 대응되는 상기 적어도 하나의 내부 제어 문자를 포함하는 제1 타입 데이터 블록을 생성한다.
일 실시예에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 적어도 하나의 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에서 상기 적어도 하나의 제어 문자의 위치를 나타내는 링크드 리스트(linked list)에 상응할 수 있다.
본 발명의 실시예들에 따른 반도체 칩들 사이의 통신을 위한 데이터 인코딩 방법 및 데이터 디코딩 방법에 따르면, 통신을 위한 오버헤드를 줄임으로써 채널 대역폭을 증가시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 반도체 칩들 사이의 통신을 위한 데이터 인코딩 방법을 나타내는 순서도이다.
도 3 내지 5는 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 저장된 데이터 시퀀스의 예들을 나타내는 도면들이다.
도 6은 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 제어 문자가 저장되어 있지 않은 경우, 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 제1 타입 데이터 블록의 일 예를 설명하기 위한 도면이다.
도 7은 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 내부 제어 문자의 일 예를 나타내는 도면이다.
도 8은 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 제어 문자가 하나 저장되어 있는 경우, 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 제2 타입 데이터 블록의 일 예를 설명하기 위한 도면이다.
도 9는 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 복수의 제어 문자들이 저장되어 있는 경우, 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 제2 타입 데이터 블록의 일 예를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 반도체 칩들 사이의 통신을 위한 데이터 디코딩 방법을 나타내는 순서도이다.
도 11은 도 1의 제2 반도체 칩에 포함되는 디코딩 장치가 제1 타입 데이터 블록을 수신한 경우, 상기 디코딩 장치의 디코딩 동작의 일 예를 설명하기 위한 도면이다.
도 12는 도 1의 제2 반도체 칩에 포함되는 제2 버퍼의 일 예를 나타내는 블록도이다.
도 13은 도 1의 제2 반도체 칩에 포함되는 디코딩 장치가 제2 타입 데이터 블록을 수신한 경우, 상기 디코딩 장치의 디코딩 동작의 일 예를 설명하기 위한 도면이다.
도 14는 도 1의 제2 반도체 칩에 포함되는 디코딩 장치가 제2 타입 데이터 블록을 수신한 경우, 상기 디코딩 장치의 디코딩 동작의 일 예를 설명하기 위한 도면이다.
도 15는 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 1을 참조하면, 전자 장치(10)는 제1 반도체 칩(20) 및 제2 반도체 칩(30)을 포함한다.
제1 반도체 칩(20)은 제1 컨트롤러(21) 및 인코딩 장치(100)를 포함하고, 제2 반도체 칩(30)은 제2 컨트롤러(31) 및 디코딩 장치(200)를 포함할 수 있다.
제1 반도체 칩(20)에 포함되는 제1 컨트롤러(21)는 제2 반도체 칩(20)으로 전송할 데이터를 패킷화하여 데이터 시퀀스(DS)를 생성할 수 있다.
일 실시예에 있어서, 제1 컨트롤러(21)는 문자(character) 단위로 해당 문자가 실제 데이터를 나타내는 데이터 문자인지 통신 제어를 위한 제어 문자인지 여부를 구분하는 통신 프로토콜에 기초하여 데이터 시퀀스(DS)를 생성할 수 있다. 예를 들어, 상기 제어 문자는 패킷의 시작, 패킷의 종료 등을 나타낼 수 있다. 이 경우, 데이터 시퀀스(DS)는 복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 상기 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함할 수 있다.
예를 들어, 제1 컨트롤러(21)는 MIPI(Mobile Industry Processor Interface) 표준에 정의된 Unipro 프로토콜에 기초하여 데이터 시퀀스(DS)를 생성할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 실시예에 따라서, 제1 컨트롤러(21)는 문자 단위로 데이터 문자와 제어 문자를 구분하는 다양한 종류의 프로토콜에 기초하여 데이터 시퀀스(DS)를 생성할 수 있다.
한편, 데이터 시퀀스(DS)에 포함되는 데이터 문자의 비트 수 및 제어 문자의 비트 수는 서로 동일할 수 있다.
제1 컨트롤러(21)는 인코딩 장치(100)에 데이터 시퀀스(DS)를 제공할 수 있다.
인코딩 장치(100)는 데이터 시퀀스(DS)에 대해 인코딩 동작을 수행하여 미리 정해진 개수의 문자들을 포함하는 데이터 블록을 생성할 수 있다. 따라서 제1 반도체 칩(20)으로부터 제2 반도체 칩(30)으로 전송되는 상기 데이터 블록의 사이즈는 고정될 수 있다.
일 실시예에 있어서, 인코딩 장치(100)는 인코딩 엔진(110) 및 제1 버퍼(120)를 포함할 수 있다.
인코딩 엔진(110)은 데이터 시퀀스(DS)를 미리 정해진 개수의 문자들 단위로 구분하여 제1 버퍼(120)에 저장할 수 있다. 예를 들어, 인코딩 엔진(110)은 데이터 시퀀스(DS)에 포함되는 연속되는 미리 정해진 개수의 문자들 및 상기 미리 정해진 개수의 문자들에 연결되는 상기 구분 코드들을 제1 버퍼(120)에 저장할 수 있다.
따라서 제1 버퍼(120)의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 상기 미리 정해진 개수의 문자들에 연결되는 상기 구분 코드들의 사이즈의 합에 상응할 수 있다.
이후, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 상기 미리 정해진 개수의 문자들에 대해 인코딩 동작을 수행하여 상기 미리 정해진 개수의 문자들을 포함하는 상기 데이터 블록을 생성할 수 있다. 후술하는 바와 같이, 제1 버퍼(120)에 저장되어 있던 상기 구분 코드들은 상기 데이터 블록에 포함되지 않는다.
상기 데이터 블록이 적어도 하나의 제어 문자를 포함하는지 여부에 기초하여 상기 데이터 블록은 제1 타입 데이터 블록(D_BLOCK1)과 제2 타입 데이터 블록(D_BLOCK2)으로 구분될 수 있다. 인코딩 엔진(110)은 제1 타입 데이터 블록(D_BLOCK1)의 앞단에 제1 값을 갖는 블록 타입 코드를 삽입하고, 제2 타입 데이터 블록(D_BLOCK2)의 앞단에 제2 값을 갖는 상기 블록 타입 코드를 삽입할 수 있다. 따라서 상기 데이터 블록에 포함되는 상기 블록 타입 코드에 기초하여 상기 데이터 블록은 제1 타입 데이터 블록(D_BLOCK1)과 제2 타입 데이터 블록(D_BLOCK2) 중의 하나로 구분될 수 있다.
인코딩 장치(100)의 상세 동작에 대해서는 후술한다.
인코딩 장치(100)에 의해 생성되는 상기 데이터 블록은 제2 반도체 칩(30)으로 전송될 수 있다.
제2 반도체 칩(30)에 포함되는 디코딩 장치(200)는 상기 데이터 블록을 수신하고, 상기 데이터 블록에 대해 디코딩 동작을 수행하여 출력 데이터 시퀀스(O_DS)를 생성할 수 있다.
일 실시예에 있어서, 디코딩 장치(200)는 디코딩 엔진(210) 및 제2 버퍼(220)를 포함할 수 있다.
디코딩 엔진(210)은 상기 데이터 블록에 포함되는 상기 블록 타입 코드에 기초하여 상기 데이터 블록이 제1 타입 데이터 블록(D_BLOCK1)인지 제2 타입 데이터 블록(D_BLOCK2)인지 여부를 판단할 수 있다. 또한, 디코딩 엔진(210)은 제2 버퍼(220)를 사용하여 상기 데이터 블록에 포함되는 상기 미리 정해진 개수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 판단하고, 데이터 문자에는 데이터 문자에 상응하는 상기 구분 코드를 연결시키고, 제어 문자에는 제어 문자에 상응하는 상기 구분 코드를 연결시켜 출력 데이터 시퀀스(O_DS)를 생성할 수 있다.
따라서 디코딩 장치(200)로부터 생성되는 출력 데이터 시퀀스(O_DS)는 인코딩 장치(100)에 제공되는 데이터 시퀀스(DS)와 동일할 수 있다.
디코딩 장치(200)의 상세 동작에 대해서는 후술한다.
디코딩 장치(200)에 의해 생성되는 데이터 시퀀스(DS)는 제2 컨트롤러(31)에 제공될 수 있다.
상술한 바와 같이, 제1 반도체 칩(20)과 제2 반도체 칩(30) 사이에 송수신되는 상기 데이터 블록은 데이터 시퀀스(DS)에 포함되는 상기 구분 코드들을 포함하지 않는다. 따라서 제1 반도체 칩(20)과 제2 반도체 칩(30) 사이의 통신을 위한 채널 대역폭(bandwidth)은 효과적으로 증가될 수 있다.
또한, 제1 반도체 칩(20)과 제2 반도체 칩(30)은 본 발명에 따른 인코딩 장치(100)와 디코딩 장치(200)를 사용하여 통신을 수행함에도 불구하고, 제1 반도체 칩(20)에 포함되는 제1 컨트롤러(21)와 제2 반도체 칩(30)에 포함되는 제2 컨트롤러(31)는 표준 통신 프로토콜에 기초하여 동작하는 종래의 컨트롤러로 구현될 수 있다. 따라서 본 발명에 따른 인코딩 장치(100)와 디코딩 장치(200)는 반도체 칩에 용이하게 적용될 수 있다.
도 2는 본 발명의 일 실시예에 따른 반도체 칩들 사이의 통신을 위한 데이터 인코딩 방법을 나타내는 순서도이다.
도 2의 데이터 인코딩 방법은 도 1에 도시된 인코딩 장치(100)를 통해 수행될 수 있다.
이하, 도 1 및 2를 참조하여, 인코딩 장치(100)에 의해 수행되는 데이터 인코딩 방법에 대해 설명한다.
도 2를 참조하면, 인코딩 엔진(110)은 제1 컨트롤러(21)로부터 복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 상기 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함하는 데이터 시퀀스(DS)를 수신할 수 있다(단계 S110). 상술한 바와 같이, 제1 컨트롤러(21)는 문자 단위로 데이터 문자와 제어 문자를 구분하는 다양한 종류의 프로토콜에 기초하여 데이터 시퀀스(DS)를 생성할 수 있다.
인코딩 엔진(110)은 데이터 시퀀스(DS)를 미리 정해진 개수의 문자들 단위로 구분하여 버퍼에 저장할 수 있다(단계 S120). 예를 들어, 인코딩 엔진(110)은 데이터 시퀀스(DS)에 포함되는 연속되는 미리 정해진 개수의 문자들 및 상기 미리 정해진 개수의 문자들에 연결되는 상기 구분 코드들을 제1 버퍼(120)에 저장할 수 있다.
도 3 내지 5는 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 저장된 데이터 시퀀스의 예들을 나타내는 도면들이다.
도 3 내지 5는 인코딩 장치(100)로부터 생성되는 상기 데이터 블록이 8개의 문자들을 포함하는 경우에, 제1 버퍼(120)에 저장된 데이터 시퀀스(DS)의 예들을 예시적으로 나타낸다. 이 경우, 도 3 내지 5에 도시된 바와 같이, 제1 버퍼(120)의 사이즈는 8개의 문자들의 사이즈와 8개의 문자들에 연결되는 구분 코드(IC)들의 사이즈의 합에 상응할 수 있다.
도 3 내지 5에서, Dx는 데이터 문자(DC)를 나타내고, Cx는 제어 문자(CC)를 나타낸다. 여기서, x는 0 이상의 정수를 나타낸다.
또한, 도 3 내지 5에서, 구분 코드(IC)는 한 비트를 포함하고, 데이터 문자(DC)에 상응하는 구분 코드(IC)는 '0'이고, 제어 문자(CC)에 상응하는 구분 코드(IC)는 '1'인 것으로 도시된다.
도 3은 제1 버퍼(120)에 8개의 연속된 데이터 문자(DC)들이 저장된 경우를 예시적으로 나타낸다.
도 4는 제1 버퍼(120)에 저장된 두 번째 문자는 제어 문자(CC)이고, 제1 버퍼(120)에 저장된 나머지 7개의 문자들은 데이터 문자(DC)인 경우를 예시적으로 나타낸다.
도 5는 제1 버퍼(120)에 저장된 두 번째, 다섯 번째, 및 일곱 번째 문자들은 제어 문자(CC)이고, 제1 버퍼(120)에 저장된 나머지 5개의 문자들은 데이터 문자(DC)인 경우를 예시적으로 나타낸다.
다시 도 2를 참조하면, 인코딩 엔진(110)은 제1 컨트롤러(21)로부터 제공되는 데이터 시퀀스(DS)를 상기 미리 정해진 개수의 문자들 단위로 구분하여 제1 버퍼(120)에 저장한 이후(단계 S120), 제1 버퍼(120)에 저장된 구분 코드(IC)들에 기초하여 제1 버퍼(120)에 적어도 하나의 제어 문자(CC)가 저장되어 있는지 여부를 판단할 수 있다(단계 S130).
제1 버퍼(120)에 제어 문자(CC)가 저장되어 있지 않은 경우(단계 S130; 아니오), 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 데이터 문자(DC)들을 포함하는 제1 타입 데이터 블록(D_BLOCK1)을 생성할 수 있다(단계 S140).
도 6은 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 제어 문자가 저장되어 있지 않은 경우, 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 제1 타입 데이터 블록의 일 예를 설명하기 위한 도면이다.
도 6에 도시된 바와 같이, 제1 버퍼(120)에 제어 문자(CC)가 저장되어 있지 않은 경우, 인코딩 엔진(110)은 제1 타입 데이터 블록(D_BLOCK1)을 생성할 수 있다. 제1 타입 데이터 블록(D_BLOCK1)은 앞단에 제1 값을 갖는 블록 타입 코드(BTC)를 포함할 수 있다. 도 6에는 상기 제1 값은 '01'인 것으로 도시된다.
도 6에 도시된 바와 같이, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 상기 미리 정해진 개수의 데이터 문자(DC)들의 순서를 그대로 유지한 채, 제1 버퍼(120)에 저장된 상기 미리 정해진 개수의 데이터 문자(DC)들을 상기 제1 값을 갖는 블록 타입 코드(BTC) 이후에 연결시킴으로써 제1 타입 데이터 블록(D_BLOCK1)을 생성할 수 있다.
이 때, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 구분 코드(IC)들은 생략하고, 제1 버퍼(120)에 저장된 데이터 문자(DC)들 만을 제1 타입 데이터 블록(D_BLOCK1)에 포함시킬 수 있다.
따라서 제1 타입 데이터 블록(D_BLOCK1)의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 블록 타입 코드(BTC)의 사이즈의 합과 동일할 수 있다.
한편, 제1 버퍼(120)에 적어도 하나의 제어 문자(CC)가 저장되어 있는 경우(단계 S130; 예), 인코딩 엔진(110)은 적어도 하나의 제어 문자(CC) 각각을 내부 제어 문자로 변환할 수 있다(단계 S150).
일 실시예에 있어서, 상기 내부 제어 문자의 비트 수는 제어 문자(CC)의 비트 수와 동일할 수 있다. 따라서 데이터 문자(DC)의 비트 수, 제어 문자(CC)의 비트 수, 및 상기 내부 제어 문자의 비트 수는 서로 동일할 수 있다.
도 7은 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 내부 제어 문자의 일 예를 나타내는 도면이다.
도 7에는 예시적으로 내부 제어 문자(INC)가 8개의 비트들을 포함하는 것으로 도시된다.
도 7을 참조하면, 내부 제어 문자(INC)는 매핑 코드(MAP), 레퍼런스 번호(REF), 및 종료 플래그(TF)를 포함할 수 있다.
내부 제어 문자(INC)에 포함되는 매핑 코드(MAP)는 내부 제어 문자(INC)에 대응되는 제어 문자(CC)의 값에 대응되는 값을 가질 수 있다.
도 7에는 매핑 코드(MAP)가 세 개의 비트들을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다. 매핑 코드(MAP)의 비트 수는 데이터 시퀀스(DS)에서 제어 문자(CC)가 가질 수 있는 값들의 개수에 기초하여 결정될 수 있다. 예를 들어, 데이터 시퀀스(DS)에서 제어 문자(CC)가 가질 수 있는 값들의 개수가 8개 이하인 경우, 매핑 코드(MAP)의 비트 수는 3일 수 있다.
내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)는 제1 버퍼(120)에서 내부 제어 문자(INC)에 대응되는 제어 문자(CC)의 다음 제어 문자의 위치를 나타낼 수 있다.
한편, 내부 제어 문자(INC)에 대응되는 제어 문자(CC)가 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 중의 마지막 제어 문자인 경우, 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)는 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 중의 첫 번째 제어 문자의 위치를 나타낼 수 있다.
따라서 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 각각을 변환하여 생성되는 적어도 하나의 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)들은 제1 버퍼(120)에서 적어도 하나의 제어 문자(CC)의 위치를 나타내는 링크드 리스트(linked list)에 상응할 수 있다.
도 7에는 레퍼런스 번호(REF)가 네 개의 비트들을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다. 레퍼런스 번호(REF)의 비트 수는 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 문자들의 개수에 기초하여 결정될 수 있다. 예를 들어, 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 문자들의 개수가 상대적으로 작은 경우, 레퍼런스 번호(REF)의 비트 수는 네 개보다 작게 설정될 수도 있다.
내부 제어 문자(INC)에 포함되는 종료 플래그(TF)는 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자가 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 중의 마지막 제어 문자인지 여부를 나타낼 수 있다.
예를 들어, 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자가 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 중의 마지막 제어 문자가 아닌 경우, 내부 제어 문자(INC)에 포함되는 종료 플래그(TF)는 '0'의 값을 갖고, 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자가 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 중의 마지막 제어 문자인 경우, 내부 제어 문자(INC)에 포함되는 종료 플래그(TF)는 '1'의 값을 가질 수 있다.
다시 도 2를 참조하면, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 각각을 내부 제어 문자(INC)로 변환한 이후(단계 S150), 제1 버퍼(120)에 저장된 데이터 문자(DC)들 및 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC)에 대응되는 적어도 하나의 내부 제어 문자(INC)를 포함하는 제2 타입 데이터 블록(D_BLOCK2)을 생성할 수 있다(단계 S160).
도 8은 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 제어 문자가 하나 저장되어 있는 경우, 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 제2 타입 데이터 블록의 일 예를 설명하기 위한 도면이다.
도 8에 도시된 바와 같이, 제1 버퍼(120)에 제어 문자(CC)가 하나 저장되어 있는 경우, 인코딩 엔진(110)은 제2 타입 데이터 블록(D_BLOCK2)을 생성할 수 있다. 제2 타입 데이터 블록(D_BLOCK2)은 앞단에 제2 값을 갖는 블록 타입 코드(BTC)를 포함할 수 있다. 도 8에는 상기 제2 값은 '10'인 것으로 도시된다.
인코딩 엔진(110)은 제1 버퍼(120)에 저장된 제어 문자(C1)를 도 7을 참조하여 상술한 바와 같은 방식으로 변환하여 내부 제어 문자(INC1)를 생성할 수 있다.
내부 제어 문자(INC1)에 포함되는 매핑 코드(MAP)는 제어 문자(C1)의 값에 대응되는 값을 가질 수 있다.
또한, 제1 버퍼(120)에는 하나의 제어 문자(C1)가 저장되어 있으므로, 내부 제어 문자(INC1)에 포함되는 레퍼런스 번호(REF)는 제어 문자(C1)의 위치를 나타내는 '1'의 값을 가질 수 있다.
또한, 내부 제어 문자(INC1)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자(C1)는 제1 버퍼(120)에 저장된 적어도 하나의 제어 문자(CC) 중의 마지막 제어 문자이므로, 내부 제어 문자(INC1)에 포함되는 종료 플래그(TF)는 '1'의 값을 가질 수 있다.
도 8에 도시된 바와 같이, 제1 버퍼(120)에 하나의 제어 문자(C1)가 저장되어 있는 경우, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 하나의 제어 문자(C1)를 변환하여 생성되는 내부 제어 문자(INC1)를 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자로 포함시킬 수 있다.
이후, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 데이터 문자(DC)들의 순서를 그대로 유지한 채, 제1 버퍼(120)에 저장된 데이터 문자(DC)들을 내부 제어 문자(INC1) 이후에 연결시킴으로써 제2 타입 데이터 블록(D_BLOCK2)을 생성할 수 있다.
이 때, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 구분 코드(IC)들은 생략하고, 내부 제어 문자(INC1) 및 제1 버퍼(120)에 저장된 데이터 문자(DC)들 만을 제2 타입 데이터 블록(D_BLOCK2)에 포함시킬 수 있다.
따라서 제2 타입 데이터 블록(D_BLOCK2)의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 블록 타입 코드(BTC)의 사이즈의 합과 동일할 수 있다.
도 9는 도 1의 제1 반도체 칩에 포함되는 제1 버퍼에 복수의 제어 문자들이 저장되어 있는 경우, 도 1의 제1 반도체 칩에 포함되는 인코딩 장치에 의해 생성되는 제2 타입 데이터 블록의 일 예를 설명하기 위한 도면이다.
도 9에 도시된 바와 같이, 제1 버퍼(120)에 복수의 제어 문자들(C1, C4, C6)이 저장되어 있는 경우, 인코딩 엔진(110)은 제2 타입 데이터 블록(D_BLOCK2)을 생성할 수 있다. 제2 타입 데이터 블록(D_BLOCK2)은 앞단에 제2 값을 갖는 블록 타입 코드(BTC)를 포함할 수 있다. 도 9에는 상기 제2 값은 '10'인 것으로 도시된다.
인코딩 엔진(110)은 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 각각을 도 7을 참조하여 상술한 바와 같은 방식으로 변환하여 내부 제어 문자들(INC1, INC4, INC6)을 생성할 수 있다.
제어 문자(C1)를 변환하여 생성되는 내부 제어 문자(INC1)에 포함되는 매핑 코드(MAP)는 제어 문자(C1)의 값에 대응되는 값을 가질 수 있다.
또한, 내부 제어 문자(INC1)에 포함되는 레퍼런스 번호(REF)는 제1 버퍼(120)에서 제어 문자(C1)의 다음 제어 문자(C4)의 위치를 나타내는 '4'의 값을 가질 수 있다.
또한, 내부 제어 문자(INC1)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자(C4)는 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 중의 마지막 제어 문자가 아니므로, 내부 제어 문자(INC1)에 포함되는 종료 플래그(TF)는 '0'의 값을 가질 수 있다.
이와 유사하게, 제어 문자(C4)를 변환하여 생성되는 내부 제어 문자(INC4)에 포함되는 매핑 코드(MAP)는 제어 문자(C4)의 값에 대응되는 값을 가질 수 있다.
또한, 내부 제어 문자(INC4)에 포함되는 레퍼런스 번호(REF)는 제1 버퍼(120)에서 제어 문자(C4)의 다음 제어 문자(C6)의 위치를 나타내는 '6'의 값을 가질 수 있다.
또한, 내부 제어 문자(INC4)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자(C6)는 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 중의 마지막 제어 문자이므로, 내부 제어 문자(INC4)에 포함되는 종료 플래그(TF)는 '1'의 값을 가질 수 있다.
이와 유사하게, 제어 문자(C6)를 변환하여 생성되는 내부 제어 문자(INC6)에 포함되는 매핑 코드(MAP)는 제어 문자(C6)의 값에 대응되는 값을 가질 수 있다.
또한, 내부 제어 문자(INC6)에 대응되는 제어 문자(C6)는 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 중의 마지막 제어 문자이므로, 내부 제어 문자(INC6)에 포함되는 레퍼런스 번호(REF)는 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 중의 첫 번째 제어 문자(C1)의 위치를 나타내는 '1'의 값을 가질 수 있다.
또한, 내부 제어 문자(INC6)에 포함되는 레퍼런스 번호(REF)가 지칭하는 제어 문자(C1)는 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 중의 마지막 제어 문자가 아니므로, 내부 제어 문자(INC6)에 포함되는 종료 플래그(TF)는 '0'의 값을 가질 수 있다.
도 9에 도시된 바와 같이, 제1 버퍼(120)에 복수의 제어 문자들(C1, C4, C6)이 저장되어 있는 경우, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 복수의 제어 문자들(C1, C4, C6) 중의 마지막 제어 문자(C6)를 변환하여 생성되는 내부 제어 문자(INC6)를 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자로 포함시킬 수 있다.
이후, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 문자들의 순서를 그대로 유지한 채, 제1 버퍼(120)에 저장된 데이터 문자들(D0, D2, D3, D5, D7)은 제2 타입 데이터 블록(D_BLOCK2)에 그대로 포함시키고, 제1 버퍼(120)에 저장된 제어 문자들(C1, C4)은 내부 제어 문자들(INC1, INC4)로 치환하여 제2 타입 데이터 블록(D_BLOCK2)에 포함시킴으로써 제2 타입 데이터 블록(D_BLOCK2)을 생성할 수 있다.
이 때, 인코딩 엔진(110)은 제1 버퍼(120)에 저장된 구분 코드(IC)들은 생략하고, 내부 제어 문자들(INC1, INC4, INC6) 및 데이터 문자들(D0, D2, D3, D5, D7)들 만을 제2 타입 데이터 블록(D_BLOCK2)에 포함시킬 수 있다.
따라서 제2 타입 데이터 블록(D_BLOCK2)의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 블록 타입 코드(BTC)의 사이즈의 합과 동일할 수 있다.
도 1 내지 9를 참조하여 상술한 바와 같이, 인코딩 장치(100)에 의해 생성되는 제1 타입 데이터 블록(D_BLOCK1) 및 제2 타입 데이터 블록(D_BLOCK2)은 데이터 시퀀스(DS)에 포함되는 구분 코드(IC)들을 포함하지 않으므로, 제1 반도체 칩(20)과 제2 반도체 칩(30) 사이의 통신을 위한 채널 대역폭(bandwidth)은 효과적으로 증가될 수 있다.
또한, 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자는 항상 내부 제어 문자(INC)이고, 제2 타입 데이터 블록(D_BLOCK2)의 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)는 제1 버퍼(120)에서 적어도 하나의 제어 문자(CC)의 위치를 나타내는 링크드 리스트(linked list)를 형성하므로, 후술하는 바와 같이, 디코딩 장치(200)는 제2 타입 데이터 블록(D_BLOCK2)이 구분 코드(IC)들을 포함하지 않더라도, 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 문자들 각각이 데이터 문자(DC)인지 내부 제어 문자(INC)인지 여부를 판단할 수 있다.
도 10은 본 발명의 일 실시예에 따른 반도체 칩들 사이의 통신을 위한 데이터 디코딩 방법을 나타내는 순서도이다.
도 10의 데이터 디코딩 방법은 도 1에 도시된 디코딩 장치(200)를 통해 수행될 수 있다.
이하, 도 1 내지 10을 참조하여, 디코딩 장치(100)에 의해 수행되는 데이터 디코딩 방법에 대해 설명한다.
도 10을 참조하면, 디코딩 엔진(210)은 제1 반도체 칩(20)으로부터 블록 타입 코드(BTC) 및 상기 미리 정해진 개수의 문자들을 포함하는 상기 데이터 블록을 수신할 수 있다(단계 S210).
디코딩 엔진(210)은 상기 데이터 블록에 포함되는 블록 타입 코드(BTC)에 기초하여 상기 데이터 블록이 제1 타입 데이터 블록(D_BLOCK1)인지 제2 타입 데이터 블록(D_BLOCK2)인지 여부를 판단할 수 있다(단계 S220).
도 11은 도 1의 제2 반도체 칩에 포함되는 디코딩 장치가 제1 타입 데이터 블록을 수신한 경우, 상기 디코딩 장치의 디코딩 동작의 일 예를 설명하기 위한 도면이다.
도 11을 참조하면, 디코딩 엔진(210)에 제공되는 상기 데이터 블록이 제1 타입 데이터 블록(D_BLOCK1)인 경우, 디코딩 엔진(210)은 제1 타입 데이터 블록(D_BLOCK1)에 포함되는 모든 문자들이 데이터 문자(DC)인 것으로 판단할 수 있다(단계 S230).
따라서, 도 11에 도시된 바와 같이, 디코딩 엔진(210)은 제1 타입 데이터 블록(D_BLOCK1)에 포함되는 데이터 문자(DC)들을 순차적으로 제1 값(도 11에서는 '0')을 갖는 구분 코드(IC)와 교번하여 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S240). 이 때, 출력 데이터 시퀀스(O_DS)에 포함되는 데이터 문자(DC)들의 순서는 제1 타입 데이터 블록(D_BLOCK1)에 포함되는 데이터 문자(DC)들의 순서와 동일할 수 있다.
다시 도 10을 참조하면, 디코딩 엔진(210)에 제공되는 상기 데이터 블록이 제2 타입 데이터 블록(D_BLOCK2)인 경우, 디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 첫 번째 문자를 제2 버퍼(220)에 저장할 수 있다(단계 S250).
도 1 내지 9를 참조하여 상술한 바와 같이, 인코딩 장치(100)로부터 생성되는 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자는 항상 내부 제어 문자(INC)일 수 있다.
따라서 디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자에 포함되는 매핑 코드(MAP), 레퍼런스 번호(REF), 및 종료 플래그(TF)를 제2 버퍼(220)에 저장할 수 있다.
도 12는 도 1의 제2 반도체 칩에 포함되는 제2 버퍼의 일 예를 나타내는 블록도이다.
도 12를 참조하면, 제2 버퍼(220)는 제1 레지스터(MAP_R)(221), 제2 레지스터(REF_R)(222), 제3 레지스터(TF_R)(223), 제4 레지스터(INDEX_R)(224)를 포함할 수 있다.
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자에 포함되는 매핑 코드(MAP), 레퍼런스 번호(REF), 및 종료 플래그(TF)를 각각 제1 레지스터(221), 제2 레지스터(222), 및 제3 레지스터(223)에 저장할 수 있다.
다시 도 10을 참조하면, 디코딩 엔진(210)은 제2 레지스터(222)에 저장된 레퍼런스 번호(REF) 및 제3 레지스터(223)에 저장된 종료 플래그(TF)에 기초하여 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 상기 문자들 각각이 데이터 문자(DC)인지 내부 제어 문자(INC)인지 여부를 판단하고(단계 S260), 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF) 및 종료 플래그(TF)에 기초하여 상제2 타입 데이터 블록(D_BLOCK2)에 포함되는 상기 문자들의 출력 순서를 결정할 수 있다(단계 S270).
도 13은 도 1의 제2 반도체 칩에 포함되는 디코딩 장치가 제2 타입 데이터 블록을 수신한 경우, 상기 디코딩 장치의 디코딩 동작의 일 예를 설명하기 위한 도면이다.
도 13에는, 제2 타입 데이터 블록(D_BLOCK2)에 하나의 내부 제어 문자(INC1)가 포함되는 경우에, 디코딩 장치(200)의 디코딩 동작이 도시된다.
상술한 바와 같이, 제2 타입 데이터 블록(D_BLOCK2)에 하나의 내부 제어 문자(INC1)가 포함되는 경우, 내부 제어 문자(INC1)는 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자에 상응할 수 있다.
도 13에는 내부 제어 문자(INC1)에 포함되는 매핑 코드(MAP), 레퍼런스 번호(REF), 및 종료 플래그(TF)는 각각 MAP1, '1', 및 '1'인 것으로 도시된다.
도 13에 도시된 바와 같이, 디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자(INC1)에 포함되는 매핑 코드(MAP), 레퍼런스 번호(REF), 및 종료 플래그(TF)를 각각 제1 레지스터(MAP_R)(221), 제2 레지스터(REF_R)(222), 및 제3 레지스터(TF_R)(223)에 저장할 수 있다.
한편, 디코딩 엔진(210)은 제4 레지스터(INDEX_R)(224)에 인덱스 번호를 저장할 수 있다.
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 두 번째 문자(D0)를 수신하는 경우, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호 '0'으로 초기화하고, 이후 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 문자들을 순차적으로 수신할 때마다 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호를 순차적으로 증가시킬 수 있다.
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 두 번째 문자(D0)를 수신하는 경우, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호와 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)가 일치하는지 여부를 판단할 수 있다.
제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호는 '0'이고, 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)는 '1'이므로, 서로 일치하지 않는다. 이 경우, 디코딩 엔진(210)은 두 번째 문자(D0)는 데이터 문자(DC)인 것으로 판단하고, 제1 값(도 13에서는 '0')을 갖는 구분 코드(IC)와 두 번째 문자(D0)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S280).
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 세 번째 문자(D2)를 수신하는 경우, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호를 '1'로 증가시킨 후, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호와 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)가 일치하는지 여부를 판단할 수 있다.
제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호는 '1'이고, 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)는 '1'이므로, 서로 일치한다. 이 경우, 디코딩 엔진(210)은 제3 레지스터(TF_R)(223)에 저장된 종료 플래그(TF)가 '1'인지 여부를 판단할 수 있다.
제3 레지스터(TF_R)(223)에 저장된 종료 플래그(TF)가 '1'이므로, 디코딩 엔진(210)은 제1 레지스터(MAP_R)(221)에 저장된 매핑 코드(MAP)인 MAP1을 변환하여 제어 문자(C1)를 생성한 후(단계 S290), 제2 값(도 13에서는 '1')을 갖는 구분 코드(IC)와 제어 문자(C1)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S295).
이 때, 디코딩 엔진(210)은 제어 문자(C1)의 출력과 동시에 세 번째 문자(D2)를 제2 버퍼(220)에 저장할 수 있다.
이후, 디코딩 엔진(210)은 제1 값(도 13에서는 '0')을 갖는 구분 코드(IC)와 제2 버퍼(220)에 저장된 세 번째 문자(D2)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S280).
'1'값을 갖는 종료 플래그(TF)에 상응하는 제어 신호(C1)를 출력했으므로, 제2 타입 데이터 블록(D_BLOCK2)에 남은 문자들은 모두 데이터 문자(DC)에 상응할 수 있다.
따라서 디코딩 엔진(210)은 제1 값(도 13에서는 '0')을 갖는 구분 코드(IC)와 네 번째 내지 여덟 번째 문자들(D3, D4, D5, D6, D7)을 교번하여 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다.
도 14는 도 1의 제2 반도체 칩에 포함되는 디코딩 장치가 제2 타입 데이터 블록을 수신한 경우, 상기 디코딩 장치의 디코딩 동작의 일 예를 설명하기 위한 도면이다.
도 14에는, 제2 타입 데이터 블록(D_BLOCK2)에 복수의 내부 제어 문자들(INC1, INC4, INC6)이 포함되는 경우에, 디코딩 장치(200)의 디코딩 동작이 도시된다.
도 14에 도시된 바와 같이, 디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 첫 번째 문자(INC6)에 포함되는 매핑 코드(MAP), 레퍼런스 번호(REF), 및 종료 플래그(TF)를 각각 제1 레지스터(MAP_R)(221), 제2 레지스터(REF_R)(222), 및 제3 레지스터(TF_R)(223)에 저장할 수 있다.
한편, 디코딩 엔진(210)은 제4 레지스터(INDEX_R)(224)에 인덱스 번호를 저장할 수 있다.
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 두 번째 문자(D0)를 수신하는 경우, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호 '0'으로 초기화하고, 이후 제2 타입 데이터 블록(D_BLOCK2)에 포함되는 문자들을 순차적으로 수신할 때마다 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호를 순차적으로 증가시킬 수 있다.
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 두 번째 문자(D0)를 수신하는 경우, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호와 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)가 일치하는지 여부를 판단할 수 있다.
제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호는 '0'이고, 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)는 '1'이므로, 서로 일치하지 않는다. 이 경우, 디코딩 엔진(210)은 두 번째 문자(D0)는 데이터 문자(DC)인 것으로 판단하고, 제1 값(도 14에서는 '0')을 갖는 구분 코드(IC)와 두 번째 문자(D0)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S280).
디코딩 엔진(210)은 제2 타입 데이터 블록(D_BLOCK2)의 세 번째 문자(INC1)를 수신하는 경우, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호를 '1'로 증가시킨 후, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호와 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)가 일치하는지 여부를 판단할 수 있다.
제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호는 '1'이고, 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)는 '1'이므로, 서로 일치한다. 이 경우, 디코딩 엔진(210)은 제3 레지스터(TF_R)(223)에 저장된 종료 플래그(TF)가 '1'인지 여부를 판단할 수 있다.
제3 레지스터(TF_R)(223)에 저장된 종료 플래그(TF)가 '0'이므로, 디코딩 엔진(210)은 세 번째 문자(INC1)에 포함되는 레퍼런스 번호(REF) 및 종료 플래그(TF)로 제2 레지스터(REF_R)(222) 및 제3 레지스터(TF_R)(223)를 각각 업데이트할 수 있다. 또한, 디코딩 엔진(210)은 세 번째 문자(INC1)에 포함되는 매핑 코드(MAP)를 변환하여 제어 문자(C1)를 생성하고(단계 S290), 제2 값(도 14에서는 '1')을 갖는 구분 코드(IC)와 제어 문자(C1)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S295).
한편, 디코딩 엔진(210)은 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호와 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)가 일치하지 않는 경우, 수신되는 문자는 데이터 문자(DC)이므로 제1 값(도 14에서는 '0')을 갖는 구분 코드(IC)와 데이터 문자(DC)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다.
제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호가 '4'가 되는 경우, 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)와 일치하므로, 이 때에 수신되는 문자(INC4)에 포함되는 레퍼런스 번호(REF) 및 종료 플래그(TF)로 제2 레지스터(REF_R)(222) 및 제3 레지스터(TF_R)(223)를 각각 업데이트할 수 있다.
한편, 제4 레지스터(INDEX_R)(224)에 저장된 상기 인덱스 번호가 '6'이 되는 경우, 제2 레지스터(REF_R)(222)에 저장된 레퍼런스 번호(REF)와 일치하게 된다. 이 때, 제3 레지스터(TF_R)(223)는 '1'이므로, 제1 레지스터(MAP_R)(221)에 저장된 매핑 코드(MAP)인 MAP6을 변환하여 제어 문자(C6)를 생성한 후(단계 S290), 제2 값(도 14에서는 '1')을 갖는 구분 코드(IC)와 제어 문자(C6)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S295).
이 때, 디코딩 엔진(210)은 제어 문자(C6)의 출력과 동시에 수신된 문자(D7)를 제2 버퍼(220)에 저장할 수 있다.
이후, 디코딩 엔진(210)은 제1 값(도 14에서는 '0')을 갖는 구분 코드(IC)와 제2 버퍼(220)에 저장된 문자(D7)를 순차적으로 출력 데이터 시퀀스(O_DS)로서 출력할 수 있다(단계 S280).
따라서 디코딩 장치(200)로부터 생성되는 출력 데이터 시퀀스(O_DS)는 인코딩 장치(100)에 제공되는 데이터 시퀀스(DS)와 동일할 수 있다.
도 1 내지 14를 참조하여 상술한 바와 같이, 제2 타입 데이터 블록(D_BLOCK2)에 구분 코드(IC)들이 포함되어 있지 않더라도, 디코딩 장치(200)는 제2 타입 데이터 블록(D_BLOCK2)의 내부 제어 문자(INC)에 포함되는 레퍼런스 번호(REF)를 통해 형성되는 링크드 리스트(linked list)를 통해 내부 제어 문자(INC)의 위치 및 출력 순서를 판단할 수 있다.
따라서 디코딩 장치(200)로부터 생성되는 출력 데이터 시퀀스(O_DS)는 인코딩 장치(100)에 제공되는 데이터 시퀀스(DS)와 동일할 수 있다.
도 15는 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 15를 참조하면, 전자 장치(40)는 어플리케이션 프로세서(50) 및 저장 장치(60)를 포함한다.
어플리케이션 프로세서(50)는 중앙 처리 장치(CPU)(51) 및 인코딩 장치(100)를 포함하고, 저장 장치(60)는 디코딩 장치(200), 메모리 컨트롤러(61), 및 저장 매체(62)를 포함할 수 있다.
도 15의 전자 장치(40)에 포함되는 인코딩 장치(100) 및 디코딩 장치(200)는 각각 도 1의 전자 장치(10)에 포함되는 인코딩 장치(100) 및 디코딩 장치(200)와 동일할 수 있다. 따라서 중복되는 설명은 생략한다.
일 실시예에 있어서, 저장 장치(60)는 MIPI 표준에 기초하여 동작하는 UFS(Universal Flash Storage)일 수 있다.
이 경우, 본 발명에 따른 인코딩 장치(100) 및 디코딩 장치(200)는 각각 어플리케이션 프로세서(50) 및 저장 장치(60)에 적용되어, 어플리케이션 프로세서(50)와 저장 장치(60) 사이의 통신을 위한 채널 대역폭을 효과적으로 증가시킬 수 있다.
이상, 도 15를 참조하여 본 발명에 따른 인코딩 장치(100) 및 디코딩 장치(200)가 UFS에 적용된 일 예에 대해 설명하였으나, 본 발명은 이에 한정되지 않으며, 본 발명에 따른 인코딩 장치(100) 및 디코딩 장치(200)는 임의의 반도체 칩들 사이의 데이터 통신에 적용될 수 있다.
본 발명은 임의의 반도체 칩들에 적용되어 반도체 칩들 사이의 통신을 위한 채널 대역폭을 증가시키는 데에 유용하게 이용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 반도체 칩들 사이의 통신을 위해 데이터를 전송하는 반도체 칩에 의해 수행되는 데이터 인코딩 방법에서,
    복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 상기 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함하는 데이터 시퀀스를 수신하는 단계;
    상기 데이터 시퀀스를 문자 및 구분 코드 쌍의 미리 정해진 개수로 구분하여 상기 데이터를 전송하는 반도체 칩에 포함되는 버퍼에 저장하는 단계;
    상기 구분 코드들에 기초하여 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는지 여부를 판단하는 단계;
    상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는 경우, 상기 적어도 하나의 제어 문자 각각을 상기 버퍼에서 다음 제어 문자의 위치를 나타내는 레퍼런스 번호를 포함하는 내부 제어 문자로 변환하는 단계; 및
    상기 버퍼에 저장된 상기 데이터 문자들 및 상기 적어도 하나의 제어 문자에 대응되는 상기 적어도 하나의 내부 제어 문자를 포함하는 제1 타입 데이터 블록을 생성하는 단계를 포함하는 데이터 인코딩 방법.
  2. 제1 항에 있어서, 상기 버퍼에 저장된 상기 적어도 하나의 제어 문자 중의 마지막 제어 문자에 대응되는 상기 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에 저장된 상기 적어도 하나의 제어 문자 중의 첫 번째 제어 문자의 위치를 나타내는 데이터 인코딩 방법.
  3. 제1 항에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 적어도 하나의 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에서 상기 적어도 하나의 제어 문자의 위치를 나타내는 링크드 리스트(linked list)에 상응하는 데이터 인코딩 방법.
  4. 제1 항에 있어서, 상기 버퍼에 하나의 제어 문자가 저장되어 있는 경우, 상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 하나의 제어 문자에 대응되는 내부 제어 문자인 데이터 인코딩 방법.
  5. 제1 항에 있어서, 상기 버퍼에 복수의 제어 문자들이 저장되어 있는 경우, 상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 복수의 제어 문자들 중의 마지막 제어 문자에 대응되는 내부 제어 문자인 데이터 인코딩 방법.
  6. 제1 항에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 데이터 문자들의 순서는 상기 버퍼에 저장된 상기 데이터 문자들의 순서와 동일한 데이터 인코딩 방법.
  7. 제1 항에 있어서, 상기 버퍼의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 상기 미리 정해진 개수의 문자들에 연결되는 상기 구분 코드들의 사이즈의 합에 상응하는 데이터 인코딩 방법.
  8. 제1 항에 있어서, 상기 데이터 문자의 비트 수, 상기 제어 문자의 비트 수, 및 상기 내부 제어 문자의 비트 수는 서로 동일한 데이터 인코딩 방법.
  9. 제1 항에 있어서, 상기 내부 제어 문자는,
    상기 내부 제어 문자에 대응되는 제어 문자의 값에 대응되는 매핑 코드;
    상기 버퍼에서 상기 내부 제어 문자에 대응되는 제어 문자의 다음 제어 문자의 위치를 나타내는 상기 레퍼런스 번호; 및
    상기 다음 제어 문자가 상기 버퍼에 저장된 상기 적어도 하나의 제어 문자 중의 마지막 제어 문자인지 여부를 나타내는 종료 플래그를 포함하는 데이터 인코딩 방법.
  10. 제9 항에 있어서, 상기 버퍼에 하나의 제어 문자가 저장되어 있는 경우,
    상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 하나의 제어 문자에 대응되는 내부 제어 문자이고,
    상기 하나의 제어 문자에 대응되는 상기 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에서 상기 하나의 제어 문자의 위치를 나타내는 데이터 인코딩 방법.
  11. 제9 항에 있어서, 상기 버퍼에 복수의 제어 문자들이 저장되어 있는 경우,
    상기 제1 타입 데이터 블록에 포함되는 첫 번째 문자는 상기 복수의 제어 문자들 중의 마지막 제어 문자에 대응되는 내부 제어 문자에 상응하고,
    상기 복수의 제어 문자들 중에서 마지막에서 두 번째 제어 문자에 대응되는 내부 제어 문자에 포함되는 상기 종료 플래그는 제1 값을 갖고, 상기 복수의 제어 문자들 중에서 상기 마지막에서 두 번째 제어 문자를 제외한 나머지 제어 문자들 각각에 대응되는 내부 제어 문자에 포함되는 상기 종료 플래그는 제1 값과는 다른 제2 값을 갖는 데이터 인코딩 방법.
  12. 제1 항에 있어서,
    상기 버퍼에 제어 문자가 저장되어 있지 않은 경우, 상기 버퍼에 저장된 상기 데이터 문자들을 포함하는 제2 타입 데이터 블록을 생성하는 단계를 더 포함하는 데이터 인코딩 방법.
  13. 제12 항에 있어서, 상기 제1 타입 데이터 블록은 제1 값을 갖는 블록 타입 코드를 더 포함하고,
    상기 제2 타입 데이터 블록은 제1 값과는 다른 제2 값을 갖는 상기 블록 타입 코드를 더 포함하는 데이터 인코딩 방법.
  14. 제13 항에 있어서, 상기 제1 타입 데이터 블록의 사이즈 및 상기 제2 타입 데이터 블록의 사이즈는 상기 미리 정해진 개수의 문자들의 사이즈와 상기 블록 타입 코드의 사이즈의 합과 동일한 데이터 인코딩 방법.
  15. 반도체 칩들 사이의 통신을 위해 데이터를 수신하는 반도체 칩에 의해 수행되는 데이터 디코딩 방법에서,
    블록 타입 코드 및 미리 정해진 개수의 문자들을 포함하는 데이터 블록을 수신하는 단계;
    상기 블록 타입 코드에 기초하여 상기 데이터 블록이 제1 타입 데이터 블록인지 제2 타입 데이터 블록인지 여부를 판단하는 단계;
    상기 데이터 블록이 상기 제1 타입 데이터 블록인 경우, 상기 제1 타입 데이터 블록의 첫 번째 문자를 상기 데이터를 수신하는 반도체 칩에 포함되는 버퍼에 저장하는 단계;
    상기 버퍼에 저장된 문자에 포함되는 레퍼런스 번호 및 종료 플래그에 기초하여 상기 제1 타입 데이터 블록에 포함되는 상기 문자들 각각이 데이터 문자인지 내부 제어 문자인지 여부를 결정하는 단계;
    상기 제1 타입 데이터 블록에 포함되는 상기 내부 제어 문자들에 포함되는 레퍼런스 번호 및 종료 플래그에 기초하여 상기 제1 타입 데이터 블록에 포함되는 문자들의 출력 순서를 결정하는 단계;
    상기 데이터 문자를 출력하는 차례에, 제1 값을 갖는 구분 코드와 상기 데이터 문자를 순차적으로 출력하는 단계;
    상기 내부 제어 문자를 출력하는 차례에, 상기 내부 제어 문자에 포함되는 매핑 코드를 변환하여 제어 문자를 생성하는 단계; 및
    제2 값을 갖는 상기 구분 코드와 상기 제어 문자를 순차적으로 출력하는 단계를 포함하는 데이터 디코딩 방법.
  16. 제15 항에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 첫 번째 문자는 상기 내부 제어 문자인 데이터 디코딩 방법.
  17. 제15 항에 있어서, 상기 제어 문자를 출력하는 경우, 상기 제어 문자에 대응되는 상기 내부 제어 문자에 포함되는 상기 레퍼런스 번호 및 상기 종료 플래그를 상기 버퍼에 저장하여 상기 버퍼에 저장된 상기 레퍼런스 번호 및 상기 종료 플래그를 각각 업데이트하는 데이터 디코딩 방법.
  18. 제15 항에 있어서,
    상기 데이터 블록이 상기 제2 타입 데이터 블록인 경우, 상기 제2 타입 데이터 블록에 포함되는 모든 문자들이 상기 데이터 문자인 것으로 판단하는 단계; 및
    상기 제2 타입 데이터 블록에 포함되는 상기 데이터 문자들을 순차적으로 상기 제1 값을 갖는 상기 구분 코드와 교번하여 출력하는 단계를 더 포함하는 데이터 디코딩 방법.
  19. 버퍼; 및
    복수의 문자들 및 상기 복수의 문자들 각각에 연결되어 상기 복수의 문자들 각각이 데이터 문자인지 제어 문자인지 여부를 나타내는 구분 코드들을 포함하는 데이터 시퀀스를 수신하고, 상기 데이터 시퀀스를 문자 및 구분 코드 쌍의 미리 정해진 개수로 구분하여 상기 버퍼에 저장하고, 상기 구분 코드들에 기초하여 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는지 여부를 판단하고, 상기 버퍼에 적어도 하나의 제어 문자가 저장되어 있는 경우, 상기 적어도 하나의 제어 문자 각각을 상기 버퍼에서 다음 제어 문자의 위치를 나타내는 레퍼런스 번호를 포함하는 내부 제어 문자로 변환하고, 상기 버퍼에 저장된 상기 데이터 문자들 및 상기 적어도 하나의 제어 문자에 대응되는 상기 적어도 하나의 내부 제어 문자를 포함하는 제1 타입 데이터 블록을 생성하는 인코딩 엔진을 포함하는 인코딩 장치.
  20. 제19 항에 있어서, 상기 제1 타입 데이터 블록에 포함되는 상기 적어도 하나의 내부 제어 문자에 포함되는 상기 레퍼런스 번호는 상기 버퍼에서 상기 적어도 하나의 제어 문자의 위치를 나타내는 링크드 리스트(linked list)에 상응하는 인코딩 장치.
KR1020160084867A 2016-03-18 2016-07-05 반도체 칩들 사이의 통신을 위한 데이터 코딩 방법 KR102564391B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/442,968 US10353758B2 (en) 2016-03-18 2017-02-27 Data coding methods for a communication between semiconductor chips

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160033050 2016-03-18
KR1020160033050 2016-03-18

Publications (2)

Publication Number Publication Date
KR20170108744A KR20170108744A (ko) 2017-09-27
KR102564391B1 true KR102564391B1 (ko) 2023-08-08

Family

ID=60036450

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160084867A KR102564391B1 (ko) 2016-03-18 2016-07-05 반도체 칩들 사이의 통신을 위한 데이터 코딩 방법

Country Status (1)

Country Link
KR (1) KR102564391B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070098272A1 (en) 2005-04-19 2007-05-03 Transchip, Inc. Reduced buffer size for JPEG encoding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070098272A1 (en) 2005-04-19 2007-05-03 Transchip, Inc. Reduced buffer size for JPEG encoding

Also Published As

Publication number Publication date
KR20170108744A (ko) 2017-09-27

Similar Documents

Publication Publication Date Title
US7538696B2 (en) System and method for Huffman decoding within a compression engine
US7770091B2 (en) Data compression for use in communication systems
JP2018517355A5 (ko)
US8134483B2 (en) Data processing apparatus and method
CN110474709B (zh) 编码方法、设备及可读存储介质
CN110474711B (zh) 编码方法、设备及可读存储介质
US8934727B2 (en) Image processing apparatus, image processing method, and image forming apparatus
US9015429B2 (en) Method and apparatus for an efficient hardware implementation of dictionary based lossless compression
CN110677450B (zh) 半导体器件和通信
US9092717B2 (en) Data processing device and data processing method
CN106533976B (zh) 一种数据包处理方法及装置
CN110474710B (zh) 编码方法、设备及可读存储介质
KR102564391B1 (ko) 반도체 칩들 사이의 통신을 위한 데이터 코딩 방법
US8868584B2 (en) Compression pattern matching
US9197243B2 (en) Compression ratio for a compression engine
US10353758B2 (en) Data coding methods for a communication between semiconductor chips
US8976048B2 (en) Efficient processing of Huffman encoded data
US8854235B1 (en) Decompression circuit and associated compression method and decompression method
US20060206642A1 (en) Method of converting a serial data stream to data lanes
CN109309548B (zh) 编码方法、设备及可读存储介质
US20070244889A1 (en) Byte string searching apparatus and searching method
US11360911B2 (en) Dummy data removal in an authenticated encryption with associated data cryptographic scheme
US10263638B2 (en) Lossless compression method for graph traversal
KR101311617B1 (ko) 저전력 대규모 집적 회로 시스템을 위한 어드레스 버스코딩/디코딩 방법 및 장치
CN103369311A (zh) 一种用于防止起始码冲突的方法

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