CN101794211A - 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序 - Google Patents

随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序 Download PDF

Info

Publication number
CN101794211A
CN101794211A CN201010003736A CN201010003736A CN101794211A CN 101794211 A CN101794211 A CN 101794211A CN 201010003736 A CN201010003736 A CN 201010003736A CN 201010003736 A CN201010003736 A CN 201010003736A CN 101794211 A CN101794211 A CN 101794211A
Authority
CN
China
Prior art keywords
random number
probability
random
rpg
semiconductor devices
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201010003736A
Other languages
English (en)
Other versions
CN101794211B (zh
Inventor
露崎典平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CN101794211A publication Critical patent/CN101794211A/zh
Application granted granted Critical
Publication of CN101794211B publication Critical patent/CN101794211B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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 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

随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序
本申请是申请日为2005年6月28日、申请号为200580029025.3、发明名称为“随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序”的专利申请的分案申请。
技术领域
本发明涉及到一种随机脉冲产生器,它具有一个α粒子发射体,用来自发产生完全的随机脉冲,涉及到一个诸如IC的半导体器件,它具有一体化地安置在其中的这样一个随机脉冲产生器,能够产生完全随机的信号并能制定验证信号、随机数和概率,还涉及到用所述源产生随机数和/或概率的方法和程序。
背景技术
在日本专利公开No.2003-337928和2003-16396中公布了一种安全性得到提高的IC标签。发布在所述前一个官方公报中的所述IC标签的配置为,通过与终端的连接存储能量,依靠所述能量通过IC中的CPU产生一次性密码,将这个密码存入存储器中,当所存储的能量被释放时删除所述存储的密码,而发布在所述后一个官方公报中的IC标签的配置为,从所述标签中读验证数据两次或更多次,并使用一个赝随机值作为验证数据。
发明内容
然而,这些IC标签不包括一个产生完全随机信号的产生器或者一个产生这种信号的功能。在这种验证IC的情形中,内建一个存储电路,通过无线通信或红外通信接收来自外界的信号来获得验证数据,或者在一个IC芯片内产生验证数据,所述数据被写入存储电路中。此外,在接收端存储在IC芯片中的数据可以从外界读出,所以,数据的机密性弱,在安全性上存在问题。此外,为了区分各个IC而使用随机数数据时,在传输端用程序制定的赝随机数经常被使用,所以,在传输端保守秘密也是不可缺少的。此外,有一个弱点,可以从随机数数据中估计规则性,组合的数量被限制,而且令人担心的是,多个同样的识别数字被混合在一起。当使用所述IC标签追踪时,会发生一个问题,即个体信息在追踪端聚集,所述IC标签变成了一个散布抑制的因素。
此外,在诸如电子锁这种验证器件的情形中,用来鉴别其它方的常规IC中,芯片不包括验证信号产生功能。对于反克隆(防假冒),验证信号通过无线或红外通信从外界发送,这个验证数据被存储在芯片中的存储器件中,当该验证数据与存储在发射源的数据一致时,所述的其它方就被认为是正确的一方。所以,当完全拷贝所述存储的数据时,不可能通过发射源来判断真伪。所以,在安全上就存在着问题,类似上述IC标签的情形。
此外,有一种IC,其中内建有使用热噪声或各种噪声的随机数产生器。热噪声或各种噪声受到环境改变的影响,诸如受到电磁波的改变影响。所以,不仅需要处理完全随机的信号,而且要处理赝随机数,所以,可靠性受到限制。在使用噪声的系统中,根据噪声产生的随机数在表象上是无序的。然而,除了基于各种估计方法,随机数的性能并没有逻辑上的确证。
本发明就是为了消除上述常规问题而发展出来的。
本发明中的一个随机脉冲产生器(产生源,下文中称作RPG)构成为包括用于释放α粒子或β射线的发射体,即因核衰变而被释放的α粒子或β射线,以及一个用于探测被释放的α粒子等等的探测器,并且使用作为溶液的所述发射体,并将该溶液滴在所述探测器的探测表面上。
本发明中的一个RPG也被构成为包括用于释放α粒子或β射线的发射体,即因核衰变而被释放的α粒子或β射线,以及一个用于探测被释放的α粒子等等的探测器,其特征在于,所述发射体被作为溶液被使用,所属溶液在其上被蒸发的一个元件,或者通过碾压方法形成板的一个元件面向所述探测器,彼此相隔一个预定的距离。
此外,包含IC的与本发明相关的一种半导体器件被构成为,通过使用一个自发产生随机脉冲的随机脉冲产生源,测量由所述RPG产生的随机脉冲之间的时间间隔,或测量所述随机脉冲的电压值,并且将所述时间间隔或电压值转换成数字值,从而产生随机数和/或概率。
例如,当把本发明应用到一个验证器件上时,在一个IC体内内建一个随机脉冲产生器(RPG),其中该RPG具有一个由于自然衰变能无休止地释放α粒子的释放源,从所述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(射频识别)芯片为例来进行具体的描述,该芯片中加入无线标签(radio tag)的功能。然而,本发明不限于这个例子。当然,事实上本发明可以用于另外的半导体器件,诸如用于产生验证信号、随机数或概率的IC。
此外,可以将本发明应用到包括下面要描述的随机脉冲产生源(RPG)的IC卡、IC标签、PC可连接单元、内建单元的模块等,还可以将本发明应用到包括一种半导体器件的IC卡、IC标签、PC可连接单元、内建单元的模块等,其构成为通过测量RPG产生的随机脉冲间的时间间隔或电压值并将该值转换为数字值而产生随机数和/或概率。
本发明中的IC标签有下面的结构。使用用于产生完全随机脉冲的RPG(随机脉冲产生器),它是本发明人所获得的日本专利No.2926539中公布的用α粒子改进的脉冲产生器。α粒子发射体使用自然衰变的241Am、244Cm、210Pb-210Po、210Po等其中之一。更具体说,可以使用铀系列的所有核素、钍系列的所有核素、在核素之间形成放射性平衡的210Pb-210Po等的所有核素、244Cm或241Am。此外也允许使用一种通过使用β射线或γ射线产生随机脉冲的RPG,只要在IC标签使用地IC标签用于具有屏蔽设置空间的部分。
因为α例子、β射线和γ射线不受到诸如温度、压强、湿度或电磁波等环境的影响,不可能人为地操纵它们。这种特殊的IC不能用其它方法实现,该IC是保证安全的重要因素。不要求完全安全的部分中所用的IC标签可以使用利用半导体热噪声或抖动(jitter)的RPG作为随机脉冲产生源。
IC标签中的RPG-RFID芯片包括RPG、使得利用从该RPG发射的随机脉冲作为验证信号成为可能的电路、存储该验证信号的电路、存储器件、用于发射对应着通信确认的验证信号的电路、天线、通信器件等。至于电源,在RPG-RFID芯片的情形中,RF能量从天线中提供。然而,当终端(terminal)有安置空间时,也允许使用终端并通过该终端提供能量。
在所述RPG-RFID芯片的验证过程的情形中,来自内建RPG的随机信号(产生时间和脉冲之间的时间间隔),作为RPG-RFID芯片的验证信号,被写在内部的存储器件中。使用具有RPG-RFID芯片的通信装置或者由直接接触通过连接,从外部取出所存储的信号,来确认在同一批中没有同样验证信号的组合。
当一个被运送的RPG-RFID芯片被用于特定的商品管理,并且从运送时间起的移动信息等的管理上分布范围相对受到限制,在运送前每个RPG-RFID芯片的验证信号通过通信而被读出、被储存和被使用。
对于每次通信都进行验证过程以及验证数据的存储,以便用RPG-RFID芯片所产生的随机信号替换该验证数据。
参考附图将详细描述设置有本发明中的随机脉冲产生器(RPG)的RPG-RFID芯片的一个实施例。
首先,描述用于自发产生随机脉冲的随机脉冲产生器(RPG)。
在如图1所示的RPG-RFID芯片的中心部分所述RPG由一个α粒子发射体和PN型半导体、PNP型半导体、PIN光二极管、光敏三极管、光电二极管等等构成。脉冲产生器器件的选择符合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′之后,探测器12被一种密封材料15诸如环氧树脂所封闭(参见图4B)或者被一个密封盘16所封闭(参见图4C)。同样的过程被用在使用墨水喷射系统通过溶液注射来进行溶液滴入的情形中。
使得α粒子发射体与电路部分之间的距离(图1和图2中的距离d)比通过下面的表达式所得到的α粒子的射程要大些,以便防止由于α粒子的原因导致的故障。
图7显示了空气中α粒子的一般射程。横坐标轴表示α粒子发射体与探测器之间的距离,纵坐标轴表示离散值(任意单位)。下面给出采用210Pb-210Po作为α粒子发射体进行的计算。
α粒子的能量E(MeV)和空气中的射程R(cm)之间的关系已经被很好地研究过了,用盖革公式表示。
E=2.12R2/3    (4<E<7)
R=0.323E3/2   (3<R<7)
因此,Poα粒子的射程在下面给出。
[公式1]
R=0.323×(5.305)3/2=0.323×12.2188=3.94667cm
当空气中的射程已知时,固体物质中的α粒子射程Rs(cm)通过下面的Bragg-Kleeman公式获得。
[公式2]
Rs=3.2×10-4RA1/2
A:固体物质的原子量
ρ:密度
Si中α粒子的射程用下式表示。
[公式3]
Rs=3.2×10-4×(3.94667)×(28.0855)1/2/2.33=0.002873cm=0.02873mm=28.7μm
所以,当使用Si作屏蔽材料(屏蔽墙)以便与电路隔离,可以设定为29μm或更多。
此外,210Pb-210Po释放非常弱的β射线。在β射线情况中,到达电子的数目随着射程指数衰减,如图8所示,与α粒子不同。β射线是电子,但是它毫不影响内部的IC电路。然而,需要使用一个结构,使得β射线不泄漏到外面,以便不引起误读。从下面的公式中可以得到所需要的屏蔽材料的厚度。在图8中,横坐标轴表示Al的厚度,纵坐标轴表示电子数。
因为Pb-210β射线的最大能量Em为0.061MeV,最大射程Rm由Willson公式表示。
Rm=2400(Em)2=2400×(0.061)2=2400×0.003721=8.9304mg/cm2
此外,从“同位素手册”(第三修订本,Maruzen,April,1985)得到,60KeV时在Al中的射程为6mg/cm2。因为Al的密度为2.7g/cm3,所以有得到下面的公式。
[公式4]
Rm=8.9304mg/cm2/2700mg/cm3=3.308×10-3cm=3.308×10-2mm=0.03308mm=33μm
因此,图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的常用脉冲的情形。
[公式5]
P ( t 1 , t 2 ) = A ∫ 1 t 2 e - nt dt A ∫ 0 ∞ e - nt dt = e - nt 1 - e - nt 2 . . . . . . ( 1 )
当RPG的平均释放率为n=10时,采用每秒10个脉冲平均数作为验证信号。
[表1]
Figure G2010100037366D00102
Figure G2010100037366D00111
当假设10个脉冲间隔按0.1秒的平均脉冲间隔出现,那么10个脉冲以同样的时间间隔在下次出现的概率用下面表中的计算结果显示出来。
[表2]
  脉冲平均数   平均(sec)   t1(sec)   t2(sec)   e-n*t1   e-n*t2   P   1/P   总1/P
  1   10   0.1   0   0.1   1   0.367879   0.632121   1.581977
  2   10   0.1   0.1   0.2   0.367879   0.135335   0.232544   4.300259   5.882235
  3   10   0.1   0.2   0.3   0.135335   0.049787   0.085548   11.68931   68.7593
  4   10   0.1   0.3   0.4   0.049787   0.018316   0.031471   31.77485   2184.817
  5   10   0.1   0.4   0.5   0.018316   0.006738   0.011578   86.373   188709.2
  6   10   0.1   0.5   0.6   0.006738   0.002479   0.004259   234.7862   44306299
  7   10   0.1   0.6   0.7   0.002479   0.000912   0.001567   638.215   2.83E+10
  8   10   0.1   0.7   0.8   0.000912   0.000335   0.000576   1734.848   4.91E+13
  9   10   0.1   0.8   0.9   0.000335   0.000123   0.000212   4715.806   2.31E+17
  10   10   0.1   0.9   1   0.000123   4.54E-05   7.8E-05   12818.89   2.97E+21
从上表中的计算结果看到,10个脉冲以同样时间间隔排成一列的概率为1/2.97E+21。
所以,在使用这种系统的方法中,最多10个脉冲实现同样组合的概率为1/2.97E+21或更小。这个概率是在同一个脉冲产生器中的概率,但是一个单独的脉冲产生器分别有不同的n值。所以,不同的脉冲产生器具有同样脉冲串的概率变为(1/3E+21)2或更小。
可以按照用本系统进行验证的IC的目的来选择一个使用的脉冲数,并提高安全性。
然后,下面描述产生均匀随机数的方法。
在从t1到t2的时间间隔内出现的脉冲的概率从上面的公式(1)中得到。
变换上面的公式,可以得到下面的公式(2)。
t2=-1/n*log(e-nt1-p)      (2)
其中t2>t1,所以上述公式可以用tk=t2,tk-1=t1替换,t1、t2、...从t0=0相继获得,因此,可以获得有1/p个方式均匀出现概率的时间宽度(Δt)的阈值。
tk+1=-1/n*log(e-ntk-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-ntk-p)    (4)
其中,t0=0
然而,当假设n的涨落成分为m并有n=n×m,得到了下面的公式(5)。
tk+1=-1/nm*log(e-nmtk-p)    (5)
其中,t0=0
在这种情形中,通过将测量时间的基本周期按照m(tk=t1/m)进行涨落,可以得到下面的公式(6)
t1+1=-1/n*log(e-n t1-p)    (6)
其中,t0=0
所以,可以直接应用一个基本的算术表达式。
当假设算术电路的工作频率约为约25MHz时,基本周期时钟为40ns。当假设n值为10时,平均脉冲间隔为100ms。通过假设测量基本周期为100微秒来测量平均脉冲间隔。产生测量基本周期的份数(numberof divisions)变为100微秒/40ns=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 t1-e-n t2    (7)
所以,只需要决定t1和t2以满足要产生的概率值,并判断一个脉冲是否存在于t1和t2之间。在这种情形中,当无限增大t2时,第二项的e-n t2可以忽略,因为它变为了0,通过将被测时间宽度与t1相比,可以判断是否击中(hit)。通过无限增加t2,能够使用出现频率e-nt很小的区域。所以,可以宽泛地选取一个分辨率。所以,可以将概率计算中的舍入误差最小化。
当假设t2为无穷大时,表达式可以由下面的公式(8)给出。
p=e-n t1        (8)
当对公式(8)的两边取对数来获得t1时,有下面的公式。
t1=-log(p)/n    (9)
因此,t1的值可以从设定的概率值(p)和每秒脉冲数(n)来得到。
还是在这种情形中,所需的测量时间由于n值的涨落而涨落。具体说,当概率值小的时候,需要使长时间测量有效。所以,通过对测量的基本周期进行涨落,即类似于计算均匀随机数的情形,可以解决计数器溢出或者不够精确的问题。这种方法可以对应非常小的概率值。然而,当概率值小的时候,测量的最大值增加,并且测量时间加长的情形就会发生。然而,通过使用一种机制或结构来在算术电路中存储过去的测量值,响应时间的问题能够避免。
当从外界设置一个概率值时,只需要计算表达式(9)t1=-log(p)/n,在测量时计算并不发生。所以,即使对计算时间的要求到了一定的程度,对实际运行的影响也很小。为了灵活地对应一个设定的概率值并使得通过外部输入能够选择各种概率值,可以通过微型计算机计算上述的对数运算而不用查表来省略计算。
下面描述相对于n值设定一个参考测量时间来使得基本周期发生涨落。
在下面的公式中,
p=e-n t1-e-n t2    (7)
其中假设t0为0,最大阈值(255)的时间间隔可以从下面公式(10)、从p=255/256=1-e-n t255中得到。
t255=-(1/n)*log(1/256)=5.545177/n    (10)
当设定上述第255个阈值+5%为16位定时器溢出的时间,考虑一些容差后,能够被16位定时器计数的最大时间间隔用下面的公式(11)表示。
tmax=5.545117*1.05/n=5.822436/n    (11)
因此,定时器的计数参考时钟的周期变为
tclk=(5.822436/65536)/n=88.84333μs/n
当假设算术电路的基本工作频率位25MHz,系统时钟的周期变为
tsys=40ns
并且产生上述定时器的参考时钟tclk的一个预置分频器(prescaler)的值变为
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的阈值,它们被示于下面的表中。
[表3]
Figure G2010100037366D00151
Figure G2010100037366D00161
当得到被测数据包括在任何阈值之间时,结果就变成了一个8位均匀随机数。
用于获得被测数据包括在任何阈值之间的方法有两种。一种是,在测量完成后通过二分法检索进行大小比较,另一种方法是,在测量期间检查当前的测量值被包括任何的区域中。下面描述这每一种方法。
二分检索法
在本转换的情形中,二分检索的条件是完好的,因为被测数据变为16位长,被转换的数据变为8位长,所以可以大大简化程序。下面给出在这种条件下特定算法的一个例子。
BitInd I Cator=10000000b;
Result=BitInd I Cator;
Repeat
If MeasuredValue<Data Table(Result)then Result=Result xorBitInd I Cator;
BitInd I Cator=RightLotate(BitInd I Cator,1bit);
Result=Result xor BitInd I Cator;
Until BitInd I Cator.bit7=″1″;
在这种转换的情形中,16位长度的比较、位处理(xor)、和数据表的参考被进行了八次。
测量期间的判断
在上述阈值表中,数字值按0到255的顺序增加。所以,无论何时测量脉冲间隔的时候,通过与数据表进行比较,可以大大简化处理过程。此外,因为当测量完成的时候(或者下一个脉冲到来的时候),向均匀随机数的转换也完成了,所以,响应也大大地提高了。因此,算术处理不要求某一确定的时间,不像上面使用的二分检索法那样。当使用微机进行算术处理时,所述算法可以有效地工作。具体的算法在下面给出。
在这种方法中,假设在上述表中1到255的数据被存储在0到254中。
<Initial processing(初始处理)>
  Result=0;Head of table
<For every prescaler overflow(关于每个预置分频器益出)>
  if MeasuredValue=DataTable(Result)then
Result=Result+1;
所以,因为这是非常简单的方法,并且阈值搜索是分散进行的,所以,算术处理部分的输入输出量(处理容量)的负载是非常小的。
下面更详细地描述本发明中的用于产生随机数和概率的器件/方法的处理过程。
下面要描述的方法有三种模式,如常规模式(独立模式,stand alone),演示模式,和多模块模式(多模式),并具有下面的特点。
常规模式是一个与主机一对一连接的模式,它按照概率判断读命令的输入来输出指数分布随机数串和均匀随机数串,并输出概率判断结果。演示模式是用来进行演示的模式,它对脉冲的每个测量输出指数分布随机数串和均匀分布随机数串,以及概率判断结果。多模式能够连接多个模块,增加随机数产生速度,其中,按照一个命令,分别输出指数分布随机数串和均匀分布随机数串,以及概率判断结果。
图10A到10C显示的是当用微机处理本发明的器件/方法时的算法流程图。
首先,如图10A所示,对操作进行初始化,例如对RAM清零,对各种寄存器进行初始化,读出闪存中的缺省值,并开始主程序。
在主程序中,检查是否存在未处理的新的被测时间数据(步骤S110)。当所述数据存在时,在当前模式不是多模式的前提下(步骤S120),该数据被调用(读)(步骤S130)。然后,设置用于测量脉冲之间的时间(脉冲时间间隔,脉冲间隔)的定时器的预置分频器(步骤140),并且对定时器清零(步骤S150)。当探测到一个RPG脉冲时(步骤S160),定时器被启动(步骤S170)。每次探测到RPG脉冲时(步骤S180),定时器输出被测数据(步骤S190),该数据被存储为指数随机数(步骤S200)。然后,该数据被转换为一个均匀分布随机数(步骤S210)以便判断一个概率(击中还是失败)(步骤S220)。然后,判断工作模式是否为演示模式(步骤S230)。当工作模式为演示模式时,指数分布随机数被无条件传送到主机中(不依赖于随机数输出选择的存在与否)(步骤260),均匀分布随机数被传送(步骤S270),此外概率判断值被传送(步骤280)。
当工作模式不是演示模式时(即为常规模式),当选择了随机数的输出(步骤240),并且当选择了均匀分布随机数输出(步骤250)时,传送指数分布随机数。
另一方面,如图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
端口的分配和中断功能
P0.0:脉冲的输入
P0.4:串行输出
P0.5:串行输入
P1.3:LED输出
外部中断0:探测脉冲的输入
定时器1  :产生UART的传输率(transfer rate)
定时器2  :用于脉冲间时间测量
         :预置分频器值被CPS改变
定时器3  :用于产生常数时间(CPS测量时间)
串行中断 :用于数据接收
2.定时器
  定时器0:不用
  定时器1:RS232C的波特率发生器
         定时器1条件{
           Pre-scale=1/1(预置比率=1/1)
           8 bit Reload Mode(8位重装模式)
           Reload Value=96h(重装值)
         }
定时器2 用于脉冲计数的预置分频器
        定时器2的条件{
           16 bit Reload Mode
           Pre-scale=1/1
             Reload Value=tpres
         }
定时器3   用于CPS计数的定时器
          定时器3的条件{
            16 bit Reload Mode
            Pre-scale=1/12
            Reload Value=40833;Overflow=20mS
         }
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 as M[17];在中断处理程序中用来计数脉冲时间间隔的计数器
  CPSSecCounter as M[8];计数一秒(25次*20mS)
  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];每小时的脉冲数
 CPSReadOut as M[16];从中断到主程序被接管的CPS测量值的存储区
                      域
 CPSACTimeCount as M[8];CPS积累次数的计数
 CPSAccumulation as M[24];CPS测量时间读出
                         ;积累缓冲器
                         ;积累64秒中的测量次数直到达到设定的测
                           量时间
 LastCPSAccumulation as M[24];用于CPS测量时间的过去的存储器
 NOPCountBuffer as M[24];一小时脉冲数的测量所用的缓冲器
 NumberOfNewData as M[8];还没有被处理的接收的串行数据的数目
;位区域(Bit area)
 InternalFlag as M[8]={
 CPSDetected as M[1]   ;CPS计数结尾标记
 LogASignMinus as M[1] ;Log(A)的符号
 CountRestartF as M[1] ;重新开始计数
 DataFlip as M[1]      ;均匀随机数折回(turn-back)
 NOPCaptureF as M[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   /一秒钟不少于100个脉冲
  CPSMIN as#1*64    /一秒钟不多于1个脉冲
  ConstEXPData as #01h
  ConstUniformedData as #02h
  ConstSecCount as #50
  ConstTimeCount as #64
  ConstNOPCou nt as #56
  SAck as #05h
  SNak as #50h
      ConstSPFilter as #10101111b
      ConstITFilter as #11001111b
4.初始处理
/初始处理/
    RO=00h;RAM清零
    Repeat
      RAM(R0)=00h
      R0+=1
    until RO=0;
    SerialWPointer=#SerialBuffer;设定缓冲器的头地址
    SerialRPointer=#SerialBuffer;
    IntervalWPointer=#IntervalTime;设定缓冲器的头地址
    IntervalRPointer=#IntervalTime;
    NOPTimeCount=#ConstNOPCount;
    InitializeSFR;设定8051 SFR
    LoadFlashData;从闪存部分读数据。第一次的时候读缺省值
    CalcTPreScaler;计算并设定定时器2的预置率例(prescale)值
    CountRestart;初始化存储器用来重新开始测量并同意中断
    jump to Main;
    /初始化SFR/
    p0.4=OutputMode;
    p1.3=OutputMode;
    Timer1=Timer1Condition(定时器1条件);
    Timer2=Timer2Condition(定时器2条件);
    Timer3=Timer3Condition(定时器3条件);
    PCA=PCACondition;
    Timer2INTEnable=true;
    Timer3INTEnable=true;
    /LoadFlashData/      ;从闪存读数据
                         ;先前在闪存的数据部分中写缺省值
    CPS=FlashCPS;
CPSMeasureTime=FlashCPSMT;
NumberOfPulse=FlashNofP;
StatusFlag=FlashStatus;
OperationMode=FlashOPMode;
LastCPSAccumulation=FlashLastCPSAccumulation;
PROB(0..7)=FlashPROB(0..7);
Pvalue(0..7)=FlashPT(0..7);
5.主程序(main routine)
ConstEXPData as″01h″;
ConstUniformedData as″02h″;
repeat
  if IntervalWPointer<>IntervalRPointer then/有未处理的新的
                                            /被测时间数据吗?
      if not(MultiModeF)then/在多模式中不进行处理
          ReadIntervalTime;/读新的被测时间
          CovertToUniform;/转换成均匀随机数
          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;/积累CPS值64秒直到测量时间设定值
    CPSACTimeCount=1;
if CPSACTimeCount=0 then/当达到测量设定时间时
    CalcCPS;/转换CPS值为16秒的平均值
    if not(CPSForceF)then CalcTPreScaler;/计算预置分频器值
    WriteToFlash;/写新的CPS数据到闪存
    CountRestart;/重新开始测量
 endif;
endif;
if NumberOfNewData<>0 then CommandHandling;/串行数据的接收
                           /只有当有新数据时开始命令处理程序
endif;
until forever;
6.中断处理程序
/External interrupt(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 CPSTimeCounetr=0
    then
       CPSTimeCounter=#ConstTimeCount;
       CPSReadOut=CPSCounter;
       /因为64秒过去了,读CPS计数值
       CPSCounter=0;
       CPSDetected=true;
       /设定CPS探测标记
    endif;
  endif;
  Return from 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测量值
/累积测量值64秒以得到设置测量时间的CPS值
/这里也获得每个小时的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/一小时测量的完成
  NumberOfPulse=NOPCountBuffer;
  NOPCaputreF=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,1 bit);
  until Breg.bit0=″1″;
enif;
CheckCPSMAXMIN;最大和最小CPS值的检查
if not(CPSTooLittleF or CPSTooManyF)then CPS=CPSAccumulation;
if DemoModeF then SendCPS;
WriteToFlash;
CountRestart;
/CheckCPSMAXMIN/
/检查是否CPS值超过了确定的范围
/当CPS值太大时,要注意它,因为定时器2的中断周期变得非常短,
/中断总是被运用的,处理不翻转(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/指数分布随机数的串行输出
SerialOutput=#ConstEXPData;
if RandomEXP[23..16]=″0″
then
  SerialOutput=RandomEXP;
else
  SerialOutput=#FFFFh;
endif;
/SendRandomUniform/均匀分布随机数的串行输出
SerialOutput=#ConstUniformData;
SerialOutput=UniformedData;
/SendCPS/CPS值的串行输出
/当读内部状态时,以及当在演示模式中改变CPS值时
SerialOutput=#11h;
SerialOutput=CPS;
/SendCPSMT/CPS测量时间的串行输出
/当读内部状态时
SerialOutput=#12h;
SerialOutput=CPSMeasureTime;
/SendNOP/一小时脉冲数的串行输出
/当读内部状态时,以及当在演示模式中改变一小时的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″)=″00h″then/工作条件
                                                      /设置命令
  if SerialBuffer(SerialRPointer)=″00h″then
   /当收到未被赋值的代码(unassigned code)时,返回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强制值(forcible value)
       CPSForceF=true;
       /设置CPS强制标记
       CalcTPrescaler;
       /计算预置分频器值(强制数据)
       RenewSRP;
       SendAc k;
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
         /当在多模式中地址互相不符合,忽略命令
         SendAc k;
         exit
     else
     /读并设置CSP测量时间
        CPSMeasureTime=SerialBuffer(SerialRPointer);
        WriteToFlash;
        CountRestart;
        Sen dAck;
        exit
     endif;
     if SerialBuffer(SerialRPointer)=″OFh″/自我销毁
     then
        if Num berOfNewData<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″=″10h″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
    /当在stand alone模式时,以及当在多模式中地址互相符合时
       if ACC=″11h″then/返回CPS
          SendCPS;
          exit;
       endif;
       if ACC=″12h″then/返回CPS测量时间
           Send CPSMT;
           exit
       endif;
       if ACC=″13h″then/返回一小时的CSP值
           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;
         /只有当在stand alone模式或者当在多模式中地址互相符合时,返回概率判断值
         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″)=″40h″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
ifSerialBuffer(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)thenSerialOutput=#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)thenSerialOutput=#SACK;
/在多模式中如果地址互相不符合,就不传输NAK
AddressSelected=false;
AddressExist=false;
SerialRPointer+=1;
SerialRPOinter=SerialRPOinter and#ConstSPFilter;
/更新串行读指针
NumberOFNewData-=1;
/RenewSRP/更新串行指针
SerialRPointer+=1;
SerialRPointer=SerialRPointer and#ConstSPFilter;
Num berOFNewData-=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(0..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,1bit);
  B-=1;
until X0.bit0=″1″;/结果:在X中有A
/CalcZ/
Root2 as″01.6A09E6″;
CycleCounter as M[8]
Y=X;/缓冲器X和Y都设定A
X=X-Root2;/计算
Figure G2010100037366D00431
如果结果是负值,使用补码
if X<0 then
   X=0-X;
   LogASign=true;
else
   LogASign=false;
endif
Y=Y+Root2;/计算
Figure G2010100037366D00432
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”
  endif
  ShiftLeftWithC(Z,1 bit);
  ShiftLeft(X,1 bit);
  CycleCounter=CycleCounter-1;
until CycleCounter=0;/计算结果留在Z中
/CalcZZ/
CycleCou nter 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*(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.bit3=″1″then W=W+Y;
  ShiftRight(Y,1bit);
  ShiftLeft(W(0..1),1bit)
until CycleCounter=0;/结果留在X中
/CalcResult/
ConstN as(″00.2BF7C4h″sh1 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,1 bit);
  ShiftLeft(Y,1 bit);
  if Carry=″1″then W=W+X;
until CycleCounter=0;/结果留在W中
/FlashROMDataArea/闪存中的数据区域
/插入每个数据的缺省值作为初始值
FlashCPS as M[16]=″00C0h″;
FlashCPSMT as M[8]=″01h″;
FlashNofPas 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 (24)

1.一种半导体器件,其构成为通过设置一个随机脉冲产生源(下文中称作RPG)来自发产生随机脉冲,测量由所述RPG产生的随机脉冲之间的时间间隔,或测量所述随机脉冲的电压值,并且将之转换成数字值,能够产生随机数和/或概率。
2.根据权利要求1所述的半导体器件,其特征在于,
所述RPG包括一个用于释放α粒子或β射线的发射体,α粒子或β射线(粒子)因核衰变而释放出来。
3.根据权利要求2所述的半导体器件,其特征在于,
所有的铀系核素、所有的钍系核素、核素之间形成放射平衡的210Pb-210Po系的所有核素或类似核素、244Cm、或241Am被用来作为释放α粒子或类似粒子的发射体。
4.根据权利要求1到3中的任何一个权利要求所述的半导体器件,其特征在于,
所述RPG进一步包括一个用于探测被释放的α粒子等的探测器,所述发射体作为溶液被使用,该溶液被滴在所述探测器的探测表面上,或所述溶液被蒸发到一个元件上,该元件或通过例如碾压方法形成板,该元件面向所述探测器,彼此相隔一个预定的距离。
5.根据权利要求4所述的半导体器件,其特征在于,
所述探测器包括一个PN型半导体、PNP型半导体、PIN光电二极管、光敏三极管或光电二极管。
6.根据权利要求1到5中的任何一个权利要求所述的半导体器件,其特征在于
所述RPG进一步包括用于屏蔽所述发射体的屏蔽墙,所述屏蔽墙至少能屏蔽所用α粒子等的射程距离。
7.根据权利要求1所述的半导体器件,其特征在于,
所述RPG的构成为能够放大热电子、噪声、或抖动来产生随机脉冲。
8.根据权利要求1到7中的任何一个权利要求所述的半导体器件,其特征在于
一个具有预定字长的指数分布随机数和/或均匀随机数,和/或一个概率由所述RPG所产生的随机脉冲产生。
9.根据权利要求8所述的半导体器件,其特征在于
从一个指数分布中获得需要数目的概率值,该指数分布给出同样脉冲间隔发生在从所述RPG产生的脉冲之间的概率,根据所述概率产生均匀随机数。
10.根据权利要求9所述的半导体器件,其特征在于
当利用指数分布从t1和t2之间的时间间隔中获得一个概率时,假设时刻t2为无穷大,当超过时刻t1时,识别出具有预定概率的脉冲。
11.根据权利要求8到10中的任何一个权利要求所述的半导体器件,其特征在于
当从指数分布中产生随机数时,即使脉冲的平均释放率是涨落,通过对测量的基本周期进行涨落并且进行同样的计算来获得出现概率密度分布,在这个出现概率密度分布中,指数分布随机数和均匀分布随机数是稳定的。
12.根据权利要求1到11中的任何一个权利要求所述的半导体器件,其特征在于
从所述RPG产生的随机数作为一个识别信号或反克隆信号被存储,从外界输入的信号与所存储的信号进行比较和验证。
13.根据权利要求12所述的半导体器件,其特征在于
任何时候当进行比较和验证时,一个新的随机数作为验证数据被重写。
14.根据权利要求12或13所述的半导体器件,其特征在于
验证数据被发送和接收。
15.根据权利要求14所述的半导体器件,其特征在于
所述验证数据的发送和接收通过无线通信、红外数据通信或者通过接触用电路连接方法的通信来进行。
16.所述IC卡、IC标签、PC可连接单元或单元内建模块,包括根据权利要求1到15中的任何一个权利要求所述的半导体器件。
17.根据权利要求11所述的半导体器件,其特征在于,
当从指数分布中产生随机数时,通过对测量的基本周期进行涨落,来稳定指数分布随机数的分布,并且均匀分布随机数的产生和概率的产生被同时处理。
18.18根据权利要求11所述的半导体器件,其特征在于,
当从指数分布中产生随机数时,通过对测量的基本周期进行涨落,用于硬件比如微机的振荡频率的、用来测量时间的工作时钟的涨落被自动校正。
19.一种产生随机数和/或概率的方法,包括的步骤有:
设定一个随机脉冲产生源(下文称作RPG),用来自发产生随机脉冲,
测量从所述RPG产生的随机脉冲之间的时间间隔,或者测量所述随机脉冲的电压值并将之转换为数字值,以及
由转换为数字值的随机脉冲产生具有预定字长的指数分布随机数和/或均匀随机数和/或概率。
20.根据权利要求19所述的方法,其特征在于,从随机脉冲中产生具有预定字长的指数分布随机数和/或均匀随机数和/或概率的步骤从一个指数分布中获得所需数目的概率,所述指数分布给出了同样的脉冲间隔发生在从所述RPG产生的脉冲之间的概率,按照所述概率产生一个均匀随机数。
21.根据权利要求20所述的方法,其特征在于,由随机脉冲产生具有预定字长的指数分布随机数和/或均匀随机数和/或概率的步骤,在通过所述指数分布从t1到t2的时间间隔获得一个概率时,假设时刻t2为无穷大,当超过时刻t1时,识别一个具有预定概率的脉冲。
22.根据权利要求19到21中的任何一个权利要求所述的方法,其特征在于,从随机脉冲产生具有预定字长的指数分布随机数和/或均匀随机数和/或概率的步骤,在从指数分布产生一个随机数时,通过对测量的基本周期进行涨落并且即使脉冲的平均释放率是涨落的也进行同样的计算,来实现一个出现概率密度分布,在这个分布中,指数分布随机数和均匀分布随机数是稳定的。
23.根据权利要求19到22中的任何一个权利要求所述的方法,其特征在于,从随机脉冲产生具有预定字长的指数分布随机数和/或均匀随机数和/或概率的步骤,当从指数分布中产生一个随机数时,通过对测量的基本周期进行涨落来稳定指数分布随机数的分布,并同时处理均匀分布随机数的产生和概率的产生。
24.根据权利要求23所述的方法,其特征在于,从随机脉冲产生具有预定字长的指数分布随机数和/或均匀随机数和/或概率的步骤,当从指数分布中产生一个随机数时,通过对测量的基本周期进行涨落,自动校正用于硬件比如微机的振荡频率的、用来测量时间的工作时钟的涨落。
CN2010100037366A 2004-06-30 2005-06-28 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法 Active CN101794211B (zh)

Applications Claiming Priority (2)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNA2005800290253A Division CN101010876A (zh) 2004-06-30 2005-06-28 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序

Publications (2)

Publication Number Publication Date
CN101794211A true CN101794211A (zh) 2010-08-04
CN101794211B CN101794211B (zh) 2013-02-06

Family

ID=35783243

Family Applications (2)

Application Number Title Priority Date Filing Date
CNA2005800290253A Pending CN101010876A (zh) 2004-06-30 2005-06-28 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序
CN2010100037366A Active CN101794211B (zh) 2004-06-30 2005-06-28 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNA2005800290253A Pending CN101010876A (zh) 2004-06-30 2005-06-28 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序

Country Status (7)

Country Link
US (1) US8001168B2 (zh)
EP (1) EP1771946B1 (zh)
KR (1) KR101234929B1 (zh)
CN (2) CN101010876A (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
CN113031917A (zh) * 2021-03-02 2021-06-25 北京航空航天大学 一种高速概率计算乘法器和计算方法

Families Citing this family (25)

* 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
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
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

Family Cites Families (19)

* 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
TW256969B (zh) * 1993-01-19 1995-09-11 Siemens Ag
JP3135582B2 (ja) * 1996-02-19 2001-02-19 アマーシャム・インターナショナル・ピーエルシー ランダム・イベントを起動する装置及びその方法
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113031917A (zh) * 2021-03-02 2021-06-25 北京航空航天大学 一种高速概率计算乘法器和计算方法
CN113031917B (zh) * 2021-03-02 2022-10-14 北京航空航天大学 一种高速概率计算乘法器和计算方法

Also Published As

Publication number Publication date
EP1771946B1 (en) 2019-07-31
MY149214A (en) 2013-07-31
EP1771946A2 (en) 2007-04-11
WO2006004075A3 (en) 2007-02-15
US8001168B2 (en) 2011-08-16
WO2006004075A2 (en) 2006-01-12
KR101234929B1 (ko) 2013-02-22
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
CN101794211B (zh) 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法
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
Hill Detecting neutrinos from AGN: New fluxes and cross sections
CN101326757B (zh) 用于物理令牌的密钥提取参数的片上估计
US6697829B1 (en) Method of and apparatus for generating random numbers
CN103733609A (zh) 用于数字硅光电倍增器阵列的位置敏感的读出模式
CN104081361A (zh) 动态编程语言的基于跟踪器的运行时优化
US20070094569A1 (en) Determining hard errors vs. soft errors in memory
Ponzina et al. E 2 cnns: Ensembles of convolutional neural networks to improve robustness against memory errors in edge-computing devices
Binney et al. The outer rotation curve of the Milky Way
Baxter et al. Robust approach to constraining dark matter properties with gamma-ray data
Park et al. Efficient hardware implementation and analysis of true random‐number generator based on beta source
Rohe RANDy-A true-random generator based on radioactive decay
JP4804815B2 (ja) ランダムパルス発生源、これを用いた乱数及び/又は確率を発生するための方法、プログラム及び半導体デバイス
Voigt Sensitivity of the IceCube detector for ultra-high energy electron neutrino events
Harris et al. Search for nucleosynthetic and cosmic-ray induced gamma-ray lines from the Galactic plane.
EP1901477A1 (en) Random number generation
JPH11296348A (ja) 自然乱数およびハイブリッド乱数生成装置
Teraura et al. The development of radiation-resistant RF tags for use at nuclear power plants
US11467807B2 (en) Apparatus for the generation of random numbers which comprises a muon detection device and a processing device configured to provide random numbers
Abdelmalek Design and prototyping of robust architectures for UHF RFID Tags
Grayson et al. Distinguishing AGN Feedback Models with the Thermal Sunyaev-Zel'dovich Effect
Mathews et al. Bayesian analysis for very-low-background counting of short-lived isotopes: Lowest minimum detectable quantity
Jansson Geometry Calibration of IceCube: using Photon Timing from Downgoing Muons

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant