KR100422345B1 - 난수 발생기 - Google Patents

난수 발생기 Download PDF

Info

Publication number
KR100422345B1
KR100422345B1 KR10-2001-0029098A KR20010029098A KR100422345B1 KR 100422345 B1 KR100422345 B1 KR 100422345B1 KR 20010029098 A KR20010029098 A KR 20010029098A KR 100422345 B1 KR100422345 B1 KR 100422345B1
Authority
KR
South Korea
Prior art keywords
bit
carry
generator
random number
sum
Prior art date
Application number
KR10-2001-0029098A
Other languages
English (en)
Other versions
KR20020089985A (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 KR10-2001-0029098A priority Critical patent/KR100422345B1/ko
Publication of KR20020089985A publication Critical patent/KR20020089985A/ko
Application granted granted Critical
Publication of KR100422345B1 publication Critical patent/KR100422345B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 17개의 비트발생기만으로 구성된 17비트 난수발생기를 개시한다. 개시된 본 발명의 난수 발생기는, 17비트 자리를 갖는 신호를 수신하여 17비트 자리의 난수를 발생하는 난수 발생기에 있어서, 상기 17비트 신호의 래머 알고리즘에 따른 순환 컨벌루션 행렬식에서 각 컬럼에 대한 엔트리 신호를 각각 수신하여, 각 컬럼이 덧셈 연산된 17비트 자리를 갖는 합 신호와 캐리 신호를 발생하는 비트 발생부와, 상기 비트발생부로부터 수신된 상기 합 신호와 상기 캐리 신호를 더하여 17비트의 난수를 발생시키는 난수 발생부를 구비한 것을 특징으로 한다.

Description

난수 발생기{RANDOM NUMBER GENERATOR}
본 발명은 난수 발생기에 관한 것으로, 보다 구체적으로는 레이아웃 면적을 줄이면서 동작 속도를 향상시킬 수 있는 래머 난수 발생기를 제공하는 것이다.
일반적으로, 승산 선형 합동식 의사 난수 발생기(Multplicative linear congruential pseudorandom number generator)는 많은 소프트웨어 루틴을 위해 가장 많이 사용된다. 여기서, 난수란 이미 알고 있는 어떤수의 집합에서 어느 것이나 같은 출현 확률을 갖도록 선택되는 수를 말하는데, 이를 컴퓨터에 발생시키면 커다란 주기를 가지게 되어 이를 의사난수(pseudorandom number)라 한다.
이와 같은 난수를 발생시키기 위한 난수 발생기는 컴퓨터 프로그래밍, 시뮬레이션, 및 네트워크 라우팅등의 많은 분야에서 사용되어 지며, 그중에서 상기 승산식 선형 합동법을 이용한 래머 발생기가 대표적으로 사용된다.
A.P.Paplinski 및 N. Bhattacharjee에 의해 제시된 "Hardware implementation of the Lehmer random number generator"(IEE Proc.-Compute. Digit. Tech., Vol.143.p93-95, January 1996)이라는 논문을 토대로하여 래머 난수발생기의 원리와 이를 하드웨어로 구현한 종래의 기술을 설명한다.
래머 발생기는 난수 발생기를 소프트웨어로 구현한 대중적인 방법으로, 그 원리는 다음과 같다.
먼저, 정수의 의사난수컬럼 z(1), z(2), z(3),...의 발생은 다음의 (식1)과 같이 표현된다.
z(n-1)=f(z(n)), n=1, 2, 3,.........----------(식1)
여기서, 발생 함수 f()는 다음의 (식2)와 같이 정의된다.
r=f(z)=azmodM, z1, 2,....,M-1---------(식 2)
이때, 상기 래머 발생기를 위해 Mersenne prime M=231-1이고, a=75=16807, 즉 15비트의 2진수 a14:0={1 0 0 0 0 0 1 1 0 1 0 0 1 1 1}로 나타낼 수 있고, 난수z(n)은 31비트로 표현되는 정수이다.
이제, 상기 (식2)와 같이 2진수 곱셈법 mod M을 이용하여 이전의 난수 z로부터 다음의 난수 r을 발생시키기 위한 알고리즘의 병렬 버전(parallelised version)을 고려한다.
수 알고리즘의 하드웨어 구현을 설명할 때, 수와 그 수의 2진수를 구별하는 것이 편리할 때가 있다. a가 정수 일때, a의 (n+1)-비트 2진구는 an:0으로 표기할 것이다. 행렬 표기식을 사용하면 a는 a의 2진수인 an:0의 내적과 2의 가중값(weight) Wn:0벡터로 다음의 (식 3)과 같이 나타낼 수 있다.
a=an:0 wn:0=---------------------------(식 3)
여기서, an:0= { anan-1...a1a0}는 a {a{0,1}}의 수 표시(nunmeral)이고, Wn:0= {2n2n-1 ...2120}은 2진 가중값의 벡터이다.
상기의 표기식을 사용하면, 수의 곱셈식은 승수의 행렬곱과 피승수의 실버스터 종결 행렬 (Sylvester resultant matrix)로 나타낼 수 있다. 만약 m 비트 피승수가 zm-1;0= {zm-1zm-2...z1z0}라면, 두 수 a 와 z의 곱은 다음의 (식 4)와 같이 2진수 행렬식으로 표현될 것이다.
az=an:0 (z)n wn+m-1;0------------(식 4)
여기서, (z)은 (n+1)(n+m)실버스타 종결 행렬(또는 컨벌루션 행렬로 알려진)이고, 이것은 쉬프트된 수 zm-1:0로 부터 다음의 (식 5)와 같은 방식으로 형성된다.
------(식 5)
여기서, 상기 대괄호는 상기 종결행렬을 표시하는데 사용되었고, 상기 종결식에서의 0 의 값은 적절한 삼각형을 이룬다.
상기 래머 발생기의 경우, m=31, n=14이므로, 상기 (식 4)에서 수 a14:0은 115 크기이고, 상기 종결행렬 (z)n의 크기는 1545이며, 결과적으로 a 와 z의 곱은 145수로 표현된다.
일반적으로, 상기 (식 4)는 두수의 곱의 병렬 표현으로 생각되어 질 수 있다. 상기 종결식의 각 행(row)은 승수의 각각의 자리수에 의해 곱해진 쉬프트된 수 zm-1:0을 나타내고, 상기 종결식의 각 컬럼(column)은 의사난수 결과를 제공하기 위하여 더해진다.
상기 알고리즘의 다음 단계는 az를 M=231-1으로 나눈 나머지를 결정하는것으로, 즉 mod M 연산을 수행하는 것이다. 상기 곱을 다음의 (식 6)과 같이 전개하기 위하여, 상기 종결 행렬은 다음의 두개의 종속 행렬, 즉 좌측의 (n+1)n 크기와, 우측의 (n+1)m크기로 나뉘어 진다. 여기서 q는 몫이고, r은 나머지이다.
az=qM+ r----(식 6)
그리고, 상기 (식 4)와 (식 6)을 조합하면 다음의 (식 7)을 얻을 수 있다.
az=an:0 (CWn-1:0 2m+DWm-1:0)-----------(식 7)
=an:0 (CWn-1:0 2m-CWn-1:0+DWm-1:0+CWn-1:0)
=an:0 (CWn-1:0 (2m-1)+DWm-1:0+CWn-1:0)
여기서, Wn+m-1:0= Wn-1:0 Wm-1:0라는 관계를 사용하였다. 임의의 정수 q를 고려하여 생각하면 다음의 (식 8)와 같으므로,
(qM+r)mod M=r mod M------------(식 8)
상기 (식 1)은 다음의 (식 9)와 같이 표현할 수 있다.
r=(az)mod M----------------------(식 9)
=an:0(DWm-1:0+ CWn-1:0) mod M
=an:0(DWm-1:0+ [0 C]Wm-1:0) mod M
따라서, 최종적으로 다음의 (식 11)과 같은 결과를 얻을 수 있다.
r = (an:0 EWm-1:0)mod M-------(식 10)
-------------(식 11)
여기서, 상기 E는 다음의 (식 11)과 같이 수zm-1:0으로부터 (n+1)m 순환 컨벌루션 행렬로 형성된다.
이때, 만약 승수 a 가 a14, a8, a7, a5, a2, a1, a0의 비트만이 '1'인 2진수라는 것을 고려하면, 상기 (식 11)은 다음의 (식 12)와 같이 쓸수 있다.
r=(a14:0 EW30:0)mod M------------(식 13)
= (E14:+ E8:+ E7:+ E5:+ E2:+ E1:E0:)W30:0mod M -----(식 13)
여기서, 상기 E 값의 행렬식은 다음의 (식 14)와 같이 나타낼 수 있다.
-----------------(식 14)
따라서, 의사 난수를 발생시키기 위한 래머 알고리즘은, 상기 (식 14)와 같이, 여섯개의 31비트수 mod M을 더하거나 빼는 문제로 줄일 수 있었다. 상기 각각의 수는 적절히 순환된 현재의 난수 z이다.
이제, 여섯 개의 31비트수 mod M의 가산 및 감산을 설명한 상기 (식 14)의 하드웨어 구현에 대하여 상세히 설명한다.
먼저, mod M 연산은 두개의 m-비트수의 가산 또는 감산 연산과 관련하여 수행된다는 것을 알아야 한다. am-1:0와 bm-1:0을 mod M에 가산되는 두수라 하고, sm-1:0과 dm은 상기 가산기로부터 출력된 합과 출력캐리라 하면, 다음의 (식 15)와 같이 쓸수 있다.
am-1:0+ bm-1:0= dm2m+ sm-1:0-----------------(식 15)
여기서, 가산 및 감산 연산을 모두 수행하기 위해서 상기 출력캐리 dm {-1, 0, 1, +1}이다. 만약 상기 출력 캐리가 0이 아니라면, mod M 연산의 결과로 부터 M 을 감산한다. 그러면 다음의 (식 16)과 같이 주어진다.
(dm2m+ sm-1:0) mod M = sm-1:0+ dm2m- dm(2m-1)------------(식 16)
따라서, 최종적으로 다음의 (식 17)을 얻얼 수 있다.
(am-1:0+ bm-1:0) mod M = sm-1:0+ dm--------------(식 17)
다음으로, 상기 (식 13)의 연산은 상기 (식 14)의 행력식에서 각 컬럼의 수를 계산하는 문제와 같다는 것을 알 수 있다. 각각의 컬럼에서 여섯 개의 요소들중의 하나는 감산되고, 각 컬럼에서의 상기 요소들의 수는 -1 에서 5까지 가변된다.
여기서, 문제는 다음의 위치와 합 비트로 전파되는 상기 출력캐리 비트 형식에서 그 수를 표현하는 회로를 설계하는 것이다. 만약, 연산을 완결하기 위해 요구되는 입력캐리 비트의 계산을 포함하여 고려하면, 다음의 (식 18)와 같이 표현할 수 있다.
(za+zb+zc+zd+ze-zf+c1+c2-c3)=2(d1+d2-d3+d4)+s4-----------(식 18)
여기서, za는 상기 행렬 (식 14)의 i 번째 컬럼과 관련된 비트들이고, cj및 dj는 각각 입력 및 출력캐리이며, s4는 합 비트이다.
상기 (식 18)를 구현하는 회로는 9:5 비율로 정보의 압축을 수행한다. 9개의 입력 비트와 5개의 출력 비트는 모두 -2 부터 +7까지의 수를 나타낸다. 이제, 상기 (식 18)는 3개의 입력요소들의 집합과 2개의 출력합으로 변환될 수 있다. 최종 캐리 전파 가산기를 포함하면, 상기 구현식은 다음의 (식 19)을 취한다.
1: za+ zb + zc= 2d1+s1
2: s1+ zd+ ze= 2d2+ s2
3: s2- zf- c3= -2d3+ s3----------------(식 19)
4: s3+ c1+ c2= 2d4+ s4
5: s4+ c4+ c5= 2d5+ r
도 1은 상기 (식 19)을 구현한 래머 발생기의 i 번째의 비트를 발생시키기 위한 비트발생기(i)를 도시한 것으로, 상기 도면에서 입력신호 za,....,zf는 상기 (식 14) 행렬식의 i 번째 컬럼의 각 엔트리로 대체되었고, 입력 및 출력신호 cj, dj는 cji, cji+1로 대체되었다.
상기 도면에 도시된 바와 같이, 종래 래머 발생기의 비트발생기는 상기 (식 14)의 순환 컨벌루션 행렬식에서 i 번째 컬럼의 제 1, 제 2 및 제 3 신호(zi+17, zi+23, zi-7)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(c1,i+1)를 발생시키는 제 1 캐리-누적 가산기(101)와; 상기 제 1캐리-누적 가산기(101)로부터 출력된 합과 상기 i번째 컬럼의 제 4 및 제 5 신호(zi-5, zi-3)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(c2,i+1)를 발생시키는 제 2 캐리-누적 가산기 (102)와; 상기 제 2 캐리-누적 가산기(102)로부터 출력된 합으로부터 상기 i번째 컬럼의 제 6신호(zi)와 i-1번째 비트발생기의 캐리-전파 감산기(도면에 도시하지 않음)로부터 입력되는 입력캐리비트(c3,i)를 감산하여 1비트의 합과 1비트의 출력캐리(c3,i+1)를 발생시키는 캐리-전파 감산기(103)와; 상기 캐리-전파 감산기(103)로부터 출력된 합과 i-1번째 비트발생기의 제 1 및 제 2캐리-누적 가산기(도면에 도시하지않음)로부터 각각 입력되는 두 개의 입력캐리(c1.i,c2.i)를 가산하여 1비트의 합과 1비트의 출력캐리(c4.i+1)를 발생시키는 제 3 캐리-누적 가산기(104)와; 상기 제 3 캐리-누적 가산기(104)로부터 출력된 합과 i-1번째 비트 발생기의 제 3 캐리-누적 가산기 및 캐리-전파 가산기(도면에 도시하지 않음)로부터 각각 입력되는 두개의 입력캐리(c4.i,c5.i)를 가산하여 최종적으로 31비트 난수의 i 번째 비트(ri)와 출력캐리(c5.i+1)를 발생시키는 캐리-전파 가산기(105)로 구성된다.
그리고, 도 2는 상기 도 1과 같이 구성된 비트발생기 31개가 병렬연결되어 31비트의 난수(r30:0)를 발생시키는 난수발생기를 전체적으로 도시한 블록도로서, 이에 도시된 바와 같이 상기 난수발생기는 상기 (식 17)에서 설명한 mod M 연산을 수행하기 위하여 최상위 비트발생기(230)의 출력캐리가 최하위 비트발생기(201)로 입력된다.
상기 도면을 참조하여 종래 난수 발생기의 동작과정을 보다 상세히 설명한다.
상기 0번째 비트발생기(201) 내지 30번째 비트발생기(230)는 각각 동일한 과정으로 1비트의 데이타를 발생하여 총 31비트의 난수(r30:0)를 발생하므로, 대표적으로 i번째의 비트발생기(20i)에 대하여 설명하기로 한다.
i번째의 비트를 발생시키기 위하여 상기 i번째 비트발생기에는 상기(식 14)의 행렬에서 i번째 컬럼의 6개의 엔트리가 입력되는데, 먼저 제 1 캐리-누적 갓나기는 i번째 컬럼의 제 1, 제 2 및 제 3 신호(zi+17, zi+23, zi-7)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(c1, i+1)로 발생시킨다.
캐리-전파 감산기는 상기 제 2 캐리-누적 가산기로부터 출력된 합비트로부터 상기 i번째 컬럼의 제 6 신호(zi)와 이전의 비트발생기, 즉 i-1번째 비트발생기의 캐리-전파 감산기(도면에 도시하지 않음)에 의해 발생되어 입력되는 입력캐리비트(c3,i)를 감산하여 그 결과를 합과 출력캐리(c3, i+1)로 발생시킨다.
그러면, 제 3 캐리-누적 가산기는 상기 캐리-전파 감산기로부터 출력된 합비트와 i-1번째 비트발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 도시하지않음)부터 각각 입력되는 두 개의 입력캐리(c1,i, c2,i)를 가산하여 1비트의 합과 1비트의 출력캐리(c4,i+1)를 발생시킨다.
또한, 캐리-전파 가산기는 상기 제 3 캐리-누적 가산기로부터 출력된 합과 i-1번째 비트발생기의 제 3 캐리-누적 가산기 및 캐리- 전파 가산기(도면에 도시하지않음)로부터 각각 입력되는 두 개의 입력캐리(c4, i, c5.i)를 가산하여 i번째의 난수 1비트(ri)와 1비트의 출력캐리(c5. i+1)를 발생시킨다.
이와 같은 과정으로 각각의 비트발생기(0~30)에서 1비트씩의 데이타가 발생하여 총 31비트의 난수(r30:0)가 발생되는 것이다.
그런데, 상기와 같은 난수 발생기에서 17비트의 난수를 발생시키기위하여는 31개의 비트발생기중 17개의 비트발생기만 사용하여 난수를 발생하여야하는데, 그렇게되면, 필요하지 않은 난수 발생기를 사용하게될뿐아니라, 난수 발생시간이 매우 지연되는 문제점이 있다.
따라서, 본 발명은 상기의 문제점을 해결하기 위하여, 31비트 난수발생기를 17 비트로 줄여서 31 난수 발생기 처럼 동작시킴으로써, 레이 아웃 면적을 줄이고 동작 속도를 향상시킨 난수 발생기를 제공하는데 그 목적이 있다.
도 1은 종래 기술에 따른 31비트 래머 난수발생기의 i번째 비트발생기를 도시한 블록도.
도 2는 상기 도 1과 같이 구성된 비트발생기 31개가 병렬연결되어 31비트의 난수(r30:0)를 발생시키는 난수발생기를 전체적으로 도시한 블록도.
도 3은 본 발명에 따른 17비트 난수발생기를 도시한 블럭도.
도 4는 17비트 난수발생기의 비트발생기에서의 동작을 설명하기위한 실시예.
*도면의 주요부분에 대한 부호의 설명*
300: 난수 발생기 301: 0 번째 비트 발생기
315: 15번째 비트 발생기 316: 16번째 비트 발생기
400: 비트 발생부 500: 캐리비트 변환부
상기한 본 발명의 목적을 달성하기 위하여, 본 발명의 난수 발생기는, 17비트 자리를 갖는 신호를 수신하여 17비트 자리의 난수를 발생하는 난수 발생기에 있어서, 상기 17비트 신호의 래머 알고리즘에 따른 순환 컨벌루션 행렬식에서 각 컬럼에 대한 엔트리 신호를 각각 수신하여, 각 컬럼이 덧셈 연산된 17비트 자리를 갖는 합 신호와 캐리 신호를 발생하는 비트 발생부와, 상기 비트발생부로부터 수신된 상기 합 신호와 상기 캐리 신호를 더하여 17비트의 난수를 발생시키는 난수 발생부를 구비한 것을 특징으로 한다.
상기 비트 발생부는 상기 순환 컨벌루션 행렬식에서의 i 번째 컬럼의 제 1, 제 2 및 제 3 신호를 수신하여 이를 가산한 1비트의 합과 1비트의 출력캐리를 발생시키는 제 1 캐리-누적 가산부와, 상기 제 1 캐리-누적 가산부로부터 출력된 합과 상기 i 번째 컬럼의 제 4 및 제 5 신호를 수신하여 이를 가산한 1비트의 합과 1비트의 출력캐리를 발생시키는 제 2 캐리-누적 가산부와, 상기 제 2 캐리-누적 가산부로부터 출력된 합과 상기 i 번째 컬럼의 제 6 신호와 i-1 번째 비트발생부의 캐리 신호를 수신하여 이를 감산한 1비트의 합과 1비트의 출력캐리를 발생시키는 캐리-전파 감산부와, 상기 캐리-전파 감산부로부터 출력된 합과 상기 i-1 번째 비트발생부의 제 1 및 제 2 캐리-누적 가산부로 부터의 제1 및 제2 캐리 신호를 수신하여 이를 가산한 1비트의 합과 1비트의 출력캐리를 발생시키는 제 3 캐리-누적 가산부와, 상기 제 3 캐리-누적 가산부로 부터의 합과 상기 i-1 번째 비트발생부의 제 3 캐리-누적 가산부와 상기 캐리-전파 가산부로 부터의 캐리 신호를 수신하여 이를 가산한 i번째의 최종 합비트와 출력캐리를 발생시키는 캐리-전파 가산부를 포함하여 구성되는 것을 특징으로 한다.
본 발명에 의하면, 31비트 난수발생기의 비트발생기를 줄여서 17비트 난수를 발생하도록하여 비트발생기 수를 절감할 뿐만아니라, 난수발생에 걸리는 시간지연을 줄일수 있는 잇점이 있다.
(실시예)
이하 첨부한 도면에 의거하여 본 발명의 바람직한 실시예를 자세히 설명하도록 한다.
도 3은 본 발명에 따른 17비트 난수발생기를 도시한 블럭도로서, 도시한 바와 같이, 총 17비트의 합비트를 발생시키기 위하여 0부터 16번째의 합비트를 각각 발생시키는 17개의 비트발생기(301,..315, 316)를 포함하는 비트발생부(300)와 상기 비트발생부(300)의 최종 비트발생기(301)에서 출력되는 복수개의 캐리들을 3비트 신호로 변환시켜주는 캐리비트 변환부(500)와 상기 비트발생기들로부터 출력되는 각각의 비트들과 상기 캐리비트 변환부(500)에서 출력되는 출력 3비트 캐리를 더하여 17비트의 난수를 발생시키는 난수 발생부(400)로 구성된다.
이와 같은 구성을 갖는 본 발명의 난수발생기의 동작과정을 상세히 설명하면 다음과 같다.
상기 비트발생부(300)내에 있는 17개의 비트발생기들(301,..315, 316)은 각각 1비트씩의 최종 합비트를 발생시키는데, 이와 같은 각각의 합비트들은 상기 난수 발생부(400)에서 더해지고, 또한, 마지막 17번째 비트발생기(301)의 출력 캐리비트를 상기 캐리비트 변환부(500)에서 3비트의 출력 캐리로 변환시켜 상기 난수 발생부(400)에서 더해져 최종적으로 17비트 난수를 발생시킨다.
도 4는 17비트 난수발생기의 비트발생기에서의 동작을 설명하기위한 실시예로서, 도시한 바와 같이, 3개의 캐리-누적 가산기(401, 402, 404)와, 1개의 캐리 전파 감산기(403), 및 1개의 캐리-전파 가산기(405)로 구성되어 있다.
이것은 종래의 31비트 난수발생기의 비트발생기와 동일한 구조를 갖는다.
먼저, 래머 알고리즘을 이용하여 17비트의 난수를 발생시키는 수학적 원리를 설명하면 다음과 같다.
M=217인 경우"Stephen Park S and Miller K.의 Random number generators: good things are hard to fine, Comm. ACM, Vol31, No 10, 1988"를 참조하여 full-period를 갖는 경우 a=9806(a[31:0]=10011001001110), c=1로 선택하였다.
난수 발생기는 다음의 함수로 아래와 같은 식을 통해 표현된다.
f(z)= (az+c)modM
z1, 2.......M-1
여기서 생성되는 난수 r은 다음 난수를 생성하기 위해 다시 아래와 같이 쓰인다.
z(n-1)=f(z(n)) n=1,2......------------(식 1)
az=an:0 (CWn-1:0 2m+DWM-1:0)----------(식 7)
=an:0 (CWn-1:0 2m-CWn-1:0+DWm-1:0+CWn-1:0)
=an:0 (CWn-1:0 (2m-1)+DWm-1:0+CWn-1:0)
(az)modM=an:0 (CWn-1:0+DWN-1:0)
=an:0 ([0C]Wm-1:0+DWm-1:0)
=an:0 ([0C]+D)Wm-1:0
여기서
----------------------(식 20)
1000-0010=01110이므로 a[13:0]은 다시 100110011000010으로 표현이 가능하다.
--------------------(식 21)
M=217-1의 경우는 위 수식과 같은 행렬이 생성된다. 이것의 컬럼에 대한 합이 각 자릿수의 값을 나타내므로 각 컬럼에 대하여 덧셈을 하는 블록을 도면1과 같이 구현한다.
그리고, (dm 2m+ sm-1:0)mod M----------------(식 22)
=dm 2m+sm-1:0-dm M을 이용하여 M=217-1인 경우 am-1:0+bm-1=sm-1:0+dm가 된다.
도 4에 도시된 바와 같이, 비트발생기는 공지된 바와 같이 3개의 캐리-누적 가산기와 1개의 캐리-전파 감산기 및 1개의 캐리-전파 가산기로 구성되어 있고, 이러한 구성을 갖는 비트발생기의 동작을 설명하기위하여 (식 21)의 첫번째 컬럼의 신호가 입력될때의 경우를 들어 설명한다.
(식 21)의 첫번째 컬럼의 6개의 엔트리신호가 비트발생기에 입력되는데, 제 1 캐리-누적 가산기는, 첫번째 컬럼의 제 1, 제 2 및 제 3 신호(z4, z7, z8)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(co1)를 발생시킨다.
상기 제 2 캐리-누적 가산기는 제 1 캐리-누적 가산기로부터 출력된 합과 상기 첫번째 컬럼의 제 4 및 제 5 신호(z11, z13)를 입력받아 상기 3개의 입력신호를 가산하여 1비트의 합과 1비트의 출력캐리(co2)를 발생시킨다.
상기 캐리-전파 감산기는 제 2 캐리-누적 가산기로부터 출력된 합으로부터 상기 첫번째 컬럼의 제 6 신호(z16)와 추가되는 비트발생기의 캐리-전파 감산기(도면에 도시하지않음)로부터 입력되는 입력캐리비트(bi)를 감산하여 1비트의 합과 1비트의 출력캐리(bo)를 발생시킨다.
상기 제 3 캐리-누적 가산기는 캐리-전파 감산기로부터 출력된 합과 17번째 비트 발생기의 제 1 및 제 2 캐리-누적 가산기(도면에 도시하지않음)로부터 각각 입력되는 두개의 입력캐리(ci1, ci2)를 가산하여 1비트의 합과 1비트의 출력캐리(co3)를 발생시킨다.
상기 캐리-전파 가산기는 제 3 캐리-누적 가산기와 상기 제 3 캐리-누적 가산기로부터 출력된 합과 17번째 비트 발생기의 제 3 캐리-누적 가산기 및 캐리-전파 가산기(도면에 도시하지않음)로부터 각가 입력되는 두개의 입력 캐리(ci3, ci4)를 캐리-전파 가산기에서 가산하여 첫번째의 최종 합비트(r)와 1 비트의 출력캐리(co4)를 발생시킨다.
따라서, 첫번째 컬럼에서 생기는 자리수 올림을 다시 하위 비트(bit)에 더하기를 수행한다. 구현에서는 컬럼의 덧셈 연산을 수행하기 위하여 행렬에 하나의 행을 추가하여 추가된 행에 0000...1을 더함으로써 덧셈을 구현한다.
따라서, 상기의 17비트 난수발생기는 종래의 31 비트 난수발생기의 구성인 많은 비트발생기의 일부를 제거하고, 17개의 비트발생기만을 설치하여 적은 난수만 필요한경우 하드웨어의 손실과 난수 발생시간의 지연을 줄일수 있다.
이상에서 자세히 설명된 바와 같이, 본 발명에 의하면, 17비트의 난수를 발생시키기위하여 종래의 31비트 난수발생기의 31개의 비트발생기중 17개 비트발생기만으로 설계하여 적은 비트의 난수를 발생시킬때에 비트발생기의 손실을 줄이고, 이로인하여 난수 발생 지연을 방지한 효과가 있다.
본 발명은 상기한 실시 예에 한정되지 않고, 이하 청구 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진자라면 누구든지 다양한 변경 실시가 가능할 것이다.

Claims (2)

  1. (삭제)
  2. 17비트 자리를 갖는 신호를 수신하여 17비트 자리의 난수를 발생하는 난수 발생기에 있어서,
    상기 17비트 신호의 래머 알고리즘에 따른 순환 컨벌루션 행렬식에서 각 컬럼에 대한 엔트리 신호를 각각 수신하여, 각 컬럼이 덧셈 연산된 17비트 자리를 갖는 합 신호와 캐리 신호를 발생하는 비트 발생부와;
    상기 비트발생부로부터 수신된 상기 합 신호와 상기 캐리 신호를 더하여 17비트의 난수를 발생시키는 난수 발생부를 구비하며,
    상기 비트 발생부는,
    상기 순환 컨벌루션 행렬식에서의 i 번째 컬럼의 제 1, 제 2 및 제 3 신호를 수신하여 이를 가산한 1비트의 합과 1비트의 출력캐리를 발생시키는 제 1 캐리-누적 가산부와,
    상기 제 1 캐리-누적 가산부로부터 출력된 합과 상기 i 번째 컬럼의 제 4 및 제 5 신호를 수신하여 이를 가산한 1비트의 합과 1비트의 출력캐리를 발생시키는 제 2 캐리-누적 가산부와,
    상기 제 2 캐리-누적 가산부로부터 출력된 합과 상기 i 번째 컬럼의 제 6 신호와 i-1 번째 비트발생부의 캐리 신호를 수신하여 이를 감산한 1비트의 합과 1비트의 출력캐리를 발생시키는 캐리-전파 감산부와,
    상기 캐리-전파 감산부로부터 출력된 합과 상기 i-1 번째 비트발생부의 제 1 및 제 2 캐리-누적 가산부로 부터의 제1 및 제2 캐리 신호를 수신하여 이를 가산한 1비트의 합과 1비트의 출력캐리를 발생시키는 제 3 캐리-누적 가산부와,
    상기 제 3 캐리-누적 가산부로 부터의 합과 상기 i-1 번째 비트발생부의 제 3 캐리-누적 가산부와 상기 캐리-전파 가산부로 부터의 캐리 신호를 수신하여 이를 가산한 i번째의 최종 합비트와 출력캐리를 발생시키는 캐리-전파 가산부를 포함하여 구성되는 것을 특징으로 하는 난수발생기.
KR10-2001-0029098A 2001-05-25 2001-05-25 난수 발생기 KR100422345B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0029098A KR100422345B1 (ko) 2001-05-25 2001-05-25 난수 발생기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0029098A KR100422345B1 (ko) 2001-05-25 2001-05-25 난수 발생기

Publications (2)

Publication Number Publication Date
KR20020089985A KR20020089985A (ko) 2002-11-30
KR100422345B1 true KR100422345B1 (ko) 2004-03-10

Family

ID=27706540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0029098A KR100422345B1 (ko) 2001-05-25 2001-05-25 난수 발생기

Country Status (1)

Country Link
KR (1) KR100422345B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110060033A (ko) 2009-11-30 2011-06-08 박옥희 해상 구조물용 커플링

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317528A (en) * 1991-10-07 1994-05-31 International Business Machines Corporation Random number generator
JPH1185474A (ja) * 1997-09-10 1999-03-30 Sony Corp 乱数発生装置およびそれを用いたノイズ発生装置
JPH1185473A (ja) * 1997-09-10 1999-03-30 Sony Corp 乱数発生装置
KR20000024841A (ko) * 1998-10-02 2000-05-06 김영환 레머 알고리즘을 이용한 난수발생기
KR20010061525A (ko) * 1999-12-28 2001-07-07 박종섭 난수 발생기

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317528A (en) * 1991-10-07 1994-05-31 International Business Machines Corporation Random number generator
JPH1185474A (ja) * 1997-09-10 1999-03-30 Sony Corp 乱数発生装置およびそれを用いたノイズ発生装置
JPH1185473A (ja) * 1997-09-10 1999-03-30 Sony Corp 乱数発生装置
KR20000024841A (ko) * 1998-10-02 2000-05-06 김영환 레머 알고리즘을 이용한 난수발생기
KR20010061525A (ko) * 1999-12-28 2001-07-07 박종섭 난수 발생기

