KR100253182B1 - Address generation circuit and method for digital signal processor - Google Patents
Address generation circuit and method for digital signal processor Download PDFInfo
- Publication number
- KR100253182B1 KR100253182B1 KR1019970018538A KR19970018538A KR100253182B1 KR 100253182 B1 KR100253182 B1 KR 100253182B1 KR 1019970018538 A KR1019970018538 A KR 1019970018538A KR 19970018538 A KR19970018538 A KR 19970018538A KR 100253182 B1 KR100253182 B1 KR 100253182B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- value
- register
- array
- area
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
Abstract
Description
본 발명은 디지털 신호 처리기에 관한 것으로 특히, 2차원 배열 어드레스를 생성하기 위한 디지털 신호 처리기의 어드레스 생성 회로 및 방법에 관한 것이다.The present invention relates to digital signal processors, and more particularly, to address generation circuits and methods of digital signal processors for generating two-dimensional array addresses.
일반적으로 디지털 신호 처리기(DSP : Digital Signal Processor)는 고속으로 디지털 신호를 처리하기 위한 마이크로 프로세서이다.In general, a digital signal processor (DSP) is a microprocessor for processing digital signals at high speed.
현재 많은 범용의 디지털 신호 처리기는 데이터 메모리의 액세스를 쉽게 하기 위해 어드레스 생성 회로를 구비하고 있다.Many general-purpose digital signal processors are now equipped with address generation circuits to facilitate access of the data memory.
상기 어드레스 생성 회로는 원하는 어드레스를 생성하기 위해 가산 또는 감산 연산을 수행하는 연산 로직을 구비하고 있다.The address generation circuit has arithmetic logic that performs addition or subtraction operations to generate a desired address.
도1 은 종래의 어드레스 생성 회로의 블록도로서 이에 도시된 바와 같이, 입력 데이터(또는 데이터 버스로 전송되는 데이터 메모리의 값)(Di) 또는 레퍼런스 값(REF)을 선택하는 멀티플렉서(110)와, 이 멀티플렉서(110)의 출력 데이터를 누적값에 가산 또는 감산하는 연산 로직(120)과, 이 연산 로직(120)의 출력값을 저장하여 어드레스(Addr)로 출력함과 아울러 상기 연산 로직(120)에 궤환시키는 레지스터(130)로 구성된다.1 is a block diagram of a conventional address generation circuit, as shown therein, a
이와같은 종래 회로의 동작 과정을 설명하면 다음과 같다.Referring to the operation of the conventional circuit as follows.
멀티플렉서(110)에서 입력 데이터(또는 데이터 버스로 전송되는 데이터 메모리의 값)(Di)를 선택하면 연산 로직(120)을 통해 레지스터(130)에 저장된 후 어드레스(addr)로 출력된다.When the
이때, 임의의 어드레스를 발생시키기 위하여 데이터(Di)가 입력되면 멀티플렉서(110)를 통해 연산 로직(120)에 출력된다.In this case, when data Di is input to generate an arbitrary address, the data Di is output to the
이에 따라, 연산 로직(120)이 레지스터(130)에 저장된 어드레스값(Addr)을 멀티플렉서(110)로부터 입력되는 데이터(Di)를 이용하여 가산 또는 감산하면 그 결과가 상기 레지스터(130)에 저장되어 어드레스(Addr)로 출력되어진다.Accordingly, when the
또한, 레퍼런스 값(REF)을 멀티플렉서(110)가 입력시키면 연산 로직(120)에서 레지스터(130)의 저장값을 상기 레퍼런스 값(REF)으로 가산 또는 감산하여 어드레스(Addr)를 생성시키게 된다.In addition, when the
즉, 연산 로직(120)에서 가산 또는 감산 동작을 수행하여 레지스터(130)의 값을 증가 또는 감소시킴에 의해 어드레스(Addr)를 생성함으로써 데이터 메모리의 임의의 영역을 순차적으로 액세스하게 된다.That is, the
이러한 동작을 수행하는 종래 기술은 2차원 배열 방식의 데이터 메모리를 액세스하려는 경우 아래와 같은 2가지 방법을 이용한다.The prior art for performing such an operation uses the following two methods when accessing a two-dimensional array data memory.
1) 2차원 배열의 각 1차원 배열당 시작 포인터를 데이터 메모리에 저장하여 두고 먼저 포인터가 저장된 메모리 어드레스를 레지스터(130)에 읽어 들인 후 이를 다시 어드레스(Addr)로 하여 원하는 1차원 배열의 포인터값을 레지스터에 읽어 들여 사용한다.1) The start pointer for each one-dimensional array of the two-dimensional array is stored in the data memory, and first, the memory address where the pointer is stored is read into the
2) 2차원 배열의 어드레스를 산술 로직 유니트(Arithmetic Logic Unit)에서 계산한 후 이를 메모리에 저장하고 다시 이를 레지스터(130)에 로드하여 어드레스(Addr)로 사용한다.2) After calculating the address of the two-dimensional array in an Arithmetic Logic Unit (Arithmetic Logic Unit) and stores it in the memory and loads it again in the
예를 들어, 2차원 배열의 메모리에서 1배열의 임의의 영역에서 2배열의 임의의 영역을 액세스하는 경우 연산 로직(120)에서 레지스터(130)에 저장된 1배열의 임의의 영역에 대한 어드레스값에서 멀티플렉서(110)로 입력되는 데이터를 가산하는 동작을 반복하여 2배열의 임의의 영역에 대한 어드레스를 생성하게 된다.For example, in a two-dimensional array of memory, if an arbitrary region of two arrays is accessed from any region of one array, the
그러나, 이러한 종래의 기술은 많은 응용 프로그램에서 사용되는 2차원 배열 방식의 테이블 구조의 메모리를 액세스하기에는 가산 또는 감산 동작을 수행하는 연산 로직의 구조가 복잡하여 프로그램이 어렵고 몇 개의 더미 메모리를 필요로 하는 단점이 있다.However, such a conventional technique is difficult to program and requires a few dummy memories because the structure of arithmetic logic that performs addition or subtraction operations is difficult to access a two-dimensional array type table memory used in many applications. There are disadvantages.
따라서, 본 발명은 종래의 문제점을 개선하기 위하여 종래의 회로에 곱셈기(multiplier)를 부가하여 하나의 열의 임의의 영역을 액세스한 후 다른 열의 임의의 영역을 액세스하는 경우 그 해당 영역의 어드레스를 직접 생성하도록 함으로써 2차원 배열의 메모리에 대한 액세스를 용이하게 하도록 창안한 디지털 신호 처리기의 어드레스 생성 회로 및 방법을 제공함에 목적이 있다.Accordingly, the present invention adds a multiplier to a conventional circuit to improve a conventional problem, and then directly generates an address of the corresponding area when accessing an arbitrary area of one column and then accessing an arbitrary area of another column. It is an object of the present invention to provide an address generation circuit and method of a digital signal processor, which is invented to facilitate access to a two-dimensional array of memory.
도 1은 종래의 어드레스 생성 회로의 블록도.1 is a block diagram of a conventional address generation circuit.
도 2는 본 발명에 따른 어드레스 생성 회로의 블록도.2 is a block diagram of an address generation circuit according to the present invention;
도 3은 6*4의 2차원 배열 어드레스의 저장을 보인 예시도.3 is an exemplary view showing storage of a 6 * 4 two-dimensional array address.
도 4는 5*4의 2차원 배열 메모리의 구성도.4 is a configuration diagram of a 5 * 4 two-dimensional array memory.
* 도면의 주요부분에 대한 부호 설명 *Explanation of symbols on the main parts of the drawings
210,250 : 레지스터 220 : 곱셈기210,250: Register 220: Multiplier
230 : 멀티플렉서 240 : 연산 로직230: multiplexer 240: arithmetic logic
본 발명은 상기의 목적을 달성하기 위하여 2차원 배열의 메모리의 행 값을 저장하는 제1 레지스터와, 그 2차원 배열의 메모리의 원하는 열의 값을 상기 레지스터에 저장된 행의 값과 곱하는 곱셈기와, 이 곱셈기의 출력값 또는 입력 데이터(또는 데이터 버스로 전송되는 데이터 메모리의 값) 또는 레퍼런스 값중 하나를 선택하여 출력하는 멀티플렉서와, 이 멀티플렉서에서 순차 선택되는 상기 곱셈기의 출력값과 상기 입력 데이터를 연산하여 원하는 배열의 특정 영역 주소를 생성하고 그 배열의 특정 영역 주소로부터 순차적으로 행방향의 영역을 선택하는 경우 상기 멀티플렉서에서의 레퍼런스 값으로 이전 어드레스값을 가산 또는 감산하는 연산 로직과, 이 연산 로직의 출력 신호를 저장하여 현재의 어드레스로 출력함과 동시에 상기 연산 로직으로 궤환시키는 제2 레지스터로 구성함을 특징으로 한다.The present invention provides a first register for storing row values of a memory of a two-dimensional array, and a multiplier for multiplying a value of a desired column of a memory of a two-dimensional array with a value of a row stored in the register. A multiplexer which selects and outputs one of a multiplier's output value or input data (or a value of a data memory transferred to a data bus) or a reference value, and calculates an output value of the multiplier sequentially selected by the multiplexer and the input data to When generating a specific area address and sequentially selecting a row direction area from the specific area address of the array, operation logic for adding or subtracting the previous address value to the reference value in the multiplexer, and storing the output signal of the operation logic Output to the current address and at the same time And it characterized in that it consists of the second register to ring.
또한, 본 발명은 상기의 목적을 달성하기 위하여 2차원 배열의 메모리의 행값을 저장하는 단계와, 원하는 열의 값을 상기에서 저장한 행의 값과 곱하여 그 원하는 열의 시작 어드레스를 산출하는 단계와, 상기 원하는 열의 시작 어드레스에 원하는 행의 값을 더하여 원하는 배열의 특정 영역의 어드레스를 구하는 단계와, 상기에서의 원하는 배열의 특정 영역으로부터 행 방향으로 임의의 영역을 액세스하려는 경우 상기 특정 영역의 어드레스값에 어드레스 단위 증가분을 가감산하여 임의의 영역에 대한 어드레스를 구하는 단계를 수행함을 특징으로 한다.In addition, to achieve the above object, the present invention comprises the steps of storing the row values of the memory of the two-dimensional array, multiplying the value of the desired column with the value of the row stored in the above to calculate the start address of the desired column; Obtaining an address of a specific region of a desired array by adding a desired row value to a start address of a desired column; and when accessing an arbitrary region in a row direction from the specific region of the desired array, an address is added to the address value of the specific region. And calculating the address of an arbitrary area by adding or subtracting the unit increment.
이하, 본 발명을 도면에 의거 상세히 설명하면 다음과 같다.Hereinafter, the present invention will be described in detail with reference to the drawings.
도2 는 본 발명의 실시예를 보인 블록도로서 이에 도시한 바와 같이, 2차원 배열의 메모리의 행 값(Di2)을 저장하는 제1 레지스터(210)와, 그 2차원 배열의 메모리의 원하는 열의 값(Di3)을 상기 레지스(210)터에 저장된 행의 값(Di2)과 곱하는 곱셈기(220)와, 이 곱셈기(220)의 출력값 또는 입력 데이터(또는 데이터 버스로 전송되는 데이터 메모리의 값)(Di1) 또는 레퍼런스 값(REF)중 하나를 선택하여 출력하는 멀티플렉서(230)와, 이 멀티플렉서(230)에서 순차 선택되는 상기 곱셈기(220)의 출력값과 상기 입력 데이터(Di)를 연산하여 원하는 배열의 특정 영역 주소를 생성하고 그 배열의 특정 영역 주소로부터 순차적으로 행방향의 영역을 선택하는 경우 상기 멀티플렉서(230)에서의 레퍼런스 값(REF)으로 이전 어드레스값을 가산 또는 감산하는 연산 로직(240)과, 이 연산 로직(240)의 출력 신호를 저장하여 현재의 어드레스(Addr)로 출력함과 동시에 상기 연산 로직(240)으로 궤환시키는 제2 레지스터(250)로 구성한다.Fig. 2 is a block diagram showing an embodiment of the present invention, as shown therein, for a
이와같이 구성한 본 발명의 실시예에 대한 동작 및 작용 효과를 설명하면 다음과 같다.Referring to the operation and effect of the embodiment of the present invention configured as described above are as follows.
본 발명은 멀티플렉서(230)가 곱셈기(220)의 출력 단자를 선택함이 없이 입력 데이터(또는 데이터 버스로 전송되는 데이터 메모리의 값)(Di1) 또는 레퍼런스 값(REF)을 선택하면 종래의 회로와 동일한 동작으로 어드레스를 생성함으로써 레지스터(250)에서 어드레스(Addr)를 출력하게 된다.According to the present invention, when the
만일,어드레스(Addr)를 생성하여 2차원 배열의 메모리의 임의의 영역을 액세스한 후 다른 열(Column)의 임의의 영역을 액세스하려는 경우 즉, 2차원 배열의 메모리가 도4 의 구성과 같을 때 영역([0,0])에서 영역([2,1])을 액세스하려는 경우를 예를 들면 레지스터(250)를 초기화시키고 레지스터(210)에 1배열의 행의 값(Di2='4')을 저장한 후 원하는 열의 값(Di3='2')을 입력하면 곱셈기(220)는 1배열의 행의 값('4')과 입력된 열의 값('2')을 곱하여 3번째 열(Column = 2)의 시작 영역([2,0])의 어드레스를 생성하기 위한 값을 멀티플레서(230)으로 출력하게 된다.If, after creating an address (Addr) to access any area of the memory of the two-dimensional array and then to access any area of the other columns (that is, the memory of the two-dimensional array is the same as the configuration of Figure 4) In the case of accessing the area [2, 1] from the area [0, 0], for example, the
이때, 곱셈기(220)의 출력값은 멀티플렉서(230)에 의해 연산 로직(240)에 출력되어 연산됨에 의해 레지스터(250)에는 3번째 열의 시작 영역([2,0])의 어드레스가 저장되어진다.At this time, the output value of the
이 후, 상기 멀티플렉서(230)는 메모리 단위 공간을 나타내는 입력 데이터(또는 데이터 버스로 전송되는 데이터 메모리의 값)(Di1=1)를 선택하여 상기 연산 로직(240)에 출력하게 된다.Thereafter, the
이에 따라, 연산 로직(240)이 레지스터(250)의 저장값에 멀티플렉서(230)에 의해 입력되는 값(해당 영역의 행의 값=1)을 가산하여 레지스터(250)에 저장함으로써 상기 레지스터(250)에서 영역([2,1])의 어드레스(Addr)를 출력하게 된다.Accordingly, the
이 후, 3번째 배열의 영역([2,2])([2,3])를 액세스하려는 경우 멀티플렉서(230)가 레퍼런스 값(REF)을 선택하면 연산 로직(240)이 레지스터(250)의 저장값([2,1])의 행값에 '1'을 순차적으로 가산함으로써 상기 레지스터(250)에서의 어드레스(Addr)가 영역([2,2])([2,3])을 순차적으로 선택하기 위한 어드레스로 출력되어진다.Subsequently, when the
상기와 같은 동작을 도3 의 6*4의 2차원 배열의 메모리를 예를 들어 설명하면 다음과 같다.The above operation will be described with reference to the memory of the 6 * 4 two-dimensional array of FIG. 3 as an example.
여기서, 영역([5,3])의 어드레스에서 영역([4,2])의 어드레스를 생성하고자 하는 경우로서 단, 영역([0,0])의 어드레스는 '400h'라고 가정한다.Here, it is assumed that the address of the area [4, 2] is generated from the address of the area [5, 3], except that the address of the area [0, 0] is '400h'.
먼저, 레지스터 파일의 임의의 레지스터에 '400h'를 로드한다.First, load '400h' into any register in the register file.
그리고, 레지스터(210)에 각 1차원 배열의 메모리 공간(행의 값)을 나타내는 'Di2=4'를 로드하고 곱셈기(220)의 일측 입력단자에 5번째 배열을 나타내는 'Di3=4'를 로드한다.Then, the
이때, 곱셈기(220)가 5번째 배열을 나타내는 '4'와 레지스터(210)에 저장된 1차원 배열의 메모리 공간(행의 값)을 나타내는 '4'를 곱셈하면 멀티플렉서(230)가 연산 로직(240)에 출력하여 레지스터(250)에 5번째 배열의 시작 어드레스가 저장되도록 한다.In this case, when the
이때의 상기 레지스터(250)의 저장값은 영역([4,0])의 어드레스이다.At this time, the stored value of the
따라서, 영역([4,2])의 어드레스를 레지스터(250)에 저장하기 위해서는 '2'를 더해주면 되므로 멀티플렉서(230)가 입력 데이터(Di1='2')를 선택하면 연산 로직(240)이 상기 레지스터(250)에 저장된 어드레스([4,0])에 가산하여 다시 그 레지스터(250)에 저장함에 의해 영역([4,2])의 어드레스(Addr)를 생성하게 된다.Therefore, in order to store the address of the area [4, 2] in the
이상과 같은 동작을 수행함에 의해 부가적인 메모리의 사용없이 2차원 배열의 원하는 어드레스를 간단히 얻을 수 있다.By performing the above operation, it is possible to simply obtain a desired address of the two-dimensional array without using additional memory.
상기에서 상세히 설명한 바와 같이 본 발명은 종래의 어드레스 생성 회로에 곱셈기를 부가하여 디지털 신호 처리 알고리즘을 프로그램할 때 2차원 배열의 어드레스를 쉽게 생성할 수 있으므로 사용자가 프로그램하기가 쉽고 이 곱셈기를 이용하여 어드레스 생성을 유연성있게 할 수 있는 효과가 있다.As described in detail above, the present invention can easily generate a two-dimensional array of addresses when programming a digital signal processing algorithm by adding a multiplier to a conventional address generation circuit, so that the user is easy to program and uses the multiplier to address This has the effect of being flexible.
Claims (2)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970018538A KR100253182B1 (en) | 1997-05-13 | 1997-05-13 | Address generation circuit and method for digital signal processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970018538A KR100253182B1 (en) | 1997-05-13 | 1997-05-13 | Address generation circuit and method for digital signal processor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980083290A KR19980083290A (en) | 1998-12-05 |
KR100253182B1 true KR100253182B1 (en) | 2000-05-01 |
Family
ID=19505760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970018538A KR100253182B1 (en) | 1997-05-13 | 1997-05-13 | Address generation circuit and method for digital signal processor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100253182B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100984707B1 (en) * | 2008-10-23 | 2010-10-01 | 한국과학기술원 | Address generation method, address generation slave device, master slave system and multi master slave system |
-
1997
- 1997-05-13 KR KR1019970018538A patent/KR100253182B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980083290A (en) | 1998-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1281118A1 (en) | Method and apparatus for performing computations using residue arithmetic | |
KR19980065431A (en) | Modulo address generator and its method | |
KR19980701803A (en) | Log / Inverse Log Converter, Calculation Device and Log Value Generation Method | |
US6065031A (en) | Log converter utilizing offset and method of use thereof | |
US7299338B2 (en) | Vector indexed memory unit and method | |
US9223752B2 (en) | Digital signal processor with one or more non-linear functions using factorized polynomial interpolation | |
KR100253182B1 (en) | Address generation circuit and method for digital signal processor | |
KR100513160B1 (en) | Carry look-ahead adder having reduced area | |
US5847980A (en) | Product-summing arithmetic circuit | |
JP2856064B2 (en) | Digital filter | |
KR100188027B1 (en) | Address generation circuit | |
US7015839B1 (en) | Mapping method utilizing look-up table and related apparatus | |
US9069685B2 (en) | Digital signal processor having instruction set with one or more non-linear functions using reduced look-up table | |
JP2609630B2 (en) | Divider and division method | |
US6052768A (en) | Circuit and method for modulo address generation with reduced circuit area | |
JPH0695855A (en) | Inverse number generating circuit and digital signal processor using the same | |
KR100588728B1 (en) | Method for implementing division of orthogonal frequency division multiplexing by digital signal processor | |
JP2005227811A (en) | Approximation circuit | |
JPH10333883A (en) | Multiplying method and circuit therefor | |
KR100190019B1 (en) | Address generator for graphic controller | |
JP3392726B2 (en) | Data receiving device and data receiving method | |
JP2778478B2 (en) | Correlation processor | |
KR100236530B1 (en) | Address generating circuit of a digital signal processor | |
JP2533893B2 (en) | Data processing device | |
JP2850594B2 (en) | RAM address generation circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20051201 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |