KR20030022602A - 메모리 어드레스 생성기 - Google Patents

메모리 어드레스 생성기 Download PDF

Info

Publication number
KR20030022602A
KR20030022602A KR1020010055940A KR20010055940A KR20030022602A KR 20030022602 A KR20030022602 A KR 20030022602A KR 1020010055940 A KR1020010055940 A KR 1020010055940A KR 20010055940 A KR20010055940 A KR 20010055940A KR 20030022602 A KR20030022602 A KR 20030022602A
Authority
KR
South Korea
Prior art keywords
value
data
counter
column
output value
Prior art date
Application number
KR1020010055940A
Other languages
English (en)
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 KR1020010055940A priority Critical patent/KR20030022602A/ko
Publication of KR20030022602A publication Critical patent/KR20030022602A/ko

Links

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/27Coding, 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 using interleaving techniques
    • H03M13/276Interleaving address generation
    • H03M13/2764Circuits therefore
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2782Interleaver implementations, which reduce the amount of required interleaving memory

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 발명은 메모리 어드레스 생성기에 관한 것으로 특히, 인터리버/디인터리버의 내부 메모리를 제거하기 위하여 외부 메모리를 구비하고 가상의 인터리버/디인터리버의 내부 메모리 즉, 매트릭스에 데이터가 완전히 채워지지 않은 경우에도 데이터를 액세스하여 정상적으로 인터리빙/디인터리빙이 가능하도록 어드레스를 생성시키도록 함을 목적으로 한다. 이러한 목적의 본 발명은 데이터를 쓰고 읽기 위한 외부 메모리와, 이 외부 메모리에 데이터를 쓰고 읽기 위해 어드레스 및 데이터 위치값을 발생시키는 메모리 어드레스 발생 회로와, 로(row)와 컬럼(column)으로 구성되어 로/컬럼 방향으로 데이터 쓰기 및 컬럼/로 방향으로 데이터 읽기가 수행되는 매트릭스에 데이터가 모두 채워지지 않는 경우에도 인터리빙/디인터리빙이 정상적으로 이루어지도록 상기 어드레스 발생 회로에서의 데이터 위치값에 따라 상기 외부 메모리와 데이터를 입출력하는 데이터 버퍼를 구비하여 구성한다.

Description

메모리 어드레스 생성기{MEMORY ADDRESS GENERATOR}
본 발명은 인터리버/디인터리버에 관한 것으로 특히, IMT-2000 규격의 인터리버/디인터리버에 있어서 메모리 어드레스 생성기에 관한 것이다.
종래의 인터리버/디인터리버는 내부 메모리와, 이 내부 메모리를 액세스하기 위한 어드레스 생성기로 구성된다.
이러한 종래의 인터리버는 내부 메모리 즉, 인터리버 매트릭스에 데이터를 row by row 방식으로 쓰고 column by column 방식으로 읽거나 또는 column by column 방식으로 쓰고 row by row 방식으로 읽는다.
예를 들어, 데이터를 row by row 방식으로 쓰고 column by column 방식으로 읽는 경우는 도1(a)의 예시도와 같이 동작하여 데이터를 인터리빙한다.
또한, 디인터리빙 동작은 인터리빙과 반대로 동작한다.
즉, 디인터리버는 인터리버에서 데이터를 row by row 방식으로 쓰고 column by column 방식으로 읽는다면 그 반대의 동작으로서 도1(b)와 같이 데이터를 column by column 방식으로 쓰고 row by row 방식으로 읽어 디인터리빙한다.
그러나, 종래에는 인터리버/디인터리버 매트릭스에 데이터를 모두 채워서 인터리빙/디인터리빙을 수행하여야 하며 만일, 데이터를 모두 채우지 않은 상태에서 인터리빙/디인터리빙을 수행하는 경우 쓸모없는 데이터가 인터리빙/디인터리빙되어 인터리버/디인터리버의 전후에 있는 다른 부분에 치명적인 영향을 줄 수 있는 문제점이 있다.
따라서, 본 발명은 외부 메모리에서 매트릭스로, 또는 매트릭스에서 외부 메모리로의 데이터 재배열이 가능하도록 어드레스를 생성시켜 인터리빙/디인터리빙을 수행하도록 하였으며, 종래의 문제점을 개선하기 위하여 매트릭스가 채워지지 않은 경우에도 데이터를 액세스하여 정상적으로 인터리빙/디인터리빙이 가능하도록 어드레스를 생성시키도록 창안한 메모리 어드레스 생성기를 제공함에 목적이 있다.
도1은 종래의 인터리버/디인터리버의 동작을 보인 예시도.
도2는 본 발명의 실시예를 위한 메모리 어드레스 생성기의 블럭도.
도3은 도2에서 메모리 어드레스 발생 회로를 인터리버에 적용한 상세 블럭도.
도4는 도2에서 메모리 어드레스 발생 회로를 디인터리버에 적용한 상세 블럭도.
도5는 도4에서 prune value 발생기의 상세 블럭도.
* 도면의 주요부분에 대한 부호 설명 *
210 : 메모리 어드레스 발생 회로220 : 데이터 버퍼
230 : 외부 메모리310, 450 : 로 카운터
320, 420 : 곱셈기330, 430, 510 : 컬럼 카운터
340, 540 : 패턴 발생기350∼370, 470, 480 : 가산기
380, 580 : prune value 410 : 역패턴 발생기
440 : prune value 발생기 460 : 가감승 연산기
520 : prune 카운터 530, 570 : 플립플롭
550 : 연산기 560 : 레지스터
본 발명은 상기의 목적을 달성하기 위하여 인터리버/디인터리버에 있어서, 데이터를 쓰고 읽기 위한 외부의 메모리와, 이 외부의 메모리에 데이터를 쓰고 읽기 위해 어드레스를 발생시켜 로(row)와 컬럼(column)으로 구성되어 로/컬럼 방향으로 데이터 쓰기 및 컬럼/로 방향으로 데이터 읽기가 수행되는 매트릭스에 데이터가 모두 채워지지 않는 경우에도 인터리빙/디인터리빙이 정상적으로 이루어지도록 메모리 어드레스 발생 회로를 구비하여 구성함을 특징으로 한다.
상기 메모리 어드레스 발생 회로는 1개의 어드레스마다 1워드 단위의 데이터가 쓰여지거나 읽혀지도록 어드레스를 생성하도록 구성한다.
상기 메모리 어드레스 발생 회로는 현재 행(row)의 위치를 '0'부터 (행의 개수-1)까지 카운트하는 로 카운터와, 이 로 카운터에서 1싸이클 동작이 끝날 때마다 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터와, 이 컬럼 카운터의 계수값에 따라 지정된 패턴값(inter-column permutation pattern)을출력하는 패턴 발생기와, 컬럼 개수와 상기 로 카운터의 계수값을 곱하는 곱셈기와, 이 곱셈기의 출력값과 상기 패턴 발생기의 출력값을 합산하는 제1 가산기와, 비트 데이터와 입력 오프셋을 합산하는 제2 가산기와, 상기 제1,제2 가산기의 출력값을 합산하여 메모리 어드레스 및 데이터 위치값을 출력하는 제3 가산기를 구비하여 인터리버에 적용하도록 구성함을 특징으로 한다.
또한, 상기 메모리 어드레스 발생 회로는 현재 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터와, 이 컬럼 카운터에서 1싸이클 동작이 끝날 때마다 행(row)의 위치를 '0'부터 (행의 개수-1)까지 카운트하는 로 카운터와, 상기 컬럼 카운터의 계수값에 따라 지정된 역패턴값(inverse inter-column permutation pattern)을 출력하는 역패턴 발생기와, 상기 컬럼 카운터의 계수값에 따라 외부 메모리의 pruned value를 출력하는 prune value 발생기와, 로 개수와 상기 역패턴 발생기의 출력값을 곱하는 곱셈기와, 이 곱셈기의 출력값과 상기 로 카운터의 출력값을 합산한 후 상기 prune value 발생기의 출력값을 감산하여 심볼 비트값을 곱하는 가감승 연산기와, 비트 데이터와 입력 오프셋을 합산하는 제4 가산기와, 이 제1 가산기의 출력값과 상기 가감승 연산기의 출력값을 합산하여 메모리 어드레스 및 데이터 위치값을 출력하는 제5 가산기를 구비하여 디인터리버에 적용하도록 구성함을 특징으로 한다.
상기 prune value 발생기는 현재 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터와, 이 컬럼 카운터의 출력을 래치하는 플립플롭과, prune을 카운트하는 prune 카운터와, 이 prune 카운터의 출력값을 래치하는 플립플롭과,상기 prune 카운터의 출력값에 따라 지정된 패턴값(inter-column permutation pattern)을 출력하는 패턴 발생기와, 이 패턴 발생기의 출력값이 컬럼 개수에서 prune value를 감산한 값 이상이면 현재 출력값을 '1'증가시키고 그렇지 않으면 현재 출력값을 유지하는 연산기와, 상기 플립플롭의 출력값에 의해 상기 연산기의 출력값을 저장하고 상기 컬럼 카운터의 1클럭 지연 출력값에 의해 출력하는 레지스터로 구성함을 특징으로 한다.
이하, 본 발명을 도면에 의거 상세히 설명하면 다음과 같다.
도2는 본 발명의 실시예를 위한 메모리 어드레스 생성기의 블럭도로서 이에 도시한 바와 같이, 데이터를 쓰고 읽기 위한 외부 메모리(230)와, 이 외부 메모리(230)에 데이터를 쓰고 읽기 위해 어드레스 및 데이터 위치값을 발생시키는 메모리 어드레스 발생 회로(210)와, 로(row)와 컬럼(column)으로 구성되어 로/컬럼 방향으로 데이터 쓰기 및 컬럼/로 방향으로 데이터 읽기가 수행되는 매트릭스에 데이터가 모두 채워지지 않는 경우에도 인터리빙/디인터리빙이 정상적으로 이루어지도록 상기 어드레스 생성 회로(210)에서의 데이터 위치값에 따라 상기 외부 메모리(230)와의 데이터 입출력을 수행하는 데이터 버퍼(220)를 구비하여 구성한다.
상기 외부 메모리(230)의 데이터는 1개의 어드레스에 대해 1워드 단위로 입/출력된다.
상기 데이터 버퍼(220)는 정해진 행(row)과 열(column)로 구성된 매트릭스에 맞도록 메모리(230)에서의 데이터를 row by row 방식으로 배열하여 인터리빙/디인터리빙을 수행하고 지정된 패턴값(inter-column permutation)에 의해 인터리빙/디인터리빙이 수행된 데이터는 정해진 순서에 따라 배열하여 column by column 방식으로 메모리(230)에 출력된다.
그런데, 본 발명은 인터리버/디인터리버 내부에 매트릭스를 갖고 있지 않기 때문에 inter-column permutation 인터리빙/디인터리빙을 직접 수행하기 위하여 메모리 어드레스 발생 회로(210)를 구비하게 된다.
상기 메모리 어드레스 발생 회로(210)는 인터리버와 디인터리버에 적용함에 있어서 구성상의 차이를 가진다.
우선, 본 발명의 일실시예로서 인터리버에 적용하는 경우의 메모리 어드레스 발생 회로(210)는 도3의 블럭도에 도시한 바와 같이, 현재 행(row)의 위치를 '0'부터 (행의 개수-1)까지 카운트하는 로 카운터(310)와, 이 로 카운터(310)에서 1싸이클 동작이 끝날 때마다 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터(330)와, 상기 컬럼 카운터(330)의 계수값에 따라 지정된 패턴값(inter-column permutation pattern)을 출력하는 패턴 발생기(340)와, 컬럼 개수와 상기 로 카운터(310)의 계수값을 곱하는 곱셈기(320)와, 이 곱셈기(320)의 출력값과 상기 패턴 발생기(340)의 출력값을 합산하는 가산기(350)와, 비트 데이터()와 입력 오프셋(OFFSET)을 합산하는 가산기(360)와, 상기 가산기(350)(360)의 출력값을 합산하여 메모리 어드레스 및 데이터 위치값을 출력하는 가산기(370)를 구비하여 구성한다.
도면 미설명 부호 '380'은 도4에 구비된 prune value 발생기(440)로부터 입력되어 로 카운터(310) 및 컬럼 카운터(330)로 입력되는 prune value이다.
이와같이 구성한 본 발명의 일실시예에 대한 동작 및 작용 효과를 설명하면 다음과 같다.
도3에서 컬럼 개수(column number)는 열의 개수를 나타내고 로 카운터(row counter)는 현재 행의 위치를 나타낸다.
상기 로 카운터(row counter)(310)는 '0'부터 (행의 개수-1)까지 카운트하여 현재 행(row)의 위치를 나타내는 계수값을 곱셈기(320)로 출력한다.
상기 컬럼 카운터(column counter)(330)는 '0'부터 (열의 개수-1)까지 카운트하여 열(column)의 개수를 나타내는 계수값을 패턴 발생기(340)로 출력함에 있어서 상기 로 카운터(310)가 1싸이클 동작이 끝날 때마다 계수값을 '1'씩 증가시키게 된다.
상기 패턴 발생기(340)는 컬럼 카운터(330)의 출력값에 따라 지정된 패턴값(inter-column permutation pattern)을 가산기(350)로 출력한다.
상기 곱셈기(320)는 컬럼 개수(열의 개수)와 로 카운터(310)의 출력값을 곱하여 그 곱셈값을 가산기(350)로 출력한다.
상기 가산기(350)는 곱셈기(320)의 출력값과 패턴 발생기(340)의 출력값을 합산하여 가산기(370)로 출력한다.
상기 가산기(360)는 w비트 데이터()와 입력 오프셋(OFFSET)을 합산하여 가산기(370)로 출력한다.
여기서,는 시작 어드레스(SA ; source address)에 비트값(w)을 곱한 값으로서, w는 1워드의 비트수이고 시작 어드레스(SA)는 인터리빙할 메모리의 데이터들중 첫번째 어드레스를 뜻한다.
그리고, 입력 오프셋(OFFSET)은 w비트 데이터중 유효한 데이터의 시작을 나타내는 값이다.
따라서, 상기 가산기(370)는 가산기(350)(360)의 출력값을 합하여 메모리 어드레스() 및 데이터 위치값()을 출력하게 된다.
여기서, s는 1 심볼의 비트수이며 w는 s의 정수배이어야 한다.
상기 메모리 어드레스()는 외부 메모리(230)에서 읽어와야 할 데이터의 어드레스를 지시하고 데이터 위치값()은 메모리 어드레스에 해당하는 읽혀진 데이터에서 인터리빙되어야 할 심볼의 위치를 지시한다.
상기와 같은 동작에서 열(column) 개수를 '4'라 가정할 때 패턴값(inter-column permutation pattern)이 {0,1,2,3}이면 column0, column1, column2, column3의 순서로 인터리빙 데이터가 출력되고 패턴값이 {0,2,1,3}이면 column0, column2, column1, column3의 순서로 인터리빙 데이터가 출력됨을 의미한다.
그런데, 인터리빙되어야 할 모든 데이터의 개수는 인터리버 매트릭스에 꼭 맞는 숫자가 아닐 수 있기 때문에 매트릭스의 마지막 행은 데이터가 완전히 채워지지 않고 비워지는 부분이 발생하게 된다.
이렇게 채워지지 않는 부분의 개수를 나타내는 값이 prune value이다.
prune value의 범위는 '0'부터 (열의 개수-1)이다.
이 prune value에 의해서 로 카운터(310)의 출력값의 범위가 변경된다. 즉, 마지막 행에는 인터리빙해야할 데이터가 없기 때문에 이 부분에서는 로 카운터(310)가 (행의 개수-2)까지만 카운터한다.
이는 매트릭스에 채워지지 않는 부분의 유효하지 않은 데이터가 인터리빙되는 것을 방지하기 위해서 필요하다.
상기의 동작을 수행하는 도3을 식으로 표현하면 다음과 같다.
여기서, w는 1워드의 비트수이고 s는 1심볼의 비트수이며 P는 패턴값(inter-column permutation pattern)을 나타낸다.
또한, 본 발명의 다른 실시예로서 디인터리버에 적용하는 경우의 메모리 어드레스 발생 회로는 도4의 블럭도에 도시한 바와 같이, 현재 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터(430)와, 이 컬럼 카운터(430)에서 1싸이클 동작이 끝날 때마다 행(row)의 위치를 '0'부터 (행의 개수-1)까지 카운트하는 로 카운터(450)와, 상기 컬럼 카운터(430)의 계수값에 따라 지정된 역패턴값(inter-column permutation inverse pattern)을 출력하는 역패턴 발생기(410)와, 상기 컬럼 카운터(430)의 계수값에 따라 외부 메모리(230)의 pruned value를 출력하는 prune value 발생기(440)와, 로 개수와 상기 역패턴 발생기(410)의 출력값을 곱하는 곱셈기(420)와, 이 곱셈기(420)의 출력값과 상기 로 카운터(450)의 출력값을 합산한 후 상기 prune value 발생기(440)의 출력값을 감산하여 심볼 비트값(s)을 곱하는 가감승 연산기(460)와, 비트 데이터()와 입력 오프셋(OFFSET)을 합산하는 가산기(470)와, 이 가산기(470)의 출력값과 상기 가감승 연산기(460)의 출력값을 합산하여 메모리 어드레스 및 데이터 위치값을 출력하는 가산기(480)를 구비하여 구성한다.
이와같이 구성한 본 발명의 다른 실시예에 대한 동작 및 작용 효과를 설명하면 다음과 같다.
상기 컬럼 카운터(column counter)(430)는 '0'부터 (열의 개수-1)까지 카운트하여 현재 열(column)의 개수를 역패턴 발생기(410), prune value 발생기(440) 및 로 카운터(450)로 출력한다.
상기 로 카운터(row counter)(450)는 '0'부터 (행의 개수-1)까지 카운트하여 가감승 연산기(460)로 출력하는데, 상기 컬럼 카운터(430)에서 1싸이클 동작이 끝날 때마다 계수값을 '1'씩 증가시키게 된다.
상기 역패턴 발생기(410)는 컬럼 카운터(430)의 출력값에 따라 지정된 역패턴값(inter-column permutation inverse pattern)을 곱셈기(420)로 출력한다.
상기 곱셈기(420)는 행의 개수(row 개수)와 역패턴 발생기(410)의 출력값을 곱하여 그 곱셈값을 가감승 연산기(460)로 출력한다.
상기 가산기(470)는 w비트 데이터()와 입력 오프셋(OFFSET)을 합산하여 가산기(480)로 출력한다.
여기서,는 시작 어드레스(SA ; source address)에 w를 곱한 값으로서, w는 1워드의 비트수이고 시작 어드레스(SA)는 디인터리빙할 메모리의 데이터들 중 첫번째 어드레스를 뜻한다.
그리고, 입력 오프셋(OFFSET)은 w비트 데이터중 유효한 데이터의 시작을 나타내는 값이다.
상기 가감승 연산기(460)는 곱셈기(420)의 결과값(A)과 로 카운터(450)의 계수값(C)을 합하고 그 합으로부터 prune value 발생기(440)의 출력값(B)을 뺀 후에 심볼값(s)을 곱하여 가산기(480)로 출력한다.
여기서, 심볼값(s)을 곱하는 이유는 디인터리버가 s비트 1심볼로 동작하기 때문이다.
따라서, 상기 가산기(480)는 가감승 연산기(460)와 가산기(470)의 출력값을 합하여 메모리 어드레스() 및 데이터 위치값()을 출력하게 된다.
여기서, w는 1워드의 비트수이고 s는 1심볼의 비트수로서 w는 s의 정수배이다.
상기의 동작을 수행하는 도4를 식으로 표현하면 다음과 같다.
여기서, IP는 inverse inter-column permutation pattern을 나타내며 PRUNED는 prune value 발생기(440)의 출력값을 나타낸다.
그리고, 상기 디인터리버에 적용한 메모리 어드레스 발생 회로(210)에서 상기 prune value 발생기(440)는 도5의 블럭도에 도시한 바와 같이, 현재 열(column)의위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터(510)와, 이 컬럼 카운터(510)의 출력값을 래치하여 1클럭 지연시키는 플립플롭(570)과, prune value를 카운트하는 prune 카운터(520)와, 이 prune 카운터(520)의 출력값을 래치하여 1클럭 지연시키는 플립플롭(530)과, 상기 prune 카운터(520)의 출력값에 따라 지정된 패턴값(inverse inter-column permutation pattern)을 출력하는 패턴 발생기(540)와, 이 패턴 발생기(540)의 출력값이 컬럼 개수에서 prune value(580)를 감산한 값 이상이면 현재 출력값을 '1'증가시키고 그렇지 않으면 현재 출력값을 유지하는 연산기(550)와, 상기 플립플롭(530)의 출력값에 의해 패턴 발생기(540)의 출력값이 지시하는 위치에 상기 연산기(550)의 출력값을 저장하고 이 저장된 값을 상기 플립플롭(570)의 출력값에 의해 출력하는 레지스터(560)로 구성한다.
따라서, 상기와 같이 구성한 prune value 발생기(440)에 대한 동작 및 작용 효과를 설명하면 다음과 같다.
데이터 버퍼(220)에서 인터리빙된 데이터가 메모리(230)에 쓰여질 때 모두 채워지지 않는 상태(prune)가 발생되면 prune이 존재하는 열의 마지막 행에는 유효한 데이터가 없기 때문에 다음에 인터리빙되는 열의 첫번째 데이터의 위치는 prune이 없는 경우와 비교하면 1심볼에 해당되는 위치만큼 앞으로 이동하게 된다.
따라서, 이러한 위치 변화를 보상하기 위해 prune value 발생기(440)가 필요하다.
우선, 컬럼 카운터(510)는 '0'부터 (열의 개수-1)까지 순차적으로 '1'씩 증가시켜 플립플롭(570)으로 출력하고 상기 플립플롭(570)은 컬럼 카운터(510)의 출력값을 1클럭 지연시켜 레지스터(560)로 출력하며 prune 카운터(520)는 prune value(580)를'0'부터 (열의 개수-1) 범위에서 계수하여 플립플롭(530) 및 패턴 발생기(540)로 출력한다.
이때, 컬럼 카운터(510)은 컬럼 카운터(430)과 동일하다.
상기 플립플롭(530)은 prune 카운터(520)의 출력값을 1클럭 지연하여 레지스터(560)로 출력한다.
상기 패턴 발생기(540)는 prune 카운터(520)의 출력값에 따라 지정된 패턴값을 연산기(550) 및 레지스터(560)로 출력한다.
상기 연산기(550)는연산을 수행하고 그 결과값을 레지스터(560)로 출력한다. 여기서, X는 컬럼 개수, Y는 PRUNE VALUE이다.
즉, 연산기(550)는를 만족하면 출력값(Z)을 '1'만큼 증가시키고 그렇지 않으면 현재의 출력값(Z)을 유지한다.
따라서, 상기 레지스터(560)에는 플립플롭(530)에서 1클럭 지연된 계수값에 의해만큼 연산기(550)의 출력값이 저장되고 이 저장된 결과값은 컬럼 카운터(510)의 1클럭 지연된 플립플롭(570)의 출력값에 의해 출력된다.
상기에서 상세히 설명한 바와 같이 본 발명은 내부 메모리없이 외부 메모리를 사용하여 인터리버/디인터리버를 동작시키기 위한 어드레스를 생성하기에 적합하고 아울러 내부 메모리가 없기 때문에 인터리버/디인터리버의 크기를 줄일 수 있는 효과가 있다.
또한, 본 발명은 인터리버/디인터리버 매트릭스에 데이터가 모두 채워지지 않을 경우(prune)에도 정상적인 인터리빙/디인터리빙 데이터를 얻을 수 있는 효과가 있다.

Claims (8)

  1. 인터리버/디인터리버에 있어서, 데이터를 쓰고 읽기 위한 외부의 메모리와, 이 외부의 메모리로부터의 데이터를 매트릭스에 맞게 재배열하여 패턴값(inter-column permutation pattern)에 의해 인터리빙/디인터리빙을 수행하고 그 인터리빙/디인터리빙된 데이터를 메트릭스에 맞게 재배열하여 상기 메모리에 출력하는 데이터 버퍼와, 로(row) 위치 및 컬럼(column) 개수를 계수하면서 유효 어드레스의 시작을 나타내는 오프셋(OFFSET)을 참조하여 읽어야 할 데이터의 어드레스를 상기 메모리로 출력함과 아울러 상기 어드레스에 해당하는 읽혀진 데이터에서 인터리빙/디인터리빙할 심볼의 위치를 상기 데이터 버퍼에 출력하는 메모리 어드레스 발생 회로를 구비하여 구성함을 특징으로 하는 메모리 어드레스 생성기.
  2. 제1항에 있어서, 메모리 어드레스 발생 회로는 1개의 어드레스마다 1워드 단위의 데이터를 쓰고 읽도록 메모리 어드레스를 발생시키도록 구성함을 특징으로 하는 메모리 어드레스 생성기.
  3. 제1항에 있어서, 메모리 어드레스 발생 회로는 현재 행(row)의 위치를 '0'부터 (행의 개수-1)까지 카운트하는 로 카운터와, 현재 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터와, 상기 컬럼 카운터의 계수값에 따라 지정된 패턴값(inter-column permutation pattern)을 출력하는 패턴 발생기와, 상기 컬럼카운터의 계수값과 상기 로 카운터의 계수값을 곱하는 곱셈기와, 이 곱셈기의 출력값과 상기 패턴 발생기의 출력값을 합산하는 제1 가산기와, 비트 데이터와 유효 데이터의 시작을 나타내는 입력 오프셋을 합산하는 제2 가산기와, 상기 제1,제2 가산기의 출력값을 합산하여 외부 메모리에서 데이터를 읽을 어드레스 및 그 읽은 데이터중 인터리빙할 데이터의 심볼 위치값을 출력하는 제3 가산기를 구비하여 인터리버에 적용하도록 구성함을 특징으로 하는 메모리 어드레스 생성기.
  4. 제3항에 있어서, 컬럼 카운터는 로 카운터의 동작이 1싸이클 끝날 때마다 계수값을 '1'씩 증가시키도록 구성함을 특징으로 하는 메모리 어드레스 생성기.
  5. 제3항에 있어서, 로 카운터는 매트릭스의 채워지지 않는 부분의 개수(prune value)에 의해 계수 범위를 변경하도록 구성함을 특징으로 하는 메모리 어드레스 생성기.
  6. 제1항에 있어서, 메모리 어드레스 발생 회로는 현재 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터와, 현재 행(row)의 위치를 '0'부터 (행의 개수-1)까지 카운트하는 로 카운터와, 상기 컬럼 카운터의 계수값에 따라 지정된 역패턴값(inverse inter-column permutation pattern)을 출력하는 역패턴 발생기와, 상기 컬럼 카운터의 계수값에 따라 외부 메모리의 pruned value를 출력하는 prune value 발생기와, 로 개수와 상기 역패턴 발생기의 출력값을 곱하는 곱셈기와, 이 곱셈기의 출력값과 상기 로 카운터의 출력값을 합산한 후 상기 prune value발생기의 출력값을 감산하여 심볼 비트값을 곱하는 가감승 연산기와, 비트 데이터와 그 비트 데이터중 유효 데이터의 시작 위치를 나타내는 입력 오프셋을 합산하는 제4 가산기와, 이 제4 가산기의 출력값과 상기 가감승 연산기의 출력값을 합산하여 외부 메모리에서 데이터를 읽을 어드레스 및 그 읽은 데이터중 인터리빙할 데이터의 심볼 위치값을 출력하는 제5 가산기를 구비하여 디인터리버에 적용하도록 구성함을 특징으로 하는 메모리 어드레스 생성기.
  7. 제6항에 있어서, 로 카운터는 컬럼 카운터에서 1싸이클 동작이 끝날 때마다 '1'씩 증가시키도록 구성함을 특징으로 하는 메모리 어드레스 생성기.
  8. 제6항에 있어서, prune value 발생기는 현재 열(column)의 위치를 '0'부터 (열의 개수-1)까지 카운트하는 컬럼 카운터와, 이 컬럼 카운터의 출력값을 1클럭 지연시키는 제1 플립플롭과, prune value를 카운트하는 prune 카운터와, 이 prune 카운터의 출력값을 1클럭 지연하는 제2 플립플롭과, 상기 prune 카운터의 출력값에 따라 지정된 패턴값(inter-column permutation pattern)을 출력하는 패턴 발생기와, 이 패턴 발생기의 출력값이 컬럼 개수에서 prune value를 감산한 값 이상이면 현재 출력값을 '1'증가시키고 그렇지 않으면 출력값을 유지시키는 연산기와, 상기 카운터의 출력값을 1클럭 지연시키는 상기 제2 플립플롭의 출력값에 의해 상기 패턴 발생기의 출력값이 지시하는 위치에 상기 연산기의 출력값을 저장하고 이 저장된 값을 상기 컬럼 카운터의 출력값을 1클럭 지연시키는 제1 플립플롭의 출력값에 의해 출력하는 레지스터로 구성함을 특징으로 하는 메모리 어드레스 생성기.
KR1020010055940A 2001-09-11 2001-09-11 메모리 어드레스 생성기 KR20030022602A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010055940A KR20030022602A (ko) 2001-09-11 2001-09-11 메모리 어드레스 생성기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010055940A KR20030022602A (ko) 2001-09-11 2001-09-11 메모리 어드레스 생성기

Publications (1)

Publication Number Publication Date
KR20030022602A true KR20030022602A (ko) 2003-03-17

Family

ID=27723564

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010055940A KR20030022602A (ko) 2001-09-11 2001-09-11 메모리 어드레스 생성기

Country Status (1)

Country Link
KR (1) KR20030022602A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101116264B1 (ko) * 2006-02-21 2012-03-14 삼성전자주식회사 통신시스템에서 인터리빙 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101116264B1 (ko) * 2006-02-21 2012-03-14 삼성전자주식회사 통신시스템에서 인터리빙 장치 및 방법

Similar Documents

Publication Publication Date Title
JP4383672B2 (ja) 第3世代の符号分割多重アクセスのためのターボコード・インターリーバ
US6598202B1 (en) Turbo interleaving apparatus and method
KR100393608B1 (ko) 유.엠.티.에스시스템내 터보부호화기의 내부 인터리버 및인터리빙 수행 방법
JP3624874B2 (ja) インターリービング順序発生器、インターリーバ、ターボエンコーダ、及びターボデコーダ
KR100480286B1 (ko) 터보 인터리빙 어드레스 발생 장치 및 방법
CA2507620C (en) Addresses generation for interleavers in turbo encoders and decoders
JP4064894B2 (ja) インタリーブド・アドレスを生成するための方法および装置
KR20030022602A (ko) 메모리 어드레스 생성기
US7051261B1 (en) Turbo encoder with reduced processing delay
KR20040081271A (ko) 디지털 통신 시스템의 디인터리빙장치 및 그의디인터리빙방법
US7386766B2 (en) Address generation apparatus for turbo interleaver and deinterleaver in W-CDMA systems
KR100255304B1 (ko) 디지탈 통신기기의 컨벌루셔널 디인터리버
JP2827978B2 (ja) インターリーブ装置
Salmela et al. Parallel memory access in turbo decoders
KR100943612B1 (ko) 터보코드를 사용하는 이동통신시스템의 터보 인터리버장치 및 방법
KR20000077350A (ko) 터보 인터리빙 장치 및 방법
KR20020091848A (ko) 터보코드를 사용하는 부호분할다중접속 이동통신시스템의터보 인터리빙 장치 및 방법
JPH08335887A (ja) 複数インタリーブ・マトリクスのインタリーブアドレス生成回路
KR100561631B1 (ko) 터보 인터리버의 출력 주소 산출 장치
CN100466479C (zh) 用于透平编码的方法和系统
KR20050088182A (ko) 터보 인코더 및 디코더에서 인터리버용 어드레스 발생장치및 방법

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination