KR20170039589A - 가변 길이의 입출력을 갖는 블록 코드를 이용한 부호화 방법 및 장치 - Google Patents

가변 길이의 입출력을 갖는 블록 코드를 이용한 부호화 방법 및 장치 Download PDF

Info

Publication number
KR20170039589A
KR20170039589A KR1020160125077A KR20160125077A KR20170039589A KR 20170039589 A KR20170039589 A KR 20170039589A KR 1020160125077 A KR1020160125077 A KR 1020160125077A KR 20160125077 A KR20160125077 A KR 20160125077A KR 20170039589 A KR20170039589 A KR 20170039589A
Authority
KR
South Korea
Prior art keywords
message
code
length
block code
reed
Prior art date
Application number
KR1020160125077A
Other languages
English (en)
Other versions
KR102601339B1 (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/283,398 priority Critical patent/US10097206B2/en
Publication of KR20170039589A publication Critical patent/KR20170039589A/ko
Application granted granted Critical
Publication of KR102601339B1 publication Critical patent/KR102601339B1/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/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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

제1 블록 코드를 바탕으로 입력 메시지를 인코딩하여 제1 출력 메시지를 생성하는 단계, 제2 블록 코드를 바탕으로 입력 메시지의 일부를 인코딩하여 제2 출력 메시지를 생성하는 단계, 그리고 제1 출력 메시지 및 제2 출력 메시지를 정합하는 단계를 통해 부호화를 수행하는 부호화 방법 및 인코더가 제공된다.

Description

가변 길이의 입출력을 갖는 블록 코드를 이용한 부호화 방법 및 장치 {Method and apparatus for coding using block code of variable I/O length}
본 기재는 가변 길이의 입출력을 갖는 블록 코드를 사용하여 부호화하는 방법 및 장치에 관한 것이다.
통신 시스템의 오류 정정 부호(error correcting code)는, 메시지 정보와 상관 관계가 있는 추가 정보이다. 송신 장치는 메시지 정보 및 메시지 정보와 상관 관계가 있는 추가 정보를 결합한 후 송신하고, 수신 장치는 오류가 존재하는 전체 메시지에서 결합된 부가 정보를 통해서 원래 메시지 정보를 복원할 수 있다.
블록 코드는 오류 정정 부호의 한 종류이고, 블록 코드가 사용되는 경우 부호화 및 복호화는 블록 단위로 수행될 수 있다. 블록 코드에서, 부호화 대상이 되는 입력 메시지의 길이와 부호화 후 출력되는 최종 메시지의 길이가 미리 결정된 값으로 고정되어 하나의 블록을 구성한다. 예를 들어, (n, k) 블록 코드는 입력 메시지의 길이가 k이고 출력 메시지의 길이가 n이다. 이때, n은 k보다 크고, n-k 길이에 해당하는 부분이 입력 메시지 정보와 상관관계를 갖는 추가 정보이고, 추가 정보를 통해 출력 메시지에 오류 정정 능력이 부여될 수 있다. 추가 정보의 길이가 길수록 더 많은 오류를 감지하고 정정할 수 있다.
한 실시예는, 두 개의 리드-뮬러의 정합을 통해 최적으로 설계된 코드를 바탕으로 메시지를 부호화 및 복호화하는 인코더 및 디코더를 제공한다.
다른 실시예는, 두 개의 리드-뮬러의 정합을 통해 최적으로 설계된 코드를 바탕으로 메시지를 부호화 및 복호화하는 방법을 제공한다.
한 실시예에 따르면, 메시지를 부호화하는 인코더가 제공된다. 상기 인코더는, 프로세서 및 메모리를 포함하고, 프로세서는 메모리에 저장된 프로그램을 실행하여, 제1 블록 코드를 바탕으로 입력 메시지를 인코딩하여 제1 출력 메시지를 생성하는 단계, 제2 블록 코드를 바탕으로 입력 메시지의 일부를 인코딩하여 제2 출력 메시지를 생성하는 단계, 그리고 제1 출력 메시지 및 제2 출력 메시지를 정합하는 단계를 수행하고, 제1 블록 코드는 출력 메시지의 길이가 2n인 블록 코드이고, 제2 블록 코드는 출력 메시지의 길이가 2m인 리드-뮬러(Reed-Muller) 코드이며, m은 n보다 작다.
상기 인코더에서, 출력 메시지의 길이가 2n인 블록 코드는 롱텀에볼루션(long term evolution, LTE) 시스템의 (32, A) 블록 코드이고, 출력 메시지의 길이가 2m인 리드-뮬러 코드는 (4, 3) 리드-뮬러 코드일 수 있다.
상기 인코더에서, 입력 메시지의 일부는, 입력 메시지의 마지막 비트부터 제2 블록 코드의 입력 메시지 길이만큼에 해당하는 부분일 수 있다.
상기 인코더에서, 프로세서는 제2 출력 메시지를 생성하는 단계를 수행할 때,
입력 메시지의 길이가 제2 블록 코드의 입력 메시지의 길이 보다 짧은 경우, 제2 블록 코드 중 일부를 사용하여 입력 메시지를 인코딩하는 단계를 수행할 수 있다.
상기 인코더에서, 제2 블록 코드 중 일부는, 제2 블록 코드의 오른쪽 컬럼을 삭제하고 남은 이중 직교 코드일 수 있다.
다른 실시예에 따르면, 메시지를 부호화하는 방법이 제공된다. 상기 부호화 방법은, 제1 블록 코드를 바탕으로 입력 메시지를 인코딩하여 제1 출력 메시지를 생성하는 단계, 제2 블록 코드를 바탕으로 입력 메시지의 일부를 인코딩하여 제2 출력 메시지를 생성하는 단계, 그리고 제1 출력 메시지 및 제2 출력 메시지를 정합하는 단계를 포함하고, 제1 블록 코드는 출력 메시지의 길이가 2n인 블록 코드이고, 제2 블록 코드는 출력 메시지의 길이가 2m인 리드-뮬러(Reed-Muller) 코드이며, m은 n보다 작다.
상기 부호화 방법에서, 출력 메시지의 길이가 2n인 블록 코드는 롱텀에볼루션(long term evolution, LTE) 시스템의 (32, A) 블록 코드이고, 출력 메시지의 길이가 2m인 리드-뮬러 코드는 (4, 3) 리드-뮬러 코드일 수 있다.
상기 부호화 방법에서 입력 메시지의 일부는, 입력 메시지의 마지막 비트부터 제2 블록 코드의 입력 메시지 길이만큼에 해당하는 부분일 수 있다.
상기 부호화 방법에서 제2 출력 메시지를 생성하는 단계는, 입력 메시지의 길이가 제2 블록 코드의 입력 메시지의 길이 보다 짧은 경우, 제2 블록 코드 중 일부를 사용하여 입력 메시지를 인코딩하는 단계를 포함할 수 있다.
상기 부호화 방법에서 제2 블록 코드 중 일부는, 제2 블록 코드의 오른쪽 컬럼을 삭제하고 남은 이중 직교 코드일 수 있다.
또 다른 실시예에 따르면, 메시지를 복호화하는 디코더가 제공된다. 상기 디코더는, 프로세서 및 메모리를 포함하고, 프로세서는 메모리에 저장된 프로그램을 실행하여, 고속 왈쉬-하다마드 변환(Fast Walsh-Hadamard transform, FWHT)를 바탕으로 수신 메시지를 디코딩하여 제1 출력 메시지를 생성하는 단계, 이중 직교 코드에서 유래한 코드와, 수신 메시지 중 일부 메시지와의 상관값을 계산하는 단계, 그리고 제1 출력 메시지와 상관값을 매핑하는 단계를 수행한다.
상기 디코더에서, 프로세서는 제1 출력 메시지를 생성하는 단계를 수행할 때, 수신 메시지가 미리 결정된 길이보다 긴 경우, 미리 결정된 길이를 초과하는 비트에 대응하는 개수만큼의 브랜치에 대하여 FWHT를 적용하는 단계를 수행할 수 있다.
기존의 최적 설계된 출력 메시지의 길이가 2n인 제1 리드-뮬러 코드의 인코더 및 디코더와, 2n 보다 짧은 길이의 출력 메시지를 갖는 제2 리드-뮬러 코드의 인코더 및 디코더를 그대로 활용하여, 해밍 거리가 최대인 최적 코드를 효율적으로 설계할 수 있다.
도 1은 (32, A) 리드-뮬러 코드를 나타낸 도면이다.
도 2는 한 실시예에 따른 (36, A) 리드-뮬러 코드를 나타낸 도면이다.
도 3은 한 실시예에 따른 인코더를 나타낸 블록도이다.
도 4는 한 실시예에 따른 디코더를 나타낸 블록도이다.
도 5는 다른 실시예에 따른 인코더 및 디코더를 나타낸 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 기재의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 기재는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 기재를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 단말(terminal)은, 이동국(mobile station, MS), 이동 단말(mobile terminal, MT), 진보된 이동국(advanced mobile station, AMS), 고신뢰성 이동국(high reliability mobile station, HR-MS), 가입자국(subscriber station, SS), 휴대 가입자국(portable subscriber station, PSS), 접근 단말(access terminal, AT), 사용자 장비(user equipment, UE), 기계형 통신 장비(machine type communication device, MTC device) 등을 지칭할 수도 있고, MT, MS, AMS, HR-MS, SS, PSS, AT, UE 등의 전부 또는 일부의 기능을 포함할 수도 있다.
또한, 기지국(base station, BS)은 진보된 기지국(advanced base station, ABS), 고신뢰성 기지국(high reliability base station, HR-BS), 노드B(node B), 고도화 노드B(evolved node B, eNodeB), 접근점(access point, AP), 무선 접근국(radio access station, RAS), 송수신 기지국(base transceiver station, BTS), MMR(mobile multihop relay)-BS, 기지국 역할을 수행하는 중계기(relay station, RS), 기지국 역할을 수행하는 중계 노드(relay node, RN), 기지국 역할을 수행하는 진보된 중계기(advanced relay station, ARS), 기지국 역할을 수행하는 고신뢰성 중계기(high reliability relay station, HR-RS), 소형 기지국[펨토 기지국(femto BS), 홈 노드B(home node B, HNB), 홈 eNodeB(HeNB), 피코 기지국(pico BS), 매크로 기지국(macro BS), 마이크로 기지국(micro BS) 등] 등을 지칭할 수도 있고, ABS, 노드B, eNodeB, AP, RAS, BTS, MMR-BS, RS, RN, ARS, HR-RS, 소형 기지국 등의 전부 또는 일부의 기능을 포함할 수도 있다.
블록 코드에서, 출력 메시지의 길이가 가변적으로 운용될 수 있고, 이를 위해, 펑츄어링(puncturing) 방식이 사용될 수 있다. 펑츄어링 방식에서, 출력 메시지 중 추가 정보 n-k는 모두 송신되지 않고, 최종 메시지의 길이 n과 가변된 출력 메시지의 길이와의 차이를 제외한 나머지 부분이 송신될 수 있다.
또는 블록 코드에서, 입력 메시지의 길이가 가변적으로 운용될 수 있고, 이를 위해 쇼트닝(shortening) 방식이 사용될 수 있다. 쇼트닝 방식에서, 입력 메시지는 k보다 작은 길이로 조절되고, k보다 작은 나머지 입력 메시지가 0 또는 미리 결정된 값으로 설정된다. 이후, 부호화를 통해 출력된 최종 메시지에서 0 또는 미리 결정된 값으로 설정된 부분은 다시 제거된다.
따라서, 펑츄어링 방식 및 쇼트닝 방식은 출력 메시지의 최대 길이가 n으로 제한되거나, 또는 입력 메시지의 최대 길이가 k로 제한된다. 이때, 가변될 입출력 메시지(또는 출력 메시지)의 길이를 고려하여, 최대 값의 n 및 k (n, k)에 대한 (n, k) 블록 코드가 먼저 설계되고, 설계된 블록 코드에 대한 인코더 및 디코더에 펑추어링 또는 쇼트닝 방식이 적용될 수 있다.
이때, 최고 성능을 얻을 수 있도록, 가변 길이의 메시지를 지원할 수 있는 블록 코드를 설계하기 위해서, 다음 2가지 사항이 고려될 수 있다. (n, k) 블록 코드는, 모든 가능한 길이의 입력 메시지에 대해서도 좋은 성능(가급적 최고의 성능)을 가져야 하고, 모든 가능한 길이의 출력 메시지에 대해서도 좋은 성능을 가져야 한다. 즉, 최대 값의 (n, k)에 대해서뿐만 아니라, 운용되는 모든 길이의 입출력 메시지에 대해서 가급적 최고의 성능을 가질 수 있어야 한다.
리드-뮬러(Reed-Muller, RM) 코드는, 다른 블록 코드에 비하여 상대적으로 성능이 우수하고, 인코더 및 디코더의 구현이 간단하기 때문에, 가변 입출력 메시지 길이를 갖는 코드가 필요한 응용 분야에서 널리 활용되었다. 리드-뮬러 코드의 출력 메시지의 길이는 2의 거듭제곱으로 표시될 수 있다. 아래에서는 (16, 10) 리드-뮬러 코드를 설명한다.
(16, 10) 리드-뮬러 코드의 출력 메시지의 길이는 16(=24)이므로, 4개의 기본 코드(v1, v2, v3, v4)를 갖는다. 이때, v1, v2, v3, 그리고 v4는 1차 기본 코드이고, 4개의 기본 코드 간의 곱 또한 (16, 10) 리드-뮬러 코드의 기본 코드가 될 수 있다. 즉, 4개의 기본 코드 간의 곱을 바탕으로 새로운 기본 코드가 생성될 수 있다. 2개의 기본 코드 간 곱으로 표현되는 2차 기본 코드(v1v2, v1v3, v1v4, v2v3, v2v4, v3v4), 3개의 기본 코드 간 곱으로 표현되는 3차 기본 코드(v1v2v3, v1v2v4, v1v3v4, v2v3v4), 그리고 4개의 기본 코드 간 곱으로 표현되는 4차 기본 코드(v1v2v3v4)가 있다. 또한 리드-뮬러 코드의 특성상 모든 코드가 1인 코드워드도 기본 코드가 될 수 있으며, 본 기재에서는 1s 코드(0차 기본 코드)라고 한다. 따라서, (16, 10) 리드-뮬러 코드는 모두 16개(=4+6+4+1+1)의 기본 코드를 가지며, 기본 코드는 인코더를 위한 기본 생성 코드의 역할을 수행할 수 있다. 인코딩은 입력 메시지 비트와, 입력 메시지 비트와 동일한 길이의 기본 코드 간의 연산(모듈로-2 연산 하의 내적)으로 수행될 수 있다. 예를 들어, 입력 메시지가 a0, a1, a2, a3, a4 인 5비트 길이를 가질 때, 임의로 선택된 5개의 기본 코드 1s, v1, v4, v3, v4가 코드 생성을 위한 기본 코드로 사용되는 경우, 최종 코드워드는 아래 수학식 1과 같다.
Figure pat00001
수학식 1에서 + 연산은 모두 2진 연산이다. 펑츄어링 방식을 사용하면, (16, 10) 리드-뮬러 코드로부터 출력된 출력 메시지를 길이 16 이내에서 가변할 수 있다. 쇼트닝 방식을 사용하면, (16, 10) 리드-뮬러 코드로 입력될 입력 메시지를 길이 10 이내에서 가변할 수 있다.
이때, (16, 10) 리드-뮬러 코드를 설계하기 위하여, 16개의 기본 코드 중 10개의 기본 코드가 선택될 수 있다. 이때, 10개의 기본 코드는 리드-뮬러 코드의 성능을 최대화할 수 있도록 선택된다. 블록 코드의 성능은 해밍 거리(Hamming distance)에 의해서 결정될 수 있다. 해밍 거리는, 두 코드 간 서로 다른 비트의 개수를 나타내며, 해밍 거리가 클수록 두 코드는 서로 닮지 않은 상이한 코드이다. 따라서, 좋은 성능을 얻기 위해서, 해밍 거리가 크도록 블록 코드가 설계될 수 있다. 리드-뮬러 코드의 성능을 최적화 하기 위해서, 1을 많이 포함하는 순서대로 기본 코드가 선택될 수 있다. 아래 수학식 2는 1을 많이 포함하는 순서대로 선택된 기본 코드를 나타낸다.
Figure pat00002
(16, 10) 블록 코드를 사용하여 가변 길이의 출력 메시지를 출력하기 위해서, 길이 n (n<16)의 출력 메시지가 사용되는 경우, 길이 16의 출력 메시지 중 길이 n 부분을 제외한 나머지 비트는 삭제될 수 있다(펑츄어링 방식). 그리고, (16, 10) 블록 코드를 사용하여 가변 길이의 입력 메시지를 인코딩하기 위해서, 길이 k (k<10)의 입력 메시지 비트와 10-k개의 0을 포함하는 메시지를 (16, 10) 블록 코드 인코더에 대한 입력으로 사용할 수 있다(쇼트닝 방식). 이때, 출력 메시지 중 10 비트가 입력 메시지와 동일한 경우, 인코딩되는 메시지는 10-k개의 0 비트가 삭제된, 길이 k의 입력 메시지 비트이다. 종래 (16, 10) 리드-뮬러 코드에서는, 출력 메시지의 10비트가 입력 메시지와 전혀 다르므로, 출력 메시지 전체가 그대로 송신된다. 이것은, k비트의 입력 메시지에 10-k개의 0비트를 정합(concatenate)하여 인코딩을 수행하는, 쇼트닝 방식을 일부 포함하는 것으로 볼 수 있다.
한편, 출력 메시지의 최대 길이는 위와 같고, 입력 메시지의 최대 길이가 5인 (16, 5) 리드-뮬러 코드가 사용될 수 있다. (16, 5) 리드-뮬러 코드에 위에서 설명한 방식이 적용되는 경우, 입력 메시지의 최대 길이가 5이므로, 1's, v1, v2, v3, 그리고 v4가 5개의 기본 코드로서 선택될 수 있다. 또는 출력 메시지의 최대 길이는 위와 같고, 입력 메시지의 최대 길이가 7인 (16, 7) 리드-뮬러 코드가 사용될 수 있다. 이때 입력 메시지의 최대 길이 7이, 0차 기본 코드 및 1차 기본 코드의 개수의 합보다는 크고, 0차 기본 코드, 1차 기본 코드, 그리고 2차 기본 코드의 개수의 합보다는 작으므로, 0차 기본 코드, 1차 기본 코드, 그리고 2차 기본 코드 중 2개가 코드 생성을 위한 기본 코드 집합으로 선택될 수 있다.
(16, 10) 리드-뮬러 코드의 최소 해밍 거리는 4이고, (16, 5) 리드-뮬러 코드의 최소 해밍 거리는 8이므로, 일반적으로 (16, 5) 리드-뮬러 코드의 성능이 (16, 10) 리드-뮬러 코드의 성능보다 좋다. (16, 7) 리드-뮬러 코드의 경우, 최소 해밍 거리가 4이므로, (16, 10) 리드-뮬러 코드와 유사한 성능을 보인다. 한편, (16, 7) 블록 코드의 최대 해밍 거리는 6이다. 따라서, 위에 설명된 (16, 7) 리드-뮬러 코드는 최고의 성능을 갖는 코드라 할 수 없다.
위와 같은 문제를 해결하기 위하여, 6개의 2차 기본 코드 중 임의로 2개를 선택하여 (16, 7) 블록 코드를 설계하지 않고, 이론적으로 최대인 해밍 거리(6)와 같거나 그에 가장 근접한 해밍 거리를 얻을 수 있는 2개의 기본 코드를 찾는 방법이 사용될 수 있다. 하지만 이러한 방법은 휴리스틱(heuristic) 방법으로서, 블록 코드의 설계 방법이 매우 복잡하고 체계적이지 못해서 코드 설계의 난이도가 매우 높다. 따라서, 2의 누승으로 표시되는 특정한 길이의 출력 메시지에 대해서 알려진, 최적의 기본 코드가 인용되고 있다. 도 1은 (32, A) 리드-뮬러 코드를 나타낸 도면이다. 도 1에 도시된 (32, A) 블록 코드는, 2의 누승(32=25)인 출력 메시지에 대해 알려진 최적의 기본 코드이며, 3GPP(3rd generation partnership project) 표준에서 채택되었다.
본 기재에서, 가변 길이의 입출력 메시지에 대해 사용되는 (36, A) 리드-뮬러 코드가 최적 블록 코드로서 설계된다.
리드-뮬러 코드의 출력 메시지의 길이는 2의 누승으로 표시되어야 하므로, (36, A) 리드-뮬러 코드를 결정하기 위해서, (64, A) 리드-뮬러 코드의 64비트 기본 코드에 대해 28비트 펑츄어링(64-28=36)이 수행될 수 있다. 이때, (64, A) 리드-뮬러 코드의 64 비트 중 펑츄어링 되어야 할 28 비트가 미리 결정되어야 한다. 즉, 최대 성능의 블록 코드를 얻기 위하여, 해밍 거리가 최대가 되도록 펑츄어링 비트가 결정되어야 한다. 휴리스틱 방식에 의해 펑츄어링 비트가 결정되는 경우, 전체 경우의 수를 대상으로 펑츄어링 비트의 위치가 결정되기 때문에 복잡하고 비효율적일 수 있다. 특히, A가 상대적으로 큰 값인 경우, 더욱 그렇다. 또한, 최적의 A개의 기본 코드를 결정하는 것 또한, 복잡한 계산을 요구하기 때문에 최적 블록 코드가 효율적으로 설계되기 어렵다.
또는, (36, A) 리드-뮬러 코드는 (32, A) 리드-뮬러 코드를 바탕으로 결정될 수 있다. 즉, (32, A) 리드-뮬러 코드에서 14 비트를 펑츄어링하여 (18, A) 코드를 생성하고, (18, A) 코드를 2번 반복 전송함으로써, 리드-뮬러 (36, A) 리드-뮬러 코드와 동일한 성능을 가질 수 있다. 하지만, 이러한 방법으로 결정된 리드-뮬러 코드는 최고 성능을 갖는 최적의 코드가 아니어서, 최적 코드와 비교하면 성능차이가 적지 않다. 특히, A 값은 18보다 작거나 같아야 하는 제한이 있다.
도 2는 한 실시예에 따른 (36, A) 리드-뮬러 코드를 나타낸 도면이다.
도 2를 참조하면, (36, A) 리드-뮬러 코드는, (32, A) 리드-뮬러 코드와, 리드-뮬러 코드의 한 종류인 이중 직교 코드(dual orthogonal code)의 정합으로 설계된다. 즉, (36, A) 블록 코드를 생성하기 위해서, (32, A) 리드-뮬러 코드에 4비트를 추가적으로 정합할 수 있고, 이때, 출력 4비트에 해당하는 이중 직교 코드는 (4, 3) 코드이다. 따라서, 입력 메시지의 최대 길이가 11인 경우, 해밍 거리 2(부가된 4비트의 출력으로 얻어질 수 있는 최대 해밍 거리)가 추가적으로 획득될 수 있다.
입력 메시지의 길이도 가변될 수 있으므로, 생성될 코드에서 A 값이 변경되더라도, 코드는 최적의 성능을 유지할 수 있어야 한다. 예를 들어, 도 2에 도시된 코드는 A가 8인 경우에도 성능을 유지할 수 있도록 적절히 변경될 필요가 있다.
본 기재에서는, 가변되는 A 값에 따라서 정합된 이중 직교 코드의 위치를 변경하여, 생성될 코드의 성능을 유지할 수 있다. 예를 들어, A가 8인 경우, (4, 3) 이중 직교 코드는 입력 메시지의 7, 8, 9번째 비트에 할당되고, A가 9인 경우, (4, 3) 이중 직교 코드는 입력 메시지의 8, 9, 10번째 비트에 할당된다. 즉, (4, 3) 이중 직교 코드는 A개의 비트를 포함하는 입력 메시지의 마지막 3개의 비트에 할당된다. 그리고, A가 3보다 작은 경우(즉, 입력 메시지의 길이가 이중 직교 코드의 입력 메시지의 길이 보다 짧은 경우)에는 (4, 3) 이중 직교 코드의 오른쪽 컬럼((0, 0, 1, 1) 또는 (0, 1, 0, 1))을 삭제하고 남은 이중 직교 코드를 부호화에 사용한다. 예를 들어, A가 2인 경우에는 (1, 1, 1, 1) 및 (0, 0, 1, 1)이 사용되고, A가 1인 경우에는 (1, 1, 1, 1)만 사용된다. 도 2를 참조하면, (32, A) 리드-뮬러 코드 내에서, (4, 3) 이중 직교 코드의 위치는 화살표 방향으로 변경될 수 있다.
다른 실시예에 따르면, (35, A) 리드-뮬러 코드가 (32, A) 블록 코드 및 (4, 3) 이중 직교 코드의 정합으로 생성될 수 있다. 이때, 기본 코드의 맨 마지막 비트는 삭제되고, 그에 따라 (35, A) 리드-뮬러 코드의 해밍 거리는 최대가 될 수 있다. 즉, 임의의 리드-뮬러 코드 및 정합된 이중 직교 코드의 길이 합이 출력 메시지의 길이보다 큰 경우, 펑츄어링(기본 코드의 마지막 비트 삭제)을 바탕으로 코드가 생성될 수 있다.
상술한 바와 같이, 2의 누승이 아닌 길이의 출력 메시지를 갖는 최적 코드를 설계하기 위하여, 출력 메시지의 길이가 2n(예를 들어, 25인 32(n=5))인 제1 리드-뮬러 코드와, 출력 메시지의 길이가 2m(예를 들어, 22인 4(m=2))인 제2 리드-뮬러 코드가 사용되고, 이때, m은 n 보다 작다. 그리고, 입력 메시지의 길이에 따라서 두 개의 리드-뮬러 코드의 정합 위치도 함께 변경될 수 있다. 이때, 제1 리드-뮬러 코드에서 제2 리드-뮬러 코드가 정합되는 위치가 입력 메시지의 길이에 따라서 변경되더라도, 제1 리드-뮬러 코드 및 제2 리드-뮬러 코드가 서로 상관 관계 없이 독립적으로 분리될 수 있다.
도 3은 한 실시예에 따른 인코더를 나타낸 블록도이다.
도 3을 참조하면, 한 실시예에 따른 인코더(300)는, 제1 인코더(310), 제2 인코더(320), 그리고 정합부(330)를 포함한다.
제1 인코더(310)는, 제1 리드-뮬러 코드 생성부를 포함하고, 제2 인코더(320)는 제2 리드-뮬러 코드 생성부를 포함한다. 한 실시예에 따르면, 제1 인코더(310)는, 리드-뮬러 코드(예를 들어, (32, A) 리드-뮬러 코드)를 바탕으로 입력 메시지를 인코딩하고, 제2 인코더(320)는 이중 직교 코드(예를 들어, (4, 3) 이중 직교 코드)를 바탕으로 입력 메시지를 인코딩할 수 있다. 제1 인코더(310) 및 제2 인코더(320)는 각각 입력 메시지 및 입력 메시지의 일부를 인코딩하고, 정합부(330)는 제1 인코더(310) 및 제2 인코더(320)에서 각각 출력된 출력 메시지를 정합하여 최종 출력 메시지를 생성한다.
도 4는 한 실시예에 따른 디코더를 나타낸 블록도이다.
도 4를 참조하면, 한 실시예에 따른 디코더(decoder)(400)는, 디-멀티플렉서(de-multiplexer)(410), 마스크 생성부(mask generator)(420), 리드-뮬러 코드 생성부(430), 고속 왈쉬-하다마드 변환(Fast Walsh-Hadamard transform, FWHT)부(440), 상관부(correlator)(450), 다중화 네트워크부(multiplex(MUX) network)(460), 그리고 비교부(comparator)(470)를 포함한다. FWHT부(440)는 복수의 FWHT 장치를 포함하고, 상관부(450)는 복수의 상관기를 포함하며, 다중화 네트워크부(460)는 다중화기(multiplexer)를 포함한다.
이중 직교 코드의 형태는 (2n, n+1)이므로, 이중 직교 코드는 디코더(400) 내에서 A 값이 n+1 보다 작은 경우 적용될 수 있다. 아래에서는 A의 최대값이 11인 (32, A) 리드-뮬러 코드 및 (4, 3) 이중 직교 코드의 정합으로 생성된 (36, A) 블록 코드를 예로 들어 디코더의 동작을 설명한다.
(32, A) 리드-뮬러 코드의 경우, A가 6 비트(0~5번째 비트) 이하인 경우 FWHT를 사용할 수 있다. 예를 들어, A가 6보다 큰 경우(A=11)에도 FWHT를 사용하기 위해서, 11 비트 중 초과된 5비트(6, 7, 8, 9, 10번째 비트)에 대한 디코딩이 미리 수행된다. 도 4를 참조하면, 마스크 생성부(420)는 5비트(M6 내지 M10)에 해당하는 32개의 메시지에 대한 인코딩을 제거하기 위한 마스크를 생성한다. 즉, 마스크 생성부에서 생성된 마스크가 5비트에 해당하는 32개 메시지에 곱해짐으로써, 11 비트 중 초과된 5비트에 대한 디코딩이 먼저 수행된다.
이후, FWHT부(440)는 FWHT를 이용하여 각 브랜치(32(=25)개)에 대한 디코딩을 수행한다. A가 6보다 큰 경우(수신 메시지가 미리 결정된 길이보다 긴 경우) 초과된 5비트(6~10)에 대해 디코딩이 먼저 수행되었기 때문에, FWHT 디코딩이 각 브랜치에서 수행될 수 있다. 각 브랜치에서의 최종 출력은 FWHT부(440)의 출력 중 최대 값과, 최대 값에 해당하는 비트 값(디코딩된 0~5번 비트에 대한 6비트짜리 메시지 비트)이다.
만약 수신된 메시지의 인코딩에 (4, 3) 이중 직교 코드가 사용되지 않았다면, 디코더(400)는, 출력이 최대인 브랜치를 선택하고, 선택된 브랜치와 맵핑되는 5비트(6~10)의 메시지 비트를 획득한다. 획득된 5비트의 메시지 비트와 FWHT 디코딩을 통해 획득된 6비트(0~5)의 메시지 비트를 정합하면, 최종적으로 디코딩된 11비트의 메시지 비트가 획득된다. 디코더(400)는 11비트의 메시지 비트에서 A 비트만 선택하여 디코딩을 완료한다.
본 기재에서 수신된 메시지의 인코딩에는 (4, 3) 이중 직교 코드가 사용되었으므로, 수신된 길이 36의 메시지 중 마지막 4개의 메시지만이 (4, 3) 이중 직교 코드와 독립적으로 상관된다. 따라서, 상관부(450)는 (4, 3) 이중 직교 코드와 상관된 4개의 메시지와, (4, 3) 이중 직교 코드에서 유래한 8개의 코드 사이의 상관값을 계산한다. 이때 상관부(450)에서 수행하는 상관값의 계산은, FWHT 디코딩의 한 종류일 수 있다.
이후, 다중화 네트워크부(460)는, 상관부(450)에서 생성된 상관값을 (32, A) 브랜치와 연결된 FWHT부(440)의 출력에 더하여 출력 비트를 생성한다. 비교부(470)는 다중화 네트워크부(460)에서 출력된 복수의 출력 비트를 비교하여, 수신 메시지를 디코딩한다. 이때, 다중화 네트워크부(460)는, (4, 3) 이중 직교 코드에 대한 상관값과 (32, A) 디코더의 브랜치를 맵핑하기 위하여, A값, 브랜치 인덱스, 그리고 FWHT부(440)의 출력에 대한 인덱스를 제어할 수 있다.
예를 들어 A가 9인 경우, 수신 메시지는, 6, 7, 8번째 비트의 추가로 표현될 수 있는 (4, 3) 이중 직교 코드에 기반하여 디코딩 된다. (32, A) 디코더의 32개 브랜치가 입력 메시지의 6~10 번째 비트(5비트)에 대하여 생성되므로, 상관부(450)에서 출력된 (4, 3) 코드에 대한 상관값 중에서 코드 001에 대한 상관값은, 6~10번째 비트가 001xx인 브랜치에 더해진다.
위에서 설명한 것과 같이 해밍 거리가 최대인 최적 코드를 설계하면, 기존의 최적 설계된 출력 메시지의 길이가 2n인 제1 리드-뮬러 코드의 인코더 및 디코더와, 2n 보다 짧은 길이의 출력 메시지를 갖는 제2 리드-뮬러 코드의 인코더 및 디코더를 그대로 활용할 수 있어서 효율적이다.
도 5는 다른 실시예에 따른 인코더 및 디코더를 나타낸 블록도이다.
도 5를 참조하면, 다른 실시예에 따른 인코더(510)는, 프로세서(processor)(511) 그리고 메모리(memory)(512)를 포함한다. 그리고, 인코더(510)는 무선 통신부(radio frequency unit, RF unit)(513)를 더 포함할 수 있다. 메모리(512)는 프로세서(511)와 연결되어 프로세서(511)를 구동하기 위한 다양한 정보 또는 프로세서(511)에 의해 실행되는 적어도 하나의 프로그램을 저장할 수 있다. 무선 통신부(513)는 프로세서(511)와 연결되어 무선 신호를 송수신 할 수 있다. 프로세서(511)는 본 기재의 실시예에서 제안한 기능, 과정, 또는 방법을 구현할 수 있다. 이때, 본 기재의 다른 실시예에 따른 인코더(510)가 무선 통신 시스템의 단말 또는 기지국에 포함되는 경우, 프로세서(511)는 단말 또는 기지국의 무선 통신을 위한 무선 인터페이스 프로토콜 계층을 구현할 수 있다. 다른 실시예에 따른 인코더(510)의 동작은 프로세서(511)에 의해 구현될 수 있다.
도 5를 참조하면, 다른 실시예에 따른 디코더(520)는, 프로세서(processor)(521) 그리고 메모리(memory)(522)를 포함한다. 그리고, 디코더(520)는 무선 통신부(radio frequency unit, RF unit)(523)를 더 포함할 수 있다. 메모리(522)는 프로세서(521)와 연결되어 프로세서(521)를 구동하기 위한 다양한 정보 또는 프로세서(521)에 의해 실행되는 적어도 하나의 프로그램을 저장할 수 있다. 무선 통신부(523)는 프로세서(521)와 연결되어 무선 신호를 송수신 할 수 있다. 프로세서(521)는 본 기재의 실시예에서 제안한 기능, 과정, 또는 방법을 구현할 수 있다. 이때, 본 기재의 다른 실시예에 따른 디코더(520)가 무선 통신 시스템의 단말 또는 기지국에 포함되는 경우, 프로세서(521)는 단말 또는 기지국의 무선 통신을 위한 무선 인터페이스 프로토콜 계층을 구현할 수 있다. 다른 실시예에 따른 디코더(520)의 동작은 프로세서(521)에 의해 구현될 수 있다.
본 기재의 실시예에서 메모리는 프로세서의 내부 또는 외부에 위치할 수 있고, 메모리는 이미 알려진 다양한 수단을 통해 프로세서와 연결될 수 있다. 메모리는 다양한 형태의 휘발성 또는 비휘발성 저장 매체이며, 예를 들어, 메모리는 읽기 전용 메모리(read-only memory, ROM) 또는 랜덤 액세스 메모리(random access memory, RAM)를 포함할 수 있다.
이상에서 실시예에 대하여 상세하게 설명하였지만 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 권리범위에 속하는 것이다.

Claims (12)

  1. 메시지를 부호화하는 인코더로서,
    프로세서 및 메모리를 포함하고,
    상기 프로세서는 상기 메모리에 저장된 프로그램을 실행하여,
    제1 블록 코드를 바탕으로 입력 메시지를 인코딩하여 제1 출력 메시지를 생성하는 단계,
    제2 블록 코드를 바탕으로 상기 입력 메시지의 일부를 인코딩하여 제2 출력 메시지를 생성하는 단계, 그리고
    상기 제1 출력 메시지 및 상기 제2 출력 메시지를 정합하는 단계
    를 수행하고,
    상기 제1 블록 코드는 출력 메시지의 길이가 2n인 블록 코드이고, 상기 제2 블록 코드는 출력 메시지의 길이가 2m인 리드-뮬러(Reed-Muller) 코드이며, m은 n보다 작은, 인코더.
  2. 제1항에서,
    상기 출력 메시지의 길이가 2n인 블록 코드는 롱텀에볼루션(long term evolution, LTE) 시스템의 (32, A) 블록 코드이고, 상기 출력 메시지의 길이가 2m인 리드-뮬러 코드는 (4, 3) 리드-뮬러 코드인, 인코더.
  3. 제1항에서,
    상기 입력 메시지의 일부는, 상기 입력 메시지의 마지막 비트부터 상기 제2 블록 코드의 입력 메시지 길이만큼에 해당하는 부분인, 인코더.
  4. 제1항에서,
    상기 프로세서는 상기 제2 출력 메시지를 생성하는 단계를 수행할 때,
    상기 입력 메시지의 길이가 상기 제2 블록 코드의 입력 메시지의 길이 보다 짧은 경우, 상기 제2 블록 코드 중 일부를 사용하여 상기 입력 메시지를 인코딩하는 단계
    를 수행하는, 인코더.
  5. 제4항에서,
    상기 제2 블록 코드 중 일부는, 상기 제2 블록 코드의 오른쪽 컬럼을 삭제하고 남은 이중 직교 코드인, 인코더.
  6. 메시지를 부호화하는 방법으로서,
    제1 블록 코드를 바탕으로 입력 메시지를 인코딩하여 제1 출력 메시지를 생성하는 단계,
    제2 블록 코드를 바탕으로 상기 입력 메시지의 일부를 인코딩하여 제2 출력 메시지를 생성하는 단계, 그리고
    상기 제1 출력 메시지 및 상기 제2 출력 메시지를 정합하는 단계
    를 포함하고,
    상기 제1 블록 코드는 출력 메시지의 길이가 2n인 블록 코드이고, 상기 제2 블록 코드는 출력 메시지의 길이가 2m인 리드-뮬러(Reed-Muller) 코드이며, m은 n보다 작은, 부호화 방법.
  7. 제6항에서,
    상기 출력 메시지의 길이가 2n인 블록 코드는 롱텀에볼루션(long term evolution, LTE) 시스템의 (32, A) 블록 코드이고, 상기 출력 메시지의 길이가 2m인 리드-뮬러 코드는 (4, 3) 리드-뮬러 코드인, 부호화 방법.
  8. 제6항에서,
    상기 입력 메시지의 일부는, 상기 입력 메시지의 마지막 비트부터 상기 제2 블록 코드의 입력 메시지 길이만큼에 해당하는 부분인, 부호화 방법.
  9. 제6항에서,
    상기 제2 출력 메시지를 생성하는 단계는
    상기 입력 메시지의 길이가 상기 제2 블록 코드의 입력 메시지의 길이 보다 짧은 경우, 상기 제2 블록 코드 중 일부를 사용하여 상기 입력 메시지를 인코딩하는 단계
    를 포함하는, 부호화 방법.
  10. 제9항에서,
    상기 제2 블록 코드 중 일부는, 상기 제2 블록 코드의 오른쪽 컬럼을 삭제하고 남은 이중 직교 코드인, 부호화 방법.
  11. 메시지를 복호화하는 디코더로서,
    프로세서 및 메모리를 포함하고,
    상기 프로세서는 상기 메모리에 저장된 프로그램을 실행하여,
    고속 왈쉬-하다마드 변환(Fast Walsh-Hadamard transform, FWHT)를 바탕으로 수신 메시지를 디코딩하여 제1 출력 메시지를 생성하는 단계,
    이중 직교 코드에서 유래한 코드와, 상기 수신 메시지 중 일부 메시지와의 상관값을 계산하는 단계, 그리고
    상기 제1 출력 메시지와 상기 상관값을 매핑하는 단계
    를 수행하는, 디코더.
  12. 제11항에서,
    상기 프로세서는 상기 제1 출력 메시지를 생성하는 단계를 수행할 때,
    상기 수신 메시지가 미리 결정된 길이보다 긴 경우, 상기 미리 결정된 길이를 초과하는 비트에 대응하는 개수만큼의 브랜치에 대하여 상기 FWHT를 적용하는 단계
    를 수행하는, 디코더.
KR1020160125077A 2015-10-01 2016-09-28 가변 길이의 입출력을 갖는 블록 코드를 이용한 부호화 방법 및 장치 KR102601339B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/283,398 US10097206B2 (en) 2015-10-01 2016-10-01 Method and apparatus for performing encoding using block code having input/output of variable length

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20150138664 2015-10-01
KR1020150138664 2015-10-01

Publications (2)

Publication Number Publication Date
KR20170039589A true KR20170039589A (ko) 2017-04-11
KR102601339B1 KR102601339B1 (ko) 2023-11-13

Family

ID=58580980

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160125077A KR102601339B1 (ko) 2015-10-01 2016-09-28 가변 길이의 입출력을 갖는 블록 코드를 이용한 부호화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102601339B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050100848A (ko) * 2004-04-16 2005-10-20 삼성전자주식회사 초 광대역 통신시스템에서 헤더정보 전송장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050100848A (ko) * 2004-04-16 2005-10-20 삼성전자주식회사 초 광대역 통신시스템에서 헤더정보 전송장치 및 방법

Also Published As

Publication number Publication date
KR102601339B1 (ko) 2023-11-13

Similar Documents

Publication Publication Date Title
US11309997B2 (en) Generation of polar codes with a variable block length utilizing puncturing
EP3584972B1 (en) Polar code encoding method and apparatus
US20200067642A1 (en) Coding and decoding of a polar code concatenated with interleaving with an outer systematic code
CN110121851B (zh) 发送增量冗余编码比特块的方法、设备、介质和通信系统
JP6859444B2 (ja) 符号化及び復号化方法、無線デバイス並びにコンピュータ読み取り可能記憶媒体
EP3562074B1 (en) Method, device, and equipment for use in determining coding and decoding of polar code
TWI775799B (zh) 用於資訊編碼的刪餘和重複
AU2018328362A1 (en) Encoding method and apparatus
JP2023126812A (ja) ブロック符号化のためのレートマッチング
US11936402B2 (en) Puncturing of polar codes with complementary sequences
CN110890894A (zh) 级联编码的方法和装置
US11909417B2 (en) Data processing method and device
US10097206B2 (en) Method and apparatus for performing encoding using block code having input/output of variable length
US11152959B2 (en) Enhanced information sequences for polar codes
US11159179B2 (en) Enhanced information sequences for polar codes
RU2743100C1 (ru) Способы и устройства для передачи и обработки данных, устройство сетевой стороны и терминал
EP3656059B1 (en) Enhanced information sequences for polar codes
KR102601339B1 (ko) 가변 길이의 입출력을 갖는 블록 코드를 이용한 부호화 방법 및 장치
ES2760700T3 (es) Procedimiento y sistema para generar códigos de canal, en particular, para un encabezamiento de trama
AU2018328895A1 (en) Encoding method and apparatus
CN110622529A (zh) 广播信道的通信方法
CN110741698B (zh) 用于循环冗余校验/奇偶分布式极化码的比特数目计算和加扰的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant