KR102093206B1 - 데이터 인코딩 방법 및 전자장치 - Google Patents

데이터 인코딩 방법 및 전자장치 Download PDF

Info

Publication number
KR102093206B1
KR102093206B1 KR1020140002847A KR20140002847A KR102093206B1 KR 102093206 B1 KR102093206 B1 KR 102093206B1 KR 1020140002847 A KR1020140002847 A KR 1020140002847A KR 20140002847 A KR20140002847 A KR 20140002847A KR 102093206 B1 KR102093206 B1 KR 102093206B1
Authority
KR
South Korea
Prior art keywords
sum
matrix
component
row
count
Prior art date
Application number
KR1020140002847A
Other languages
English (en)
Other versions
KR20150083284A (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 KR1020140002847A priority Critical patent/KR102093206B1/ko
Priority to US14/591,391 priority patent/US9548763B2/en
Priority to EP15150473.5A priority patent/EP2894790A1/en
Priority to PCT/KR2015/000203 priority patent/WO2015105355A1/en
Publication of KR20150083284A publication Critical patent/KR20150083284A/ko
Application granted granted Critical
Publication of KR102093206B1 publication Critical patent/KR102093206B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking codes
    • H03M13/036Heuristic code construction methods, i.e. code construction or code search based on using trial-and-error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 발명은 데이터 인코딩 방법에 있어서, 코시 행렬(Cauchy matrix)의 생성 규칙을 고려하여 집합
Figure 112014002349018-pat00098
와 집합
Figure 112014002349018-pat00099
를 획득하는 동작, 상기 집합
Figure 112014002349018-pat00100
및 상기 집합
Figure 112014002349018-pat00101
를 이용하여 코시생성행렬(Generator Cauchy matrix) A1을 생성하는 동작, 집합 K를 생성하는 동작, 상기 집합
Figure 112014002349018-pat00102
의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
Figure 112014002349018-pat00103
를 업데이트하는 동작; 상기 집합
Figure 112014002349018-pat00104
의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
Figure 112014002349018-pat00105
를 업데이트하는 동작; 상기 업데이트된 집합
Figure 112014002349018-pat00106
와 상기 업데이트된 집합
Figure 112014002349018-pat00107
를 이용하여 코시생성행렬을 생성하는 동작; 및 상기 코시생성행렬을 이용하여, 상기 정보 심볼과 상기 패리티 심볼을 포함하는 데이터를 인코딩하는 동작;을 포함하는 데이터 인코딩 방법을 제공한다.

Description

데이터 인코딩 방법 및 전자장치{METHOD AND DEVICE FOR ENCODING DATA}
본 발명은 방송 및/또는 통신 시스템에 관한 것으로, 데이터의 인코딩을 위한 데이터 인코딩 방법 및 전자장치에 관한 것이다.
최근의 광통신, 방송, 및 디지털 데이터 통신 환경에서 전자기 간섭, 수신 환경, 트랙픽 부하 등의 원인으로 인해 네트워크 상의 데이터 혼잡은 점점 더 심화되고 있다. 이로 인해, 네트워크 과정에서 송신기가 보낸 컨텐츠들이 수신기에 정상적으로 전달되지 않고, 컨텐츠의 일부가 손실되는 상황이 발생되고 있다. 이러한 데이터 손실은 영상 또는 오디오 품질 저하, 화질 저하나 화면의 깨짐, 자막 누락, 파일의 손실, 위성 기반의 위치 정보 오류, 전송 속도 감소 등과 같은 다양한 형태로 사용자의 불편을 초래하게 된다.
이와 같은 이유로 네트워크 상에서 발생된 데이터 손실을 복구할 수 있도록 기술이 필요하다. 특히, 네트워크 상에서 발생된 데이터의 에러 검출뿐 만 아니라 에러를 복구할 수 있는 순방향 에러 정정(Forward Error Correction: FEC) 방식이 제안되고 있다. 순방향 에러 정정 방식은 송신측이 데이터를 중복설계한 정보를 포함하여 전송하고, 수신측이 정보를 이용하여 에러를 검출 하거나 에러를 복구하는 기술이다. 즉, 수신측에서 손실된 데이터가 있는 경우, 데이터에 포함된 여분의 정보를 이용하여 디코딩(decoding)을 수행할 수 있다.
또한, FEC 코딩 장치에서 응용될 수 있는 FEC 코드 중에 하나는 리드 솔로몬 (Reed-Solomon) 방식이다. 많은 리드 솔로몬 알고리즘, 기술 그리고 방법들은 고속 데이터 전송 환경과 스마트폰과 패드등과 같은 임베디드 장치들에서 다음과 같은 이유로 응용될 수 없다.
수학적 연산을 하기 위한 순람표(lookup table)을 사용함으로써, 인코딩과 디코딩의 속도가 느려진다. 생성행렬의 역행렬을 만들기 위한 행렬식(determinant), 벡터의 곱셈, 성분들의 덧셈과 같은 복잡한 연산은 데이터를 디코딩하는데 많은 시간이 소모된다. 또한, 토막행렬(block Matrix) 구조를 사용함으로써, 데이터 처리 속도를 증가시키고 디코딩 절차의 복잡성을 증가시킨다.
위의 단점들은 리드-솔로몬의 구현 속도를 감소시킨다. 구현 속도의 감소로 인하여 고속 데이터 환경에서 사용될 수 없다.
이에 따라, 코시생성행렬(Cauchy Generator Matrix)을 이용한 고속 데이터 전송 환경에서도 인코딩을 할 수 있는 데이터 인코딩 방법이 요구되고 있다.
복잡한 연산과 비효율적인 연산 방식은 데이터의 디코딩과 인코딩 속도를 감소시켜 고속 데이터 환경에서의 데이터 복구를 가능하게 하지 못한다.
본 발명은 전기 통신 분야에서 고속 데이터 전송 환경에서도 인코딩을 할 수 있는 데이터 인코딩 방법 및 장치를 제공하는 것을 그 목적으로 한다.
본 발명은 데이터 인코딩 방법에 있어서, 코시 행렬(Cauchy matrix)의 생성 규칙을 고려하여 집합
Figure 112014002349018-pat00001
와 집합
Figure 112014002349018-pat00002
를 획득하는 동작, 상기 집합
Figure 112014002349018-pat00003
및 상기 집합
Figure 112014002349018-pat00004
를 이용하여 코시생성행렬(Generator Cauchy matrix) A1을 생성하는 동작, 집합 K를 생성하는 동작, 상기 집합
Figure 112014002349018-pat00005
의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
Figure 112014002349018-pat00006
를 업데이트하는 동작; 상기 집합
Figure 112014002349018-pat00007
의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
Figure 112014002349018-pat00008
를 업데이트하는 동작; 상기 업데이트된
Figure 112014002349018-pat00009
집합 와 상기 업데이트된
Figure 112014002349018-pat00010
집합 를 이용하여 코시생성행렬을 생성하는 동작; 및 상기 코시생성행렬을 이용하여, 상기 정보 심볼과 상기 패리티 심볼을 포함하는 데이터를 인코딩하는 동작;을 포함하는 데이터 인코딩 방법을 제공한다.
본 발명의 데이터 인코딩 방법에 따르면, 코시생성행렬(Cauchy Generator Matrix)을 FEC 모듈에 사용함으로써, 인코더의 속도를 향상 시킬 수 있다. 이에 따라 본 발명은 고속 데이터 송수신 환경에서 데이터 전송의 품질을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 FEC모듈을 포함하는 시스템의 예시도이다.
도 2는 본 발명의 일 실시예에 따른 FEC모듈을 포함하는 전자장치의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 FEC모듈을 포함하는 전자장치의 인코딩 과정을 나타낸 흐름도이다.
도 4a및 4b는 도 3의 단계 300의 상세 흐름도이다.
도 5a 및 5b는 도 3의 단계 800의 상세 흐름도이다.
도 6a 및 6b은 도 3의 단계 900의 상세 흐름도이다.
이하에는 첨부한 도면을 참조하여 본 발명의 바람직한 실시예에 따라 열 감량이 가능한 휴대전자장치에 대하여 상세하게 설명한다. 단, 본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명은 생략한다.
본 발명의 상세한 설명에 앞서, 이하에서 사용되는 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 한다. 따라서, 본 명세서와 도면은 본 발명의 바람직한 실시예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원 시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다. 또한, 첨부 도면에 있어서 일부 구성성분은 과장되거나 생략되거나 또는 개략적으로 도시되었으며, 각 구성성분의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 따라서 본 발명은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되어지지 않는다.
본 발명의 실시예들은 네트워크를 통해 고품질 컨텐츠 또는 초고품질 컨텐츠들과 같은 고용량 컨텐츠 뿐만 아니라, 영상 회의 및 영상 통화 등과 같은 다양한 멀티미디어 서비스를 송수신 할 수 있는 휴대폰, TV, 컴퓨터, 태블릿 및 전자책 등의 모든 전자 기기에 대해서 적용될 수 있다.
본 발명에서 사용되는 용어를 정의하면 다음과 같다.
본 발명에서 '심볼(Symbol)'은 데이터의 단위이고,'패킷(Packet)'은 데이터의 전송 단위이다.
도 1은 본 발명의 일 실시예에 따른 FEC모듈을 포함하는 데이터 전송 시스템의 예시도이다.
도 1을 참조하면, 데이터 전송 시스템(10)은 송신부(1), 네트워크(2) 및 수신부(3)를 포함할 수 있다.
송신부(1)와 수신부(3)는 개인 컴퓨터, 모바일 컴퓨터, 휴대폰, 스마트폰 등이 될 수 있다. 또한, 비디오, 오디오 또는 둘 중 하나의 조합으로 된 데이터 타입이 될 수 있다. 송신부(1)는 데이터를 네트워크(2)를 통해 수신부(3)로 전송하는 역할을 하는 것으로써, 전송할 데이터를 생성해내는 입력 인터페이스부(11), 인코더(12) 및 FEC 모듈(13)을 포함할 수 있다. 입력 인터페이스부(11)는 예컨대, 터치패널, 마이크, 센서부, 카메라 및 GPS 수신부 등이 될 수 있다. 입력 인터페이스로부터 생성된 데이터는 인코더(12)로 전송되어 패킷화 될 수 있다. 패킷화된 데이터는 FEC 모듈(13)의 코시 리드-솔로몬 모듈(14)을 거쳐 보완된 데이터패킷을 생성할 수 있다. FEC 모듈(13)을 통해 생성된 데이터 패킷은 네트워크(2)를 거쳐 수신부(3)로 전송 될 수 있다.
수신부(3)는 송신부(1)로부터 전달된 데이터는 네트워크(2)를 통해 전달받는 역할을 하는 것으로써, 수신된 데이터를 표시해주는 출력 인터페이스부(31) 및 디코더(32)를 포함할 수 있다. 디코더(32)는 수신받은 패킷화된 데이터를 기존의 데이터 형태인 데이터로 변환하여 출력 인터페이스부(31)로 전송한다. 출력 인터페이스부(31)는 모니터, 패널, 스피커 등이 될 수 있다. 출력 인터페이스부(31)는 디코더(32)로부터 전송받은 데이터를 출력할 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 인코딩 전자장치의 블록도이다.
도 2를 참조하면, 전자장치(20)는 무선 통신부(41), 사용자 인터페이스부(50), 제어부(60) 및 메모리(70)를 포함할 수 있다. 무선 통신부(41)는 제어부(60)의 제어 하에, 네트워크(2)를 통해 외부 장치와 음성 통화, 화상 통화 또는 데이터 통신을 수행할 수 있다. 무선 통신부(41)는 제어부(60)의 제어 하에, 메모리(70)의 FEC 모듈(71)을 이용하여 인코딩 및 디코딩한 데이터를 사용자 인터페이스부(50)로 전달할 수 있다. 데이터는 전자메일, 전자 문서와 파일, 웹페이지, 오디오 및 비디오가 될 수 있다. 무선 통신부(41)는 이동 통신 모듈(예컨대, 3세대(3-Generation) 이동통신모듈, 3.5(3.5-Generation)세대 이동통신모듈 또는 4(4-Generation)세대 이동통신모듈 등), 디지털 방송 모듈(예컨대, DMB 모듈) 및 근거리 통신 모듈(예, 와이파이(Wi-Fi) 모듈, 블루투스(bluetooth) 모듈, NFC(Near Field Communication) 모듈))을 포함할 수 있다.
사용자 인터페이스부(50)는 사용자와의 상호 작용(interaction)을 위한 창구 역할을 하는 것으로써, 입력 인터페이스부(51)와, 입력 인터페이스부(51)가 수신한 입력 정보에 응답하여 사용자에게 시각, 청각 또는 촉각적으로 피드백을 제공하는 출력 인터페이스부(52)를 포함할 수 있다. 입력 인터페이스부(51)는 생성된 데이터를 제어부의 인코더(62)로 전송될 수 있다. 출력 인터페이스부(52)는 제어부의 디코더(63)를 거친 데이터를 전달받아 출력할 수 있다.
제어부(60)는 프로세서(61)를 포함할 수 있다. 프로세서(61)는 데이터를 패킷화 하는 인코더와 패킷화된 데이터를 데이터화 하는 디코더를 포함할 수 있다. 인코더(62)는 사용자 인터페이스부의 입력 인터페이스부(51)로부터 전달받은 데이터를 패킷(Packets)으로 변환할 수 있다. 각각의 데이터패킷들은 방대한 데이터를 포함할 수 있어서, 정보를 식별하는 장치로 인코딩 되거나, 래퍼(wrapper)로서 작용 할 수 있다. 래퍼는 의도된 주소로 데이터패킷들이 도착하게 도와주는 역할을 할 수 있다. 데이터패킷은 무선 통신부(41)를 통하여 전송될 수 있고, 전송된 데이터패킷은 디코더(63)를 통하여 출력 인터페이스부(52)로 전송될 수 있다. 전송된 데이터패킷은 디코더(63)에서 데이터로 변환될 수 있다. 예컨데, 데이터가 비디오의 형태라면, 비디오를 표현하는 데이터 즉, 비디오데이터은 제어부의 인코더(62)에서 패킷화될 수 있고, 무선 통신부(41)를 통해 전송될 수 있다. 패킷화된 데이터는 디코더(63)를 거쳐 비디오데이터로 변환될 수 있다.
메모리(70)는 FEC 모듈(71) 및 메모리부(73)를 포함할 수 있다. FEC 모듈(71)은 코시 리드-솔로몬 모듈(72)을 포함할 수 있다. FEC 모듈(71)은 데이터 전송 환경에서의 문제점인 손실되는 데이터를 복구하는 알고리즘으로 구성될 수 있다. 제어부의 디코더(63)에서 손실된 패킷만으로는 기존의 데이터로 재배열하는 것이 불가능했다. FEC 모듈(71)을 이용하여 여분의(redundant) 패킷을 기존의 데이터패킷에 추가함으로써, 전송 과정 중에 데이터패킷들의 손실된 부분을 대체하여 복구를 용이하게 할 수 있다. FEC 모듈(71)에 적용될 수 있는 코시 리드-솔로몬 모듈(72)은 손실된 데이터를 복구하기 위한 연산을 간결하게 하는 알고리즘을 포함할 수 있다. 코시 리드-솔로몬 모듈(72)의 알고리즘은 인코딩 속도를 높일 수 있다. 제어부의 인코더(62)는 데이터를 인코딩 할 때, 메모리의 FEC 모듈(71)에 저장되어 있는 코시 리드-솔로몬 모듈(72)을 사용할 수 있다. 코시 리드-솔로몬 모듈(72)에 관해서는 도 3,4,5 및 6에 걸쳐 상세히 설명하겠다.
메모리(70)는 데이터 임시 저장소로써 버퍼를 포함할 수도 있다. 메모리(70)는 전자장치(20)의 사용 환경을 설정하기 위한 정보들을 저장할 수 있다. 이에 따라, 제어부(60)는 메모리(70)의 정보들을 참조하여 전자장치(20)를 운영할 수 있다. 메모리부(73)는 램(RAM) 등으로 구현될 수 있으며, 전자장치(20)의 운영에 따라 발생되거나 무선 통신부(41)를 통해 내부 장치 및 외부 장치로부터 수신한 데이터를 저장할 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 인코딩 전자장치의 인코딩 과정을 나타낸 흐름도이다.
흐름도를 설명하기 전에 코시생성행렬에 대해 설명 할 것이다. 코시생성행렬은 인코딩 속도를 향상시키기 위해 사용 되는 것으로써, 코시생성행렬의 각각의 성분들은 오직 갈루와체(Galois fields)
Figure 112014002349018-pat00011
의 성분으로 구성될 수 있다. 갈루와체의 성분은 행렬
Figure 112014002349018-pat00012
으로 변형될 수 있다. 예를 들어
Figure 112014002349018-pat00013
은 1과 0으로만 구성 될 수 있다.
Figure 112014002349018-pat00014
의 성분들의 선형사상(matrix representation)에 있는 숫자 1의 개수는 성분값(Weight of the element)이라고 불릴 수 있다.
인코더와 디코더의 속도향상을 실현시키기 위해서, 최소 성분값(minimal weight)을 가지는 코시생성행렬(Cauchy Matrix)의 형태로 사용될 수 있다. 기존의 코시생성행렬은 열거되어있는 형태여서 최적의 행렬이 아니며, 비효율적이다. 이어서, 코시생성행렬은 다음과 같은 수식으로 나타낼 수 있다.
Figure 112019087090963-pat00117
그러므로, 최소값을 가지는 코시생성행렬(Generator Cauchy Matrix)을 다음과 같이 도출해낼 수 있다.
Figure 112014002349018-pat00016
코시생성행렬 최적화의 가장 주된 목적은 집합
Figure 112014002349018-pat00017
와 집합
Figure 112014002349018-pat00018
를 찾는 것이다. 집합
Figure 112014002349018-pat00019
와 집합
Figure 112014002349018-pat00020
는 최소값을 가진 코시생성행렬에서 생성될 수 있다.
도 2 및 도3을 참조하면, 하기 흐름도는 상기의 사전 설명과 같이'1'의 개수가 최소화되는 즉, 최소값을 가진 코시생성행렬을 만들기 위한 집합
Figure 112014002349018-pat00021
와 집합
Figure 112014002349018-pat00022
를 찾는 과정을 나타낼 수 있다. 상기와 같은 목적으로 단계를 진행할 수 있다.
제어부(60)는 메모리에 저장되어 있는 코시 리드-솔로몬 모듈(72)의 알고리즘 을 이용하여 연산 단계를 진행한다.
단계 100에서 제어부(60)는 입력 인터페이스부(51)로부터 데이터를 받는다. 제어부(60)는 전달받은 데이터의 정보심볼k와 패리티심볼 p그리고 상기 식 (1)을 이용하여, 코시생성행렬을 얻기 위한 집합 와 집합 를 초기화할 수 있다.
단계 200에서, 제어부(60)는 (p+k)보다 큰 수의 유한한 값을 가지는 n으로 구성된
Figure 112014002349018-pat00023
의 정방 행렬 A를 형성할 수 있다. 행렬 A는 i번째 행과 j번째 열이
Figure 112014002349018-pat00024
로 구성될 수 있다. i번째 행과 j번째 열의 교차지점은 행렬의 성분을 얻는 법칙에 의해 0으로 쓰일 수 있다.
단계 300에서, 제어부(60)는 정방 행렬 A의 각 행의 성분들의 합을 계산하고, 행의 개수가 p + k가 될 때까지 합이 가장 큰 해당 행을 삭제할 수 있다. 또한 제어부(60)는 정방 행렬 A에서 각 열의 성분들의 합을 계산하고, 열의 개수가 p + k가 될 때까지 합이 가장 큰 해당 열을 삭제할 수 있다. 이 과정을 거쳐서, 제어부(60)는 행 및 열의 개수가 각각 p + k인 정방 행렬 A' 를 생성할 수 있다. 단계 300에 대한 상세한 설명은 도 4a 및 도 4b에서 설명할 수 있다.
단계 400에서, 제어부(60)는 집합 와 집합 의 조합에 의해서 코시생성행렬을 최소화 시킬 수 있는 성분
Figure 112014002349018-pat00025
를 얻을 수 있다.
단계 500에서, 제어부(60)는 집합 와 집합 를 이용하여 행렬 A1을 생성 할 수 있다. 행렬 A1의 각각의 성분들은 갈루와체(Galois fields)
Figure 112014002349018-pat00026
의 성분으로 구성될 수 있다. 이는
Figure 112014002349018-pat00027
로 산출될 수 있다. 행렬 A1은
Figure 112014002349018-pat00028
의 사이즈로 재생성될 수 있다.
단계 600에서, 제어부(60)는 행렬 A1를 위한 집합 K를 생성할 수 있다. 집합 K는 집합
Figure 112014002349018-pat00029
와 집합
Figure 112014002349018-pat00030
에 포함되지 않는 모든 성분으로 구성 될 수 있다.
단계 700에서, 제어부(60)는 라는 플래그를 정의하여 거짓(false)라고 초기화 할 수 있다(FIND = false). 플래그는 알고리즘의 연산과정의 진행방향 혹은 종료를 알려줄 수 있다.
단계 800에서, 제어부(60)는 비교연산을 수행하여 집합
Figure 112014002349018-pat00031
를 업데이트 할 수 있다. 또한, 단계 900에서도 비교연산을 수행하여 집합
Figure 112014002349018-pat00032
를 업데이트 할 수 있다. 단계 800에 대한 상세한 설명은 도 5a 및 도 5b에서 설명하겠다. 또한 단계 900에 대한 상세한 설명은 도 6a 및 도 6b에서 설명하겠다.
단계 1000에서, 제어부(60)는 플래그 FIND의 true여부를 판단 할 수 있다. 만약, FIND가 true라면, 단계 700으로 복귀하여 플래그 FIND를 false로 초기화 한 후, 다시 진행 할 수 있다. 단계 1000에서, 플래그 FIND가 false라면, 다음 단계인 단계 1100으로 진행될 수 있다.
단계 1100에서, 제어부(60)는 최종적으로 업데이트 된 집합 와 집합 를 기초로 코시생성행렬을 생성하고, 이를 이용하여 입력 인터페이스로부터 전송 받은 데이터를 인코딩 하여 과정은 종료되게 된다.
도 4a및 4b는 도 3의 단계 300의 상세 흐름도이다.
도 4a를 참조하면, 제어부(60)는 단계 300의 행렬A'을 만들기 위해, 행에 관해 독립적으로 연산을 진행 할 수 있다. 단계 301에서, 제어부(60)는 임의의 유한한 값이고 행렬 A의 크기를 나타내는 n을 sz1로 지정(sz1 = n)할 수 있다. 단계 302에서 제어부(60)는 n개의 행과의 크기를 비교할 수 있는 카운터, i를 1로 초기화(i=1)할 수 있고, 행의 성분들의 합을 나타내는 SUM_R이라는 변수를 0으로 초기화(SUM_R = 0)할 수 있다.
단계 303에서, 제어부(60)는 단계 301과 단계 302에서 지정한 sz1값과 i값을 비교할 수 있다. 만약, 카운터 i값이 sz1보다 작거나 같으면 단계 304로 진행하여 해당 i번째 열의 성분들의 합을 계산하여 SUM이라는 변수로 지정할 수 있다.
단계 305에서, 제어부(60)는 단계 304로부터 얻은 성분들의 합인 SUM과 단계 302에서 0으로 초기화한 SUM_R을 비교할 수 있다.
단계 305에서 제어부(60)는 SUM이 SUM_R보다 크다면 단계 306에서 SUM의 값을 SUM_R로 설정(SUM_R = SUM)하고 카운터 i값을 Ind라는 변수로 설정(Ind = i)할 수 있다. 단계 305에서 SUM이 SUM_R보다 작거나 같다면, 단계 306을 거치지 않고 단계 307로 진행 할 수 있다.
단계 307에서 제어부(60)는 다음 행 순서로 진행하기 위해 i값 1만큼 증가(i = i+1)하여 설정한 후, 단계 303으로 복귀하여 위와 같이 단계 307까지 진행을 반복할 수 있다.
단계 303에서 제어부(60)는 카운터 i값과 sz1을 비교하여 i값이 크면, 단계 308에서 Ind로 설정한 i값에 해당하는 i번째 행을 행렬 A에서 제거할 수 있다.
단계 309에서, 제어부(60)는 집합 에서 Ind 값에 해당하는 성분을 제거할 수 있다.
단계 310에서 제어부(60)는 sz1의 값을 1만큼 감소시킬 수 있다. (sz1 = sz1-1)
단계 311에서, 제어부(60)는 p와 k의 합과 sz1을 비교하여 p와 k의 합이 작으면, 다시 단계 302로 복귀하여 p와 k의 합이 sz1보다 클 때까지 반복할 수 있다. 단계 311에서, p와 k의 합이 sz1보다 크다면, 행에 관한 연산을 마칠 수 있다.
도 4b를 참조하면, 제어부(60)는 단계 300의 행렬 A'를 만들기 위해, 열에 관해 독립적으로 연산을 진행 할 수 있다. 단계 312에서, 제어부(60)는 임의의 유한한 값이고 행렬 A의 크기를 나타내는 n을 sz2로 지정(sz2 = n)할 수 있다.
단계 312에서 제어부(60)는 n개의 열과 크기를 비교할 수 있는 카운터, i를 1로 초기화(i=1)하고 열의 성분들의 합을 구할 수 있는 SUM_C라는 변수를 0으로 초기화(SUM_C = 0)할 수 있다.
단계 314에서 제어부(60)는 단계 312와 단계 313에서 지정한 sz2값과 i값을 비교할 수 있다. 만약, 카운터 i값이 sz2보다 작거나 같으면 단계 315로 진행하여 해당 i번째 열의 성분들의 합을 계산하여 SUM이라는 변수로 지정할 수 있다.
단계 316에서 제어부(60)는 단계 315로부터 얻은 열의 성분들의 합인 SUM과 단계 313에서 0으로 초기화한 SUM_C를 비교할 수 있다.
단계 316에서 제어부(60)는 SUM이 SUM_C보다 크다면 단계 317에서 SUM의 값을 SUM_C로 설정(SUM_C = SUM)하고 카운터 i값을 Ind라는 변수로 설정(Ind = i)할 수 있다. 단계 316에서 SUM이 SUM_C보다 작거나 같다면, 단계 317을 거치지 않고 단계 318로 진행 할 수 있다.
단계 318에서 제어부(60)는 다음 행 순서로 진행하기 위해 i값 1만큼 증가(i = i+1)하여 설정한 후, 단계 314으로 복귀하여 위와 같이 단계 318까지 진행을 반복할 수 있다.
단계 314에서 제어부(60)는 카운터 i값이 sz2보다 크면, 단계 319에서 Ind로 설정한 i값에 해당하는 i번째 열을 행렬 A에서 제거할 수 있다.
단계 320에서, 제어부(60)는 집합 에서 Ind 값에 해당하는 성분을 제거할 수 있다.
단계 321에서 제어부(60)는 sz2의 값을 1만큼 감소한다. (sz2 = sz2-1)
단계 322에서, 제어부(60)는 p와 k의 합이 sz2보다 작으면, 다시 단계 313으로 복귀하여 p와 k의 합이 sz2보다 클 때까지 반복할 수 있다. 단계 322에서, p와 k의 합이 sz2보다 크다면, 열에 관한 연산을 마칠 수 있다.
도 5a 및 5b는 도 3의 단계 800의 상세 흐름도이다.
도 5a를 참조하면, 단계 800에서 제어부(60)는 A1의 모든 열들의 각각의 합 중의 최대값과
Figure 112014002349018-pat00033
의 값으로 이루어진 집합New_Col의 성분들의 합과 비교할 수 있다. 이를 통하여, 행렬의 열 S를 생성할 수 있다. 단계 801에서 i번째 열을 표시하는 카운터 i를 1로 초기화(i = 1)할 수 있다. 단계 802에서, i값이 행렬의 크기를 나타내주는 정보 심볼 사이즈 k값보다 작거나 같으면 단계 803으로 진행 할 수 있다.
단계 803에서, 제어부(60)는 단계 600에서 구한 행렬 A1의 i번째 열의 합을 계산하여 SUM이라는 변수로 설정 할 수 있다. 단계 804에서 제어부(60)는 i번째 열의 합인 SUM을 Col_sum[i]이라는 배열로 설정할 수 있다. 단계 805에서는, 제어부(60)는 다음 열 순서로 진행하기 위해 i값 1만큼 증가(i = i+1)하여 설정한 후, 단계 802로 복귀하여 위와 같이 단계 805까지 진행을 반복할 수 있다.
단계 802에서, 제어부(60)는 카운터 i값이 정보 심볼인 k보다 크면, 단계 806으로 진행 할 수 있다. 단계 806에서, 행렬 A1의 열들의 합 중, 최대값을 찾아 Sum_max로 설정 할 수 있다. 또한, 그 최대값을 구성한 열을 찾아 S라고 설정할 수 있다.
단계 807에서 제어부(60)는 COUNT를 0으로 초기화(COUNT = 0)한다.
단계 808에서 제어부(60)는 열의 성분의 개수(NumberOFElements)가 COUNT보다 작다면, 단계 800을 종료 할 수 있다. 만약, S열의 성분의 개수가 COUNT 보다 크다면, 단계 809로 진행할 수 있다. 단계 809에서, 제어부(60)는 집합
Figure 112014002349018-pat00034
에서 S열 번호에 해당되는 성분(x_S)를 집합 K에서 COUNT 값에 해당되는 성분(K[COUNT])로 바꿀 수 있다.
단계 810에서 제어부(60)는 카운터 i를 1로 초기화(i = 1)한 후, 도 5b의 과정으로 진행 할 수 있다.
도 5b를 참조하면, 단계 811에서, 1로 초기화된 i가 패리티 심볼인 p값보다 작거나 같으면 제어부(60)는 New_Col이라는 이름의 집합을 새롭게 설정할 수 있다. 제어부(60)는 단계 812와 단계 813에 걸쳐 집합은
Figure 112014002349018-pat00035
성분의 값으로 구성할 수 있다.
제어부(60)는 단계 814에서 i값을 1증가(i = i+1) 시킨 후, 다시 단계 811로 복귀하여 반복할 수 있다.
단계 811에서, 1로 초기화된 i가 패리티 심볼인 p값보다 크다면, 제어부(60)는 집합 New_Col의 성분들의 합을 변수 New_Sum으로 설정할 수 있다. 단계 816에서 제어부(60)는 집합의 성분들의 합 New_Sum이 각 열의 성분들의 합 중 최대합 Sum_max과 크기를 비교할 수 있다. Sum_max 보다 New_Sum이 작다면, 단계 817에서 제어부(60)는 집합 K의 해당 COUNT 번째의 성분과 집합
Figure 112014002349018-pat00036
에서 S열 번호에 대항되는 값
Figure 112014002349018-pat00037
을 서로 바꿀 수 있다. 만일, Sum_max 가 New_Sum보다 작다면, 제어부(60)는 단계 820으로 진행할 수 있다.
단계 818에서, 제어부(60)는 A1의 집합인 New_Col은 행렬 A1에서의 열들의 합 중에 최대합인 열 S로 대체할 수 있다. 단계 819에서, 제어부(60)는 플래그 FIND를 true로 초기화 할 수 있다. 단계 820에서, COUNT 값을 1증가 (COUNT = COUNT + 1)한 후, 도 5a의 단계 807로 복귀 할 수 있다.
도 6a 및 6b은 도 3의 단계 900의 상세 흐름도이다.
도 6a를 참조하면, 단계 900에서 제어부(60)는 A1의 모든 행들의 각각의 합 중의 최대값과
Figure 112014002349018-pat00038
의 값으로 이루어진 집합 New_Col의 성분들의 합과 비교할 수 있다. 이를 통하여, 행렬의 행 S를 생성 할 수 있다.
단계 901에서 제어부(60)는 i번째 행을 표시하는 카운터 i를 1로 초기화(i = 1)할 수 있다. 단계 902에서 카운터 i값이 패리티 심볼인 p값보다 작거나 같으면 단계 903으로 진행한다.
단계 903에서, 제어부(60)는 단계 600에서 구한 행렬 A1의 i번째 행의 합을 계산하여 SUM이라는 변수로 설정 할 수 있다. 단계 904에서 i번째 행의 합인 SUM은 Col_sum[i]이라는 배열로 설정할 수 있다. 단계 805에서는, 다음 행 순서로 진행하기 위해 i값 1만큼 증가(i = i+1)시킨 후, 단계 902로 복귀하여 위와 같이 단계 905까지 진행을 반복할 수 있다.
단계 902에서는, 제어부(60)는 카운터 i값이 패리티 심볼인 p보다 크면, 단계 906으로 진행 할 수 있다. 단계 906에서, 행렬 A1의 행들의 합 중, 최대값을 찾아 Sum_max로 설정 할 수 있다. 또한, 그 최대값을 구성한 행을 찾아 S라고 설정 할 수 있다.
단계 907에서 제어부(60)는 COUNT를 0으로 초기화(COUNT = 0)한다.
단계 908에서 S행의 성분의 개수 NumberOFElements가 COUNT보다 작다면, 단계 900을 종료 할 수 있다. 만약, S행의 성분의 개수가 COUNT 보다 크다면, 단계 909로 진행할 수 있다. 단계 909에서, 제어부(60)는 집합
Figure 112014002349018-pat00039
에서 S행 번호에 해당되는 성분(y_S)를 집합 K에서 COUNT 값에 해당되는 성분으로 바꿀 수 있다.
단계 910에서 제어부(60)는 카운터 i를 1로 초기화(i = 1)한 후, 도 6b의 과정으로 진행 할 수 있다.
도 6b를 참조하면, 단계 911에서, 제어부(60)는 1로 초기화된 i가 정보 심볼인 k값보다 작거나 같으면 New_Row라는 이름의 집합을 새롭게 설정할 수 있다. 단계 912와 단계 913에 걸쳐 제어부(60)는 집합을
Figure 112014002349018-pat00040
성분의 값으로 구성할 수 있다.
단계 914에서 제어부(60)는 i값을 1증가(i = i+1) 시킨 후, 다시 단계 911로 복귀하여 반복할 수 있다.
단계 911에서, 제어부(60)는 1로 초기화된 i가 정보 심볼인 k값보다 크다면, 집합 New_Row의 성분들의 합을 변수 New_Sum으로 설정할 수 있다. 단계 916에서 제어부(60)는 집합의 성분들의 합 New_Sum을 각 행의 성분들의 합 중 최대합 Sum_max과 크기를 비교할 수 있다. Sum_max 보다 New_Sum이 작다면, 제어부(60)는 단계 917에서 집합 K의 해당 COUNT 번째의 성분과 집합
Figure 112014002349018-pat00041
에서 S열 번호에 대항되는 값
Figure 112014002349018-pat00042
을 서로 바꿀 수 있다. 만일, Sum_max 가 New_Sum보다 작다면, 단계 920으로 진행할 수 있다.
단계 918에서, 제어부(60)는 A1의 집합인 New_Row는 행렬 A1에서의 행들의 합 중에 최대합인 행 S로 대체할 수 있다. 단계 919에서, 플래그 FIND를 true로 초기화 할 수 있다. 단계 920에서, 제어부(60)는 COUNT 값을 1증가 (COUNT = COUNT + 1)한 후, 도 6a의 단계 907로 복귀 할 수 있다.
이렇듯, 전 단계에 걸쳐 갈루와체 GF(2)로 이루어진 행렬의 산술로 오직 XOR연산자만으로도 패킷들의 코딩을 연산할 수 있음을 보일 수 있다. 인코딩은 이미 계산된 생성행렬과 단순한 XOR계산에 의해서 수행 될 수 있다. 생성행렬이 미리 계산됨에 따라 인코딩은 오직 XOR연산만 필요하게 된 것이다.
따라서, 이러한 접근은 이전의 방법보다 데이터 심볼의 인코딩과 디코딩 절차를 더욱 효율적으로 접근하게 한다. 제시된 알고리즘에서의 손실된 데이터 복구 효율성은 기존의 코덱(Codec)과 비교했을 때, 뒤지지 않는다.
본 발명은 상기 실시예들에 한정되지 않고 본 발명의 기술적 요지를 벗어나지 아니하는 범위 내에서 다양하게 수정 및 변형되어 실시될 수 있음은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어서 자명한 것이다.
1 : 송신부 2 : 네트워크
3 : 수신부
10 : 시스템 11,51: 입력 인터페이스부
12, 62: 인코더 13, 71: FEC 모듈
14, 72 : 코시 리드-솔로몬 모듈
20 : 전자장치
31, 52: 출력 인터페이스부 32, 63 : 디코더
41 : 무선 통신부 50 : 사용자 인터페이스부
60 : 제어부 61 : 프로세서
70 : 메모리 73 : 메모리부

Claims (13)

  1. 코시행렬(Cauchy matrix)의 생성 규칙을 고려하여 집합
    Figure 112019087090963-pat00118
    와 집합
    Figure 112019087090963-pat00119
    를 획득하는 동작, 상기 k는 정보 심볼 개수이고 상기 p는 패리티 심볼의 개수이고, 상기 생성 규칙은,
    p+k보다 큰 수의 유한한 값을 가지는 n으로 구성된 n×n의 크기를 가지는 정방 행렬 A를 생성하는 동작을 포함하고,
    제1 집합(0, ..., n-k-1)의 모든 i 및 제2 집합(0, ..., k-1)의 모든 j에 대해 xi+yj≠0이고, 상기 제1 집합(0, ..., n-k-1)의 모든 i 및 j에 대해, i≠j, xi≠xj이고, 상기 제2 집합(0, ..., k-1)의 모든 i 및 j에 대해, i≠j, yi≠yj이며,
    상기 집합
    Figure 112019087090963-pat00120
    및 상기 집합
    Figure 112019087090963-pat00121
    를 이용하여, pxk의 크기를 가지는 행렬 A1을 생성하는 동작, 상기 행렬 A1의 각 성분은
    Figure 112019087090963-pat00122
    로 산출되고 갈루아체(Galois field)의 값(Weight)를 가지고;
    상기 집합
    Figure 112019087090963-pat00123
    와 집합
    Figure 112019087090963-pat00124
    에 포함되지 않는 성분들로 구성되는 상기 행렬 A1에 대한 집합 K를 생성하는 동작;
    상기 집합
    Figure 112019087090963-pat00125
    의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
    Figure 112019087090963-pat00126
    를 업데이트하는 동작;
    상기 집합
    Figure 112019087090963-pat00127
    의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
    Figure 112019087090963-pat00128
    를 업데이트하는 동작;
    상기 업데이트된 집합
    Figure 112019087090963-pat00129
    와 상기 업데이트된 집합
    Figure 112019087090963-pat00130
    를 이용하여 코시생성행렬을 생성하는 동작; 및
    상기 코시생성행렬을 이용하여, 상기 정보 심볼과 상기 패리티 심볼을 포함하는 데이터를 인코딩하는 동작;을 포함하는 데이터 인코딩 방법.
  2. 제 1항에 있어서,
    상기 집합
    Figure 112019122424021-pat00168
    를 업데이트 하는 동작은,
    i번째 열을 나타내는 i를 1로 설정하는 동작;
    상기 i가 상기 k보다 작거나 같으면, 상기 행렬 A1의 상기 i번째 열의 성분들의 합을 변수 SUM으로 설정하는 동작;
    상기 i번째 열의 성분들의 합인 SUM을 배열 Col_sum[i]로 설정하는 동작;
    상기 i를 1씩 증가시키는 동작;
    상기 증가된 i가 상기 k를 초과하면, 상기 배열 Col_sum[i]에 기반하여 획득된 상기 행렬 A1의 열들의 합 중 최대값을 Sum_max로 설정하고, 상기 최대값을 가지는 열을 변수 S로 설정하는 동작;
    COUNT를 0으로 설정하는 동작;
    상기 S열의 성분들의 개수가 상기 COUNT보다 크면, 상기 집합
    Figure 112019122424021-pat00169
    에서 상기 S열에 대응하는 성분 x_S를 상기 집합 K에서 상기 COUNT에 대응하는 성분 KCOUNT로 변경하는 동작;
    상기 k를 초과하는 i를 1로 설정하는 동작;
    상기 1로 설정된 i가 상기 p보다 작거나 같으면,
    Figure 112019122424021-pat00170
    를 성분으로 하는 집합 New_Col을 생성하는 동작;
    상기 i를 1씩 증가시키는 동작;
    상기 증가된 i가 상기 p를 초과하면, 상기 집합 New_Col의 각 성분들의 합인 New_Sum을 구하는 동작;
    상기 Sum_max와 상기 New_Sum을 비교해서 상기 Sum_max가 크면, 상기 S열에 대응하는 성분을 상기 KCOUNT로 변경하는 동작; 및
    상기 행렬 A1에서 상기 Sum_max에 해당하는 S열과 상기 집합 New_Col을 바꾸는 동작을 포함하는 것을 특징으로 하는 데이터 인코딩 방법.
  3. 제 1항에 있어서,
    집합
    Figure 112019122424021-pat00171
    를 업데이트 하는 동작은,
    i번째 행을 나타내는 i를 1로 설정하는 동작;
    상기 i가 상기 p보다 작거나 같으면, 상기 행렬 A1의 상기 i번째 행의 성분들의 합을 변수 SUM으로 설정하는 동작;
    상기 i번째 행의 성분들의 합인 SUM을 배열 Col_sum[i]로 설정하는 동작;
    상기 i를 1씩 증가시키는 동작;
    상기 증가된 i가 상기 p를 초과하면, 상기 배열 Col_sum[i]에 기반하여 획득된 상기 행렬 A1의 행들의 합 중 최대값을 Sum_max로 설정하고, 상기 최대값을 가지는 행을 변수 S로 설정하는 동작;
    COUNT를 0으로 설정하는 동작;
    상기 S행의 성분들의 개수가 상기 COUNT보다 크면, 상기 집합
    Figure 112019122424021-pat00172
    에서 상기 S행에 대응하는 성분 y_S를 상기 집합 K에서 상기 COUNT에 대응하는 성분 KCOUNT로 변경하는 동작;
    상기 p를 초과하는 i를 1로 설정하는 동작;
    상기 1로 설정된 i가 상기 k보다 작거나 같으면,
    Figure 112019122424021-pat00173
    를 성분으로 하는 집합 New_Row을 생성하는 동작;
    상기 i를 1씩 증가시키는 동작;
    상기 증가된 i가 상기 k를 초과하면, 상기 집합 New_Row의 각 성분들의 합인 New_Sum을 구하는 동작;
    상기 Sum_max와 상기 New_Sum을 비교해서 상기 Sum_max가 크면, 상기 S행에 대응하는 성분을 상기 KCOUNT로 변경하는 동작; 및
    상기 행렬 A1에서 상기 Sum_max에 해당하는 S행과 상기 집합 New_Row를 바꾸는 동작을 포함하는 것을 특징으로 하는 데이터 인코딩 방법.
  4. 제 1항에 있어서,
    상기 행렬 A1을 생성하기에 앞서, 정방 행렬 A'
    Figure 112019087090963-pat00069
    를 생성하는 동작을 더 포함하는 데이터 인코딩 방법.
  5. 제 1항에 있어서,
    상기 정방 행렬 A를 생성하는 동작은,
    상기 정방 행렬 A의 각 성분을
    Figure 112019087090963-pat00070
    로 구성하는 동작을 더 포함하는 것을 특징으로 하는 데이터 인코딩 방법.
  6. 제 4항에 있어서,
    상기 정방 행렬 A'를 생성하는 동작은,
    상기 정방 행렬 A에서 행들 각각의 합을 계산하는 동작; 및
    상기 정방 행렬 A의 행의 개수가 (p+k)가 될 때까지, 합이 가장 큰 해당 행을 삭제하는 동작을 포함하는 것을 특징으로 하는 데이터 인코딩 방법.
  7. 제 4항에 있어서,
    상기 정방 행렬 A'를 생성하는 동작은,
    상기 정방 행렬 A의 열들 각각의 합을 계산하는 동작; 및
    상기 정방 행렬 A의 열의 개수가 (p+k)가 될 때까지, 합이 가장 큰 해당 열을 삭제하는 동작을 포함하는 것을 특징으로 하는 데이터 인코딩 방법.
  8. 코시 행렬(Cauchy matrix)의 생성 규칙을 고려하여 집합
    Figure 112019122424021-pat00143
    와 집합
    Figure 112019122424021-pat00144
    를 획득하는 동작, 상기 k는 정보 심볼 개수이고 상기 p는 패리티 심볼의 개수이고, 상기 생성 규칙은, p+k보다 큰 수의 유한한 값을 가지는 n으로 구성된 n×n의 크기를 가지는 정방 행렬 A를 생성하는 동작을 포함하고, 제1 집합(0, ..., n-k-1)의 모든 i 및 제2 집합(0, ..., k-1)의 모든 j에 대해 xi+yj≠0이고, 상기 제1 집합(0, ..., n-k-1)의 모든 i 및 j에 대해, i≠j, xi≠xj이고, 상기 제2 집합(0, ..., k-1)의 모든 i 및 j에 대해, i≠j, yi≠yj이며, 상기 집합
    Figure 112019122424021-pat00145
    및 상기 집합
    Figure 112019122424021-pat00146
    를 이용하여, pxk의 크기를 가지는 행렬 A1을 생성하는 동작, 집합 K를 생성하는 동작, 상기 행렬 A1의 각 성분은
    Figure 112019122424021-pat00147
    로 산출되고 갈루아체(Galois field)의 값(Weight)를 가지고, 상기 집합
    Figure 112019122424021-pat00148
    와 집합
    Figure 112019122424021-pat00149
    에 포함되지 않는 성분들로 구성되는 상기 행렬 A1에 대한 집합 K를 생성하는 동작, 상기 집합
    Figure 112019122424021-pat00150
    의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
    Figure 112019122424021-pat00151
    를 업데이트하는 동작, 상기 집합
    Figure 112019122424021-pat00152
    의 적어도 하나의 성분을 상기 집합 K의 성분으로 바꾸어 상기 집합
    Figure 112019122424021-pat00153
    를 업데이트하는 동작, 상기 업데이트된 집합
    Figure 112019122424021-pat00174
    와 상기 업데이트된 집합
    Figure 112019122424021-pat00175
    를 이용하여 코시생성행렬을 생성하는 동작, 및 상기 코시생성행렬을 이용하여, 상기 정보 심볼과 상기 패리티 심볼을 포함하는 데이터를 인코딩하는 동작을 수행하도록 설정된 코시 리드-솔로몬 모듈을 저장한 메모리;
    상기 코시 리드-솔로몬 모듈을 실행하는 프로세서; 및
    상기 인코딩된 데이터를 전송하기 위한 무선통신부를 포함하는 전자 장치.
  9. 제 8항에 있어서,
    상기 프로세서는,
    상기 집합
    Figure 112019122424021-pat00176
    를 업데이트 하는 동작을 하기 위해,
    i번째 열을 나타내는 i를 1로 설정하는 동작, 상기 i가 상기 k보다 작거나 같으면, 상기 행렬 A1의 상기 i번째 열의 성분들의 합을 변수 SUM으로 설정하는 동작, 상기 i번째 열의 성분들의 합인 SUM을 배열 Col_sum[i]로 설정하는 동작, 상기 i를 1씩 증가시키는 동작, 상기 증가된 i가 상기 k를 초과하면, 상기 배열 Col_sum[i]에 기반하여 획득된 상기 행렬 A1의 열들의 합 중 최대값을 Sum_max로 설정하고, 상기 최대값을 가지는 열을 변수 S로 설정하는 동작, COUNT를 0으로 설정하는 동작, 상기 S열의 성분들의 개수가 상기 COUNT보다 크면, 상기 집합
    Figure 112019122424021-pat00177
    에서 상기 S열에 대응하는 성분 x_S를 상기 집합 K에서 상기 COUNT에 대응하는 성분 KCOUNT로 변경하는 동작, 상기 k를 초과하는 i를 1로 설정하는 동작, 상기 1로 설정된 i가 상기 p보다 작거나 같으면,
    Figure 112019122424021-pat00178
    를 성분으로 하는 집합 New_Col을 생성하는 동작, 상기 i를 1씩 증가시키는 동작, 상기 증가된 i가 상기 p를 초과하면, 상기 집합 New_Col의 각 성분들의 합인 New_Sum을 구하는 동작, 상기 Sum_max와 상기 New_Sum을 비교해서 상기 Sum_max가 크면, 상기 S열에 대응하는 성분을 상기 KCOUNT로 변경하는 동작, 및 상기 행렬 A1에서 상기 Sum_max에 해당하는 S열과 상기 집합 New_Col을 바꾸는 동작을 수행하는 것을 특징으로 하는 전자 장치.
  10. 제 8항에 있어서,
    상기 프로세서는,
    집합
    Figure 112019122424021-pat00179
    를 업데이트 하는 동작을 하기 위해,
    i번째 행을 나타내는 i를 1로 설정하는 동작, 상기 i가 상기 p보다 작거나 같으면, 상기 행렬 A1의 상기 i번째 행의 성분들의 합을 변수 SUM으로 설정하는 동작, 상기 i번째 행의 성분들의 합인 SUM을 배열 Col_sum[i]로 설정하는 동작, 상기 i를 1씩 증가시키는 동작, 상기 증가된 i가 상기 p를 초과하면, 상기 배열 Col_sum[i]에 기반하여 획득된 상기 행렬 A1의 행들의 합 중 최대값을 Sum_max로 설정하고, 상기 최대값을 가지는 행을 변수 S로 설정하는 동작, COUNT를 0으로 설정하는 동작, 상기 S행의 성분들의 개수가 상기 COUNT보다 크면, 상기 집합
    Figure 112019122424021-pat00180
    에서 상기 S행에 대응하는 성분 y_S를 상기 집합 K에서 상기 COUNT에 대응하는 성분 KCOUNT로 변경하는 동작, 상기 p를 초과하는 i를 1로 설정하는 동작, 상기 1로 설정된 i가 상기 k보다 작거나 같으면,
    Figure 112019122424021-pat00181
    를 성분으로 하는 집합 New_Row을 생성하는 동작, 상기 i를 1씩 증가시키는 동작, 상기 증가된 i가 상기 k를 초과하면, 상기 집합 New_Row의 각 성분들의 합인 New_Sum을 구하는 동작, 상기 Sum_max와 상기 New_Sum을 비교해서 상기 Sum_max가 크면, 상기 S행에 대응하는 성분을 상기 KCOUNT로 변경하는 동작, 및 상기 행렬 A1에서 상기 Sum_max에 해당하는 S행과 상기 집합 New_Row를 바꾸는 동작을 수행하는 것을 특징으로 하는 전자 장치.
  11. 제 8항에 있어서,
    상기 프로세서는,
    상기 행렬 A1을 생성하기에 앞서, 정방 행렬 A'
    Figure 112019087090963-pat00095
    를 생성하는 동작을 수행하는 것을 특징으로 하는 전자 장치.
  12. 제 8항에 있어서,
    상기 프로세서는,
    상기 정방 행렬 A'를 생성하는 동작을 하기 위해,
    상기 정방 행렬 A에서 행들 각각의 합을 계산하는 동작, 및 상기 정방 행렬 A의 행의 개수가
    Figure 112019087090963-pat00096
    될 때까지, 합이 가장 큰 해당 행을 삭제하는 동작을 수행하는 것을 특징으로 하는 전자 장치.
  13. 제 11항에 있어서,
    상기 프로세서는,
    상기 정방 행렬 A'를 생성하는 동작을 하기 위해,
    상기 정방 행렬 A의 열들 각각의 합을 계산하는 동작, 및 상기 정방 행렬 A의 열의 개수가
    Figure 112019087090963-pat00097
    가 될 때까지, 합이 가장 큰 해당 열을 삭제하는 동작을 수행하는 것을 특징으로 하는 전자 장치.
KR1020140002847A 2014-01-09 2014-01-09 데이터 인코딩 방법 및 전자장치 KR102093206B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020140002847A KR102093206B1 (ko) 2014-01-09 2014-01-09 데이터 인코딩 방법 및 전자장치
US14/591,391 US9548763B2 (en) 2014-01-09 2015-01-07 Data encoding method and electronic device therefor
EP15150473.5A EP2894790A1 (en) 2014-01-09 2015-01-08 Encoding of MDS codes based on Cauchy matrices
PCT/KR2015/000203 WO2015105355A1 (en) 2014-01-09 2015-01-08 Data encoding method and electronic device therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140002847A KR102093206B1 (ko) 2014-01-09 2014-01-09 데이터 인코딩 방법 및 전자장치

Publications (2)

Publication Number Publication Date
KR20150083284A KR20150083284A (ko) 2015-07-17
KR102093206B1 true KR102093206B1 (ko) 2020-03-26

Family

ID=52292791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140002847A KR102093206B1 (ko) 2014-01-09 2014-01-09 데이터 인코딩 방법 및 전자장치

Country Status (4)

Country Link
US (1) US9548763B2 (ko)
EP (1) EP2894790A1 (ko)
KR (1) KR102093206B1 (ko)
WO (1) WO2015105355A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200081778A1 (en) * 2018-09-11 2020-03-12 Goke Us Research Laboratory Distributed storage system, method and apparatus

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150128008A1 (en) 2013-11-06 2015-05-07 HGST Netherland B.V. Track-band squeezed-sector error correction in magnetic data storage devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038054A1 (en) 2004-10-06 2006-04-13 Nokia Corporation Packet transmission using error correction of data packets
EP1803245A1 (en) 2004-10-07 2007-07-04 Nokia Corporation Efficient source blocking algorithm for fec for mbms streaming
US7418649B2 (en) 2005-03-15 2008-08-26 Microsoft Corporation Efficient implementation of reed-solomon erasure resilient codes in high-rate applications
US7644335B2 (en) 2005-06-10 2010-01-05 Qualcomm Incorporated In-place transformations with applications to encoding and decoding various classes of codes
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8621317B1 (en) * 2011-07-25 2013-12-31 Google Inc. Modified orthogonal coding techniques for storing data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150128008A1 (en) 2013-11-06 2015-05-07 HGST Netherland B.V. Track-band squeezed-sector error correction in magnetic data storage devices