Also Published As

Publication number Publication date
KR20020089985A (ko) 2002-11-30

Similar Documents

Publication Publication Date Title
Wang et al. A high-speed residue-to-binary converter for three-moduli (2/sup k/, 2/sup k/-1, 2/sup k-1/-1) RNS and a scheme for its VLSI implementation
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
US7912891B2 (en) High speed low power fixed-point multiplier and method thereof
KR100324312B1 (ko) 레머알고리즘을이용한난수발생기
US7480691B2 (en) Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
Premkumar A formal framework for conversion from binary to residue numbers
JP4273071B2 (ja) 除算・開平演算器
JP2001222410A (ja) 除算器
KR100422345B1 (ko) 난수 발생기
CN108418687B (zh) 一种适合sm2算法的快速模约减方法和介质
Dakhole et al. Multi-digit quaternary adder on programmable device: Design & verification
JP3660075B2 (ja) 除算装置
JPWO2011036746A1 (ja) 演算装置
US7472147B2 (en) Random number string output apparatus, random number string output method, program, and information recording medium
JP3190826B2 (ja) 積和演算装置
KR101318992B1 (ko) 모듈로 n 연산방법 및 그 장치
Sahoo et al. A high speed FIR filter architecture based on novel higher radix algorithm
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기
KR100545162B1 (ko) 난수 발생기
JP3106767B2 (ja) 乗算方法及び乗算回路
JP2506746B2 (ja) 単位演算素子
CN117193710A (zh) 一种基于矩阵运算的有限域乘法器、除法器和运算电路
Vasanthi et al. HRM: $ M $-Term Heterogeneous Hybrid Blend Recursive Multiplier for GF ($2^{n} $) Polynomial
JP3769273B2 (ja) レーダ装置

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
LAPS Lapse due to unpaid annual fee