TWI408903B - 隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式 - Google Patents

隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式 Download PDF

Info

Publication number
TWI408903B
TWI408903B TW094121258A TW94121258A TWI408903B TW I408903 B TWI408903 B TW I408903B TW 094121258 A TW094121258 A TW 094121258A TW 94121258 A TW94121258 A TW 94121258A TW I408903 B TWI408903 B TW I408903B
Authority
TW
Taiwan
Prior art keywords
random number
probability
random
pulse
rpg
Prior art date
Application number
TW094121258A
Other languages
English (en)
Other versions
TW200614672A (en
Inventor
Noriyoshi Tsuyuzaki
Original Assignee
Noriyoshi Tsuyuzaki
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 Noriyoshi Tsuyuzaki filed Critical Noriyoshi Tsuyuzaki
Publication of TW200614672A publication Critical patent/TW200614672A/zh
Application granted granted Critical
Publication of TWI408903B publication Critical patent/TWI408903B/zh

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/588Random number generators, i.e. based on natural stochastic processes
    • 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
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L23/00Details of semiconductor or other solid state devices
    • H01L23/58Structural electrical arrangements for semiconductor devices not otherwise provided for, e.g. in combination with batteries
    • H01L23/585Structural 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/84Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2223/00Details relating to semiconductor or other solid state devices covered by the group H01L23/00
    • H01L2223/58Structural electrical arrangements for semiconductor devices not otherwise provided for
    • H01L2223/64Impedance arrangements
    • H01L2223/66High-frequency adaptations
    • H01L2223/6661High-frequency adaptations for passive devices
    • H01L2223/6677High-frequency adaptations for passive devices for antenna, e.g. antenna included within housing of semiconductor device
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/01Means 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/42Wire connectors; Manufacturing methods related thereto
    • H01L2224/47Structure, shape, material or disposition of the wire connectors after the connecting process
    • H01L2224/48Structure, shape, material or disposition of the wire connectors after the connecting process of an individual wire connector
    • H01L2224/4805Shape
    • H01L2224/4809Loop shape
    • H01L2224/48091Arched
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/0001Technical content checked by a classifier
    • H01L2924/0002Not covered by any one of groups H01L24/00, H01L24/00 and H01L2224/00
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/30Technical effects
    • H01L2924/301Electrical effects
    • H01L2924/3025Electromagnetic shielding

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Power Engineering (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Storage Device Security (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Measurement Of Radiation (AREA)
  • Credit Cards Or The Like (AREA)

Description

隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式
本發明有關於設置有α-粒子發射器(emitter)用以自發地產生完整隨機脈衝的隨機脈衝產生源,其內整合配置有能產生完整隨機信號及準備確認信號、隨機數、及機率之能力之這類隨機脈衝產生源的半導體裝置,諸如IC,以及使用該源產生隨機數及/或機率的方法與程式。
在日本先行公開之專利2003-33728及2003-16396中揭示安全性經過增進的IC標籤。前份公報所揭示的IC標籤具有經由以端點連接儲存電力的架構,藉由該電力,IC中的CPU產生一次的通行碼,該通行碼保存在記憶體中,當所儲存的電力被放電時,所保存的通行碼被刪除。後份公報中所揭示之IC標籤具有兩次或多次從標籤讀取確認資料,並使用假隨機值做為確認資料的架構。
不過,這些IC標籤不包括用以產生完整隨機信號的產生器或產生這類信號的功能。在這種類型的確認IC中,內建有儲存電路,經由無線電通信或紅外線通信接收的外部信號中獲得確認資料,或在IC晶片內產生,且將資料寫入儲存電路。此外,可從外部讀取儲存在IC晶片接收側內的資料,因此,資料的機密性差,且有安全上的問題。此外,當使用辨別IC的隨機數資料時,經常是使用發射側之程式準備的假隨機數,因此,保持發射側的隱密是絕對必要的。此外,難以阻擋從隨機數資料推估出規則性,組合的數量受到限制,且多個相同的識別編號被混在一起也是個疑慮。當使用IC標籤追蹤(pursuit)時,會有個別之資訊被累積在追蹤側的問題發生,且IC標籤成為抑制普及的因素。
此外,在諸如電子鎖的確認裝置中,在用於確認其他造之習用IC的情況,產生確認信號的功能不包括在晶片內。為反複製(反盜錄),確認信號是從外部經由無線電或紅外線通信送出,且此確認資料被儲存在晶片內的儲存裝置內,當確認資料與儲存在發射源的資料相符時,其他造即被認可。因此,當所儲存的資料被完整複製時,發射源即無法判斷真或偽。因此,此與上述IC標籤有類似的安全問題。
此外,有一種IC內建使用熱雜訊或多種雜訊的隨機數產生器。熱雜訊或各種雜訊受環境改變(例如電磁波)的影響。因此,需要處理的不僅是完整的隨機信號,還有假隨機數,且因此可靠度受到限制。在系統使用各種雜訊的情況中,隨機數的產生是根據雜訊的雜亂現象。不過,關於隨機數之效能與那些根據各種評估方法的不同,其沒有邏輯上的確證。
發展本發明以消除上述習知的問題。
本發明的隨機脈衝產生器(產生源,在後文中稱為RPG)可構造成包括一用以放射α-粒子或貝它射線的發射器,或由於核衰變所放射的α-粒子或貝它射線,以及用以偵測被放射之α-粒子或類似物的偵測器,且如溶液般使用發射器,並將溶液滴在偵測器的偵測面上。
本發明的RPG也可構成包括一用以放射α-粒子或貝它射線的發射器,或由於核衰變所放射的α-粒子或貝它射線,以及用以偵測被放射之α-粒子或類似物的偵測器,其特徵在於如溶液般使用發射器,該溶液蒸鍍在一構件上,或例如經由滾壓法將該溶液形成一與偵測器面對的板狀物,兩者間間隔一預定的距離。
此外,關於本發明的一半導體裝置包括一IC,被構造成經由使用用以自發性產生隨機脈衝之隨機脈衝產生源產生一隨機數及/或機率,測量RPG所產生之隨機脈衝間的時間間隔或電壓值,並將時間間隔或電壓值轉換成數位值。
例如,當本發明應用於確認裝置時,IC本體內建具有由於自然衰變導致不停放射α-粒子之放射源的隨機脈衝產生器(RPG),且能從RPG取得完整的隨機信號,並使用該信號做為確認信號。易言之,IC晶片一直產生確認信號以將該信號重寫成供每次確認時的新確認資料,以使複製不具意義。在此情況,不使用程式即可產生幾乎無窮組合的確認信號,在IC晶片的製造方面,不需要做確認資料的管理,在IC晶片的使用方面,可建立完整的安全性。
此外,雖然稍後將詳細描述,在本發明的情況中,可很容易地從IC晶片內之RPG的信號準備完整的RPG隨機數及機率。因此,經由提供IC,可以容易地使用隨機數及機率。
本發明完全不受環境條件的影響,原始信號產生源是內建在IC本體內,無法以人工控制,且IC所產生的隨機信號是用來產生確認信號、隨機數及機率的源信號。因此,其可以構造出一無法被人為操作的確認系統,且因此安全得以建立。
此外,在確認系統的供應側不需要儲存資料,且其可大幅地降低成本。可將本發明所產生之均一的隨機數當成完整的隨機數處理,且系統可做為無法施加人為欺騙的機率產生器。
本發明也針對產生隨機數及/或機率的方法及程式,包含以下步驟:設定一隨機脈衝產生源(在後文中稱為RPG),用以自發地產生隨機脈衝,測量RPG所產生之隨機脈衝間的時間間隔,或測量隨機脈衝的電壓值,並將其轉換成數位值,並從被轉換成數位值的隨機脈衝產生一指數分佈的隨機數、及/或具有預定之位元長度的均一隨機數及/或機率。
該方法/程式的特徵在於從隨機脈衝產生指數分佈的隨機數及/或具有預定位元長度之均一隨機數及/或機率的步驟,從顯示RPG所產生之脈衝間發生相同脈衝間隔之機率的指數分佈,得到所需的機率數量,以根據該機率準備均一的隨機數。
該方法/程式的特徵也在於從隨機脈衝產生指數分佈的隨機數及/或具有預定位元長度之均一隨機數及/或機率的步驟,在經由使用指數分佈從t1與t2間之時間間隔得到一機率時,經由假設時間t2為無限時間,當超過時間t1時,識別一具有預定之機率的脈衝。
該方法/程式的特徵也在於從隨機脈衝產生指數分佈的隨機數、及/或具有預定位元長度之均一隨機數及/或機率的步驟,在從一指數分佈準備一隨機數時,即使脈衝的平均釋放率被變動,經由變動用於測量的基本周期並執行相同的計算,即可實現指數分佈隨機數及均一分佈隨機數被穩定的出現機率密度。
該方法/程式的特徵在於從隨機脈衝產生指數分佈的隨機數、及/或具有預定位元長度之均一隨機數及/或機率的步驟,當從指數分佈準備隨機數,且均一分佈隨機數之產生與機率之產生被同時處理時,經由變動用於測量的基本周期以穩定指數分佈隨機數之分佈。
該方法/程式的特徵也在於從隨機脈衝產生指數分佈的隨機數、及/或具有預定位元長度之均一隨機數及/或機率的步驟,當從指數分佈準備隨機數時,經由變動用於測量的基本周期,自動地修正用於硬體(諸如用於測量時間的微電腦)之振盪頻率之工作時脈的變動。
下文中以增加無線電標籤之功能的RPG-RFID(射頻識別)晶片為例加以特別描述。不過,本發明並不限於該例。當然,本發明也可應於其它半導體裝置,諸如用於產生確認信號、隨機數或機率的IC。
此外,本發明也可應用於包括以下所要描述之隨機脈衝產生源(RPG)的IC卡、IC標籤、可與PC連接的單元、內建於模組的單元等,此外,也可應用於包括被構造成以便經由測量RPG所產生之隨機脈衝間之時間間隔或電壓值,並將該值轉換成數位值以產生隨機數及/或機率之半導體裝置的IC卡、IC標籤、可與PC連接的單元、內建於模組的單元等。
本發明的IC標籤具有以下結構。用以產生完整隨機脈衝的隨機脈衝產生器(RPG),經由使用本發明人所取得之日本專利No.2926539中所揭示之α-粒子改良的脈衝產生器。α-粒子發射器可使用2 4 1 Am、2 4 4 Cm、2 1 0 Pb-2 1 0 Po、2 1 0 Po等其中之一,這些都會自然衰變。更明確地說,可使用鈾系列的所有核子物種、釷系列的所有核子物種、以及2 1 0 Pb-2 1 0 Po等在這些核物種間形成放射平衡狀態的所有核子物種、2 4 4 Cm、或2 4 1 Am。此外,用以產生隨機脈衝的RPG也允許使用貝它射線或伽瑪射線,只要使用IC標籤的部分具有用於屏蔽的設置空間。
由於α-粒子、貝它射線及伽瑪射線不受環境的影響,諸如溫度、壓力、濕度、或電磁波,其無法受人為操作。此特殊的IC無法以其它方法實現,且對確保安全而言,IC是重要因素。用於不要求完整安全之部分的IC標籤,可以使用以半導體之熱雜訊或抖動做為隨機脈衝產生源的RPG。
IC標籤的RPG-RFID晶片包括:RPG、可將RPG所發射的隨機脈衝當成確認信號使用的電子電路、儲存確認信號的電路、儲存裝置、用於發射對應於通信形態之確認信號的電路、天線、通信裝置等。至於電源,在RPG-RFID晶片的情況,是從天線供應的射頻能量。不過,當有設置端點的空間時,也可以使用端點,並經由端點供應電力。
在RPG-RFID晶片的確認程序中,來自內建之RPG的隨機信號(產生時間及脈衝間的時間間隔)被當成RPG-RFID晶片的確認信號寫入內部的儲存裝置。經由使用與RPG-RFID晶片通信的機構或經由直接接觸的連接,從外部擷取被儲存的信號,以確定同批產品中沒有相同的確認信號組合。
當被運送的RPG-RFID晶片被用於特定的貨品管理,且由於出貨的時間,在銷售資訊或類以物的管理方面,供銷的範圍較受到限制,每一個RPG-RFID晶片的確認信號在出貨、儲存及被使用前經由通信被讀取。
每次通信都執行確認程序及確認資料的儲存,以RPG-RFID晶片所產生的隨機信號取代確認資料。
以下將參考附圖詳細描述配置本發明之隨機脈衝產生器(RPG)之RPG-RFID晶片的實施例。
首先描述用於自發地產生隨機脈衝的隨機脈衝產生器(RPG)。
RPG是由α-粒子發射器以及位在RPG-RFID晶片中央部位的PN型半導體、PNP型半導體、PIN光二極體、光電晶體、光二極體或類似物構成,如圖1所示。根據RPG-RFID晶片所要求的安全水準選擇脈衝產生器的裝置。在圖1中,參考編號10指示安置α-粒子發射器與偵測器的位置,100指示基板物質(矽基板)。
圖2顯示RPG-RFID晶片之α-粒子發射器四周的結構,α-粒子發射器即裝設於其中。從α-粒子發射器中放射出的α-粒子(氦原子)不受諸如溫度、壓力、或電磁波等環境的影響,也不需要電源,且α-粒子是按半衰期半永久性地釋放。易言之,此系統的特徵在於其可使用完全不受人為操作的信號源做為用於確認的原始信號。因此,此系統成為一完全無法從外部改變的信號產生源。當此IC的設置部分不要求完整的安全時,其例如可以使用用以產生雜訊的二極體做為脈衝產生器。在圖2中,參考編號11指示一蒸鍍或滴落的α-粒子發射器,12指示一偵測器。
有以下兩種方法可將α-粒子發射器結合入IC:方法之一是使用其上蒸鍍有α-粒子發射器的構件,或經由滾壓法形成碟形物,或是採用滴落α-粒子發射器之溶液的方法(也包括以噴墨系統注射)。
在用於結合碟形α-粒子發射器之方法的情況中,α-粒子發射器設置在α-粒子偵測二極體的緊上方。有以下兩種設置方法:方法之一是設置一間隔物,以使偵測二極體與α-粒子發射器間有一預定的距離,且將α-粒子發射器固定在間隔物上,設置α-粒子發射器的另一方法是將其黏著在一密封板上。圖3顯示一設置結構。在圖3中,參考編號11指示一α-粒子發射器,12指示一偵測器,13指示一密封板,以及14指示一用於在發射器與偵測器間設定一距離的間隔物。
以下是經由滴落α-粒子發射器之溶液以構造一偵測器的方法(參考圖4A至4C)。
首先計算溶液所要滴落之偵測器的周圍,以得到所需溶液的體積,以避免滴落的溶液外溢。所滴落之溶液的量要與容積相等。得到包括在滴落量中之α-粒子發射器的原子數量,以便得到預定的脈衝數,以及,在滴落發射器前先調整濃度,以便得到所要的濃度。
以滴落治具(諸如微注射器20)吸取所需的量,並將所擠出預定量之α-粒子發射器的溶液11'滴落在偵測器12的表面上(參考圖4A)。在滴落溶液11'後,以諸如環氧樹脂的密封材料15(參考圖4B)或以密封片16(參考圖4C)封住偵測器12。使用以噴墨系統注入溶液之方法的情況也是使用相同程序。
α-粒子發射器與電路部分間的距離(圖1及2中的距離d),要大於經由下式所得到α粒子的範圍,以防止由於α粒子所導致的故障。
圖7顯示α粒子在空氣中的一般範圍。橫軸指示α-粒子發射器與偵測器間的距離,縱軸指示離散值(單位隨意)。當使用2 1 0 Pb-2 1 0 Po做為α-粒子發射器時的計算如下所示。
α粒子之能量E(MeV)與範圍R(cm)在空氣中的關係已有完整的研究,且以蓋氏的式子表示。
E=2.12R2 / 3 (4<E<7) R=0.323E3 / 2 (3<R<7)因此,Po之α粒子的範圍如下所示。
當α粒子在空氣中的範圍已知時,其在固態物質中的範圍Rs(cm)可從布萊格-克雷曼的式子得到
A:固態物質的原子量ρ=密度α粒子在矽中的範圍如下式所示。
因此,當使用矽做為屏蔽材料(屏蔽牆)時,為與電路隔離,其要設定為29微米或更厚。
此外,2 1 0 Pb-2 1 0 Po釋放極微弱的貝它射線。在貝它射線的情況中,到達的電子數量隨距離呈指數下降,其與α粒子間的差異如圖8所示。貝它射線是電子,但其完全不會影響內部的IC電路。不過,需要使用不會使貝它射線外洩的結構,以免造成錯誤。屏蔽材料所需的厚度可從以下的式子得到。在圖8中,橫軸指示鋁的厚度,縱軸指示電子的數量。
由於Pb-210貝它射線的最大能量Em為0.061MeV,可根據威爾遜的式子計算最大範圍Rm。
Rm=2400×(Em)2 =2400×(0.061)2 =2400×0.003721=8.9304mg/cm2 此外,從Isotope手冊(第三版,Maruzen,April,1985)可知,60 KeV在鋁中的範圍是6 mg/cm2 。由於鋁的密度為2.7 g/cm3 ,因此可得到下式。
因此,用於圖1所示之RPG-RFID晶片的密封材料需要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的目的選擇所使用的脈衝數做為確認並增進安全性。
接著,以下將描述準備均一隨機數的方法。從上述的式(1)中可得到在從t1 到t2 的間隔間隔內出現脈衝的機率。
當變換上式時,可得到下式(2)。
t2 =-1/n*log(e n t 1 -P)………(2)其中,t2 >t1 ,因此,上式可用tk =t2 ,tk 1 =t1 取代,且t1 、t2 、…是從t0 =0連續地得到,並藉以得到具有均一出現機率之1/p方式之時間寬度(△t)的臨限值。
tk 1 =-1/n*log(e n t k -p)………(3)其中,t0 =0在式(3)的情況中,經由固定n及p,其可以僅單次地決定每一個tk 值。當以16位元長度(0-65535)執行脈衝間隔測量並考慮轉換後的有效數字數量時,以上述臨限值取代的資料長度需設定為大約8位元長度。否則,就無法忽略在短時間間隔內之錯誤的影響。因此,上述的p被設定為256,且0-65535(16位元長度)的間隔經由上述的臨限值轉換成0-255(8位元長度)的間隔。當要求以16位元做為位元長度時,可經由連接兩個8位元長度的資料值產生16位元。
以此方法為例,當n值增加時,出現的時間間隔相對地縮短。當時間間隔的測量解析度保持固定時,誤差即成為問題。不過,當n值減少時,時間間隔相對地增加。當時間間隔的測量解析度保持固定時,高位的值出現捨入誤差(溢出)。
因此,要使時間測量之基本周期的變動對應於n值的變動。易言之,當被測量的n值小時,測量的基本周期要增加,然而,當n值大時,測量的基本周期要被縮小。藉以使當成測量結果之值資料的分佈一直保持固定,且可使後續的算術處理電路簡化。此外,由於時間測量之基本周期的變動僅隨單位時間的平均釋放數量而定,因此,由產出量的觀點,算術電路之參考操作頻率的變動在算術電路之運算速率的範圍內被修正。因此,不需要頻率精確的振盪電路為算術電路產生時脈。
特別是得到下式(4)tk 1 =-1/n*log(e n t k -p)………(4)其中,t0 =0不過,當假設n的變動分量為m,且n=n×m,則可得到下式(5)。
tk 1 =-1/nm*log(e n m t k -p)………(5)其中,t0 =0在此情況,經由根據m(tk=t1/m)變動測量時間的基本周期,即可得到下式(6)。
tk 1 =-1/n*log(e n t 1 -p)………(6)其中,t0 =0因此,可以直接應用基本的算術式。
當假設算術電路所用的工作頻率大約25 MHz,則基本周期時脈為40奈秒。當假設n值為10,則平均脈衝間隔為100毫秒。平均脈衝間隔的測量是假設測量基本周期為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)顯示。
p=e n t 1 -e n t 2 ………(7)因此,只需決定用以滿足機率值被產生的t1 與t2 ,並判斷t1 與t2 間是否存在一脈衝。在此情況,當無限地增加t2 ,t2 ,第二項的e n 1 2 可忽略不計,因其變為0,且可經由比較所測量的時間寬度與t1 判斷脈衝的出現。經由無限地增加t2 ,e n t 之出現頻率很小的區域被使用。因此,其可以廣範圍地取用一解析度。因此,可使機率計算的捨入誤差減至最小。
當假設t2 無限大,一式如下式(8)所示。
p=e n t 1 ………(8)當對式(8)的兩邊施加對數以得到t1 時,可得到下式(9)。
t1 =-log(p)/n………(9)因此,從一組機率值(p)與每秒脈衝數(n)可得到t1 的值。
也是在此例中,由於n值的變動也致使測量時間需要變動。特別是當機率值小時,需要做到長時間測量的效果。因此,經由變動測量的基本周期與均一隨機數之計算的情況類似,可以解決溢位或計數精度不足的問題。此方法可對應於非常小的機率值。不過,當機率值小時,測量的最大值增加,且發生測量時間加長的情況。不過,經由在算術電路中使用儲存過去測量值的機構或結構,反應時間的問題可以避免。
當從外部設定機率值時,僅需計算方程式(9)t1 =-log(p)/n,且計算不會在測量的時間發生。因此,即使計算的時間需要相當程度的拉長,對實際操作的影響也非常小。為有彈性地對應至一組機率值及可經由外部的輸入選擇不同的機率值,可經由微電腦計算上述的對數運算,不為使用表而捨棄計算。
接著,以下將描述為變動基本周期,設定和n值有關的參考測量時間。
在式(7)中:p=e n t 1 -e n t 2 ………(7)其中假設t0 為0,最大臨限值(255)的時間間隔,可從p=255/256=1-e n t 2 5 5 得到下式(10)。
t2 5 5 =-(1/n)*log(1/256)=5.545177………(10)當設定以上述第255個臨限值+5%做為16位元計時器溢位的時間時,經由取某些容差,16位元計時器可計數的最大時間間隔如下式(11)所示。
tm a x =5.545177*1.05/n=5.822436/n………(11)藉以,計時器之計數參考時脈的周期成為tc l k =(5.822436/65536)/n=88.84333μs/n當假設算術電路的基本工作頻率為25MHz時,系統時脈的周期成為ts y s =40奈秒且為上述計時器產生參考時脈tc l k 之預定標器(prescaler)的值成為tp r e s =(88.84333/40.816)/n=2176.7/n經由根據n的值變動計時器的計數參考周期,僅需使用式(4)即可得到用於產生均一隨機數的臨限值,且得到下式。
tk 1 =-1/n*log(e n t k -p);其中,t0 =0在上式中,當n等於5.822436,當計算每一個tk 時,從1到255的臨限值都可被計算,且如下表所示。
當得到的測量資料是包括在任何臨限值之間時,該結果成為8位元的均一隨機數。
用以得到包括在任何臨限值間之測量資料的方法包括兩種類型的方法。一種方法是在完成測量後,經由二進位搜尋執行大小比較,以及,另一方法是檢查在測量的過程中包括在任何區域內之目前的測量值。以下描述這兩種方法。
二進位搜尋法在本轉換的情況中,由於測量資料成為16位元長度,且被轉換的資料成為8位元長度,因此,用於二進位搜尋的條件是理想的,使程式可以大幅簡化。在此條件下被指定之演算法的樣本如下所示。
BitInd I Cator=10000000b;Result=BitInd I Cator Repeat If MeasuredValue<DataTable(Result)then Result=Result xor BitInd I Cator;BitInd I Cator=RightLotate(BitInd I Cator,1 bit);Result=Result xor BitInd I Cator;Until.BitInd I Cator.bit7="1";在此轉換的情況中,16位元長度的比較、位元處理(xor)、以及資料表的參考等,都被執行8次。
在測量過程中判斷在上述的臨限值表中,數值從0按順序增加到255。因此,每當測量脈衝間隔時,經由執行與資料表的比較,處理可大幅減化。此外,由於當測量完成(或次一個脈衝抵達)時,轉換成均一隨機數也被完成,因此,反應也大幅增進。因此,不像上述使用二進位搜尋的方法,算術處理不需要某一決定的時間。當使用微電腦進行算術處理時,演算法可有效地工作。以下顯示特定的演算法。
在此方法的情況中,假設上表中1至255的資料被儲存在0至254內。
<初始處理>Result=0;Head of table
<每次預定標器溢位>if MeasuredValue=DataTable(Result)then Result=Result+1;因此,此為非常簡單的方法,且臨限值搜尋被散亂地執行,算術處理部分之產出量的負荷(處理能力)非常小。
接下來,下文中將更詳細地描述用以產生本發明之隨機數及機率之裝置/方法的處理程序。
以下所要描述的方法具有諸如正常(獨立)模式、展示(demonstration)模式、多模組模組(多模組)的3種模式及以下的特徵。
正常模式是與主電腦一對一連接的模組,其輸出指數分佈的隨機數串及均一隨機數串,並根據機率判斷讀取命令的輸入,輸出機率判斷的結果。展示模式是準備展示的模式,其為脈衝的每一次測量輸出指數分佈隨機數串、均一分佈隨機數串、以及機率判斷結果。多模式可連接多個模組,提高隨機數產生速率,其中,根據命令分別輸出指數分佈隨機數串、均一分佈隨機數串、以及機率判斷結果。
圖10A至10C的流程圖顯示當經由使用微電腦處理本發明之裝置/方法的演算法。
首先,如圖10A所示,開始各種初始化操作,諸如清除RAM、各暫存器的初始化、及所要執行之快閃記憶體的原設值及主常式的讀取等。
在主常式中,檢查是否存在未被處理之新的被測量時間資料(步驟S110)。當該資料存在,該資料在目前模式不是多重模式的前題下(步驟S120)被呼叫(讀取)(步驟S130)。接著,用於測量脈衝間時間(脈衝時間間隔、脈衝間隔)之計時器的預定標器被設定(步驟S140),且計時器被清除(步驟S150)。當RPG脈衝被偵測到(步驟S160),計時器被啟動(步驟S170)。每次偵測到RPG脈衝時(步驟S180),計時器輸出測量資料(步驟S190),且該資料被儲存為指數隨機數(步驟S200)。接著,資料被轉換成均一分佈隨機數(步驟S210)以判斷機率(命中或失敗)(步驟S220)。接著,其判斷操作模式是否為展示模式(步驟S230)。當操作模式是展示模式時,指數分佈隨機數被無條件傳送給主電腦(與隨機數輸出之選擇的存在與否無關)(步驟S260),均一分佈隨機數被傳送(步驟S270),此外,機率判斷值被傳送(步驟S280)。
當操作模式不是展示模式時(亦即是正常模式),當隨機數的輸出被選擇時(步驟S240),且當均一分佈隨機數的輸出被選擇時(步驟S250),指數分佈隨機數被傳送。
另一方面,如圖10B所示,為測量CPS值(脈衝數),原設值被設定(步驟S310),且當偵測到RPG脈衝時(步驟S320),用於設定測量時間的計時器被初始化(步驟S330)以設定測量時間(步驟S340)。接著,脈衝數計數器被清除(步驟S350),且每次偵測到RPG脈衝時(步驟S360),測量值被積分(步驟S370)。此不斷重複直到所設定的測量時間(例如64秒或1小時)。當到達所設定的測量時間(步驟S380),計算所設定之測量時間的CPS值(步驟S390)。接著,用於脈衝間隔之測量的參考時間周期被計算(步驟S400),且將新的CPS資料寫入快閃記憶體(步驟S410)以開始測量(步驟S420)圖10A及10B所示的測量處理被平行且同時進行,且在整個脈衝周期中都進行脈衝間隔的測量。
在如圖10C所示的本實施例中,當接收串列資料(步驟S500)時,僅當有新資料時(步驟S510),命令處理常式才被啟動。
操作條件設定命令的處理、內部狀態讀取命令的處理、機率設定命令的處理、操作命令之處理、以及模組位址及指定位址間之比較等被執行,因此,將在稍後描述在程式中描述處理程序(演算法)的命令處理常式描述資料。
當使用微電腦處理用以產生本發明之均一隨機數及機率的裝置時,在微電腦中之處理演算法的程式如下所描述。
微電腦中的演算法微電腦:C8051F330工作頻率:24.5MHz系統時脈:1/1 1.Allocation of ports and Interrupt functions P0.0:Input of pulses P0.4:Serial output P0.5:Serial input P1.3:LED output External interrupt0:Detect input of pulse Timer1:Generate transfer rate of UART Timer2:Used for inter-pulse time measurement :Prescaler value is changed by CPS Timer3:Used for creating constant time(CPS measuring time) Serial interrupt:Used for data reception 2.Timers Timer0:Not used Timer1:Baud Rate Generator of RS232C Timer1 Condition{ Pre-scale=1/1 8 bit Reload Mode Reload Value=96h } Timer2 Prescaler for pulse counting Timer2 Condition{ 16 bit Reload Mode Pre-scale=1/1 Reload Value=tpres } Timer3 Timer for CPS counting Timer3 Condition{ 16 bit Reload Mode Pre-scale=1/12 Reload Value=40833;Overflow=20 mS } PCA Watch Dog Timer 3.Memories SerialBuffer(0..15)as M[8];Serial receive buffer IntervalTime(0..3)as M[17];Pulse Measurement time internal storage buffer SerialWPointer as M[8];Pointer for indicating writing position when serially received data is written into receive buffer ininterrupt processing routine. SeyialRPointer as M[8];Pointer for indicating position of next serial data to be processed within serial receive buffer in main routine IntervalWPointer as M[8];Pointer for indicating position where next pulse measurement time is written in interrupt processing routine IntervalRPointer as M[8];Pointer for indicating position in buffer for next pulse measurement time to be processed in main routine IntervalCounter as M[17];Counter for counting pulse time interval in interrupt processing routine CPSSecCounter as M[8];Count for one second(25 times * 20 mS) CPSTimeCounter as M[8];Count for 64 seconds CPSCounter as M[16];CPS counter CPS as M[16];CPS value Prob(0..7)as M[16];Probability set value PValue(0..7)as M[16];Threshold value after logarithmic calculation PSetting as M[16];Probability setting input value PArg as M[8];Probability setting argument BEXP as M[8];Index portion of value to be operated at ;logarithmic calculation CycleCounter as M[8];Used in operating portion,Counter for repeat ;number of times Bitlndicator as M[8];Used for division calculation NOPTimeCount as M[8];Counter for number of pulses for each hour RandomEXP as M[24];Final result of exponential distribution random ;number UniformedData as M[8];Final result of uniform distribution random number CPSForceData as M[16];CPS forcible value CPSMeasureTime as M[8];Set value of CPS measurement time NumberOfPulse as M[24];Number of pulses for each hour CPSReadOut as M[16];Memory area of C P S measured value ;taken over from interrupt to main CPSACTimeCount as M[8];Count of CPS accumulation number of ;times CPSAccumulation as M[24];C P S measured time read-out ;accumulation buffer ;Accumulate measured times for 64 seconds ;till set measurement time is reached. LastCPSAccumulation as M[24];Past memory for C P S measured time NOPCountBuffer as M[24];Buffer for measurement of number of pulses ;for one hour NumberOfNewData as M[8];Number of received serial data not ;processed yet ;Bit area InternalFlag as M[8]={ CPSDetected as M[1];CPS count-end flag LogASignMinus as M[1];Sign of Log(A) CountRestartF as M[1];Restart counting DataFlip as M[1];Uniform random number turn-back NOPCaptureF as M[1];End of measurement for one hour SerialReceived as M[1];Serial reception flag CPSForceF as M[1];bit7:C P S forcible setting } OperationMode as M[8]={;Operation mode UniformDataOutF as M[1];Output of uniform distribution ;random number EXPDataOutF as M[1];Output of exponential ;distribution random number DemoModeF as M[1];Demo mode MultiModeF as M[1];Multi mode } StatusFlag as M[8]={;Error status CPSTooLittleF as M[1];No detection of C P S CPSTooManyF as M[1];Excessive detection of C P S IntervalTimeOF as M[1];Overflow of measured value SerialBufferOF as M[1];Overflow of serial buffer } ProbFlag as M[8]={;Probability judge(hit/failure) PJudge0 as M[1];Judgment of probability number0 PJudge1 as M[1];Judgment of probability number1 PJudge2 as M[1];Judgment of probability number2 PJudge3 as M[1];Judgment of probability number3 PJudge4 as M[1];Judgment of probability number4 PJudge5 as M[1];Judgment of probability number5 PJudge6 as M[1];Judgment of probability number6 PJudge7 as M[1];Judgment of probability number7 } InternalFlagl as M[8]={;Internal flag AddressExist as M[1];Address is present in multi mode. AddressSelected as M[1];When address is selected in multi mode } ;Constants CPSMAX as #100*64/not less than 100 pulses for one second CPSMIN as #1*64/not greater than one pulse for one second 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.Initial processing /Initial processing/ R0=00h;Clear RAM. Repeat RAM(R0)=00h R0+=1 until R0=0; SerialWPointer=#SerialBuffer;Set head address of buffer. serialRPointer=#SerialBuffer; IntervalWPointer=#IntervalTime;Set head address of buffer. IntervalRPointer=#IntervalTime;NOPTimeCount=#ConstNOPCount; InitializeSFR;Set 8051 SFR LoadFlashData;Read data from flash portion. Default value is read at the first time. CalcTPreScaler;Compute and set prescale value of Timer2. CountRestart;Initialize memory for restart of measurement and approve interrupt. jump to Main; /InitializeSFR/ p0.4=OutputMode; P1.3=OutputMode; Timer1=Timer1Condition; Timer2=Timer2Condition; Timer3=Timer3Condition; PCA=PCACondition; Timer2INTEnable=true; Timer3INTEnable=true; /LoadFlashData/;Read data from flash memory. ;Previously write default value in data portion of flash ;memory. CPs=FlashCPS;CPSMeasureTime==FlashCPSMT; NumberOfPulse=FlashNofP; StatusFlag=FlashStatus; OperationMode=FlashOPMode; LastCPSAccumulation=FlashLastCPSAccumulation; PROB(o..7)=FlashPROB(0..7); Pvalue(O..7)=FlashPT(0..7); 5.Main routine ConstEXPData as“01h”; ConstUniformedData as“02h”; repeat if IntervalWPointer<>IntervalRPointer then/Is there unprocessed new /measured time data? if not(MultiModeF)then/Processing is not performed in multimode. ReadIntervalTime;/Read new measured time. ConvertToUniform;/Conversion to uniform random number CalcProb;/Judgment of probability(bit/failure) if DemoMode then/Unconditional transmission during demonstration /mode SendRandomEXP;/Transmission of exponential /distribution random number SendRandomUniform;/Transmission of uniform /distribution random /number SendPJudge;/Transmission of probability /judgment value else/Transmission only when random number output is /selected in normal mode. if EXPDataOutF then SendRAndomEXP; if UniformDataOutF then SendRAndomUniform; endif endif endif if CPSDetected then CPSDetected=false;/Processing when measurement(64 sec)of CPS /value is completed AccumulateCPS;/Accumulate CPS values for 64 sec up to measured /time set value. CPSACTimeCount-=1; if CPSACTimeCount=0 then/When measurement set time is reached CalcCPS;/Convert CPS value into average value for 16 sec. if not(CPSForceF)then CalcTPeScaler;/Calculation of /prescaler value WriteToFlash;/Write new CPS data in flash memory. CountRestart;/Restart of measurement endif; endif if NumberOfNewData<>0 then CommandHandling;/Reception of serial data /Start command processing routine only when there is new data. endif until forever; 6.Interrupt processing routine /External interrupt(INT0):Pulse input interrupt(p0)and Rising edge detection/ if CountRestartF then CountRestartF=false;/Only start measurement timer at restart of /measurement. Start Timer2; else IntervalTime(IntervalWPointer)=IntervalCounter; /Write measured result in measured data buffer. IntervalWPointer=(IntervalWPointer+1)and #ConstITFiler; /Update of pointer if IntervalWPointer=IntervalRPointer then IntervalTimeOF=true; /Buffer overflow check IntervalCounter=0; CPSCounter+=1;/Counting-up of CPS counter endif Return from Int; /Serial interrupt/ if SerialReceiveINTF then/Perform processing only at the time of reception interrupt. /Ignore transmission interrupt. SerialReceiveINTF=false; SerialBuffer(SerialInputPointer)=SerialReceivedData; /Write serial reception data in receiving buffer. SerialWPointer=(SerialWPointer+1)and #ConstSPFilter; /Update of serial write pointer NumberOfNewData+=1; if NumberOfNewData>=32 then SerialBufferOF=true; /Buffer overflow check endif Return from Int; /Timer2 interrupt/ IntervalCounter+=1;/Counting-up of inter-pulse time measuring counter Return from Int; /Timer3 interrupt/ CPSSecCounter-=1;/Counting for 1 sec if CPSSecCounter=0 then CPSSecCounter=#ConstSecCount; CPSTimeCounter-=1;/Counting for 64 sec if CPSTimeCounter=0 then CPSTimeCounter=#ConstTimeCount; CPSReadOut=CPSCounter; /Because 64 sec elapse,read CPS counted value. CPSCounter=0; CPSDetected=true; /Set CPS detection flag. end if endif Return form Int 7.Subroutine /CountRestart/Restart inter-pulse time measurement. /Initial state when CPS is updated and data is written in flash memory CPSSecCounter=#ConstSecCounter; CPSTimeCounter=#ConstTimeCount; CPSACTimeCount=CPSMeasureTime; CPSCounter=0; CPSAccumulation=0; IntervalCounter=0; CountRestartF=true; CPSDetected=false; /ReadIntervalTime/Read measured time from buffer of time measurement value. RandomEXP=IntervalTime(IntervalRPointer); IntervalReadPointer=(IntervalReadPointer+4)and #ConstITFilter; /AccumulateCPS/Accumulate CPS measured values. /Accumulate measured values for 64 sec to obtain CPS value of set measured time. /Also obtain CPS measured value for every hour here. /Measured value for every hour is obtained by accumulating measured value for every /64 sect 56 times and obtaining accumulated value for 3,584 sec,dividing next /measured value for 64 sec by 4,and adding it.(3584+64*0.25)=3600 CPSAccumulation=CPSAccumulation+CPSReadOut; /Accumulation of CPS values and accumulation of pulse numbers for one hour from here if NOPCaptureF then CPSReadOut=CPSReadOut/4; NOPCountBuffer=NOPCountBuffer+CPSReadOut; if NOPCaptureF then/Completion of measurement for one hour NumberOfPulse=NOPCountBuffer; NOPCaptureF=false; if DemoModeF then SendNOP; WriteToFlash; CountRestart; else NOPTimeCount-=1; if NOPTimeCount=0 then NOPCaptureF=true; NOPTimeCount=#ConstNOPCount; endif endif /CalcCPS/Calculation of CPS values for 64 sec 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;Checking of maximum and minimum CPS values if not(CPSTooLittleF or CPSTooManyF)then CPS=CPSAccumulation; if DemoModeF then SendCPS; WriteToFlash: CountRestart; /CheckCFSMAXMIN/ /Check if CPS value exceeds specified range /When CPS value is too large,pay attention to it because interrupt cycle of Timer 2 /becomes very short,interrupt is always applied and processing does not turn over. 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/Serial output of exponential distribution random number SerialOutput=#ConstEXPData; if RandomEXP[23..16]=”0” then SerialOutput=RandonEXP; else SerialOutput=#FFFFh; endif /SendRandomUniform/Serial output of uniform distribution random number SerialOutput=#ConstUniformData; SerialOutput=UniformedData; /SendCPS/Serial output of CPS value /When internal status is read,and when CPS value is changed in demo mode SerialOutput=#11h; SerialOutput=CPS; /SendCPSMT/Serial output of CPS measured time /When internal status is read SerialOutput=#12h; SerialOutput=CPSMeasureTime; /SendNOP/Serial output of pulse number for one hour /When internal status is read,and when CPS values for one hour are changed /in demo mode SerialOutput=#13h; SerialOutput=NumberOfPulse; /SendStatus/Serial output of status information /When internal status(CPS error)is changed,and when internal status is read SerialOutput=#14h; SerialOutput=StatusFlag; /SendVersion/Serial output of version information /When internal status is read SerialOutput=#15h; i=0; repeat SerialOutput=FlashVer(i); i+=1; until FlashVer(i)=”FFh”; /SendProbSetting/Serial output of probability set value /When internal status is read SerialOutput=SerialCommand; SerialOutput=PROB(Command and“FFh”); /SendPJudge/Serial output of probability judgment value /When probability read command is received,and when internal status read /command is received for every pulse input in demo mode SerialOutput=#28h; SerialOutput=ProbFlag; /CalcProb/Judge hit/failure from exponential distribution random number i=0; ProbFlag=“0”; repeat if PValue(i)<=RandomEXP then ProbFlag[bit i]=“1”; i+=1; until i=”8”; /CommandHandling/.Processing of serial command if(SerialBuffer(SerialRPointer)and“F0h”)=“00h”then/Operation condition /setting command if SerialBuffer(SerialRPointer)=“00h”then /When receiving unassigned code,return NAK. SendNAK; exit; endif if SerialBuffer(SerialRPointer)=“01h”then/Forcible setting of CPS value? if NumberOfNewData<3 then exit; /When operand(set data)is not received,do nothing. RenewSRP; if(MultiModeF and AddressExist and not(AddressSelected) then /When addresses do not coincide with each other in multimode, /ignore command. RenewSRP; SendNal; exit else RenewSRP; CPSForceData=SerialBuffer(SerialRPointer); /Read CPS forcible value. CPSForceF=true; /Set CPS forcible flag. CalcTPrescaler; /Calculate prescaler value(forcible data). RenewSRP; SendAck; endif if SerialBuffer(SerialRPointer)=“02h”then/Cancel of CPS forcible setting if(MultiModeF and AddressExist and not(AddressSelected) then /When addresses do not coincide with each other in multimode, /ignore command. SendAck; exit else CPSForceF=false; /Reset CPS forcible flag. SendAck; exit endif if SerialBuffer(SerialRPointer)=“03h”then/Set CPS measurment time if NumberOfNewData<2 then exit; /When operand(set data)is not received,do nothing. RenewSRP; if(MultiModeF and AddressExist and not(AddressSelected) then /When addresses do not coincide with each other in multimode, /ignore command SendAck; exit else /Read and set CSP measurement time CPSMeasureTime=SerialBuffer(SerialRPointer); WriteToFlash; CountRestart; SendAck; exit endif if SerialBuffer(SerialRPointer)=“0Fh”/Self-destruction then if NumberOfNewData<5 then exit; /When operand(set data)is not received,do nothing. if(MultiModeF and AddressExist and not(AddressSelected) then /When addresses do not coincide with each other in multimode, /ignore command SerialRPointer+=4; NumberOfNewData-=4; RenewSRP; exit else RenewSRP; If SerialBuffer(SerialRPointer)=”86h,51h,29h,78h” then /When normal data string is received,delete flash data. Destroy; exit; else /When normal data string is not received,ignore command /and return Nak. SerialRPointer+=3; NumberOfNewData-=3; SendNAk; exit endif; endif else SendNAK; exit; endif endif if(SerialBuffer(SerialRPointer)and“F0h”)=“10h”then/Read internal status if SerialBuffer(SerialRPointer)=(”10h”or“16h”or“17h”)then /In the case of invalid data,return Nak. SendNak; exit; endif; ACC=SerialBuffer(SerialRPointer Sirent; if(not(MultiModeF)or(AddressExist and AddressSelected)) then /When in stand alone mode,and when addresses coincide with each other in /multimode if ACC=”11h”then/Return CPS. SendCPS; exit; endif; if ACC=”12h”then/Return CSP measurement time. SendCPSMT; exit; endif; if ACC=”13h”then/Return CPS values for one hour. SendNOP; exit; endif; if ACC=”14h”then/Return status data. SendStatus; exit; endif; if ACC=”15h”then/Return version. SendVersion; exit; endif; SendProbSetting;/Return probability set value. exit; else exit; endif endif if(SerialBuffer(SerialRPointer)and“F0h”)=“20h”then/Probability set command if SerialBuffer(SerialRPointer)=”28h”then /Read probability judgment value. if(not(MultiModeF)or(AddressExist and AddressSelected))then SendPJudge; /Return probability judgment value only when in stand alone mode or /when addresses coincide with each other in multimode. Sirent; exit; endif if SerialBuffer(SerialRPointer)<”28h”then if NumberOfNewData<3 then exit; /When operand(set data)is not received,do nothing. if(MultiModeF and AddressExist and not(AddressSelected) then /When addresses do not coincide with each other in multimode, /ignore command SerialRPointer+=2; NumberOfNewData-=2; Sirent; exit; else /Set probability set value. PArg=SerialBuffer(SerialRPointer)and“00000111b”; /Calculate probability number. RenewSRP; PROB(PArg)=SerialBuffer(SerialRPointer); /Write probability set value. RenewSRP; CalcPThreshold; /Calculate probability judgment threshold. WriteToFlash; SendAck; CountRestart; exit; endif; endif SendNak; exit; endif if(SerialBuffer(SerialRPointer)and“F0h”)=“40h”then/Operation mode command if SerialBuffer(SerialRPointer)<”45h” then if(MultiModeF and AddressExist and not(AddressSelected)) then /When addresses do not coincide with each other in multimode, /ignore command. RenewSRP;; AddressSelected=false; AddressExist=false; exit; else Breg=OperationMode; OperationMode=SerialBuffer(SerialRPointer)and“00000111b”; if Breg<>OperationMode then /When operation mode is changed 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 /Multimode command reception processing 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; /Comparison between module address and designated address endif; if SerialBuffer(SerialRPointer)>=“C0h” then /Select command input address in multimode. RenewSRP;; exit; else /Read random number data in multimode. if IntervalWPointer=IntervalRPointer then /When there is no random number data SendNakWhenNoData; exit; else /When there is random number data if AddressSelected then /When address is selected ReadIntervalTime; /Read time measured value. ConvertToUniform; /Conversion to uniform distribution random number CalcProb; /Probability judgment if EXPDataOutF then SendRandomEXP; if UniformDataOutF then SendRandomUniform; /Output random number. endif; Sirent; endif; endif; /SendNak/Transmission of NAK code if(not(MultiModeF)or(AddressExist and AddressSelected)then SerialOutput=#SNAK; /When addresses do not coincide with each other in multimode,do not transmit NAK. AddressSelected=false; AddressExist=false; SerialRPointer+=1; SerialRPointer=SerialRPointer and #ConstSPFilter; /Update serial read pointer. NumberOFNewData-=1; /SendNakWhenNoData/When random number is read in multimode but there is no /random number SerialOutput=#SNAK; AddressSelected=false; AddressExist=false; NumberOFNewData-=1; /SendAck/Transmission of ACK code if(not(MultiModeF)or(AddressExist and AddressSelected)then SerialOutput=#SACK; /When addresses do not coincide with each other in multimode,do not transmit ACK. AddressSelected=false; AddressExist=false; SerialRPointer+=1; SerialRPointer=SerialRPointer and #ConstSPFilter; /Update serial read pointer. NumberOFNewData-=1; /RenewSRP/Update of serial pointer SerialRPointer+=1; SerialRPointer=SerialRPointer and #ConstSPFilter; NumberOFNewData-=1; /Sirent/Do nothing with invalid data. AddressSelected=false; AddressExist=false; SerialRPointer+=1; SerialRPointer=SerialRPointer and #ConstSPFilter; NumberOFNewData-=1; /WriteToFlash/Writing of data in flash memory FlashCPS=CPS; FlashCPSMT=CPSMeasnreTime; FlashNofP=NumberOfPulse; StatusFlag=FlashStatus; FlashOPMode=OperationMode; FlashLastCPSAccumulation=LastCPSAccumulation; FlashPROB(0..7)=PROB(o..7); FlashPT(0..7)=Pvalue(0..7); /ConvertToUniform/Conversion to uniform distribution random number if RandomEXP[23..16]<>”0” then /When exponential distribution random number exceeds“FFh”,set random number /to“FFh”. UniformedData=“FFh”; else /Conversion to uniform distribution in accordance with binary search BitIndicator=10000000b; UniformedData=“0”; repeat UniformedData=UniformedData xor BitIndicator; if RandomEXP<DataTable(UniformedData) then UniformedData=UniformedData xor BitIndicator; endif; Carry=“0”; RightLotate WithCarry(BitIndicator,1bit); until Carry="1"; endif; /CalcTPreScaler/Calculate prescaler value of Timer2 from CPS /In the case ofthis computation,when number of pulses for 64 sec(CPS value)ranges /between 0 and 3,accurate prescaler value is not obtained.Confirmation is /previously necessary>Broach with CPSMAX and 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 /When CPS value is forcibly set,use forcible set data. 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/Calculate time counting threshold for probability judgment used /inside from probability set value and perform logarithm calculation. /For processing contents,refer to design specification. W as M[32]{ W0 as M[8]; W1 as M[8]; W2 as M[8]; W3 as M[8];/Computing buffer X } X as M[32]{ X0 as M[8]; X1 as M[8]; X2 as M[8]; X3 as M[8];/Computing buffer X } Y as M[32]{ Y0 as M[8]; Y1 as M[8]; Y2 as M[8]; Y3 as M[8];/Computing buffer Y } LogA as M[32]{LogA0 as M[8]; LogA1 as M[8]; LogA2 as M[8]; LogA3 as M[8];/Computing buffer W } Z as M[32]{ Z0 as M[8]; Z1 as M[8]; Z2 as M[8]; Z3 as M[8];/Computing buffer Z } ZZ as M[32]{ ZZ0 as M[8]; ZZ1 as M[8]; ZZ2 as M[8]; ZZ3 as M[8];/Computing buffer ZZ } Result as M[32]{ Result0 as M[8]; Result1 as M[8]; Result2 as M[8]; Result3 as M[8];/Computing buffer ZZ } LogASign as M[1];/Symbol of 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”;/Result:There is A in X. /CalcZ/ Root2 as“00.6A09E6”; CycleCounter as M[8] Y=X;/Set A to both buffers X and Y. X=X-Root2;/Calculate X=(a-√2),and if a result is negative,use complement. if X<0 then X=0-X; LogASign=true; else LogASign=false; endif Y=Y+Root2;/Calculation of Y=(a+√2) CycleCounter=22;/Bit length of divisor y z=0;/Thereafter,Calculation of Z=X/Y ShiftLeft(X,2bit) Repeat if(X-Y)>0 then Carry=“1”;/Set least significant bit of result z to“1”. X=X-Y; else Carry=“0”;/Reset least significant bit of result z to“0”. end if ShiftLeftWithC(Z,1bit); ShiftLeft(X,1bit); CycleCounter=CycleCounter-1; until CycleCounter=0;/Computation result is left in 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]; /Compute ZZ/7.Because of variable×constant,perform simple shift at bit /position when constant is“0”and perform addition at bit position when /constant is“1”so as to shorten processing time. 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;/Result is left in X. X=X+Const02; Y=ZZ;/Computation of zz*(0.2+zz*0.1428571) WeqXmulY; W=W+Const03; Y=ZZ;/Computation of 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”;/To simply computation,insert Log(2)*16. X=B+0.5 W=0; Y=ConstLog2; CycleCounter=5;/X=(B+0.5)*Log(2) repeat if W0.bit3=”1”then W=W+Y; ShiftRight(Y,1bit); ShiftLeft(W(0..1),1bit) until CycleCounter=0;/Result is left in 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 is left in Result /WeqXmulY/ /Computation of W=X*Y(Calculate only decimal point or lower) 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;/Result is left in W. /WeqXmulY4/ /Computation of W=X*Y(Calculation of four digits,X is four digits,and Y is only /a case of less than 1) W=0; CycleCounter=24; repeat ShiftRight(X,1bit); ShiftLeft(Y,1bit) if Carry="1"then W=W+X; until CycleCounter=0;/Result is left in W. /FlashROMDataArea/Data region in flash memory /Insert default value of each data as initial value. 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:Demo mode ;bit1:Exponential distribution random number output ;bit0:Uniform distribution random number output FlashLastCPSAccumulation as M[24]=“0000C0h”; FlashPROB(8)as M[16]= (“0002h”,”0003h”,“0005h”,“0010h”,“0080h”,“0100h”,“1000h”,“8000h”); FlashFT(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 lnc.",“FFh”;
10...α-子發射器與偵測器的位置
11...α-子發射器
12...偵測器
13...密封板
14...間隔物
11'...α-粒子發射器溶液
15...密封材料
16...密封片
20...微注射器
31...密封蓋或貼片
32...二極體晶片
30...α-粒子發射器設置部分
41...波形整形放大電路
42...邏輯電路
43...儲存電路
44...射頻電路
45...天線
40...隨機脈衝產生器
100...基板物質
圖1顯示將α-粒子發射器裝配到IC標籤上的例子;圖2是α-粒子發射器裝配部分的放大視圖;圖3是α-粒子發射器裝配部分的放大視圖(當α-粒子發射器是盤形時的裝配例);圖4A說明α-粒子發射器之滴落及密封例;圖4B說明α-粒子發射器之滴落及密封例;圖4C說明α-粒子發射器之滴落及密封例;圖5A及5B說明將脈衝產生源裝配到DIP型IC的情況;圖6顯示本發明之RPG-RFID的方塊圖;圖7顯示α-粒子發射器與偵測器間之距離與α-粒子之計數率間之關係的曲線圖;圖8顯示由於鋁之厚度的增加致使電子數量減少的曲線圖;以及圖9顯示RPG輸出的脈衝。
圖10A、10B及10C顯示根據本發明實施例之部分操作的流程圖。
11...α-子發射器
12...偵測器
13...密封板
14...間隔物
100...基板物質

Claims (34)

  1. 一種隨機脈衝產生源,包括一發射器,用以釋放α粒子或貝它射線,或由於核衰變釋出α粒子或貝它射線;以及一偵測器,用以偵測被釋放的α粒子或類似物,其特徵在於如溶液般使用發射器,且該溶液是滴落在偵測器的偵測表面上。
  2. 一種隨機脈衝產生源,包括一發射器,用以釋放α粒子或貝它射線,或由於核衰變釋出α粒子或貝它射線;以及一偵測器,用以偵測被釋放的α粒子或類似物,其特徵在於如溶液般使用發射器;一構件,面對於偵測器,兩者間間隔一預定的距離,該溶液蒸鍍於構件上,或例如以滾壓法使該構件形成一平板。
  3. 如申請專利範圍第1或2項的隨機脈衝產生源,其中,鈾系列的所有核子物種、釷系列的所有核子物種、210 Pb-210 Po或在這些核物種間形成放射平衡狀態之類似物的所有核子物種、244 Cm、或241 Am,都可做為用於釋放α粒子或類似物的發射器。
  4. 如申請專利範圍第1或2項的隨機脈衝產生源,其中,該偵測器包括PN型半導體、PNP型半導體、PIN光二極體、光電晶體、或光二極體。
  5. 如申請專利範圍第1或2項的隨機脈衝產生源,另包含用以屏蔽發射器的屏蔽壁,其中,該屏蔽壁至少屏蔽所使用之α粒子或類似物之範圍的距離。
  6. 一種半導體裝置,被構造成經由設置一用以自發 地產生隨機脈衝之隨機脈衝產生源(在後文中稱為RPG)以便產生隨機數及/或機率,測量RPG所產生之隨機脈衝間的時間間隔,或測量隨機脈衝的電壓值,並將其轉換成數位值,其中,RPG包括發射器,用以釋放α粒子或貝它射線,或由於核衰變釋出之α粒子及貝它射線(粒子),且其中,該RPG另包括一偵測器,其用以偵測被釋出的α粒子或類似物,如溶液般使用該發射器,且該溶液是滴落在該偵測器的偵測表面上,或是一構件,其面對於該偵測器,兩者間間隔一預定的距離,該溶液蒸鍍於該構件上,或例如以滾壓法使該構件形成一平板。
  7. 如申請專利範圍第6項的半導體裝置,其中,鈾系列的所有核子物種、釷系列的所有核子物種、210 Pb-210 Po或在這些核物種間形成放射平衡狀態之類似物的所有核子物種、244 Cm、或241 Am,都可做為用於釋放α粒子或類似物的發射器。
  8. 如申請專利範圍第6項的半導體裝置,其中,該偵測器包括PN型半導體、PNP型半導體、PIN光二極體、光電晶體、或光二極體。
  9. 如申請專利範圍第6、7或8項的半導體裝置,其中,該RPG另包括用以屏蔽發射器的屏蔽壁,且該屏蔽壁至少屏蔽所使用之α粒子之範圍的距離。
  10. 如申請專利範圍第6項的半導體裝置,其中,該RPG被構造成能放大熱電子、雜訊、或抖動以產生隨機脈 衝。
  11. 如申請專利範圍第6項的半導體裝置,其中,指數分佈隨機數及/或具有預定之位元長度之均一隨機數及/或機率是從RPG所產生之隨機脈衝產生。
  12. 如申請專利範圍第11項的半導體裝置,其中,所需的機率數量從顯示RPG所產生之脈衝之間出現相同脈衝之機率的指數分佈得到,以根據該機率準備均一隨機數。
  13. 如申請專利範圍第12項的半導體裝置,其中,當經由使用指數分佈從t1與t2間的時間間隔得到一機率時,經由假設時間t2為無限時間,當超過時間t1時,一具有預定之機率的脈衝被識別。
  14. 如申請專利範圍第12或13項的半導體裝置,其中,當從一指數分佈準備一隨機數時,即使脈衝的平均釋放率被變動,經由變動用於測量的基本周期並執行相同的計算,即可實現指數分佈隨機數及均一分佈隨機數被穩定的出現機率密度。
  15. 如申請專利範圍第6、7、8、10、12或13項半導體裝置,其中,RPG所產生的隨機數被當成識別信號或反複製信號被儲存,且從外部輸入的信號與所儲存的信號比較及確認。
  16. 如申請專利範圍第15項的半導體裝置,其中,每當該比較及確認被執行時,一新隨機數被重新寫入當成確認資料。
  17. 如申請專利範圍第16項的半導體裝置,其中,確認資料被發射及接收。
  18. 如申請專利範圍第17項的半導體裝置,其中,確認資料的發射與接收是經由無線電通訊、紅外線資料通信、或經由接觸之電路連接法的通信執行。
  19. 一種電子機器,包括申請專利範圍第1或2項的隨機脈衝產生源,其中,該電子機器係選自由IC卡、IC標籤、PC可連接單元及單元內建模組所組群組中的一者。
  20. 一種電子機器,包括申請專利範圍第6、7、8、10、12、13、16、17或18項的半導體裝置,其中,該電子機器係選自由IC卡、IC標籤、PC可連接單元及單元內建模組所組群組中的一者。
  21. 如申請專利範圍第14項的半導體裝置,其中,當從指數分佈準備隨機數,且均一分佈隨機數之產生與機率之產生被同時處理時,指數分佈隨機數之分佈經由變動用於測量的基本周期被穩定。
  22. 如申請專利範圍第14項的半導體裝置,其中,當從指數分佈準備隨機數時,用於硬體(諸如用於測量時間的微電腦)之振盪頻率之工作時脈的變動,經由變動用於測量的基本周期被自動地修正。
  23. 一種用於產生隨機數、機率及隨機數與機率的方法,包含以下步驟:測量從用以自發地產生隨機脈衝之隨機脈衝產生源( 在後文中稱為RPG)所產生之隨機脈衝間的時間間隔,或測量該隨機脈衝的電壓值,並將其轉換成數位值,以及從隨機脈衝所轉換成的數位值產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率,其中,該RPG包括一發射器,其用以釋放α粒子或貝它射線、或由於核衰變釋出之α粒子及貝它射線,以及一偵測器,其用以偵測被釋出之α粒子或貝它射線、或α粒子及貝它射線,且其中,如溶液般使用該發射器,且該溶液是滴落在該偵測器的偵測表面上,或是一構件,其面對於該偵測器,兩者間間隔一預定的距離,該溶液蒸鍍於該構件上,或使該構件形成一平板。
  24. 如申請專利範圍第23項的方法,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,從顯示RPG所產生之脈衝之間出現相同脈衝之機率的指數分佈得到所需的機率數量,以根據該機率準備均一隨機數。
  25. 如申請專利範圍第24項的方法,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,在經由使用指數分佈從t1與t2間的時間間隔得到一機率時,經由假設時間t2為無限時間,當超過時間t1時,識別一具有預定之機率的脈衝。
  26. 如申請專利範圍第23、24或25項的方法,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元 長度的均一隨機數及/或機率的該步驟,在從一指數分佈準備一隨機數時,即使脈衝的平均釋放率被變動,經由變動用於測量的基本周期並執行相同的計算,即可實現指數分佈隨機數及均一分佈隨機數被穩定的出現機率密度。
  27. 如申請專利範圍第23、24或25項的方法,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,當從指數分佈準備隨機數,且均一分佈隨機數之產生與機率之產生被同時處理時,經由變動用於測量的基本周期以穩定指數分佈隨機數之分佈。
  28. 如申請專利範圍第27的方法,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,當從指數分佈準備隨機數時,經由變動用於測量的基本周期,自動地修正用於硬體(諸如用於測量時間的微電腦)之振盪頻率之工作時脈的變動。
  29. 一種用於執行用以產生隨機數、機率及隨機數與機率之方法的程式,該方法包含以下步驟:測量從用以自發地產生隨機脈衝之隨機脈衝產生源(在後文中稱為RPG)所產生之隨機脈衝間的時間間隔,或測量該隨機脈衝的電壓值,並將其轉換成隨機脈衝的數位值,以及從隨機脈衝所轉換成的數位值產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率, 其中,該RPG包括一發射器,其用以釋放α粒子或貝它射線、或由於核衰變釋出之α粒子及貝它射線(粒子),以及一偵測器,其用以偵測被釋出之α粒子或類似物,且其中,如溶液般使用該發射器,且該溶液是滴落在該偵測器的偵測表面上,或是一構件,其面對於該偵測器,兩者間間隔一預定的距離,該溶液蒸鍍於該構件上,或例如以滾壓法使該構件形成一平板。
  30. 如申請專利範圍第29項的程式,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,從顯示RPG所產生之脈衝之間出現相同脈衝之機率的指數分佈得到所需的機率數量,以根據該機率準備均一隨機數。
  31. 如申請專利範圍第30項的程式,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,在經由使用指數分佈從t1與t2間的時間間隔得到一機率時,經由假設時間t2為無限時間,當超過時間t1時,識別一具有預定之機率的脈衝。
  32. 如申請專利範圍第29、30或31項的程式,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,在從一指數分佈準備一隨機數時,即使脈衝的平均釋放率被變動,經由變動用於測量的基本周期並執行相同的計算,即可實現指數分佈隨機數及均一分佈隨機數被穩定的出現機率密度。
  33. 如申請專利範圍第29、30或31項的程式,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,當從指數分佈準備隨機數,且均一分佈隨機數之產生與機率之產生被同時處理時,經由變動用於測量的基本周期以穩定指數分佈隨機數之分佈。
  34. 如申請專利範圍第33的程式,其中,從隨機脈衝產生指數分佈隨機數及/或具有預定之位元長度的均一隨機數及/或機率的該步驟,當從指數分佈準備隨機數時,經由變動用於測量的基本周期,自動地修正用於硬體(諸如用於測量時間的微電腦)之振盪頻率之工作時脈的變動。
TW094121258A 2004-06-30 2005-06-24 隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式 TWI408903B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004193456 2004-06-30

Publications (2)

Publication Number Publication Date
TW200614672A TW200614672A (en) 2006-05-01
TWI408903B true TWI408903B (zh) 2013-09-11

Family

ID=35783243

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094121258A TWI408903B (zh) 2004-06-30 2005-06-24 隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式

Country Status (7)

Country Link
US (1) US8001168B2 (zh)
EP (1) EP1771946B1 (zh)
KR (1) KR101234929B1 (zh)
CN (2) CN101794211B (zh)
MY (1) MY149214A (zh)
TW (1) TWI408903B (zh)
WO (1) WO2006004075A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI712305B (zh) * 2015-06-04 2020-12-01 日商廣達利歐股份有限公司 利用有放射性同位素之自然衰變的實現唯一性之裝置

Families Citing this family (23)

* Cited by examiner, † Cited by third party
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
NZ599357A (en) * 2009-09-15 2013-05-31 Bella Technologies Llc Computer implemented animal management system
ES2689866T3 (es) 2010-10-19 2018-11-16 St Reproductive Technologies, Llc Sistema de supervisión animal
ITUD20120197A1 (it) * 2012-11-23 2014-05-24 Univ Degli Studi Udine Apparecchiatura e metodo per la generazione di numeri casuali da decadimento radioattivo
WO2014080272A1 (en) 2012-11-23 2014-05-30 UNIVERSITá DEGLI STUDI DI UDINE Apparatus and method to generate random numbers from radioactive decay
US9806037B2 (en) 2013-11-27 2017-10-31 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
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 深圳市汇顶科技股份有限公司 具有随机信号发生器件的集成装置、制备方法及电子设备
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
US11048478B1 (en) 2020-03-03 2021-06-29 Randaemon Sp. Z O.O. Method and apparatus for tritium-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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW256969B (zh) * 1993-01-19 1995-09-11 Siemens Ag
JP2000160336A (ja) * 1998-11-30 2000-06-13 Nec Corp スパッタ形状のシミュレーション方法及びそのプログラムを記録したそのコンピュータ読み込み可能な記録媒体
US20020159590A1 (en) * 2001-03-12 2002-10-31 Jun Ikeda Random number generator which can generate a random number based on an uniform distribution
US6542014B1 (en) * 1999-11-02 2003-04-01 Leisure Electronics Technology Thermal noise random pulse generator and random number generator
US6745217B2 (en) * 1998-12-18 2004-06-01 The Regents Of The University Of California Random number generator based on the spontaneous alpha-decay

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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
AU709766B2 (en) * 1996-02-19 1999-09-09 Aea Technology Plc Device and method for triggering a random event
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 自然乱数およびハイブリッド乱数生成装置
JP2000305753A (ja) 1999-04-16 2000-11-02 Takeshi Saito 物理乱数生成装置
JP2001117756A (ja) * 1999-10-20 2001-04-27 Iwaki Electronics Corp ランダムパルス発生器ならびにそれを利用した乱数発生装置および確率発生装置
JP3534064B2 (ja) 2000-11-10 2004-06-07 いわき電子株式会社 乱数発生方法
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タグシステム
EP1544726B1 (en) * 2002-08-14 2012-08-22 Institute For Advanced Studies Co., Ltd. Random number generator and random number generation method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW256969B (zh) * 1993-01-19 1995-09-11 Siemens Ag
JP2000160336A (ja) * 1998-11-30 2000-06-13 Nec Corp スパッタ形状のシミュレーション方法及びそのプログラムを記録したそのコンピュータ読み込み可能な記録媒体
US6745217B2 (en) * 1998-12-18 2004-06-01 The Regents Of The University Of California Random number generator based on the spontaneous alpha-decay
US6542014B1 (en) * 1999-11-02 2003-04-01 Leisure Electronics Technology Thermal noise random pulse generator and random number generator
US20030090306A1 (en) * 1999-11-02 2003-05-15 Takeshi Saito Thermal noise random pulse generator and random number generator
US20020159590A1 (en) * 2001-03-12 2002-10-31 Jun Ikeda Random number generator which can generate a random number based on an uniform distribution

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI712305B (zh) * 2015-06-04 2020-12-01 日商廣達利歐股份有限公司 利用有放射性同位素之自然衰變的實現唯一性之裝置

Also Published As

Publication number Publication date
EP1771946A2 (en) 2007-04-11
WO2006004075A2 (en) 2006-01-12
EP1771946B1 (en) 2019-07-31
CN101794211A (zh) 2010-08-04
TW200614672A (en) 2006-05-01
MY149214A (en) 2013-07-31
US20070271320A1 (en) 2007-11-22
US8001168B2 (en) 2011-08-16
WO2006004075A3 (en) 2007-02-15
KR20070036162A (ko) 2007-04-02
KR101234929B1 (ko) 2013-02-22
CN101010876A (zh) 2007-08-01
CN101794211B (zh) 2013-02-06

Similar Documents

Publication Publication Date Title
TWI408903B (zh) 隨機脈衝產生源及半導體裝置、使用該源產生隨機數及/或機率之方法與程式
JP6059722B2 (ja) デジタルシリコン光電子増倍管アレイに関する位置敏感な読み出しモード
US6415309B1 (en) Method of and apparatus for generating random numbers
US6745217B2 (en) Random number generator based on the spontaneous alpha-decay
JP4215950B2 (ja) 乱数発生方法および装置
US20230401413A1 (en) Low power non-volatile non-charge-based variable supply rfid tag memory
Alkassar et al. Obtaining true-random binary numbers from a weak radioactive source
Park et al. A lightweight true random number generator using beta radiation for IoT applications
EP3861431B1 (en) Device and method for generating random bit sequences
JP4804815B2 (ja) ランダムパルス発生源、これを用いた乱数及び/又は確率を発生するための方法、プログラム及び半導体デバイス
US6360183B1 (en) Device and method for triggering a random event
Rohe RANDy—A true-random generator based on radioactive decay
JP2926539B2 (ja) 微弱放射性物質を利用した数値特定装置と確率が変更可能なパルス発生装置
Caccia et al. In-silico generation of random bit streams
KR102429142B1 (ko) 베타 붕괴를 이용한 고도로 효과적인 온칩 진성 난수 생성기를 위한 방법 및 장치
JPH11296348A (ja) 自然乱数およびハイブリッド乱数生成装置
Mastroianni et al. The Laser Control System for a Calibration Facility of a Light-Based Detector
US20240012619A1 (en) Systems and methods for direct random number generation from quantum random events
JPH11184676A (ja) 自然乱数生成カード
Korkian FACULTAD DE INFORMÁTICA
JP2001117757A (ja) 確率発生器および乱数発生器
TH47597B (th) แหล่งกำเนิดการสร้างพัลส์สุ่ม และอุปกรณ์สารกึ่งตัวนำวิธีการและโปรแกรมสำหรับการสร้างเลขสุ่มและ/หรือความน่าจะเป็นที่ใช้แหล่งกำเนิดนั้น
TH76191A (th) แหล่งกำเนิดการสร้างพัลส์สุ่ม และอุปกรณ์สารกึ่งตัวนำวิธีการและโปรแกรมสำหรับการสร้างเลขสุ่มและ/หรือความน่าจะเป็นที่ใช้แหล่งกำเนิดนั้น