KR101234929B1 - 랜덤 펄스 발생원, 및 이 발생원을 사용하여 난수 및/또는 확률을 생성하는 반도체 디바이스, 방법, 및 컴퓨터-판독가능한 저장 매체 - Google Patents
랜덤 펄스 발생원, 및 이 발생원을 사용하여 난수 및/또는 확률을 생성하는 반도체 디바이스, 방법, 및 컴퓨터-판독가능한 저장 매체 Download PDFInfo
- Publication number
- KR101234929B1 KR101234929B1 KR1020077002434A KR20077002434A KR101234929B1 KR 101234929 B1 KR101234929 B1 KR 101234929B1 KR 1020077002434 A KR1020077002434 A KR 1020077002434A KR 20077002434 A KR20077002434 A KR 20077002434A KR 101234929 B1 KR101234929 B1 KR 101234929B1
- Authority
- KR
- South Korea
- Prior art keywords
- random number
- probability
- random
- generating
- rpg
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L23/00—Details of semiconductor or other solid state devices
- H01L23/58—Structural electrical arrangements for semiconductor devices not otherwise provided for, e.g. in combination with batteries
- H01L23/585—Structural electrical arrangements for semiconductor devices not otherwise provided for, e.g. in combination with batteries comprising conductive layers or plates or strips or rods or rings
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K3/00—Circuits for generating electric pulses; Monostable, bistable or multistable circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K3/00—Circuits for generating electric pulses; Monostable, bistable or multistable circuits
- H03K3/84—Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2223/00—Details relating to semiconductor or other solid state devices covered by the group H01L23/00
- H01L2223/58—Structural electrical arrangements for semiconductor devices not otherwise provided for
- H01L2223/64—Impedance arrangements
- H01L2223/66—High-frequency adaptations
- H01L2223/6661—High-frequency adaptations for passive devices
- H01L2223/6677—High-frequency adaptations for passive devices for antenna, e.g. antenna included within housing of semiconductor device
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2224/00—Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
- H01L2224/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L2224/42—Wire connectors; Manufacturing methods related thereto
- H01L2224/47—Structure, shape, material or disposition of the wire connectors after the connecting process
- H01L2224/48—Structure, shape, material or disposition of the wire connectors after the connecting process of an individual wire connector
- H01L2224/4805—Shape
- H01L2224/4809—Loop shape
- H01L2224/48091—Arched
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2924/00—Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
- H01L2924/0001—Technical content checked by a classifier
- H01L2924/0002—Not covered by any one of groups H01L24/00, H01L24/00 and H01L2224/00
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2924/00—Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
- H01L2924/30—Technical effects
- H01L2924/301—Electrical effects
- H01L2924/3025—Electromagnetic shielding
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
- Tests Of Electronic Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
- Measurement Of Radiation (AREA)
- Credit Cards Or The Like (AREA)
Abstract
본 발명은 내부에서 자발적으로 발생되는 랜덤 펄스 발생원을 필수구성요소로 설치함으로써 인증 신호, 난수, 및 확률을 발생하고 랜덤 신호를 완전하게 발생할 수 있는 IC 와 같은 반도체 디바이스를 제공하고, 또한 자발적으로 랜덤 펄스를 생성하는 랜덤 펄스 발생원 (이하, RPG) 을 설치하는 단계, RPG 로부터 발생되는 랜덤 펄스들 사이의 시간 간격을 계측하거나 랜덤 펄스의 전압 값을 계측하여 디지털 값으로 변환하는 단계, 디지털 값으로 변환된 랜덤 펄스로부터 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수를 생성하는 단계를 포함하는, 확률 및/또는 난수를 제공하는 방법/프로그램을 제공한다.
랜덤 펄스, 랜덤 펄스 발생원
Description
기술 분야
본 발명은 완전한 랜덤 펄스를 자발적으로 생성하는 α-입자 방출체를 제공받는 랜덤 펄스 발생원, 내부에 일체로 피팅되며 완전한 랜덤 신호를 생성할 수 있는 랜덤 펄스 발생원을 갖고 인증 신호, 난수 및 확률을 제공하는 IC 와 같은 반도체 디바이스, 및 이 발생원을 사용하여 난수 및/또는 확률을 생성하는 방법 및 프로그램에 관한 것이다.
배경 기술
보안이 향상된 IC 태그가 일본 특허 공개 제 2003-337928 호 및 제 2003-16396 호에서 공개된다. 전자인 공식 문서에서 공개된 IC 태그는 단말기와의 접속을 통하여 전력을 축전하고, 전력에 의해서 IC 에서의 CPU 에 의한 원-타임 암호를 생성하고, 메모리에서의 암호를 유지하고, 축전 전력이 방전되었을 때 유지된 암호를 소거하며, 후자인 공식 문서에서 공개된 IC 태그는 이 태그로부터 인증 데 이터를 2 회 이상 판독하고 의사 랜덤 값을 인증 데이터로서 사용하는 구성을 갖는다.
본 발명의 개시
그러나, 이런 IC 태그는 랜덤 신호를 완전하게 생성하는 발생기 또는 이러한 신호를 생성하는 기능을 포함하지 않는다. 인증 IC 의 이런 타입의 경우에 있어서, 저장 회로가 내장되고, 인증 데이터는 무선 통신 또는 적외선 통신을 통하여 외부로부터 신호를 수신함으로써 획득되거나 IC 칩 내에서 발생되며, 이 데이터는 이 저장 회로 내에 기입된다. 더욱이, 이 수신 측에서의 IC 칩 내에 저장되는 이 데이터는 외부로부터 판독될 수 있고, 이로써, 이 데이터는 신뢰성의 면에서 취약하고 보안의 면에서 문제를 수반하고 있다. 더욱이, IC 를 구별하기 위해서 난수 데이터를 사용할 경우, 송신 측에서의 프로그램에 의해서 준비되는 의사 난수가 종종 사용되고, 이로써, 송신 측에서의 비밀을 유지하는 것이 필수적이다. 또한, 규칙성이 난수 데이터로부터 예측될 수 있고, 결합 수는 제한되며, 복수의 동일한 식별 번호가 혼재한다고 의심될 수 있는 취약성이 있다. 연구를 위해서 IC 태그를 사용할 때, 개개의 정보가 연구 측에서 축적되고 IC 태그는 확산 방지 요소가 된다는 문제가 발생한다.
더욱이, 전자 자물쇠와 같은 인증 장치의 경우에 있어서, 다른 상대를 인증하기 위해서 사용되는 종래의 IC 의 경우에는 인증 신호 발생 기능이 칩 내에 포함되지 않는다. 안티-클론 (위조방지) 에 대해서, 인증 신호는 외부로부터 무선 또는 적외선 통신을 통하여 전송되고, 이 인증 데이터는 칩 내의 저장 소자에 저장되고, 다른 상대는 인증 데이터가 송신 소스에 저장된 데이터와 일치할 때 정확한 하나로서 인식된다. 그러므로, 저장된 데이터를 완전하게 복사할 때, 송신원에 의해서는 진위를 판정할 수 없다. 그러므로, 위의 IC 태그의 경우와 유사하게 보안상의 문제가 있다.
더욱이, 열적 잡음 또는 잡음들을 사용하는 난수 발생기가 내장되는 IC 가 있다. 열적 잡음 또는 잡음들은 전자파장과 같은 환경의 변화에 의해서 영향을 받는다. 그러므로, 완전한 랜덤 신호 뿐만 아니라 의사 난수를 취급하는 것이 필요하고 그러므로 신뢰성이 제한된다. 잡음을 사용하는 시스템의 경우에 있어서, 잡음에 따라서 발생되는 난수는 현상적으로 무질서하게 된다. 그러나, 난수의 성능에 대해서는 다양한 평가 방법에 기초하는 것들 외에 논리적인 근거가 없다.
본 발명은 상술된 전형적 문제를 제거하도록 개발되었다.
본 발명의 랜덤 펄스 발생기 (발생원) (이하, RPG) 는 원자핵 붕괴에 기인하여 방출되는 α 입자 또는 베타 선 또는 α 입자 및 베타 선을 방출하는 방출체 및 방출되는 α 입자 등을 검출하는 검출기를 포함하고 방출체를 용액으로 사용하고 검출기의 검출면 상에 용액을 적하하도록 구성된다.
본 발명의 RPG 는 또한 원자 붕괴에 기인하여 방출되는 α 입자 또는 베타 선 또는 α 입자 및 베타 선을 방출하는 방출체, 및 방출되는 α 입자 등을 검출하는 검출기를 포함하도록 구성되며, 이 방출체는 용액으로 사용되고, 이 용액이 증착되거나 예를 들어 롤 방법에 의해서 패널에 형성되는 부재가 소정의 거리만큼 이격되어 검출기에 직면되는 것을 특징으로 한다.
더욱이, 본 발명과 관련하여 IC 를 포함하는 반도체 디바이스는 랜덤 펄스를 자발적으로 생성하는 랜덤 펄스 발생원을 사용하고, RPG 또는 전압 값으로부터 발생되는 랜덤 펄스들 사이에서의 시간 간격을 계측하며, 간격 또는 전압 값을 디지털 값으로 변환함으로써 난수 및/또는 확률을 생성하도록 구성된다.
예를 들면, 본 발명을 인증 디바이스에 적용할 때, 자연 붕괴에 기인하여 끊임없이 방출되는 α 입자의 방출원을 갖는 랜덤 펄스 발생기 (RPG) 는 IC 본체 내에 설치되고 완전한 랜덤 신호가 신호를 인증 신호로서 사용하기 위해서 RPG 로부터 얻어진다. 즉, IC 칩은 항상 인증 신호를 생성하여 이 신호를 매 인증마다 새로운 인증 데이터로 재기입함으로써 복사는 의미를 만들어 내지 않도록 한다. 이런 경우에 있어서, 인증 신호의 거의 모든 무한의 조합이 프로그램을 사용하지 않고 행해질 수 있고, 인증 데이터의 관리가 IC 칩 제조 측면에서 불필요하게 행해지며, IC 칩을 갖는 사용자의 측면에서 완전한 보안을 확립하는 것이 가능하다.
더욱이, 상세 사항이 나중에 설명될 지라도, 본 발명의 경우에 있어서, IC 칩에서 RPG 신호로부터의 완전한 난수 및 확률을 용이하게 준비하는 것이 가능하다. 이에 의해서, IC 를 제공함으로써, 난수 및 확률이 용이하게 사용될 수 있다.
본 발명은 환경 조건에 의해서 전혀 영향을 받지 않고, 인위적으로 제어될 수 없는 초기 신호 발생원이 IC 몸체에서 형성되며, IC 에 의해서 발생되는 랜덤 신호는 인증 신호, 난수, 및 확률을 생성하는 소스 신호로서 사용된다. 이에 의해서, 인위적으로 동작될 수 없고 그 내에서 안전성이 확립되는 인증을 구성하는 것이 가능하다.
더욱이, 데이터의 저장은 인증-시스템 공급 측면에서 불필요하고 비용을 크게 감소시키는 것이 가능하다. 본 발명에 의해서 발생된 균등 난수를 완전한 난수로 취급하는 것이 가능하고 이 시스템은 인위적인 부정직이 적용될 수 없는 확률 발생기로서 사용될 수 있다.
또한 본 발명은 난수 및/또는 확률을 생성하는 방법/프로그램을 가리키며, 이 방법/프로그램은 자발적으로 랜덤 펄스를 생성하는 랜덤 펄스 발생원 (이하, RPG) 를 설치하는 단계, RPG 로부터 발생되는 랜덤 펄스들 사이의 시간 간격을 계측하거나 랜덤 펄스의 전압 값을 계측하여 디지털 값으로 변환하는 단계, 및 디지털 값으로 변환되는 난수로부터 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수, 및/또는 확률을 생성하는 단계를 포함한다.
이 방법/프로그램은 랜덤 펄스로부터 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수, 및/또는 확률을 생성하는 단계는 RPG 로부터 발생되는 펄스들 사이에서 동일한 펄스 간격이 발생하는 확률을 도시하는 지수 분포로부터 필요수의 확률을 구하여 이 확률에 기초하여 균등 난수를 작성하는 것을 특징으로 한다.
이 방법/프로그램은 또한 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수, 및/또는 확률을 생성하는 단계는 지수 분포를 사용하여 t1 과 t2 사이의 시간 간격으로부터 확률을 구하는 경우, 소정의 확률을 갖는 펄스는 시간 t2 가 무한대 시간이라고 가정함으로써 시간 t1 을 초과할 때 소정의 확률을 갖는 펄스를 인정되는 것을 특징으로 한다.
이 방법/프로그램은 또한 랜덤 펄스로부터 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수, 및/또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성하는 점에서, 지수 분포 난수 및 균등 분포 난수가 안정되는 출현 확률 밀도 분포를, 펄스의 평균 방출율이 변동할 지라도 계측을 위해서 기본 주기를 변동시키고 동일한 계산을 수행함으로써, 인정하는 것을 특징으로 한다.
이 방법/프로그램은 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수, 및/또는 확률을 생성하는 단계는 지수 분포로부터 난수를 작성하는 경우 계측용 기본 주기를 변동함으로써 지수 분포 난수의 분포를 안정시키고 균등 분포 난수의 생성과 확률의 생성을 동시에 수행하는 것을 특징으로 한다.
이 방법/프로그램은 랜덤 펄스로부터 소정의 비트 길이를 갖는 균등 난수 및/또는 지수 분포 난수, 및/또는 확률을 생성하는 단계는 지수 분포로부터 난수를 작성할 때에 계측용 기본 주기를 변동시킴으로써 계측 시간용 마이크로컴퓨터와 같은 하드웨어의 진동 주기에 대한 동작 클록의 변동을 자동 보정하는 것을 특징으로 한다.
도면의 간단한 설명
도 1 은 IC 태그에 대한 α 입자 방출체의 설치 예제를 도시하는 예시이다.
도 2 는 α 입자 방출체 설치 부분의 확대도이다.
도 3 은 α 입자 방출체 설치 부분 (α 입자 방출체가 원반 모양인 설치 예 제) 의 확대도이다.
도 4a 는 α 방출체의 적하와 밀봉 예제를 도시하는 예시이다.
도 4b 는 α 방출체의 적하와 밀봉 예제를 도시하는 예시이다.
도 4c 는 α 방출체의 적하와 밀봉 예제를 도시하는 예시이다.
도 5a 및 5b 는 DIP-타입 IC 에 대해서 펄스 발생원을 설치하는 경우를 도시하는 예시이다.
도 6 은 본 발명의 RPG-RFID 를 도시하는 블록 다이그램이다.
도 7 은 α 입자 방출체와 검출기 사이의 거리와 α 입자의 카운팅 레이트 사이의 관계를 도시하는 그래프이다.
도 8 은 알루미늄의 두께의 증가에 기인하여 전자의 수의 감소를 도시하는 그래프이다.
도 9 는 RPG 출력 펄스를 도시하는 예시이다.
도 10a, 10b 및 10c 는 본 발명에 따른 일 실시형태의 동작의 부분들을 도시하는 흐름도이다.
본 발명을 실행하는 최상의 모드
상세한 설명이 무선 태그의 동작이 예제로서 부가되는 RPG-RFID (무선 주파수 식별) 칩을 예로 들어서 행해진다. 그러나, 본 발명은 이 예제에 제한되는 것은 아니다. 본 발명은 인증 신호, 랜덤 신호 또는 확률을 생성하는 IC 와 같은 또 다른 반도체 디바이스에 적용될 수 있음은 물론이다.
더욱이, 본 발명을 아래에서 설명되는 랜덤 펄스 발생원 (RPG) 을 포함하는 IC 카드, IC 태그, PC 접속가능 유닛, 유닛 내장 모듈 등에 적용하고 더욱이 본 발명을 RPG 로부터 발생되는 랜덤 펄스들 사이의 시간 간격 또는 전압 값을 계측하고 이 값을 디지털 값으로 변환함으로써 난수 및/또는 확률을 생성하기 위해서 구성되는 반도체 디바이스를 포함하는 IC 카드, IC 태그, PC 접속가능 유닛, 유닛 내장 모듈 등에 적용하는 것이 가능하다.
본 발명의 IC 태그는 다음 구조를 갖는다. 완전한 랜덤 펄스 (랜덤 펄스 발생기) 에 대한 RPG 는 본 발명에 의해서 획득되는 일본 특허 제 2926539 호에서 개시되는 α 입자를 사용하여 펄스 발생기를 향상시킴으로써 사용된다. α 입자 방출체는 자연적으로 붕괴하는 241Am, 244Cm, 210Pb-210Po, 210Po 등 중 하나를 사용한다. 더 상세하게, 우라늄 계열의 모든 원자핵 종, 토륨 계열의 모든 원자핵 종 및 이러한 원자핵 종들 사이의 방사적인 평형을 형성하는 210Pb-210Po 등의 모든 원자핵 종, 244Cm, 또는 241Am 을 사용할 수 있다. 더욱이, IC 태그가 IC 태그 사용처에서 차폐 설치 스페이서를 갖는 부분을 위해서 사용되는 한, 베타 선 또는 감마 선을 사용함으로써 랜덤 펄스들을 발생하기 위해서 RPG 를 사용하도록 허용된다.
α 입자, 베타 선 및 감마선이 온도, 압력, 습도 또는 전자파와 같은 환경에 의해서 영향을 받지 않기 때문에, 인위적으로 이것들을 동작하는 것은 불가능하다. 이러한 특정한 IC 는 다른 방식에 의해서 실현될 수 없고 이 IC 는 안전을 보장 하는 중요한 요소이다. 완전한 안전이 요청되지 않는 부분에 대해서 사용되는 IC 태그는 반도체의 열잡음 또는 지터를 사용하여 RPG 를 사용할 수 있다.
IC 태그의 RPG-RFID 칩은 RPG, RPG 로부터 송신되는 랜덤 펄스를 인증 신호로서 사용하는 것을 가능하게 하는 전자 회로, 인증 신호를 저장하는 회로, 저장 디바이스, 통신의 형태에 대응하는 인증 신호를 송신하는 회로, 안테나, 통신 디바이스 등을 포함한다. 전원에 대해서, RF 에너지는 RPG-RFID 칩의 경우에 있어서 안테나로부터 공급된다. 그러나, 단말기에 대한 설치 공간이 있을 때 단말기를 사용하고 이 단말기를 통하여 전원을 공급하는 것이 허용된다.
RPG-RFID 칩의 인증 절차의 경우에 있어서, 내장 RPG 로부터의 (생성 시간과 펄스들 사이의 시간 간격) 랜덤 신호가 내부 저장 디바이스 내에서 RPG-RFID 칩의 인증 신호로서 기입된다. 저장된 신호는 RPG-RFID 칩을 갖는 통신 수단을 사용함으로써 외부로부터 인출되거나 동일한 로트 (lot) 에서 동일한 인증 신호의 결합이 없다는 것을 확인하기 위해서 직접 접촉에 의한 접속을 통하여 인출된다.
출하되는 RPG-RFID 칩이 특정한 필수품 관리를 위해서 사용되며 출하의 시간 이후로 이동 정보 등의 관리에 있어서 배포 범위가 상대적으로 제한될 때, 각각의 RPG-RFID 칩의 인증 신호는 출하 전에 통신을 통하여 판독되고, 저장되며, 사용된다.
인증 순서와 인증 데이터의 보존은 RPG-RFID 칩에 의해서 발생되는 랜덤 신호를 사용하여 인증 데이터를 교체하기 위해서 매 통신마다 수행된다.
본 발명의 랜덤 펄스 발생기 (RPG) 와 함께 제공되는 RPG-RFID 의 일 실시형 태는 첨부된 도면을 언급함으로써 상세하게 설명된다.
먼저, 랜덤 펄스들을 자발적으로 발생하는 랜덤 펄스 발생기가 설명된다.
RPG 는 도 1 에서 도시된 RPG-RFID 칩의 중심 부분에서 α 입자 방출체, 및 PN-타입 반도체, PNP-타입 반도체, PIN 포토다이오드, 포토트랜지스터, 포토다이오드 등으로 구성된다. 펄스 발생기의 소자는 RPG-RFID 칩에 대해서 요청되는 안전 수준에 따라서 선택된다. 도 1 에서, 참조 부호 10 은 α 입자 방출체 및 검출기가 설치되는 위치를 나타내고 100 은 베이스 물질 (실리콘 베이스) 를 나타낸다.
도 2 는 α 입자 방출체가 설치되는 RPG-RFID 칩의 α 입자 검출기 주변의 구조를 도시한다. α 입자 방출체로부터 방출되는 α 입자 (He 원자) 는 온도, 압력, 또는 전자파와 같은 환경에 의해서 영향을 받지 않고, 또한 전원은 불필요하며, α 입자는 반영구적으로 반감기에 따라서 방출된다. 즉, 이 시스템은 인증에 사용되는 원신호에 대해서 인위적으로 완전히 동작될 수 없는 신호 소스를 사용하는 것이 가능하다는 것을 특징으로 한다. 그러므로, 이 시스템은 외부로부터 완전히 변경될 수 없는 신호 발생원이 된다. 완전한 안전성이 이 IC 의 설치 부분에 대해서 요청되지 않을 때에는, 펄스 발생기에 대해서 잡음을 생성하는 다이오드와 같은 예를 사용하는 것이 또한 허용된다. 도 2 에 있어서, 참조 부호 11 은 증착되거나 적하되는 α 입자 방출체를 나타내고 12 는 검출기를 나타낸다.
α 입자 방출체를 IC 내부에 구체화하기 위해서, α 입자 방출체가 상부에 증착되거나 롤 방법에 의해서 디스크 형상처럼 형성되는 부재를 사용하는 방법과 (잉크 제트 시스템에 의한 주입을 또한 포함하는) α 입자 방출체의 용액을 적하하는 방법과 같은 2 개의 방법이 있다.
디스크 형상처럼 형성되는 α 입자 방출체를 구체화하는 방법의 경우에 있어서, α 입자 방출체는 α 입자 검출 다이오드 위쪽에 즉시 설치된다. 검출 다이오드와 α 입자 방출체 사이의 거리가 소정의 거리가 되기 위해서 스페이서를 설치하고 α 입자 방출체를 스페이서의 상에 마운팅하는 방법과 α 입자 방출체를 밀봉 플레이트에 접착시킴으로써 α 입자 방출체를 설치하는 방법인 이상의 2 개의 방법이 있다. 도 3 은 설치 구조를 도시한다. 도 3 에 있어서, 참조 부호 11 은 α 입자 방출체를 나타내고, 12 는 검출기를 나타내고, 13 은 밀봉 플레이트를 나타내며, 14 는 방출체와 검출기 사이의 거리를 설치하는 스페이서를 나타낸다.
다음은 α 입자 방출체의 용액을 적하함으로써 검출기를 구성하는 방법이다 (도 4a 내지 4c 를 참조하라).
용액이 적하되는 검출기의 주변부를 포함하는 부피가 외부로 흐르지 않는 용액의 부피를 구하기 위해서 먼저 계산된다. 적하되는 용액의 양이 볼륨과 동등하게 만들어진다. 소정의 펄스 수가 구해지도록 적하량에 포함되는 α 입자 방출체의 원자의 수가 구하고 농도가 구해지기 위해서 방출체를 적하하기 전에 이 농도가 조절된다.
필요한 양이 마이크로 실린지 (20) 와 같은 적하 지그에 의해서 흡인되고, α 입자 방출체의 선결정된 양의 용액 (11') 이 검출기 (12) 의 표면 상에서 용액 (11') 을 적하하기 위해서 밀어내진다 (도 4A 를 참조하라). 용액 (11') 을 적하한 후, 검출기 (12) 는 에폭시와 같은 밀봉 물질 (15) 에 의해서 밀봉되고 (도 4b 를 참조하라) 밀봉 디스크 (16) 에 의해서 밀봉된다 (도 4C 를 참조하라). 동일한 절차가 용액이 잉크 제트 시스템을 사용하여 용액을 주입함에 따라서 적하되는 경우에 대해서 사용된다.
α 입자 방출체와 회로 부분 사이의 거리 ( 도 1 및 2 에서 거리 d) 는 α 입자에 의한 오작동을 방지하기 위해서 다음의 표현에 의해서 획득되는 α 입자의 레인지 (range) 보다 더 넓게 취해진다.
도 7 은 공기에서의 α 입자의 일반적인 레인지 (range) 를 도시한다. 횡축은 α 입자 방출체와 검출기 사이의 거리를 나타내고 세로 좌표의 축은 계수치 (임의단위) 를 나타낸다. α 입자 방출체에 210Pb-210Po 를 사용할 때의 계산이 아래에서 보여진다.
α 입자의 에너지 E (MeV) 와 공기에서의 레인지 R (cm) 사이의 관계는 가이거의 수식에 의해서 명확하게 검증되고 도시된다.
E = 2.12R2 /3 (4<E<7)
R = 0.323E3 /2 (3<R<7)
이에 따라서, Po α 입자의 레인지가 아래에서 보여진다.
공기에서의 레인지가 이미 공지되고 있을 때, 고체 물질에서의 α 입자의 레인지 Rs (㎝) 가 다음의 브래그-클리맨의 수식으로부터 얻어진다.
A: 고체 물질의 원자 무게
ρ: 밀도
Si 에서의 α 입자의 레인지는 다음 수식에 의해서 보여진다.
따라서, 회로로부터 분리하기 위해서 Si 의 차폐재 (차폐벽) 을 사용할 때, 29 ㎛ 이상을 설치하는 것이 허용된다.
더욱이, 210Pb-210Po 는 매우 약한 베타 선을 방출한다. 베타 선의 경우에 있어서, 도달된 전자의 수는 α 입자와는 다르게 도 8 에서 도시된 바와 같은 거리를 갖고 지수적으로 감소된다. 베타 선은 전자이지만, 이것은 내부 IC 회로에 전혀 영향을 미치지 않는다. 그러나, 오해되지 않기 위해서 베타 선이 외부로 새어나가는 출구가 없는 구조를 사용하는 것이 필요하다. 차폐 물질의 필요한 두께는 다음 수식으로부터 얻어진다. 도 8 에서, 횡축은 알루미늄의 두께를 나타내고 종축은 전자의 수를 나타낸다.
Pb-210 베타 선의 최대 에너지 Em 이 0.061 MeV 이기 때문에, 최대 레인지 Rm 은 윌슨의 수식에 따라서 계산된다.
Rm = 2400(Em)2 = 2400 × (0.061)2 = 2400 × 0.003721 = 8.9304 mg/cm2
더욱이, 동위원소 (isotope) 핸드북 (개정 3 판, 마루젠, 1985년 4월) 로부터 Al 에서의 레인지는 60 KeV 에서 6 mg/cm2 이다. Al 의 밀도가 2.7 g/cm3 이기 때문에, 다음의 수식이 얻어진다.
따라서, RPG-RFID 칩에 대해서 필요한 도 1 에서 도시된 밀봉 물질은 33㎛ 이상인 것이 충분하다.
본 발명은 RPG-RFID 칩 뿐만 아니라 범용 IC 에서 용이하게 내장될 수 있다. 도 5A 및 5B 는 DIP-타입 IC 으로 본 발명을 실시할 때의 레이아웃을 도시한다. α 입자 방출체가 도 5A 및 5B 와 같이 중심으로 내장되는 위치를 설치하는 것 이 불필요하지만 위치는 IC 회로의 설계에 따라서 변경될 수 있다. (동일한 것이 MM 칩에 대하여 또한 적용된다.) 예시들에 있어서, 참조 부호 30 은 α 입자 방출체 설치 부분을 나타내고, 31 은 밀봉 캡 또는 피치를 나타내고, 32 는 α 입자 방출체가 상부에 적하되는 다이오드 칩을 나타낸다.
도 6 은 본 발명의 RPG-RFID 칩의 전체 블록 회로를 도시한다. RPG-RFID 칩은 파형-정형 증폭 회로 (41), 논리 회로 (제어 처리) (42), 저장 회로 (43), RF 회로 (44) 및 안테나 (45) 로 구성된다.
파형-정형 증폭 회로 (41) 는 RPG (40) 로부터 출력된 첨두 파형을 디지털-처리될 수 있는 정형된 구형파로 형성하는데 사용된다. 논리 회로 (42) 는 랜덤 펄스 신호를 목적 신호로서 취급하는 처리 회로이다. 저장 회로 (43) 는 신호 처리 후에 데이터를 저장하는 회로이다. RF 회로 (44) 는 안테나 (45) 를 통하여 외부와의 통신을 수행하는 회로이다.
도 9 에서 도시된 바와 같이, RPG 로부터의 신호를 디지털화하고 저장하기 위해서, RPG 의 랜덤 펄스의 피크 값과 펄스 간격은 랜덤이다. 따라서, 전압을 디지털 변환하기 위해서 펄스 간격을 계측하거나 피크 값의 전압을 샘플-홀딩하고, 계측된 또는 변환된 값을 난수로 옮기는 것이 가능하다. 더욱이, 전압과 클록 펄스의 수 사이의 결합을 사용하는 것이 가능하다.
이 후에, RPG 에 의해서 발생된 펄스를 인증 신호로서 사용할 때, 완전하게 동일한 펄스 간격이 발생하는 확률이 구해진다.
예제로서 정상적으로 사용되는 펄스의 평균 방출율 n = 10 인 일 케이스가 구해진다.
RPG 의 평균 방출율이 n = 10 일때, 1 초 동안 10 개의 펄스의 평균 수를 사용하는 것으로 가정된다.
10 개의 펄스 간격이 0.1 초의 평균 펄스 간격으로서 나타난다는 것을 가정할 때, 10 개의 펄스가 동일한 시간 간격으로 다음 번에 나타나는 확률은 다음 표의 계산 결과에 의해서 보여진다.
위의 표의 계산 결과로부터, 동일한 시간에서 10 개의 펄스 스트링이 나타나는 확률은 1/2.97E+21 이하이다.
그러므로, 이 시스템을 사용하는 방법의 케이스에 있어서, 최대 10 개의 펄스가 동일한 결합을 실현하는 확률은 1/2.97E+21 이하이다. 이 확률은 동일한 펄스 발생기 내의 확률이지만, 개개의 펄스 발생기는 상이한 n 값을 각각 갖는다. 그러므로, 상이한 펄스 발생기가 동일한 펄스 스트링을 갖는 확률은 (1/3E+21)2 이하가 된다.
이 인증용 시스템을 사용하는 IC 의 목적에 따라서 사용되는 펄스 수를 선택하고 안전성을 향상시키는 것이 가능하다.
이 후에, 균등 난수를 작성하는 방법이 이하에서 설명된다.
t1 으로부터 t2 로의 시간 간격에서 나타나는 펄스의 확률이 위의 수학식 5 로부터 구해진다.
위의 수식을 변형하면, 다음의 수식 (2) 가 얻어진다.
수식 (2)
여기에서 t2>t1 이므로, 위의 수식은 tk=t2, tk-1=t1 으로 대체하고, t0 = 0 으로부터 t1, t2,...를 순차적으로 구한 것에 의해서, 1/p 가지의 균등 출현 확률을 갖는 시간 폭 (Δt) 의 임계 값을 구하는 것이 가능하다.
수식 (3)
단, t0 = 0 이다.
이 수식 (3) 의 경우에 있어서, n 및 p 를 고정함으로써, 각각의 tk 값을 유니보컬 (univocal) 하게 결정하는 것이 가능하다. 16-비트 길이 (0-65535) 에 의해서 펄스 시간 간격 계측을 수행하고 변환 후의 유효 자릿수 수를 생각할 때, 위의 임계 값으로 대체되는 데이터 길이를 대략 8-비트 길이로 설정하는 것이 필요하다. 그렇지 않으면, 짧은 시간 간격에서 에러의 영향을 무시하는 것이 불가능하다. 그러므로, 위의 p 는 256 으로 설정되고 0-65535 의 간격 (16 비트 길이) 은 위의 임계 값에 의해서 0-255 의 간격 (8 비트 길이) 으로 변환된다. 16 비트가 비트 길이로서 필요하면, 2 개의 8-비트-길이 데이터 값을 접속함으로써 16 비트를 생성하는 것이 가능하다.
이 방법의 경우에 있어서, n 값이 증가하면, 출현 시간 간격은 상대적으로 감소한다. 시간 간격 계측 분해 성능 상수를 유지할 때, 에러가 문제된다. 반대로, n 값이 감소할 때, 시간 간격은 상대적으로 증가한다. 시간 간격 계측 분해 성능 상수를 유지할 때, 라운딩 에러 (오버플로우) 가 상부 값에서 발생한다.
그러므로, 시간 계측의 기본 주기를 변동시키는 것은 n 값의 변동에 상응하도록 만들어진다. 즉, 계측된 n 값이 작을 때, 계측의 기본 주기는 증가되고, 반면, n 값이 커질 때, 계측의 기본 주기는 감소된다. 이에 의해서, 계측된 결과로서의 수치데이터의 분포는 항상 일정하고, 이 후의 연산 처리 회로를 단순화시키는 것이 가능하다. 더욱이, 시간 계측의 기본 주기의 변동이 단위 시간당 평균 방출 수에만 의존하기 때문에, 수율의 관점으로부터 연산 회로의 동작 주기의 변동은 연산 회로의 동작 속도가 따르는 범주에서 정정된다. 그러므로, 연산 회로의 클록을 생성하는 발진 회로의 주파수의 정확도는 요청되지 않는다.
명시적으로, 다음의 수식 (4) 가 얻어진다.
수식 (4)
단, t0 = 0 이다.
그러나, n 의 변동 성분을 m 으로 하고 n = n×m 이라고 가정할 때, 다음의 수식 (5) 가 얻어진다.
수식 (5)
단, t0 = 0 이다.
이런 경우에 있어서, m (tk = t1/m) 에 따라서 계측된 시간의 기본 주기를 변동시킴에 의해서, 다음의 수식 (6) 가 얻어진다.
수식 (6)
단, t0 = 0 이다.
그러므로, 기본 연산식이 직접 적용될 수 있다.
대략적으로 연산 회로에 대해서 사용되는 동작 주파수를 25 MHz 로서 가정할 때, 기본 주기 클록은 40 ns 이다. n 값을 10 으로 가정할 때, 평균 펄스 간격은 100 ms 이다. 평균 펄스 간격의 계측은 계측 기본 주기를 100 ㎛ 로서 가정함으로써 행해진다. 계측 기본 주기를 생성하는 분주 수는 100 ㎛/40 ㎱ = 2500 번이 된다. 그러므로, 위의 변동 값 m 의 최소 값 (해상도) 은 0.4/100=0.004(0.4%) 이 되고 n 값의 변동에 대한 계측된 기준 신호의 변동의 분해 성능은 중요하지 않다.
이 방식으로 256 개의 값들을 구하기 위해서 필요한 계측 시간은 n 이 감소함에 따라서 증가한다. 예를 들면, n 이 4 와 동등할 때 255 번째 임계 값은 1.386 초이고, n 이 3 과 동등할 때 1.848 초이며, n 이 2 와 동등할 때 2.773 초가 된다. 따라서, 이 시간까지 카운팅을 계속하는 것이 필요하다. 시간 계측된 데이터의 최대 값 (65535) 에서의 이 시간 이상의 시간 폭을 라운딩하는 것이 가능하다. (이 시간을 라운딩할 지라도, 최대 데이터 (255) 의 출현 빈도는 크게 변하지 않는다.) 그러므로, 계측의 최대 값은 n 값에 기초하여 변동한다.
이 후에, 확률을 작성하는 방법이 이하에서 설명된다.
자연 붕괴를 사용하는 확률은 다음의 수식 (1) 에 의해서 얻어질 수 있다. 수식 (1) 은 다음 수식 (7) 에 의해서 보여질 수 있다.
수식 (7)
그러므로, 발생되는 확률 값을 충족시키는 t1 및 t2 를 결정하고 펄스가 t1 과 t2 사이에서 존재하는 지를 판정하는 것이 필요할 뿐이다. 이런 경우에 있어서, t2 를 무한대로 증가시킬 때, 두번째 항인 en12 는 0 이 되기 때문에 무시될 수 있고 계측된 시간을 t1 과 비교함에 의해서 성공을 판정하는 것이 가능하다. t2 를 무한대로 증가시킴에 의해서, ent 의 출현 빈도가 작은 영역이 사용된다. 그러므로, 분해 성능을 널리 취하는 것이 가능하다. 그러므로, 확률 계산에 대한 라운딩 에러를 최소화하는 것이 가능하다.
t2 가 무한대라고 가정할 때의 수식이 다음의 수식 (8) 에 의해서 보여진다.
수식 (8)
t1 을 얻기 위해서 수식 (8) 의 양쪽에 로그를 적용할 때, 다음 수식 (9) 가 얻어진다.
수식 (9)
따라서, t1 의 값이 설정 확률 값 (p) 과 초당 펄스의 수 (n) 로부터 얻어질 수 있다.
또한 이 경우에 있어서, n 값의 변동에 의하여 필요한 계측 시간이 변동된다. 특히, 확률 값이 작을 때, 장시간 계측을 효과적으로 하는 것이 필요하다. 그러므로, 균등 난수의 연산의 경우와 마찬가지로 계측의 기본 주기를 변동시킴에 의해서, 카운터의 오버플로우 또는 불충분한 정확도의 문제를 해결하는 것이 가능하다. 이 방법은 매우 작은 확률 값에 대응할 수 있다. 그러나, 확률 값이 작을 때, 계측의 최대 값은 증가하고 계측 시간이 길어지는 경우가 발생한다. 그러나, 연산 회로에서 과거의 계측된 값을 저장하는 메커니즘 또는 구조를 사용함에 의해서, 응답 시간의 문제가 피해질 수 있다.
외부로부터 확률 값이 설정되어진 때 수식 (9), t1 = log(p)/n 을 연산해 두면 되고, 계측시에는 연산이 발생하지 않는다. 그러므로, 연산 시간이 다소 요구될 지라도 실제 동작 상에서의 영향은 매우 작다. 설정 확률 값에 유연하게 조화하고 외부 입력에 의해서 다양한 확률 값을 선택하는 것을 가능하게 하기 위해서, 계산을 생략하기 위한 표를 사용하지 않고 마이크로컴퓨터에 의해서 위의 로그 연산을 계산하는 것이 가능하다.
이 후에, 기본 주기를 변동시키기 위해서 n 값에 대하여 기준 계측 시간을 설정하는 것이 아래에서 설명된다.
t0 를 0 으로 가정할 때, 최대 임계 값 (255) 의 시간 간격이 p = 255/256 = 1-e-nt255 으로부터 다음의 수식 (10) 으로부터 얻어질 수 있다.
수식 (10)
일부 허용 한계를 취함에 의해서 위의 255번째 임계 값+5% 를 16 비트 타이머가 오버플로우하는 시간으로 설정할 때, 16 비트 타이머에 의해서 카운팅될 수 있는 최대 시간 간격은 다음의 수식 (11) 에 의해서 보여진다.
수식 (11)
이에 의해서, 타이머의 카운팅 기준 클록의 주기는
tclk = (5.822436/655636)/n = 88.84333 ㎲/n 이 된다.
연산 회로의 기본 동작 주파수를 25 MHz 라고 가정할 때, 시스템 클록의 주기는 tsys = 40 ns 가 되고 위의 타이머의 기준 클록 tclk 를 발생시키는 프리스케일러의 값은 tpres = (88843.33/40.816)/n = 2176.7/n 이 된다.
n 의 값에 따라서 타이머의 카운팅 기준 주기를 변동시킴에 의해서, 균등 난수를 생성하는 임계 값을 얻기 위해서 수식 (4) 를 사용하는 것이 단지 필요하고 다음 수식이 얻어진다.
tk +1 = 1/n*log(e ntk-p); 단, t0 = 0
위의 수식에 있어서, n 이 5.822436 과 동등할 때의 각각의 tk 를 계산할 때, 1 부터 255 까지의 임계 값이 계산될 수 있고 이것들은 아래의 표에서 보여진다.
계측 데이터가 임의의 임계 값들 사이에서 포함되는 것을 구할 때, 그 결과는 8 비트 균등 난수가 된다.
계측 데이터가 임의의 임계 값들 사이에서 포함된다는 것을 구하는 방법은 2 개의 타입의 방법을 포함한다. 하나는 계측이 완료된 후에 이분 탐색에 의해서 크기 비교를 수행하는 방법이고 다른 하나는 현재의 계측된 값이 계측 과정에 있어서 어느 영역에 포함되는지를 확인하는 방법이다. 각각의 방법이 이하에서 설명된다.
이분 탐색법
본 변환의 경우에 있어서, 계측 데이터가 16 비트 길이가 되고 변환된 데이터는 8 비트 길이가 되기 때문에 이분 탐색에 대한 조건은 완벽하고, 그래서 프로그램은 상당히 단순화될 수 있다. 이 조건 하에서 특정화되는 알고리즘의 샘플이 아래에서 보여진다.
이 변환의 경우에 있어서, 16 비트 길이의 비교, 비트 처리 (xor) 과 데이터 표의 참조가 8 차례 수행된다.
계측 과정에서의 판정
위의 임계 값 표에 있어서, 수치는 0 에서 255 의 순서로 증가한다. 그러므로, 펄스 간격을 계측할 때마다 데이터 표와의 비교를 수행함에 의해서, 처리는 크게 단순화된다. 또한, 계측 완료시 (또는 다음 펄스 도착시) 균등 난수로의 변환이 완료됨으로써, 응답도 크게 향상된다. 그러므로, 이분 탐색을 사용하는 위의 방법과는 달리, 어떤 소정의 시간이 연산 처리에 요구되지는 않는다. 연산 처리용 마이크로컴퓨터를 사용할 때, 알고리즘은 유효하게 동작할 수도 있다. 상세한 알고리즘이 아래에서 보여진다.
이 방법의 경우에 있어서, 위의 표에서 1 내지 255 에 대한 데이터는 0 내지 254 내에 저장된다.
그러므로, 이것이 매우 단순한 방법이고 임계 값 검색이 분산되어 수행되기 때문에, 연산 처리부의 수율 (처리 능력) 에 대한 부하도 매우 작다.
이 후에, 본 발명의 난수와 확률을 생성하는 디바이스/방법의 처리 절차가 아래에서 더 상세하게 설명된다.
아래에서 설명되는 방법은 통상 (스탠드 얼론) 모드, 데모 모드, 및 멀티-모듈 모드 (멀티모드) 를 갖고 그것들의 특징은 다음과 같다.
정상 모드는 일대일로 호스트 컴퓨터와 접속되는 모드이고, 이 모드는 지수 분포 난수 스트링 및 균등 난수 스트링을 출력하고 확률 판정 판독 명령의 입력에 따라서 확률 판정 결과를 출력한다. 데모 모드는 검증을 위해서 준비된 모드이고, 이 모드는 펄스들의 각각의 계측에 대해서, 지수 분포 난수 스트링, 균등 분포 난수 스트링 및 확률 판정 결과를 출력한다. 멀티모드는 복수의 모듈을 접속하고, 난수 발생 속도를 증가시킬 수 있고, 이 모드에 있어서, 지수 분포 난수 스트링, 균등 분포 난수 스트링 및 확률 판정 결과가 명령에 따라서 제 각각 출력된다.
도 10a 내지 10c 는 마이크로컴퓨터를 사용함에 의해서 본 발명의 디바이스/방법을 처리할 때의 알고리즘을 도시하는 흐름도이다.
먼저, 도 10a 에서 도시된 바와 같이, 램의 클리어 (clear), 다양한 레지스터의 초기화, 및 플래쉬 메모리의 디폴트 값의 판독과 같은 초기화 동작이 수행되고 메인 루틴이 시작된다.
메인 루틴에 있어서, 처리되지 않은 새로운 계측된 시간 데이터가 존재하는 여부가 확인된다 (단계 S110). 이 데이터가 존재할 때, 본 모드가 멀티모드가 아니라고 전제함 (단계 S120) 에 의해서 이 데이터가 호출 (판독) 된다 (단계 S130). 이 후에, 펄스간 시간 (펄스 시간 간격, 펄스 간격) 을 계측하는 타이머의 프리스케일러가 설정되고 (단계 S140) 타이머가 클리어된다 (단계 S150). RPG 펄스가 검출되고 (단계 S160) 타이머가 시작된다 (단계 S170). RPG 펄스가 검출되는 매 순간마다 (단계 S180), 타이머는 계측된 데이터 (단계 S190) 을 출력하고 데이터는 지수 난수로서 저장된다 (단계 S200). 이 후에, 데이터는 확률 (성공 또는 실패) 을 판정 (단계 S220) 하기 위해서 균등 분포 난수로 변환된다 (단계 S210). 이 후에, 동작 모드가 데모 모드가 되는지 여부가 판정된다 (단계 S230). 동작 모드가 데모 모드일 때, 지수 분포 난수는 (난수 출력의 선택의 존재 또는 부재에 무관하게) 조건 없이 호스트 컴퓨터로 송신되고 (단계 S260), 균등 분포 난수가 송신되고 (단계 S270), 더욱이 확률 판정 값이 송신된다 (단계 S280).
동작 모드가 데모 모드가 아닐 때, 즉, 통상 모드일 때, 지수 분포 난수의 난수의 출력이 선택될 때 (단계 S240) 송신되고 균등 분포 난수의 출력이 선택될 때 (단계 S250) 송신된다.
다른 한편, 도 10b 에서 도시된 바와 같이, CPS 값 (펄스의 수) 의 계측에 대해서, 디폴트 값이 설정되고 (단계 S310), RPG 펄스를 검출할 때 (단계 S320) 계측 시간을 설정하는 타이머가 초기화되어 (단계 S330) 계측 시간을 설정한다 (단계 S340). 이 후에, 펄스의 수의 카운터가 클리어되고 (단계 S350), RPG 펄스가 검출될 때마다 (단계 360), 계측된 값은 적산된다 (단계 S370). 이것은 설정 계측된 시간 (예를 들면, 64 초 또는 1 시간) 까지 반복된다. 계측 설정 시간이 될 때 (단계 S380), 설정 계측된 시간의 CPS 값이 계산된다 (단계 S390). 이 후에, 펄스 간격의 계측용 기준 시간 주기가 산출되고 (단계 S400) 새로운 CPS 데이터가 플래쉬 메모리에 기입되어 (단계 S410) 계측을 시작한다 (단계 S420).
도 10a 및 10b 에서 도시된 계측 처리는 평행하고 동시적으로 수행되고, 펄스 간격의 계측이 전체 펄스 주기에 대하여 수행된다.
본 실시형태에 있어서, 도 10c 에서 도시된 바와 같이, 시리얼 데이터를 수신할 때 (단계 S500), 명령 처리 루틴은 새로운 데이터가 있을 때만 시작된다 (단계 S510).
명령 처리 루틴이 후술되는 처리 절차 (알고리즘) 를 기재하는 프로그램에서 데이터를 기재하도록 동작 조건 설정 명령의 처리, 내부 상태 판독 명령의 처리, 확률 설정 명령의 처리, 동작 명령의 처리, 및 모듈 주소와 지정 주소 사이의 비교가 수행된다.
아래에서 보여지는 프로그램은 마이크로컴퓨터를 사용함에 의해서 본 발명의 균등 난수 및 확률을 생성하기 위해서 디바이스를 처리할 때 마이크로컴퓨터에서의 처리 알고리즘을 묘사한다.
마이크로컴퓨터에 있어서 알고리즘
마이크로컴퓨터: C8051F330
클록 주파수: 24.5MHz
시스템 클록: 1/1
1. 포트 할당 및 인터럽트 기능
P0.0 : 펄스 입력
P0.4 : 시리얼 출력
P0.5 : 시리얼 입력
P1.3 : LED 출력
외부 인터럽트0 : 펄스의 입력 검출
타이머1 : UART 의 전송비를 생성
티이머2 : 펄스간 시간 계측을 위해서 사용됨
: 프리스케일러 값은 CPS 에 의해서 변화됨.
타이머3 : 상수 시간 (CPS 계측 시간) 을 생성하기 위해서 사용됨.
시리얼 인터럽트 : 데이터 수신을 위해서 사용됨
2. 타이머
타이머0 : 미사용
타이머1 : RS232C 의 보드율 (Baud Rate) 생성기
Timer1 Condition {
Pre-scale = 1/1
8 bit Reload Mode
Reload Value = 96h
}
타이머2 : 펄스 카운팅용 프리스케일러
Timer2 Condition {
16 bit Reload Mode
Pre-scale = 1/1
Reload Value = tpres
}
타이머3 : CPS 카운팅용 타이머
Timer3 Condition {
16 bit Reload mode
Pre-scale = 1/12
Reload Value = 40833 ; Overflow = 20 mS
}
PCA 도그 타이머를 감시
3. 메모리
SerialBuffer (0 .. 15) as M [8]; 시리얼 수신 버퍼
IntervalTime (0 .. 3) as M [17]; 펄스 계측 시간 내부 저장 버퍼
SerialWPointer as M [8]; 인터럽트 처리 루틴에서 시리얼 수신 데이터가 수 ; 신 버퍼 내부에 기입될 때 기입 위치를 지시하는 포인터
SerialRPointer as M [8]; 메인 루틴에서 시리얼 수신 버퍼 내에서 처리되는 ; 다음 시리얼 데이터의 위치를 지시하는 포인터
IntervalWPointer as M [8]; 인터럽트 처리 루틴에서 다음 펄스 계측 시간이 ; 기입되는 위치를 지시하는 포인터
IntervalRPointer as M [8]; 다음 펄스 계측 시간이 메인 루틴에서 처리되는 ; 버퍼에서의 위치를 지시하는 포인터
IntervalCounter asM [17]; 인터럽트 처리 루틴에서 펄스 시간 간격을 카운 ; 팅하는 카운터
CPSSecCounter as M [8]; 1 초 동안의 카운트 (25 회 * 20 mS)
CPSTimeCounter as M [8]; 64 초 동안의 카운트
CPSCounter as M [16]; CPS 카운터
CPS as M [16]; CPS 값
Prob (0 .. 7) as M [16]; 확률 설정 값
PValue (0 .. 7) as M [16]; 로그 계산 후의 임계 값
PSetting as M [16]; 확률 설정 입력 값
PArg as M [8]; 확률 설정 매개변수
BEXP as M [8]; 로그 계산에서 동작되는 값의 색인부
CycleCounter as M [8]; 동작부에서 사용되는 시간이 반복 수에 대한 카 ; 운터
BitIndicator as M [8]; 나눗셈 연산용
NOPTimeCount as M [8]; 각각의 한 시간 동안 펄스의 수에 대한 카운터
RandomEXP as M [24]; 지수 분포 난수의 최종 결과
UniformedData as M [8]; 균등 분포 난수의 최종 결과
CPSForceData as M [16]; CPS 강제 값
CPSMeasureTime as M [8]; CPS 계측 시간의 설정 값
NumberOfPulse as M [24]; 각각의 1 시간 동안의 펄스의 수
CPSReadOut as M [16]; 인터럽트로부터 메인으로 인계된 CPS 계측 값의 메모 ; 리 영역
CPSACTimeCount as M [8]; CPS 축적 횟수의 카운트
CPSAccumulation as M [24]; CPS 계측 시간 판독 축적 버퍼
설정 계측 시간이 도달될 때까지 64 초 동안 계 측 횟수를 축적
설정 계측 시간이 도달될 때까지 64 초 동안 계 측 횟수를 축적
LastCPSAccumulation as M [24]; CPS 계측된 시간에 대한 과거 메모리
NOPCountBuffer as M [24]; 한 시간 동안의 펄스의 수의 계측을 위한 버퍼
NumberOfNewData as M [8]; 아직 처리되지 않은 수신된 시리얼 데이터의 수
; 비트 영역
InternalFlag as M[8] ={
CPSDetected as M [1] ; CPS 카운트-엔드 플래그
LogASignMinus as M [1] ; Log(A) 의 부호
CountRestartF as M [1] ; 카운팅 재시작
DataFlip as M [1] ; 균등 난수 반환
NOPCaptureF as M [1] ; 1 시간 동안 계측의 엔드
SerialReceived as M [1] ; 시리얼 수신 플래그
CPSForceF as M [1] ; 비트7 : CPS 강제 설정
}
OperationMode as M [8] = { ; 동작 모드
UniformDataOutF as M [1] ; 균등 분포 난수의 출력
EXPDataOutF as M [1] ; 지수 분포 난수의 출력
DemoModeF as M [1] ; 데모 모드
MultiModeF as M [1] ; 멀티 모드
}
StatusFlag as M [8] = { ; 에러 상태
CPSTooLittleF as M [1] ; CPS 의 무검출
CPSTooManyF as M [1] ; CPS 의 초과 검출
IntervalTimeOF as M [1] ; 계측 값의 오버플로우
SerialBufferOF as M [1] ; 시리얼 버퍼의 오버플로우
}
ProbFlag as M [8] = { ; 확률 판정 (성공/실패)
PJudge0 as M [1] ; 확률 수0 의 판정
PJudge1 as M [1] ; 확률 수1 의 판정
PJudge2 as M [1] ; 확률 수2 의 판정
PJudge3 as M [1] ; 확률 수3 의 판정
PJudge4 as M [1] ; 확률 수4 의 판정
PJudge5 as M [1] ; 확률 수5 의 판정
PJudge6 as M [1] ; 확률 수6 의 판정
PJudge7 as M [1] ; 확률 수7 의 판정
}
InternalFlag1 as M [8] = { ; 내부 플래그
AddressExist as M [1] ; 주소가 멀티 모드에 존재
AddressSelected as M [1]; 주소가 멀티 모드에서 선택될 때
}
; 상수
CPSMAX as #100*64 / 1 초 동안 100 개 보다 큰 펄스
CPSMIN as #1*64 / 1 초 동안 1 개 보다 작은 펄스
ConstEXPData as #01h
ConstUniformedData as #02h
ConstSecCount as #50
ConstTimeCount as #64
ConstNOPCount as #56
SAck as #05h
SNak as #50h
ConstSPFilter as #10101111b
ConstITFilter as #11001111b
4. 초기 처리
/초기 처리/
R0 = 00h; 램 클리어
repeat
RAM(R0) = 00h
R0 += 1
until R0=0;
SerialWPointer = #SerialBuffer; 버퍼의 헤드 주소 설정
SerialRPointer = #SerialBuffer;
IntervalWPointer = #IntervalTime; 버퍼의 헤드 주소 설정
IntervalRPointer = #IntervalTime;
NOPTimeCount = #ConstNOPCount;
InitializeSFR; 8051SFR 의 설정
LoadFlashData; 플래시부로부터 데이터를 판독. 디폴트 값이 처음에 판독됨.
CalcTPreScaler; 타이머 2 의 프리스케일 값을 연산 및 설정
CountRestart; 계측의 재시작을 위해 메모리 초기화 및 인터럽트 승인
jump to Main;
/ InitializeSFR /
p0.4 = OutputMode;
P1.3 = OutputMode;
Timer1 = Timer1Condition;
Timer2 = Timer2Condition;
Timer3 = Timer3Condition;
PCA = PCACondition;
Timer2INTEnable = true;
Timer3INTEnable = true;
/LoadFlashData/ ; 플래시 메모리로부터 데이터를 판독
; 플래시 메모리의 데이터부에 디폴트 값을 사전에 기입
CPS = FlashCPS;
CPSMeasureTime = FlashCPSMT;
NumberOfPulse = FlashNofP;
StatusFlag = FlashStatus;
OperationMode = FlashOPMode;
LastCPSAccumulation = FlashLastCPSAccumulation;
PROB(o..7) = FlashPROB(0..7);
Pvalue(0..7) = FlashPT(0..7);
5. 메인 루틴
ConstEXPData as"01h";
ConstUniformedData as"02h";
Repeat
if IntervalWPointer<>IntervalRPointer then / 처리되지 않은 새로운 계측 / 시간 데이터가 있는지?
if not (MultiModeF) then / 처리가 멀티모드에서 수행되지 않 / 음.
ReadIntervalTime; / 새로운 계측 시간을 판독함
ConvertToUniform; / 균등 분포 난수로의 변환
CalcProb; / 확률의 판정 (성공/실패)
if DemoMode
then / 데모 모드 동안의 무조건적인 송신
SendRandomEXP; / 지수 분포 난수의 송신
SendRandomUniform; / 균등 분포 난수의 송신
SendPJudge; / 확률 판정 값의 송신
else / 통상 모드에서 난수 출력이 선택될 때만 송신
if EXPDataOutF then SendRAndomEXP;
if UniformDataOutF then SendRAndomUniform;
endif
endif
endif
if CPSDetected then
CPSDetected = false; / CPS 값의 계측 (64 초) 이 완료될 때의 처리
AccumulateCPS; / 계측 시간 설정 값까지 64 초 동안 CPS 값을 축 / 적
CPSACTimeCount -= 1;
if CPSACTimeCount=0 then / 계측 설정 시간이 도달될 때
CalcCPS; / CPS 값을 16 초 동안 평균 값으로 변환하기
if not (CPSForceF) then CalcTPeScaler; / 프리스케일러의 값 / 의 계산
WriteToFlash; / 플래시 메모리에 새로운 CPS 데이터를 기입
CountRestart; / 계측의 재시작
endif;
endif
if NumberOfNewData<>0 then CommandHandling; / 시리얼 데이터의 수신
/ 새로운 데이터가 있을 때만 명령 처리 루틴을 시작
endif
until forever;
6. 인터럽트 처리 루틴
/ 외부 인터럽트 (INT0): 펄스 입력 인터럽트(p0) 및 상승 에지 검출 /
if CountRestartF
then
CountRestartF = false; / 계측의 재시작시에 계측 타이머를 개시하기만함
Start Timer2;
else
IntervalTime(IntervalWPointer) = IntervalCounter;
/계측된 데이터 버퍼에 계측된 결과를 기입
IntervalWPointer = (IntervalWPointer+1) and #ConstITFiler;
/ 포인터의 업데이트
if IntervalWPointer=IntervalRPointer then IntervalTimeOF=true;
/ 버퍼 오퍼플로우 체크
IntervalCounter = 0;
CPSCounter+=1;/ CPS 카운터의 카운팅-업
endif
Return from Int;
/ 시리얼 인터럽트 /
if SerialReceiveINTF then / 인터럽트 수신시에만 처리를 수행.
/ 인터럽트의 송신을 무시
SerialReceiveINTF = false;
SerialBuffer(SerialInputPointer) = SerialReceivedData;
/ 버퍼를 수신할 때 시리얼 수신 데이터를 기입
SerialWPointer = (SerialWPointer+1) and #ConstSPFilter;
/ 시리얼 기입 포인터의 업데이트
NumberOfNewData += 1;
if NumberOfNewData>=32 then SerialBufferOF=true;
/ 버퍼 오버플로우 체크
endif
Return from Int;
/ 타이머2 인터럽트 /
IntervalCounter+=1; 펄스간 시간 계측 카운터의 카운팅-업
Return from Int;
/ 타이머3 인터럽트 /
CPSSecCounter-= 1; 1 초 동안의 카운팅
if CPSSecCounter = 0
then
CPSSecCounter = #ConstSecCount;
CPSTimeCounter-= 1; 64 초 동안의 카운팅
if CPSTimeCounter=0
then
CPSTimeCounter = #ConstTimeCount;
CPSReadOut = CPSCounter;
/ 64 초가 경과하였기 때문에, CPS 카운팅된 값을 판독
CPSCounter=0;
CPSDetected = true;
/ CPS 검출 플래그 설정
end if
endif
Return form Int
7. 서브루틴
/CountRestart/ 펄스간 시간 계측을 재시작
/ CPS 가 업데이트되고 데이터가 플래시 메모리에 기입될 때의 초기 상태
CPSSecCounter = #ConstSecCounter;
CPSTimeCounter = #ConstTimeCount;
CPSACTimeCount = CPSMeasureTime;
CPSCounter = 0;
CPSAccumulation = 0;
IntervalCounter = 0;
CountRestartF = true;
CPSDetected = false;
/ReadIntervalTime/ 시간 계측 값의 버퍼로부터 계측된 시간을 판독
RandomEXP = IntervalTime(IntervalRPointer);
IntervalReadPointer = (IntervalReadPointer+4) and #ConstITFilter;
/AccumulateCPS/ CPS 계측 값을 축적
/ 설정 계측 시간의 CPS 값을 구하기 위해서 64 초 동안 계측된 값을 축적
/ 또한 여기에서 매 시간마다 CPS 축적된 값을 구함
/ 매 시간 동안 계측된 값은 매 64 초 동안 계측된 값을 56 번 축적하고 3584 초 동안 축적된 값을 구하고 다음 64 초 동안 계측된 값을 4 로 나누고 이것을 더함에 의해서 구해진다. (3584+64*0.25)=3600
CPSAccumulation = CPSAccumulation + CPSReadOut;
/ 여기로부터 한 시간 동안 CPS 값을 축적 및 펄스 수의 축적
if NOPCaptureF then CPSReadOut = CPSReadOut/4;
NOPCountBuffer = NOPCountBuffer + CPSReadOut;
if NOPCaptureF
then / 1 시간 동안 계측의 완료
NumberOfPulse = NOPCountBuffer;
NOPCaptureF = false;
if DemoModeF then SendNOP;
WriteToFlash;
CountRestart;
else
NOPTimeCount -= 1;
if NOPTimeCount=0 then
NOPCaptureF = true;
NOPTimeCount = #ConstNOPCount;
endif
endif
/CalcCPS/ 64 초 동안 CPS 값의 계산
CPSAccumulation = (CPSAccumulation + LastCPSAccumulation) / 2;
LastCPSAccumulation = CPSAccumulation;
Breg = CPSMeasureTime;
if Breg.bit0<> "1" then
repeat
CPSAccumulation = CPSAccumulation/2;
RightShift(b, 1bit);
until Breg.bit0= "1";
endif;
CheckCPSMAXMIN; 최대 및 최소 CPS 값의 체크
if not(CPSTooLittleF or CPSTooManyF) then CPS = CPSAccumulation;
if DemoModeF then SendCPS;
WriteToFlash:
CountRestart;
/ CheckCPSMAXMIN /
/ CPS 값이 특정한 범위를 초과하는지를 체크
/ CPS 값이 너무 클 때, 타이머 2의 인터럽트 사이클이 매우 짧게 되고, 인터럽트가 항상 인가되며 처리가 턴 오버되지 않기 때문에 주의.
Breg = #0;
If CPSAccumulation >= #CPSMAX then Breg.bit1 = "1";
If CPSAccumulation < #CPSMIN then Breg.bit0 = "1";
if StatusFlag<>Breg then
StatusFlag = Breg;
SendStatus;
endif;
/SendRandomEXP/ 지수 분포 난수의 시리얼 출력
SerialOutput = #ConstEXPData;
if RandomEXP [23..16] = "0"
then
SerialOutput = RandonEXP;
Else
SerialOutput = #FFFFh;
endif
/SendRandomUniform/ 균등 분포 난수의 시리얼 출력
SerialOutput = #ConstUniformData;
SerialOutput = UniformedData;
/SendCPS/ CPS 값의 시리얼 출력
/ 내부 상태가 판독될 때 및 CPS 값이 데모 모드에서 변화될 때
SerialOutput = #11h;
SerialOutput = CPS;
/SendCPSMT/ CPS 계측 시간의 시리얼 출력
/ 내부 상태가 판독될 때
SerialOutput = #12h;
SerialOutput = CPSMeasureTime;
/SendNOP/ 1 시간 동안 펄스 수의 시리얼 출력
내부 상태가 판독될 때 및 데모 모드에서 1 시간 동안 CPS 값이 변화될 때
SerialOutput = #13h;
SerialOutput = NumberOfPulse;
/SendStatus/ 상태 정보의 시리얼 출력
/ 내부 상태 (CPS 에러) 가 변화될 때, 및 내부 상태가 판독될 때
SerialOutput = #14h;
SerialOutput = StatusFlag;
/SendVersion/ 버전 정보의 시리얼 출력
/ 내부 상태가 판독될 때
SerialOutput = #15h;
i = 0;
repeat
SerialOutput = FlashVer(i);
i += 1;
until FlashVer (i) = "FFh";
/SendProbSetting/ 확률 설정 값의 시리얼 출력
/ 내부 상태가 판독될 때
SerialOutput = SerialCommand;
SerialOutput = PROB (Command and"FFh");
/SendPJudge/ 확률 판정 값의 시리얼 출력
/ 확률 판독 명령이 수신될 때 및 내부 상태 판독 명령이 데모 모드에서 매 펄스 입력 동안 수신될 때
SerialOutput = #28h;
SerialOutput = ProbFlag;
/CalcProb/ 지수 분포 난수로부터 성공/실패를 판정함
i = 0;
ProbFlag = "0";
Repeat
if PValue(i) <=RandomEXP then ProbFlag [bit i] = "1";
i += 1;
until i= "8";
/CommandHandling/ 시리얼 명령의 처리
if SerialBuffer (SerialRPointer) and"F0h" ="00 h"then / 동작 조건 설정 명령
if SerialBuffer (SerialRPointer) = "00h" then
/ 미할당된 코드를 수신할 때 NAK 를 반환.
SendNAK;
exit;
endif
if SerialBuffer (SerialRPointer) = "01h" then /CPS 값의 강제 설정 /인지 여부?
if NumberOfNewData<3 then exit;
/ 연산자 (설정 데이터) 가 수신되지 않을 때, 아무것도 하지 않음.
RenewSRP;
if (MultiModeF and AddressExist and not(AddressSelected)
then
/ 주소가 멀티모드에서 서로 일치하지 않을 때 명령을 무시.
RenewSRP;
SendNal;
exit
else
RenewSRP;
CPSForceData = SerialBuffer(SerialRPointer);
/ CPS 강제 값을 판독
CPSForceF = true;
/ CPS 강제 플래그를 설정
CalcTPrescaler;
/ 프리스케일러 값 (유효 데이터) 을 계산
RenewSRP;
SendAck;
endif
if SerialBuffer (SerialRPointer) = "02h" then /CPS 강제 설정의 취소
if (MultiModeF and AddressExist and not(AddressSelected)
then
/ 주소가 멀티모드에서 서로 일치하지 않을 때 명령을 무시.
SendAck;
exit
else
CPSForceF = false;
/ CPS 강제 플래그의 재설정
SendAck;
exit
endif
if SerialBuffer (SerialRPointer) = "03h" then / CPS 계측 시간을 설정
if NumberOfNewData<2 then exit;
/ 연산자 (설정 데이터) 가 수신되지 않을 때, 아무것도 하지 않음.
RenewSRP;
if (MultiModeF and AddressExist and not(AddressSelected)
then
/ 주소가 멀티모드에서 서로 일치하지 않을 때, 명령을 무시.
SendAck;
exit
else
/ CPS 계측 시간을 판독하고 설정.
CPSMeasureTime = SerialBuffer(SerialRPointer);
WriteToFlash;
CountRestart;
SendAck;
exit
endif
if SerialBuffer (SerialRPointer) = "0Fh"/ 자기-파괴
then
if NumberOfNewData<5 then exit;
/ 연산자 (데이터 설정) 가 수신되지 않을 때 아무 것도 하지 않음.
if (MultiModeF and AddressExist and not(AddressSelected)
then
/ 주소가 멀티모드에서 서로 일치하지 않을 때 명령을 무시.
SerialRPointer += 4;
NumberOfNewData -=4;
RenewSRP;
exit
else
RenewSRP;
If SerialBuffer(SerialRPointer) = "86h, 51h, 29h, 78h"
then
/ 정상 데이터 스트링이 수신될 때 플래시 데이터를 삭제.
Destroy;
exit;
else
/ 정상 데이터 스트링이 수신되지 않을 때 명령을 무시하고 /Nak 를 반환.
SerialRPointer += 3;
NumberOfNewData -=3;
SendNAk;
exit
endif;
endif
else
SendNAK;
exit;
endif
endif
if SerialBuffer (SerialRPointer) and"F0h" ="10 h"then / 내부 상태를 판독
if SerialBuffer(SerialRPointer)= ("10h" or"16h" or"17h") then
/ 무효인 데이터의 경우에, Nak 를 반환.
SendNak;
exit;
endif;
ACC = SerialBuffer(SerialRPointer
Sirent;
if (not(MultiModeF) or (AddressExist and AddressSelected)
then
/ 스탠드 얼론 모드에 있을 때 및 주소가 멀티모드에서 서로 일치할 때.
if ACC= "11h" then /CPS를 반환.
SendCPS;
exit;
endif;
if ACC= "12h" then / CPS 계측 시간을 반환
SendCPSMT;
exit;
endif;
if ACC= "13h" then / 1 시간 동안 CPS 값을 반환
SendNOP;
exit;
endif;
if ACC= "14h" then / 상태 데이터를 반환
SendStatus;
exit;
endif;
if ACC= "15h" then / 버전을 반환
SendVersion;
exit;
endif;
SendProbSetting; / 확률 설정 값을 반환
exit;
else
exit;
endif
endif
if SerialBuffer(SerialRPointer) and "F0h" = "20h" then / 확률 설정 명령
if SerialBuffer(SerialRPointer) = "28h" then
/ 확률 판정 값을 판독
if (not(MultiModeF) or (AddressExist and AddressSelected)
then SendPJudge;
/스탠드 얼론 모드에 있을 때 또는 주소가 멀티모드에서 서로 일치 /할 때만 확률 판정 값을 반환
Sirent;
exit;
endif
if SerialBuffer(SerialRPointer) < "28h" then
if NumberOfNewData<3 then exit;
/ 연산자 (데이터 설정) 가 수신되지 않을 때 아무것도 하지 않음.
if (MultiModeF and AddressExist and not(AddressSelected)
then
/ 주소가 멀티모드에서 서로 일치하지 않을 때 명령을 무시함.
SerialRPointer += 2;
NumberOfNewData -=2;
Sirent;
exit;
else
/ 확률 설정 값을 설정
PArg = SerialBuffer(SerialRPointer) and"00000111b";
/ 확률 수를 계산.
RenewSRP;
PROB(PArg) = SerialBuffer(SerialRPointer);
/ 확률 설정 값을 기입.
RenewSRP;
CalcPThreshold;
/ 확률 판정 임계를 계산.
WriteToFlash;
SendAck;
CountRestart;
exit;
endif;
endif
SendNak;
exit;
endif
if SerialBuffer (SerialRPointer) and"F0h" ="40 h" then / 동작 모드 명령
if SerialBuffer(SerialRPointer) < "45h"
then
if (MultiModeF and AddressExist and not(AddressSelected))
then
/ 주소가 멀티모드에서 서로 일치하지 않을 때 명령을 무시.
RenewSRP;;
AddressSelected = false;
AddressExist = false;
exit;
else
Breg = OperationMode;
OperationMode = SerialBuffer(SerialRPointer) and
"00000111b";
if Breg<>OperationMode then
/ 동작 모드가 변할 때
WriteToFlash;
CountRestart;
endif;
SendAck;
exit;
endif
else
SendNak;
exit;
endif
endif
if SerialBuffer (SerialRPointer) ="7Fh" then MultiModeF = true;
if SerialBuffer (SerialRPointer) ="7Eh" then MultiModeF = false;
if SerialBuffer(SerialRPointer) = ("7Eh" or"7Fh") then
/ 멀티모드 명령 수신 처리
WriteToFlash;
CountRestart;
Sirent;
exit;
endif
if SerialBuffer(SerialRPointer) < "80h" then
SendNak;
exit;
endif;
if not(MultiModeF) then
SendNak;
exit;
endif;
AddressExist = true;
if SerialBuffer(SerialRPointer) and "00111111b" = #ModuleAddress
then AddressSelected = true;
else AddressSelected = false;
/ 모듈 주소와 지정된 주소 사이의 비교
endif;
if SerialBuffer (SerialRPointer) >="C0h"
then
/ 멀티모드에서 명령 입력 주소를 선택
RenewSRP;;
exit;
else
/ 멀티모드에서 난수 데이터를 판독
if IntervalWPointer=IntervalRPointer
then
/ 난수 데이터가 없을 때
SendNakWhenNoData;
exit;
else
/ 난수 데이터가 있을 때
if AddressSelected then
/ 주소가 선택될 때
ReadIntervalTime;
/ 시간 계측된 값을 판독
ConvertToUniform;
/ 균등 분포 난수로의 변환
CalcProb;
/ 확률 판정
if EXPDataOutF then SendRandomEXP;
if UniformDataOutF then SendRandomUniform;
/ 난수를 출력
endif;
Sirent;
endif;
endif;
/SendNak/ NAK 코드의 송신
if (not(MultiModeF) or (AddressExist and AddressSelected) then SerialOutput= #SNAK;
/ 주소가 멀티모드에서 서로 일치하지 않을 때, NAK 를 송신하지 않음.
AddressSelected = false;
AddressExist = false;
SerialRPointer += 1;
SerialRPointer = SerialRPointer and #ConstSPFilter;
/ 시리얼 판독 포인터의 업데이트.
NumberOFNewData -= 1;
/SendNakWhenNoData/ 난수가 멀티모드에서 판독되지만 난수가 없을 때
SerialOutput = #SNAK;
AddressSelected = false;
AddressExist = false;
NumberOFNewData -= 1;
/SendAck/ ACK 코드의 송신
if (not(MultiModeF) or (AddressExist and AddressSelected) then SerialOutput= #SACK;
/ 주소가 멀티모드에서 서로 일치하지 않을 때, ACK 를 송신하지 않음.
AddressSelected = false;
AddressExist = false;
SerialRPointer += 1;
SerialRPointer = SerialRPointer and #ConstSPFilter;
/ 시리얼 판독 포인터를 업데이트
NumberOFNewData -= 1;
/RenewSRP/ 시리얼 포인터를 업데이트
SerialRPointer += 1;
SerialRPointer = SerialRPointer and #ConstSPFilter;
NumberOFNewData -= 1;
/Sirent/ 무효 데이터에 의해 아무것도 하지 않음.
AddressSelected = false;
AddressExist = false;
SerialRPointer += 1;
SerialRPointer = SerialRPointer and #ConstSPFilter;
NumberOFNewData -= 1;
/WriteToFlash/ 플래시 메모리에서 데이터를 기입.
FlashCPS = CPS;
FlashCPSMT = CPSMeasureTime;
FlashNofP = NumberOfPulse;
StatusFlag = FlashStatus;
FlashOPMode = OperationMode;
FlashLastCPSAccumulation = LastCPSAccumulation;
FlashPROB(0..7) = PROB(o..7);
FlashPT(0..7) = Pvalue(0..7);
/ConvertToUniform/ 균등 분포 난수로의 변환
if RandomEXP [23..16] <> "0"
then
/ 지수 분포 난수가 "FFh" 를 초과할 때, 난수를 "FFh" 로 설정함.
UniformedData ="FFh";
else
/ 이분 탐색에 따라서 균등 분포로의 변환.
BitIndicator = 10000000b;
UniformedData ="0";
repeat
UniformedData = UniformedData xor BitIndicator;
if RandomEXP < DataTable(UniformedData
then UniformedData = UniformedData xor BitIndicator;
endif;
Carry ="0";
RightLotateWithCarry(BitIndicator, 1bit);
until Carry= "1";
endif;
/CalcTPreScaler/ CPS 로부터 타이머2 의 프리스케일러 값의 계산
/ 이런 계산의 경우에 있어서, 64 초 동안의 펄스의 수 (CPS 값) 가 0 과 3 사이의 / 범위내에 있을 때 정확한 프리스케일러 값은 아직 구해지지 않는다. 확인이
/ 미리 필요하다. 이것은 CPSMAX 와 CPSMIN 에 의해서 시작한다.
a as M32 {
aH as M[16];
aL as M[16];
}
CycleCounter as M[8];
a = 2246Dh;
CycleCounter=16;
LeftShiftWithCarry(a,1bit);
repeat
if CPSForceF
then
/ CPS 값이 강제 설정되면, 강제 설정 데이터를 사용해라.
if (aH-CPSForceData)>=0
then
Carry = 1;
aH = aH CPSForceData;
else Carry = 0;
else
if (aH-CPS)>=0
then
Carry = 1;
aH = aH CPS;
else Carry = 0;
endif;
LeftShiftWithCarry(a,1bit);
CycleCounter = CycleCounter 1;
until CycleCounter=0;
Timer2ReloadREG = aL;
/CalcPThreshold/ 확률 설정 값으로부터 내부에서 사용되는 확률 판정에 대한 시간 카운팅 임계를
/계산하고 로그 계산을 수행하라.
/처리 내용에 대해서는, 설계 설명서를 참조하라.
W as M[32] {
W0 as M[8];
W1 as M[8];
W2 as M[8];
W3 as M[8]; /버퍼 X 를 계산
}
X as M[32] {
X0 as M[8];
X1 as M[8];
X2 as M[8];
X3 as M[8]; /버퍼 X 를 계산
}
Y as M[32] {
Y0 as M[8];
Y1 as M[8];
Y2 as M[8];
Y3 as M[8]; /버퍼 Y 를 계산
}
LogA as M[32] {
LogA0 as M[8];
LogA1 as M[8];
LogA2 as M[8];
LogA3 as M[8]; /버퍼 W 를 계산
}
Z as M[32] {
Z0 as M[8];
Z1 as M[8];
Z2 as M[8];
Z3 as M[8]; /버퍼 Z 를 계산
}
ZZ as M[32] {
ZZ0 as M[8];
ZZ1 as M[8];
ZZ2 as M[8];
ZZ3 as M[8]; /버퍼 ZZ 를 계산
}
Result as M[32] {
Result0 as M[8];
Result1 as M[8];
Result2 as M[8];
Result3 as M[8]; / 버퍼 ZZ 를 계산
}
LogASign as M[1]; /Log(A) 의 부호
CalcAB;
CalcZ;
CalcZZ;
CalcLogA;
CalcLogB;
CalcResult;
/ CalcAB /
B as M[8];
X1&X2=P(PArg);
X0=X3=0;
B="0Fh";
repeat
LeftShift(X, 1 bit);
B -= 1;
until X0.bit0= "1"; / 결과 : X 에 A 가 있다.
/ CalcZ /
Root2 as"01.6A09E6";
CycleCounter as M[8]
Y=X; /버퍼 X 및 Y 양자에 A 를 설정하라.
if X<0 then
X= 0 - X;
LogASign = true;
else
LogASign = false;
end if
CycleCounter = 22; / 제수 y 의 비트 길이
z = 0; /이 후에, Z=X/Y 의 계산
ShiftLeft(X, 2bit)
Repeat
if (X-Y) > 0
then
Carry ="1"; / 결과 z 의 최하위 비트를 "1" 로 설정
X =X - Y;
else
Carry ="0"; / 결과 z 의 최하위 비트를 "0" 으로 재설정
end if
ShiftLeftWithC(Z, 1bit);
ShiftLeft(X, 1bit);
CycleCounter = CycleCounter 1;
until CycleCounter=0 ; / 계산 결과는 Z 에 남아있다.
/ CalcZZ /
CycleCounter as M[8];
X = Z;
X = Z;
WeqXmulY;
ZZ = W;
/ CalcLogA /
Const10 as"01.000000h"; /1
Const03 as"00.555555h"; /0.3333333
Const02 as"00.333333h"; /0.2
Const07 as"00.249248h"; /".0010 0100 1001 0010 0100 1000" = 0.1428571
CycleCounter as M[8];
/ ZZ/7 을 계산하라. 변수×상수 때문에, 상수가 "0" 일때 비트 위치에서 단순 / 시프트를 수행하고 상수가 "1" 일 때 비트 위치에서 덧셈을 수행함으로써 처리 시
/ 간을 짧게 하라.
Y = ZZ;
X = 0;
CycleCounter = 7
repeat
ShiftRight(Y(1..3), 3bit);
X(1..3) = X(1..3)+Y(1..3);
CycleCounter -= 1;
until CycleCounter = 0; /결과는 X 에 남아 있다.
X = X + Const02;
Y = ZZ ; / zz* (0.2+zz*0.1428571) 의 계산
WeqXmulY;
W =W + Const03;
Y = ZZ/zz* ; /zz*(0.3333333+zz* (0.2+zz*0.1428571)) 의 계산
X = 0;
WeqXmulY;
W = W + Const10;
Y = Z ; /2*z*(1 + zz*(0.3333333 + zz*(0.2 + zz*0.1428571)))
X = W;
WeqXmulY4;
LogA = 2 * W;
/ CalcLogB /
Const05 as"00.800000h";
ConstLog2 as"0B17217Fh"; /계산을 단순화하기 위해서, Log(2)*16 을 삽입하라.
X = B + 0.5
W = 0;
Y = ConstLog2;
CycleCounter = 5; /X=(B+0.5)*Log(2)
repeat
if W0.bit=[ 3] "1" then W =W+Y;
ShiftRight(Y,1bit);
ShiftLeft(W(0..1),1bit)
until CycleCounter = 0; 결과는 X 에 남아있다.
/ CalcResult /
ConstN as ("00.2BF7C4h" shl 2) = "0.1010 1111 1101 1111 0001 0000";
/ 0.1717494 *4 = 4/5.822436
if LogASign
then W = W + LogA
else W = W LogA;
Result = 0;
Y = ConstN;
CycleCounter=22;
repeat
ShiftLeft(Y(1..3),1bit)
if Carry="1" then Result = Result+X;
ShiftRight(X,1bit);
until CycleCounter = 0; Result 에 결과가 남아 있다.
/ WeqXmulY /
/W = X * Y 의 계산 (소수점 이하만을 계산하라)
W = 0;
CycleCounter=24;
repeat
ShiftRight(X(1..3),1bit);
ShiftLeft(Y(1..3),1bit)
if Carry="1" then W = W+X;
until CycleCounter = 0; W 에 결과가 남아 있다.
/WeqXmulY4 /
/W = X * Y 의 계산 (4 자리수의 계산, X 는 4 자리수이고 Y 는 단지 1 미만의 경우이다.)
W = 0;
CycleCounter=24;
repeat
ShiftRight(X,1bit);
ShiftLeft(Y,1bit)
if Carry="1" then W = W+X;
until CycleCounter = 0; / W 에 결과가 남아 있다.
/FlashROMDataArea/ 플래시 메모리에서의 데이터 영역
/각각의 데이터의 디폴트 값을 초기 값으로 삽입하라.
FlashCPS as M[16] = "00C0h";
FlashCPSMT as M[8] = "01h";
FlashNofP as M[24] = "FFFFFFh";
FlashStatus as M[8] = "00h";
FlashOPMode as M[8] = "00010011b";
; bit2 : 데모모드
; bit1 : 지수분포 난수 출력
; bit0 : 균등 분포 난수 출력
FlashLastCPSAccumulation as M[24] = "0000C0h";
FlashPROB(8) as M[16] =
("0002h", "0003h", "0005h", "0010h", "0080h", "0100h", "1000h", "8000h");
FlashPT(8) as M[17] =
("001D8Dh", "002ED7h", "00449Eh", "00CEDEh", "00EC6Ch", "0162A2h", "01BB4Ah");
ModuleAddress as M[8]= "FFh";
FlashVer as String = "RGZ-1 Ver 1.00", "0Dh", "0Ah", "2004-05-10", "0Dh", "0Ah", "CopyRight 2004, RPG Technics & Zixsys Inc.", "FFh";
Claims (36)
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 자발적으로 랜덤 펄스들을 생성하는 랜덤 펄스 발생원 (이하, RPG) 을 설치하고, 상기 RPG 로부터 발생되는 상기 랜덤 펄스들 사이의 시간 간격을 계측하거나 상기 랜덤 펄스의 전압 값을 계측하여 디지털 값으로 변환함으로써 난수 또는 확률을 생성하도록 구성되고,상기 RPG 는 원자핵 붕괴에 기인하여 방출되는 α 입자들 또는 베타 선들, 또는 α 입자들과 베타 선들 (입자들) 을 방출하는 방출체를 포함하고, 상기 RPG 는 방출되는 α 입자들 등을 검출하는 검출기를 더 포함하고, 상기 방출체는 용액으로 사용되고, 상기 용액은 상기 검출기의 검출면 상에 적하되거나, 상기 용액이 증착되거나 롤 방법에 의해서 패널에 형성되는 부재가 소정의 거리만큼 이격되어 상기 검출기에 직면되는 것을 특징으로 하는, 반도체 디바이스.
- 삭제
- 제 6 항에 있어서,상기 방출체로서, 우라늄 계열의 모든 원자핵 종, 토륨 계열의 모든 원자핵 종, 상기 원자핵 종들 사이에서 방사 평형을 형성하는 210Pb-210Po 의 모든 종 등, 244Cm , 또는 241Am 이 사용되는 것을 특징으로 하는, 반도체 디바이스.
- 삭제
- 제 6 항에 있어서,상기 검출기는 PN-타입 반도체, PNP-타입 반도체, PIN 포토다이오드, 포토트랜지스터, 또는 포토다이오드를 포함하는 것을 특징으로 하는, 반도체 디바이스.
- 제 6 항 또는 제 8 항에 있어서,상기 RPG 는 상기 방출체를 차폐하는 차폐 벽을 더 포함하고, 상기 차폐 벽은 적어도, 사용되는 α 입자들의 레인지의 거리를 차폐하는 것을 특징으로 하는, 반도체 디바이스.
- 삭제
- 제 6 항 또는 제 8 항에 있어서,상기 RPG 로부터 발생되는 랜덤 펄스들로부터, 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률이 생성되는 것을 특징으로 하는, 반도체 디바이스.
- 제 13 항에 있어서,상기 RPG 로부터 발생되는 펄스들 사이에서 동일한 펄스 간격이 발생하는 확률을 나타내는 지수 분포로부터 필요한 수의 확률을 구하여, 상기 확률에 따라 균등 난수를 작성하는 것을 특징으로 하는, 반도체 디바이스.
- 제 14 항에 있어서,상기 지수 분포를 사용하여 tl 과 t2 사이의 시간 간격으로부터 확률을 구하는 경우, 상기 시간 t2 가 무한대의 시간이라고 가정함으로써 상기 시간 t1 을 초과할 때 소정의 확률을 갖는 펄스가 인정되는 것을 특징으로 하는, 반도체 디바이스.
- 제 13 항에 있어서,지수 분포로부터 난수를 작성하는 경우, 계측의 기본 주기를 변동시키고 펄스들의 평균 방출율이 변동될 지라도 동일한 연산 처리를 수행함에 의해서 지수 분포 난수 및 균등 분포 난수가 안정되는 출현 확률 밀도 분포가 실현되는 것을 특징으로 하는, 반도체 디바이스.
- 제 6 항 또는 제 8 항에 있어서,상기 RPG 로부터 발생되는 난수는 인증 신호 또는 안티클론 (anticlone) 신호로서 저장되고, 외부로부터 입력되는 신호가 상기 저장된 신호와 비교 인증되는 것을 특징으로 하는, 반도체 디바이스.
- 제 17 항에 있어서,상기 비교 인증이 수행될 때마다 새로운 난수가 인증 데이터로서 재기입되는 것을 특징으로 하는, 반도체 디바이스.
- 제 17 항에 있어서,인증 데이터는 송신 및 수신되는 것을 특징으로 하는, 반도체 디바이스.
- 제 19 항에 있어서,상기 인증 데이터의 송신 및 수신은 무선 통신, 적외선 데이터 통신, 또는 접촉에 의한 회로 접속 방식의 통신을 통하여 수행되는 것을 특징으로 하는, 반도체 디바이스.
- 삭제
- 제 6 항 또는 제 8 항에 기재된 반도체 디바이스를 포함하는, IC 카드, IC 태그, PC 접속가능 유닛 또는 유닛 내장 모듈.
- 제 16 항에 있어서,지수 분포로부터 난수를 작성하는 경우, 계측의 기본 주기를 변동시킴으로써 지수 분포 난수의 분포가 안정되고, 균일 분포 난수의 생성과 확률의 생성을 동시에 처리하는 것을 특징으로 하는, 반도체 디바이스.
- 제 16 항에 있어서,지수 분포로부터 난수를 작성하는 경우, 시간을 계측하는 마이크로컴퓨터와 같은 하드웨어의 발진 주파수에 대한 동작 클록의 변동은 계측의 기본 주기를 변동함으로써 자동 보정되는 것을 특징으로 하는, 반도체 디바이스.
- 난수 또는 확률을 생성하는 방법으로서,자발적으로 랜덤 펄스들을 생성하는 랜덤 펄스 발생원 (이하, RPG) 을 설치하는 단계;상기 RPG 로부터 발생되는 상기 랜덤 펄스들 사이의 시간 간격을 계측하거나 상기 랜덤 펄스의 전압 값을 계측하여 디지털 값으로 변환하는 단계; 및디지털 값으로 변환되는 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계를 포함하고,상기 RPG 는 원자핵 붕괴에 기인하여 방출되는 α 입자들 또는 베타 선들, 또는 α 입자들과 베타 선들 (입자들) 을 방출하는 방출체를 포함하고, 상기 RPG 는 방출되는 α 입자들 등을 검출하는 검출기를 더 포함하고, 상기 방출체는 용액으로 사용되고, 상기 용액은 상기 검출기의 검출면 상에 적하되거나, 상기 용액이 증착되거나 롤 방법에 의해서 패널에 형성되는 부재가 소정의 거리만큼 이격되어 상기 검출기에 직면되는 것을 특징으로 하는, 난수 또는 확률의 생성 방법.
- 제 25 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 상기 RPG 로부터 발생되는 펄스들 사이에서 동일한 펄스 간격이 발생하는 확률을 나타내는 지수 분포로부터 필요한 수의 확률을 구하여, 상기 확률에 따라 균등 난수를 작성하는 것을 특징으로 하는, 난수 또는 확률의 생성 방법.
- 제 26 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 상기 지수 분포를 사용하여 tl 과 t2 사이의 시간 간격으로부터 확률을 구하는데 있어서, 상기 시간 t2 가 무한대의 시간이라고 가정함으로써 상기 시간 t1 을 초과할 때 소정의 확률을 갖는 펄스를 인정하는 것을 특징으로 하는, 난수 또는 확률의 생성 방법.
- 제 25 항 내지 제 27 항 중 어느 한 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성하는데 있어서, 계측의 기본 주기를 변동시키고 펄스들의 평균 방출율이 변동될 지라도 동일한 연산 처리를 수행함에 의해서 지수 분포 난수 및 균등 분포 난수가 안정되는 출현 확률 밀도 분포를 실현하는 것을 특징으로 하는, 난수 또는 확률의 생성 방법.
- 제 25 항 내지 제 27 항 중 어느 한 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성하는 경우, 계측의 기본 주기를 변동함으로써 지수 분포 난수들의 분포를 안정화하고, 균등 분포 난수의 생성과 확률의 생성을 동시에 처리하는 것을 특징으로 하는, 난수 또는 확률의 생성 방법.
- 제 29 항에 있어서,상기 랜덤 펄스로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성할 때에 계측의 기본 주기를 변동함으로써 시간을 계측하는 마이크로컴퓨터와 같은 하드웨어의 발진 주파수에 대한 동작 클록의 변동을 자동 보정하는 것을 특징으로 하는, 난수 또는 확률의 생성 방법.
- 난수 또는 확률을 생성하는 방법을 실행하는 프로그램을 기록한 컴퓨터-판독가능한 저장 매체로서,상기 방법은,자발적으로 랜덤 펄스들을 생성하는 랜덤 펄스 발생원 (이하, RPG) 을 설치하는 단계;상기 RPG 로부터 발생되는 상기 랜덤 펄스들 사이의 시간 간격을 계측하거나 전압 값을 계측하여 상기 랜덤 펄스의 디지털 값으로 변환하는 단계; 및디지털 값으로 변환되는 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계를 포함하고,상기 RPG 는 원자핵 붕괴에 기인하여 방출되는 α 입자들 또는 베타 선들, 또는 α 입자들과 베타 선들 (입자들) 을 방출하는 방출체를 포함하고, 상기 RPG 는 방출되는 α 입자들 등을 검출하는 검출기를 더 포함하고, 상기 방출체는 용액으로 사용되고, 상기 용액은 상기 검출기의 검출면 상에 적하되거나, 상기 용액이 증착되거나 롤 방법에 의해서 패널에 형성되는 부재가 소정의 거리만큼 이격되어 상기 검출기에 직면되는 것을 특징으로 하는, 프로그램을 기록한 컴퓨터-판독가능한 저장 매체.
- 제 31 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 상기 RPG 로부터 발생되는 펄스들 사이에서 동일한 펄스 간격이 발생하는 확률을 나타내는 지수 분포로부터 필요한 수의 확률을 구하여, 상기 확률에 따라 균등 난수를 작성하는 것을 특징으로 하는, 프로그램을 기록한 컴퓨터-판독가능한 저장 매체.
- 제 32 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 상기 지수 분포를 사용하여 tl 과 t2 사이의 시간 간격으로부터 확률을 구하는데 있어서, 상기 시간 t2 가 무한대의 시간이라고 가정함으로써 상기 시간 t1 을 초과할 때 소정의 확률을 갖는 펄스를 인정하는 것을 특징으로 하는, 프로그램을 기록한 컴퓨터-판독가능한 저장 매체.
- 제 31 항 내지 제 33 항 중 어느 한 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성하는데 있어서, 계측의 기본 주기를 변동시키고 펄스들의 평균 방출율이 변동될 지라도 동일한 연산 처리를 수행함에 의해서 지수 분포 난수 및 균등 분포 난수가 안정되는 출현 확률 밀도 분포를 실현하는 것을 특징으로 하는, 프로그램을 기록한 컴퓨터-판독가능한 저장 매체.
- 제 31 항 내지 제 33 항 중 어느 한 항에 있어서,상기 랜덤 펄스들로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성하는 경우, 계측의 기본 주기를 변동함으로써 지수 분포 난수들의 분포를 안정화하고, 균등 분포 난수의 생성과 확률의 생성을 동시에 처리하는 것을 특징으로 하는, 프로그램을 기록한 컴퓨터-판독가능한 저장 매체.
- 제 35 항에 있어서,상기 랜덤 펄스로부터 소정의 비트 길이를 갖는 균등 난수 또는 지수 분포 난수, 또는 확률을 생성하는 단계는, 지수 분포로부터 난수를 작성할 때에 계측의 기본 주기를 변동함으로써 시간을 계측하는 마이크로컴퓨터와 같은 하드웨어의 발진 주파수에 대한 동작 클록의 변동을 자동 보정하는 것을 특징으로 하는, 프로그램을 기록한 컴퓨터-판독가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004193456 | 2004-06-30 | ||
JPJP-P-2004-00193456 | 2004-06-30 | ||
PCT/JP2005/012288 WO2006004075A2 (en) | 2004-06-30 | 2005-06-28 | Random pulse generation source, and semiconductor device, method and program for generating random number and/or probability using the source |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070036162A KR20070036162A (ko) | 2007-04-02 |
KR101234929B1 true KR101234929B1 (ko) | 2013-02-22 |
Family
ID=35783243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077002434A KR101234929B1 (ko) | 2004-06-30 | 2005-06-28 | 랜덤 펄스 발생원, 및 이 발생원을 사용하여 난수 및/또는 확률을 생성하는 반도체 디바이스, 방법, 및 컴퓨터-판독가능한 저장 매체 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8001168B2 (ko) |
EP (1) | EP1771946B1 (ko) |
KR (1) | KR101234929B1 (ko) |
CN (2) | CN101010876A (ko) |
MY (1) | MY149214A (ko) |
TW (1) | TWI408903B (ko) |
WO (1) | WO2006004075A2 (ko) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2015202389B2 (en) * | 2009-09-15 | 2017-02-23 | St Reproductive Technologies, Llc | Computer implemented animal management system |
US8823515B2 (en) | 2009-09-15 | 2014-09-02 | Bella Technologies, Llc | Computer implemented animal management system |
WO2012054085A2 (en) | 2010-10-19 | 2012-04-26 | Bella Technologies, Llc | Animal monitoring system |
WO2014080272A1 (en) | 2012-11-23 | 2014-05-30 | UNIVERSITá DEGLI STUDI DI UDINE | Apparatus and method to generate random numbers from radioactive decay |
ITUD20120197A1 (it) * | 2012-11-23 | 2014-05-24 | Univ Degli Studi Udine | Apparecchiatura e metodo per la generazione di numeri casuali da decadimento radioattivo |
WO2015081163A1 (en) * | 2013-11-27 | 2015-06-04 | Cornell University | Device for prevention of integrated circuit chip counterfeiting |
US9529570B2 (en) * | 2014-03-19 | 2016-12-27 | Seagate Technology Llc | Random number generation using pulsed programming parameters |
JP6321723B2 (ja) * | 2015-06-04 | 2018-05-09 | 株式会社クァンタリオン | 放射性同位元素の自然崩壊を利用した唯一性を実現する装置 |
US10231644B2 (en) | 2015-06-12 | 2019-03-19 | St Reproductive Technologies Llc | Calf bolus |
US10306868B2 (en) | 2015-12-15 | 2019-06-04 | St Reproductive Technologies, Llc | Animal environmental and physiological monitoring system |
US10050783B2 (en) * | 2016-05-31 | 2018-08-14 | Eyl Inc. | Quantum random pulse generator |
US10367645B2 (en) * | 2016-10-26 | 2019-07-30 | International Business Machines Corporation | Proof-of-work for smart contracts on a blockchain |
US10536266B2 (en) | 2017-05-02 | 2020-01-14 | Seagate Technology Llc | Cryptographically securing entropy for later use |
US10430161B1 (en) | 2018-04-09 | 2019-10-01 | Jan J. Tatarkiewicz | Apparatus, systems, and methods comprising tritium random number generator |
US10803141B2 (en) * | 2018-07-05 | 2020-10-13 | Gsi Technology Inc. | In-memory stochastic rounder |
KR102093317B1 (ko) * | 2018-08-13 | 2020-03-25 | 주식회사 이와이엘 | 무기섬광체를 이용한 난수생성방법 및 난수생성장치 |
CN112005496A (zh) * | 2019-03-26 | 2020-11-27 | 深圳市汇顶科技股份有限公司 | 具有随机信号发生器件的集成装置、制备方法及电子设备 |
US11048478B1 (en) | 2020-03-03 | 2021-06-29 | Randaemon Sp. Z O.O. | Method and apparatus for tritium-based true random number generator |
US10901695B1 (en) | 2020-03-03 | 2021-01-26 | Randaemon Sp. Z O.O. | Apparatus, systems, and methods for beta decay based true random number generator |
US11249725B1 (en) | 2021-07-22 | 2022-02-15 | Randaemon Sp. Zo.O. | Method and apparatus for highly effective on-chip true random number generator utilizing beta decay |
CN113031917B (zh) * | 2021-03-02 | 2022-10-14 | 北京航空航天大学 | 一种高速概率计算乘法器和计算方法 |
US11281432B1 (en) | 2021-07-22 | 2022-03-22 | Randaemon Sp. Z O.O. | Method and apparatus for true random number generator based on nuclear radiation |
US11586421B2 (en) | 2021-07-22 | 2023-02-21 | Randaemon Sp. Z O.O. | Method for making cost-effective nickel-63 radiation source for true random number generators |
US11567734B1 (en) | 2021-10-22 | 2023-01-31 | Randaemon Sp. Z O.O. | Method and apparatus for highly effective on-chip quantum random number generator |
US12014153B1 (en) | 2022-12-05 | 2024-06-18 | Randaemon Sp. Z O.O. | Method and apparatus for implementing on chip quantum random number generator using beta decay |
US12034834B1 (en) | 2023-01-30 | 2024-07-09 | Randaemon Sp. Z O.O. | Method and apparatus for steganographic cipher encryption using true random number generator |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997029820A1 (en) * | 1996-02-19 | 1997-08-21 | Amersham International Plc | Device and method for triggering a random event |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4197170A (en) * | 1977-10-11 | 1980-04-08 | Monsanto Research Corporation | Radiation sources and process |
FR2450498A1 (fr) * | 1979-03-02 | 1980-09-26 | Commissariat Energie Atomique | Procede de fabrication d'une source radioactive et source obtenue par ledit procede |
TW256969B (ko) * | 1993-01-19 | 1995-09-11 | Siemens Ag | |
FR2748596B1 (fr) * | 1996-05-13 | 1998-05-29 | Commissariat Energie Atomique | Procede de preparation de films a base de polymere conducteur pour la realisation de sources radioactives |
EP0828349A1 (en) * | 1996-08-06 | 1998-03-11 | AMERSHAM INTERNATIONAL plc | Method of and apparatus for generating random numbers |
GB9803055D0 (en) | 1998-02-12 | 1998-04-08 | Nycomed Amersham Plc | Method of and apparatus for generating random numbers |
JPH11296348A (ja) * | 1998-04-07 | 1999-10-29 | Takeshi Saito | 自然乱数およびハイブリッド乱数生成装置 |
JP3077755B2 (ja) * | 1998-11-30 | 2000-08-14 | 日本電気株式会社 | スパッタ形状のシミュレーション方法及びそのプログラムを記録したそのコンピュータ読み込み可能な記録媒体 |
WO2000038037A1 (en) * | 1998-12-18 | 2000-06-29 | The Regents Of The University Of California | A RANDOM NUMBER GENERATOR BASED ON THE SPONTANEOUS α-DECAY |
JP2000305753A (ja) | 1999-04-16 | 2000-11-02 | Takeshi Saito | 物理乱数生成装置 |
JP2001117756A (ja) * | 1999-10-20 | 2001-04-27 | Iwaki Electronics Corp | ランダムパルス発生器ならびにそれを利用した乱数発生装置および確率発生装置 |
JP3480822B2 (ja) * | 1999-11-02 | 2003-12-22 | 斎藤 威 | 熱雑音ランダムパルス発生装置及び乱数生成装置 |
JP3534064B2 (ja) | 2000-11-10 | 2004-06-07 | いわき電子株式会社 | 乱数発生方法 |
JP4521708B2 (ja) * | 2001-03-12 | 2010-08-11 | ルネサスエレクトロニクス株式会社 | 乱数生成装置 |
JP2003016396A (ja) | 2001-07-03 | 2003-01-17 | Mitsubishi Materials Corp | 非接触データ通信システム及び該システムを用いたデータ通信方法 |
JP4467216B2 (ja) * | 2001-09-07 | 2010-05-26 | Necエレクトロニクス株式会社 | 乱数発生方法及び装置 |
JP2003337928A (ja) | 2002-05-21 | 2003-11-28 | Ntt Data Corp | Icタグシステム |
AU2003285742A1 (en) * | 2002-08-14 | 2004-03-03 | Institute For Advanced Studies Co., Ltd. | Random number generator and random number generation method |
-
2005
- 2005-06-24 TW TW094121258A patent/TWI408903B/zh active
- 2005-06-28 EP EP05755752.2A patent/EP1771946B1/en active Active
- 2005-06-28 KR KR1020077002434A patent/KR101234929B1/ko active IP Right Grant
- 2005-06-28 MY MYPI20052948A patent/MY149214A/en unknown
- 2005-06-28 CN CNA2005800290253A patent/CN101010876A/zh active Pending
- 2005-06-28 WO PCT/JP2005/012288 patent/WO2006004075A2/en active Application Filing
- 2005-06-28 US US11/630,678 patent/US8001168B2/en active Active
- 2005-06-28 CN CN2010100037366A patent/CN101794211B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997029820A1 (en) * | 1996-02-19 | 1997-08-21 | Amersham International Plc | Device and method for triggering a random event |
Also Published As
Publication number | Publication date |
---|---|
EP1771946B1 (en) | 2019-07-31 |
MY149214A (en) | 2013-07-31 |
EP1771946A2 (en) | 2007-04-11 |
CN101794211A (zh) | 2010-08-04 |
WO2006004075A3 (en) | 2007-02-15 |
US8001168B2 (en) | 2011-08-16 |
WO2006004075A2 (en) | 2006-01-12 |
TW200614672A (en) | 2006-05-01 |
KR20070036162A (ko) | 2007-04-02 |
CN101010876A (zh) | 2007-08-01 |
TWI408903B (zh) | 2013-09-11 |
CN101794211B (zh) | 2013-02-06 |
US20070271320A1 (en) | 2007-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101234929B1 (ko) | 랜덤 펄스 발생원, 및 이 발생원을 사용하여 난수 및/또는 확률을 생성하는 반도체 디바이스, 방법, 및 컴퓨터-판독가능한 저장 매체 | |
US10243729B2 (en) | Method of testing the resistance of a circuit to a side channel analysis | |
EP0940011B1 (en) | Method of and apparatus for generating random numbers | |
EP2302555A2 (en) | Error correction | |
US7890561B2 (en) | Random number generator | |
JP4215950B2 (ja) | 乱数発生方法および装置 | |
US7266575B2 (en) | Random number generator which can generate a random number based on an uniform distribution | |
CN109196377B (zh) | 光传感器及电子设备 | |
US8990578B2 (en) | Password authentication circuit and method | |
EP3861431B1 (en) | Device and method for generating random bit sequences | |
JP2006503466A (ja) | 通信クロック周波数を識別するデータ処理装置 | |
JP4804815B2 (ja) | ランダムパルス発生源、これを用いた乱数及び/又は確率を発生するための方法、プログラム及び半導体デバイス | |
JP2018517203A (ja) | ポストプロダクション外部ハードウェアアタッチメントの自己検出のための方法およびシステム | |
US20030056124A1 (en) | Digital-based mechanism for determining voltage | |
Rohe | RANDy-A true-random generator based on radioactive decay | |
CN113126473B (zh) | 用于时间数字转换器的方法和装置 | |
JP2926539B2 (ja) | 微弱放射性物質を利用した数値特定装置と確率が変更可能なパルス発生装置 | |
US9069989B2 (en) | Chip authentication using scan chains | |
US11301091B2 (en) | Touch sensor circuit | |
US20220020410A1 (en) | Asynchronous true random number generator using stt-mtj | |
CN118897448A (zh) | 用于时间数字转换器的方法和装置 | |
CN115495800A (zh) | 一种密码芯片、电磁注入检测电路及电磁注入检测方法 | |
Yanin et al. | Multichannel Data Acquisition System for Scintillation Detectors of the Emma Experiment | |
TH76191A (th) | แหล่งกำเนิดการสร้างพัลส์สุ่ม และอุปกรณ์สารกึ่งตัวนำวิธีการและโปรแกรมสำหรับการสร้างเลขสุ่มและ/หรือความน่าจะเป็นที่ใช้แหล่งกำเนิดนั้น |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
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: 20160118 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170116 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180112 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190123 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20200128 Year of fee payment: 8 |