Also Published As

Publication number Publication date
EP2894790A1 (en) 2015-07-15
US9548763B2 (en) 2017-01-17
US20150194986A1 (en) 2015-07-09
KR20150083284A (ko) 2015-07-17
WO2015105355A1 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
KR102133930B1 (ko) 데이터 패킷 송수신 장치 및 방법
CN109524015B (zh) 音频编码方法、解码方法、装置及音频编解码系统
CA2873024C (en) Apparatus and method of transmitting and receiving packet in a broadcasting and communication system
JP2015508979A (ja) 順方向エラー訂正スキームを使用するパケット送受信装置及び方法
US20130097474A1 (en) Apparatus and method for transmitting/receiving forward error correction packet in mobile communication system
WO2020134723A1 (zh) 一种校验码的处理方法、装置及电子设备
JP5600774B1 (ja) データ伝送装置及び方法
KR101967884B1 (ko) 방송 및 통신 시스템에서 패킷 송/수신 장치 및 방법
JP6371830B2 (ja) 前方誤り訂正パケット送信方法
KR101527267B1 (ko) 직교 다중 디스크립션 코딩
KR102093206B1 (ko) 데이터 인코딩 방법 및 전자장치
KR20160138382A (ko) 방송 및/또는 통신 시스템에서 패킷 생성 및 복원 방법 및 장치
JP2007324876A (ja) データ送信装置、データ受信装置、データ送信方法、データ受信方法、及びプログラム
KR20150046700A (ko) 오류 정정 부호를 사용하는 통신 시스템에서 패킷 송수신 기법
KR102181553B1 (ko) 전자장치에서 부호화 및 복호화를 위한 방법 및 장치
JP6310102B2 (ja) データ送信のための方法および装置
EP3342168B1 (en) Methods and apparatus for random access of hevc bitstream for mmt
JPWO2015178018A1 (ja) 端末、パケット復号方法、および、プログラムが記憶された記憶媒体
CN111262658B (zh) 基于fec的重传方法、装置及可读存储介质
JP2015532794A (ja) 衛星モバイルtvブロードキャストのクロス・レイヤ・コーディングの方法および装置
US9003180B2 (en) Data encryption and decryption
KR102014710B1 (ko) 방송 및 통신 시스템에서 패킷 송/수신 장치 및 방법
KR101886937B1 (ko) 릴레이 노드에서의 네트워크 코딩을 통한 패킷 전송 방법, 네트워크 코딩을 통한 패킷 전송을 하는 릴레이 장치, 목적지 노드의 패킷 수신 방법 및 네트워크 코딩된 패킷을 수신하는 장치
WO2019095303A1 (zh) 传输上行业务数据的方法、装置和系统
CN114900698A (zh) 基于前向纠错的视频传输方法、设备和计算机存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant