오류정정부호 Viterbi decoder의 이해 및 Convolutional encoder 설계

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
전자회로 설계 Home Work # 서태규. HW#2 CS & Cascode Homework Homework [1] CL=0 일 때, Common-Source 증폭기 [2] CL=40pF 일 때, Common-Source 증폭기 [3] CL=0 일 때,
EMLAB Modeling of Digital Communication Systems using Simulink Chap2. Sinusoidal Simulink Model Chap3. Digital Communications BER Performance in AWGN (BPSK.
임진수 이현철. 회로 설계 과정 합성 ?  합성 도구가 주어진 HDL 코드를 Library 에 맞춰 회로로 변경시켜주는 과정  모든 코드가 합성되는 것은 아니다 !
CDMA 이동통신시스템과 부호이론.
Hamming Code 이근용. 2 Error Control Error Detection Parity Check CRC Check Error Correction Hamming Code.
전자파 연구실 Fast Beamforming of Electronically Steerable Parasitic Array Radiator Antennas: Theory and Experiment 세미나 자료 발표자 : 이동현 1.
RF transceiver EMLAB.
1. 개발 시스템 개요.
10장 오류 검출과 오류 정정 (Error Detection and Correction)
                                  7장 D/A 변환기 D/A Converter? D/A Converter 원리 Bit 수와 최대범위 및 해상도와의 관계.
(Numerical Analysis of Nonlinear Equation)
제 9 장의 구성 9.1 원천부호화 (Source Coding) 9.2 채널부호화 (Channel Coding) 연습문제
제 9 장의 구성 9.1 원천부호화(source coding) 9.2 채널부호화(channel coding)
Computer System Architecture
UNIT 15 Timer & Watch Dog 로봇 SW 교육원 조용수.
수치해석 6장 예제문제 환경공학과 천대길.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
정보공학의 구조 (관련분야) 신호시스템 모델 정보의 원천과 디지털 신호 Source/Channel Alphabet
Multiplexer 설계.
12. 데이터베이스 설계.
Verilog HDL 이론.
디지털 시스템 설계(3).
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
발표제목 발표제목 둘째 줄 2000년 11월 송 홍 엽 연세대학교 전기전자공학과 송 홍 엽
실험 11. 트랜지스터 증폭기의 부하선 해석 방 기 영.
전자기적인 Impedance, 유전율, 유전 손실
WCDMA 기반 3G 이동통신 시스템   물리계층 전송방식 및 성능분석.
순차회로 모델링 Sun, Hye-Seung.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
Data Communications 제 10 장 오류 제어와 흐름 제어.
RS 및 D 플립플롭 RS Flip Flop 래치는 어떤 입력 레벨에 의해서 제어되는 데 플립플롭은 클록 입력이라고
11장 키보드 인터페이스 Slide 1 (of 9).
디지털시스템설계 과목 담당교수 : 원 충 상 한국교통대학교 컴퓨터공학과
제9장 채널용량(Channel capacity)
Error Detection and Correction
FSM 설계.
osp.chungbuk.ac.kr/2012년 강의자료
Simulating Boolean Circuits on a DNA Computer
Flip-Flop 설계.
<소스코딩(Source Coding)> 제4장 가변길이 코드
제4장 제어 시스템의 성능.
VHDL Mealy and Moore model
JA A V W. 03.
프로그래밍 개요
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
6조 Op-Amp 응용 함수발생기 설계 예비제안발표
AT-DMB Baseband decoder LP path IP 기술이전 자료
연산자 (Operator).
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
논리회로 설계 및 실험 5주차.
2장. 변수와 타입.
8장. spss statistics 20의 데이터 변환
Biomedical Instrumentation
프로그래밍3 기말 프로젝트 QPSK변조 중간 보고서.
디 지 털 공 학 한국폴리텍V대학.
Image Restoration Using MATLAB Image ToolBox Visual Communication Lab
Common Emitter Amp. 참고 문헌 : 전자회로 5판, Sedra/Smith - 5장의 내용을 중심으로 구성.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
생체 신호의 실시간 디지털 처리 7조 홍윤호( )-1등
논리회로 설계 및 실험 4주차.
상관계수.
논리회로 설계실험 ICE ICE 담당교수 : 김 인 수.
Automatic Music Transcription
NACST progress report 신수용.
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
Presentation transcript:

오류정정부호 Viterbi decoder의 이해 및 Convolutional encoder 설계 고속 디지털 시스템 설계 한양대학교

목차 Convolutional Codes Representation of Convolutional Codes Trellis Diagram Viterbi Decoder Viterbi Decoder의 구조 Viterbi Decoder – Example Convolutional Encoder 설계

Convolutional Codes(1/7) 오류정정부호의 분류 1. Tree code Linear tree code Linear recurrent codes Convolutional codes 2. Block code 선형부호(Linear codes) 순환부호(Cyclic code)

Convolutional codes(2/7) 1955년 Elias의해 소개. Random error에 강한 특성. AWGN( Addtive White Gaussian Noise) 채널에서의 오류정정능력 우수. 인터리버(Interleaver/Deinterleaver)를 이용하여 Burst error에 대해서도 적용가능. 쉽게 Soft decision coding이 가능하다. 약 2 dB 추가적인 coding gain을 얻을 수 있다. Easy multirate codec Implementation. Convolutional codes의 응용 Satellite communications VSAT, INMARSAT, HDTV, MSAT,… Mobile communication, GSM, IMT-2000… Used for most radio communication systems

Convolutional codes(3/7) 일반적인 통신 시스템의 구성

Convolutional codes(4/7) ( n, k, m) Convolutional encoder m : 메모리 소자의 개수 ( shift registers ) k : 입력 비트 수 n : 출력 비트 수 K : 구속장(constraint length) 한 개의 입력 비트가 영향을 끼치는 output sequence의 길이 K = m +1 Code rate : k/n Example : (2,1,3) convolutional code k =1, n = 2, shift registers = 3, code rate = 1/2 , K = 4

Convolutional codes(5/7) ( 2, 1, 3) Convolutional encoder (a) Recursion formula

Convolutional codes(6/7) Generator sequences (impulse response) Recursion formula using generator sequences Information sequence : Generator sequence :

Convolutional codes(7/7) Output sequence:

Representation of Convolutional Codes(1/9) Generation polynomials g(1)(D) = 1 + D2 + D3 g(2)(D) = 1 + D + D2 + D3 Gernerator matrix

Representation of Convolutional Codes(2/9) Impulse response encoder Register contents Branch Word V1 V2 1000 1 0100 0010 0001 Input u Branch Word 1 11 01 11 11 00 00 00 00 11 01 11 11 Module 11 01 00 01 10 00 11 Input seq : 1000 Output seq : 11, 01, 11, 11

Representation of Convolutional Codes(3/9) Connection pictorial

Representation of Convolutional Codes(4/9) Connection pictorial Input sequence : 1011 Output sequence : 11 01 00 01 10 00 11 Input sequence가 각 시간(t)에 대하여 하나씩 입력 입력된 Input bit를 flush 하기 위하여 K-1개의 0을 넣어준다. Output sequence는 impulse sequence의 선형 중첩이 된다.

Representation of Convolutional Codes(5/9) State representation of encoder K의 값이 커짐에 따라 상태의 수는 2K-1로 증가하게 된다. 큰 구속장을 가진 convolutional code에서는 표현이 어렵다. 시간의 변화에 대한 개념이 나타나지 않음

Representation of Convolutional Codes(6/9) Tree representation of encoder 시간에 대한 개념 포함. 구속장이 길어질수록 대역폭이 지수적으로 증가하여 상태의 표현이 힘들다. 가지의 오른쪽은 Input: 0을 나타내며 왼쪽 가지는 Input: 1을 나타낸다. branch의 수가 2L 의 함수로 증가한다.( L input bit수 )

Representation of Convolutional Codes(7/9) Tree representation of encoder Example Input sequence : 0, 1, 1, 0, … Output sequence : 00, 11, 10, 10, …

Representation of Convolutional Codes(8/9) Trellis Diagram 대역폭의 증가없이 부호의 tree를 간단하게 표현 각 시간 단위에서 trellis는 2K-1 의 possible encoder state들을 나타내기 위하여 2K-1의 node 존재 Trellis Depth가 구속장 K만큼 진행후 고정된 주기적 구조 형성. Trellis diagram은 계속해서 반복적인 구조 사용 가능.

Representation of Convolutional Codes(9/9) Trellis diagram : butterfly structure 각각의 state는 butterfly 구조를 가지고 있다.

Trellis Diagram(1/4) Example Generation polynomial G = ( 15, 17 ) Code rate R = ½ Constraint length K = 4 Input sequence

Trellis Diagram(2/4)

Trellis Diagram(3/4) 실선은 입력 bit가 0을 나타내며 점선은 입력 bit 1을 나타낸다

Trellis Diagram(4/4) Input sequence : 0, 1, 1, 0, 0, 1 … Output sequence : 00, 11, 10, 10, 00, 00, …

Catastrophic Code(1/2) # of decoding error bits -> => Catastrophic code ( undesirable code )

Catastrophic Code(1/2) Generator가 최소 1차의common polynomial factor를 가지면 catastrophic error 발생 noncatastrophic code의 조건 For ( n, 1, m ) code Generator polynomials Example: gcd (1 + D, 1 + D2 ) = 1 + D => Catastrophic code

Optimal Convolutional Code R= 1/2 Generator polynomials D free m G1 G2 G3 2 5 7 8 3 13 17 6 15 10 4 23 35 25 33 37 12 65 57 47 53 75 133 171 145 175 345 237 225 331 367 16 753 561 557 663 711 18 9 1167 1545 1117 1365 1633 20

Free Distance(1/3) Convolution encoder에서의 모든 0의 입력에 대한 출력 data path는 모두 all zero path이여야 한다. 만약 error의 발생경우 all zero path는 존재하지 않는다. Error이 최소일때의 path는 0이상의 hamming distance를 가지게 되는데 이때의 최소가 되는 거리를 최소 자유거리 또는 유클리디안 자유거리라 하며 dfree라 한다. 유클리디안 자유거리는 에러정정능력과 다음의 관계에 있다.

Free Distance(2/3) 유클리디안 자유거리를 구하기 위한 가정 유클리디안 자유거리의 측정 All-zero 열이 입력될때 시작과 끝의 상태가 0이고 그 사이의 상태는 0가 아니여야 한다. 유클리디안 자유거리의 측정 00 상태로 시작해서 다시 00 state로 돌아오는 path중 hamming distance를 구하여 최소가 되는 hamming distance를 구한다. 1) trellis diagram을 그린다. 2) 00 state로 시작해서 00 state로 되돌아오는 path를 모두 찾는다. 3) 2)에서 찾아진 모든 path들 간에 hamming distance를 계산하여 trellis diagram에 출력 부호열 대신 표기한다. 4) 각 path의 hamming distance의 합을 구한다. 5) hamming distance의 합이 최소인 path를 찾는다. 이 path의 hamming distance가 유클리디안 자유거리 dfree이다.

Free Distance(3/3) Example Information sequence : 0110000… Output sequence : 00 11 10 10 00 11 00…. Dfree = 2 + 1 + 1 + 0 + 2 = 6

Hard decision / Soft decision Q = 2 : Hard decision Q > 2 : Soft decision 이상적인 soft decision의 값은 무한대이다. 위에 그림은 Q = 8인 soft decision을 나타낸다.

Representation of soft decision data Offset-binary representation Sign-magnitude representation signal Hard decision data Offset-binary representation Sign-magnitude representation Most negative Least negative 1 000 111 001 110 010 101 011 100 Least positive Most positive

Application of Convolution Codes(1/2) Constraint length K = 5 (m = 4) (a) Generator polynomials : ( 23, 35 ) (b) dfree = 7 GSM system Constraint length K = 6 (m = 5) (a) Generator polynomials : ( 65, 57 ) (b) dfree = 8 (c) IS-54 american digital cellular system Constraint length K = 7 (m = 6) (a) Generator polynomials : ( 133, 171 ) (b) dfree = 10 Most satellite communication system

Application of Convolution Codes(1/2) Constraint length K = 9 (m = 8) (a) Generator polynomials : ( 753, 561 ) (b) dfree = 12 IS-95 CDMA system( forward channel ) (a) Generator polynomials : ( 557, 663, 711 ) (b) dfree = 18 IS-95 CDMA system( reverse channel )

Viterbi Decoder(1/2) Convolutional codes의 복호화 방법 Sequential decoding Code tree 에 서 정확한 경로를 찾아가는 시행 착오적인 방법 탐색상태의 수는 constraint length 와 무관 Sequential decoding, Fano algorithm, stack algorithm 탐색 되는 state metric수가 random 변수 잘못된 가정과 역방 탐색의 예상 수 채널 SNR 함수 계산량의 다양성을 때문에 도착되는 sequence 들을 저장하기 위해 buffer사용 Threshold decoding 낮은 부호 이득 가장 간단한 decoding hardware

Viterbi Decoder(2/2) Viterbi decoder 높은 부호 이득 높은 하드웨어의 복잡도 하드웨어 복잡도는 state의 수 ( 2K-1 ))에 비례한다. Error 확률은 constraint length에 지수적으로 감소 최대 우호 복호( Maximum Likelihood decoding ) 사용 최근 convolutional decoder로 가장 많이 사용. Soft decision decoding 사용 시 hard decision에 비하여 약 2dB의 추가적인 부호이득을 얻을 수 있다. => 약간의 복잡도 증가

Viterbi Decoder의 구조(1/7) Branch Metric Calculation(BMC) Path Metric Calculation Path Metric Memory Add-Compare-Select (ACS) Trace Back Memory Normalization

Viterbi Decoder의 구조(2/7) Branch Metric Calculation( BMC ) State의 수 : 2m Encoder 의 입력이 1이면 lower branch Encoder 의 입력이 0이면 upper branch Hard Decision Received sequence와 각각의 branch간의 codeword와의 hamming distance를 구하여 branch metric 값을 계산한다. Soft Decision 신호로 받은 soft decision data는 BMC로 입력 된다. 3bit soft decision의 경우 다음과 같이 표현된다. J1 = x1 x2 x3 J2 = y2 y1 y0 Branch Metric Value BM0(t) BM1(t) BM2(t) BM3(t) Encoded (vi(1) , vi(2) ) 00 01 10 11

Viterbi Decoder의 구조(3/7) 4개의 branch metric 값은 J1, J2값을 이용하여 다음과 같이 계산할 수 있다. 00 => BM0(t) = (2x – 1 – J2) + (2x –1 – J1) 01 => BM1(t) = (2x – 1 – J2) + J1 10 => BM2(t) = J2 + (2x –1 – J1) 11 => BM3(t) = J1 + J1 BM3(t) = 2x+1 – 2 - BM0(t), BM2(t) = 2x+1 – 2 - BM1(t) Example

Viterbi Decoder의 구조(4/7) ACS ( Add Compare Select ) 와 Path Metric Memory BMC(Branch Metric Calculate)에서 계산된 branch metric값과 현재상태의 Path metric 값을 이용하여 새로운 path metric 값을 계산한다. Path Metric의 개수 = state의 개수 = 2K-1 = 2m ( K : 구속장 ) K가 4인 convolutional encoder의 path metric 값은 다음과 같다. Path metric 개수 = 24-1 = 8 PM0(t), PM1(t), PM2(t), PM3(t), PM4(t), PM5(t), PM6(t), PM7(t)

Viterbi Decoder의 구조(5/7) PMi3(t) = Min{ PMi1(t-1) + BM1(t), PMi2(t-1) + BM2(t) } PMi4(t) = Min{ PMi1(t-1) + BM2(t), PMi2(t-1) + BM1(t) } PMi3(t) = Min{ PMi1(t-1) + BM0(t), PMi2(t-1) + BM3(t) } PMi4(t) = Min{ PMi1(t-1) + BM3(t), PMi2(t-1) + BM0(t) } 여기서 (i1, i2) , (j1, j2) => ( 2P, 2P+1 ) (i3, i4) , (j3, j4) => ( P, P+4 ) 단 ( K = 4 )

Viterbi Decoder의 구조(6/7) Normalization 현재 ACS의 출력으로 나온 Path metric값은 계속해서 Branch metric이 더해지므로 값이 증가하게 된다. 따라서 하드웨어적으로 Path Metric Memory의 크기의 증가를 가져오게 된다. 이를 방지하기 위하여 현재 상태의 전체 Path Metric값중 가장 작은 값을 찾아서 각각의 현재 상태의 Path Metric 값을 가장 작은 값으로 빼 줌으로서 가장 작은 metric 값이 0이 되게 한다.

Viterbi Decoder의 구조(7/7) TraceBack memory Trellis diagram에서 survivor path를 저장하고 Traceback 에 의하여 복호화된 비트를 찾아내는 역할을 하는 부분. Trellis diagram에서 현재 state값 중 가장 작은 값을 갖는 state를 초기값으로 하여 Traceback algorithm을 적용하여 원래 입력 정보와 확률이 가장 높은 값을 선택. ACS에서 이전 node 2p 가 생존하면 pointer 0을 저장, 2p + 1이 생존하면 pointer에 1을 저장한다. Traceback depth가 크면 BER의 성능이 좋아진다. 이상적인 traceback depth는 무한대 이지만 하드웨어 구현상 5~6배의 traceback depth 사용한다.

Viterbi Decoder - Example(1/16) Generation polynomial G = ( 15, 17 ) Code rate R = ½ Constraint length K = 4 Input sequence ( 011000 )

Viterbi Decoder - Example(2/16)

Viterbi Decoder - Example(3/16) 각각의 branch에 branch metric을 구하고 각각의 node마다 path metric을 구한다 Branch metric : 수신된 값과 각 branch에서의 천이 값과의 hamming distance를 구한다. Path metric : 전 단의 path metric + 각 branch에서의 branch metric을 구한다.

Viterbi Decoder - Example(4/16) t0-t1의 branch metric, path metric Received seq : 00 branch : S0-S0 : 00 => branch metric : 0 S0-S4 : 11 => branch metric : 2 Path metric : S0 : 0 + 0 = 0 S4 : 0 + 2 = 2 t1-t2의 branch metric, path metric Received seq : 11 S0-S0 : 00 => branch metric : 0

Viterbi Decoder - Example(5/16) Received sequence를 이용하여 branch를 구한다. T3에서의 path metric 값과 t3과 t4사이의 branch metric값을 더하여 t4에서의 path metric 값을 구한다. 각 stage마다 가장 작은 state를 찾아

Viterbi Decoder - Example(6/16) State(t=3) Branch BM PM+BM Survivor path State(t=4) S0 4 S0-S0 2 6 1 3 S0-S4 S1-S0 S1 S2-S1 S1-S4 5 S3-S1 S2 S4-S2 S2-S5 S5-S2 S3 S6-S3 S3-S5 S7-S3 S4 S4-S6 S5 S5-S6 S6 S6-S7 S7 S6-S1 S7-S7

Viterbi Decoder - Example(7/16)

Viterbi Decoder - Example(8/16) State(t=4) Branch BM PM+BM Survivor path State(t=5) S0 3 S0-S0 1 4 2 S0-S4 S1-S0 S1 S2-S1 S1-S4 S3-S1 S2 S4-S2 S2-S5 S5-S2 5 S3 S6-S3 S3-S5 S7-S3 S4 S4-S6 6 S5 S5-S6 S6 S6-S7 S7 S6-S1 S7-S7

Viterbi Decoder - Example(9/16)

Viterbi Decoder - Example(10/16) State(t=5) Branch BM PM+BM Survivor path State(t=6) S0 2 S0-S0 S0-S4 4 S1-S0 5 S1 3 S2-S1 6 1 S1-S4 S3-S1 S2 S4-S2 S2-S5 S5-S2 S3 S6-S3 S3-S5 S7-S3 S4 S4-S6 S5 S5-S6 S6 S6-S7 S7 S6-S1 S7-S7

Viterbi Decoder - Example(11/16)

Viterbi Decoder - Example(12/16) State(t=6) Branch BM PM+BM Survivor path State(t=7) S0 2 S0-S0 4 1 S0-S4 S1-S0 S1 S2-S1 3 S1-S4 S3-S1 6 S2 S4-S2 S2-S5 5 S5-S2 S3 S6-S3 S3-S5 S7-S3 S4 S4-S6 S5 S5-S6 S6 S6-S7 S7 S6-S1 S7-S7

Viterbi Decoder - Example(13/16)

Viterbi Decoder - Example(14/16) State(t=7) Branch BM PM+BM Survivor path State(t=8) S0 2 S0-S0 S0-S4 4 S1-S0 5 S1 3 S2-S1 6 1 S1-S4 S3-S1 S2 S4-S2 S2-S5 S5-S2 S3 S6-S3 S3-S5 S7-S3 S4 S4-S6 S5 S5-S6 S6 S6-S7 S7 S6-S1 S7-S7

Viterbi Decoder - Example(15/16) 위의 그림에서 최종 stage에서 가장 작은 값을 찾아 초기state로 정하고 traceback 과정을 진행한다. 위의 그림에서 최종 stage에서의 가장 작은 metric값은 2이며 이때의 값에 대하여 Traceback 하여 복호 과정을 수행한다.

Viterbi Decoder - Example(16/16) Input sequence Decoding data Traceback memory안에 저장되어있는 값을 이용하여 최종 decoding data를 구할 수 있다. 0 1 1 1 0 0 0 0 00 11 10 11 01 00 11 00 t8 t7 t6 t5 t4 t3 t2 t1 t0 1 S7 S5 S3 S1 S6 S4 S2 S0 Lowest state

Convolutional Encoder 설계 Example Generation polynomial G = ( 15, 17 ) Code rate R = ½ Constraint length K = 4 Input sequence ( 011000 )

Convolutional Encoder 설계 - parameter /******************************************************************************************/ // MODULE : Parameter // // FILE NAME: parameter.v // VERSION: 1.0 // DATE: FAB 2, 2004 // AUTHOR: DONG KI CHOI // Description: This file defines a parameter. // defines simulation period `define FULL 20 `define HALF 10 `define PERIOD `FULL // defines delay `define DEL 1 // define parmeter `define CONS_K 4 `define DATA_WIDTH 4 `define BUS_WIDTH 16

Convolutional Encoder 설계 – D-F.F(1/2) /******************************************************************************************/ // MODULE : D-type flip flop // // FILE NAME: dff_n.v // VERSION: 1.0 // DATE: JAN 14, 2004 // AUTHOR: DONG KI CHOI // Description: This module defines a D-type flip flop. // reset is active-low `include "parameter.v" module dff_n( clk, rst_n, d, q ); // parameter parameter CARDINALITY = 1;

Convolutional Encoder 설계 – D-F.F(2/2) // input data input clk; input rst_n; input [CARDINALITY-1:0] d; // output data output [CARDINALITY-1:0] q; reg [CARDINALITY-1:0] q; wire [CARDINALITY-1:0] d; // main code always @(posedge clk or negedge rst_n) begin if ( ~rst_n ) q <= 0; else q <= d; end endmodule

Convolutional Encoder 설계 – Convolutional encoder(1/2) /******************************************************************************************/ // MODULE : Convolution encoder // // FILE NAME: convol.v // VERSION: 1.0 // DATE: JAN 14, 2004 // AUTHOR: DONG KI CHOI // CODE TYPE: RTL Level // Description: This module defines a Convolution encoder. // K = 4, generation polynomial = (13,17), bit rate = 1/2 `include "parameter.v" module convol( clk, rst_n, data_in, data_out ); // input data input clk; input rst_n; input data_in;

Convolutional Encoder 설계 – Convolutional encoder(2/2) // output data output [1:0] data_out; wire [`CONS_K-1:0] poly_a; // poly a = 13 wire [`CONS_K-1:0] poly_b; // poly b = 17 wire [`CONS_K-1:0] wa; wire [`CONS_K-1:0] wb; wire [0:`CONS_K-1] sh_reg; // main code assign poly_a = 4'b1011; assign poly_b = 4'b1111; dff_n df0( clk , rst_n, data_in, sh_reg[0] ); dff_n df1( clk , rst_n, sh_reg[0], sh_reg[1] ); dff_n df2( clk , rst_n, sh_reg[1], sh_reg[2] ); dff_n df3( clk , rst_n, sh_reg[2], sh_reg[3] ); assign wa = poly_a & sh_reg[0:`CONS_K-1]; assign wb = poly_b & sh_reg[0:`CONS_K-1]; assign data_out[0] = wa[3]^wa[2]^wa[1]^wa[0]; assign data_out[1] = wb[3]^wb[2]^wb[1]^wb[0]; endmodule

Convolutional Encoder 설계 – testbench(1/2) /******************************************************************************************/ // MODULE : test bench-convolution encoder // // FILE NAME: test_conv.v // VERSION: 1.0 // DATE: JAN 14, 2004 // AUTHOR: DONG KI CHOI // CODE TYPE: Behavioral Level // Description: This module defines a test bench convolution encoder. `include "parameter.v" module test_conv(); reg rst_n; reg data_in; reg clk; wire [1:0] data_out; // main code convol conv ( .clk(clk), .rst_n(rst_n), .data_in(data_in), .data_out(data_out) ); always #(`PERIOD/2) clk <= ~clk; initial begin

Convolutional Encoder 설계 – testbench(2/2) clk <= 0; rst_n <= 1; #10; rst_n <= 0; #10; rst_n <= 1; data_in <= 0; #`PERIOD; data_in <= 1; #`PERIOD; $stop; end endmodule

참고문헌 [1] 이문호, 김순영,“오류 정정 이론: 터보코드의 원리와 응용”, 도서출판 영일, 2001.3 [2] 이문호,” 갈루이스필드,리드솔로몬,비터비,터보부호기설계”, 도서출판 영일, 2003.1 [3] Rorabaugh, C.Britton,”Error Coding Cookbook:practical C/C++ routines and recipes for error detection and correction”,McGraw Hill.1995