|
Rule 30 Slumptalsgenerator som Open Core |
|
IP-kärnan Rule 30 från InformAsic är en högpresterande PRNG (pseudo random number generator) för att generera exempelvis testdata vid FPGA-accellererad verifiering, för att generera teststrukturer på chip, eller för att generera kontrollerad slumpmässig trafik. Kärnan kräver dessutom minimala resurser av hårdvaran.
Cellautomat
En cellautomat är en diskret beräkningsmodell där ett antal celler utgör modellens tillstånd. För varje cell beror nästa tillstånd på dess nuvarande tillstånd, dess närmaste grannars tillstånd samt en uppsättning uppdateringsregler.
En sådan uppsättning regler är Rule 30, publicerad av Stephen Wolfram. Dessa uppdateringsregler genererar en skenbar slumpmässighet trots avsaknad av något som rimligen skulle kunna betraktas som slumpmässigt indata. Mer matematiskt korrekt uttryckt ger reglerna upphov till ett kaotist, aperiodiskt beteende hos cellautomaten. En cellautomat med Rule 30 kan därmed fungera som en slumptalsgenerator.
Notera dock att även om Rule 30 genererar en bra rektangelfördelad slumptalssekvens, är den inte en kryptografiskt säker PRNG. Rule 30 skall därför inte användas för strömkrypto eller vid nyckelgenerering.
Implementation
InformAsics IP-kärna Rule 30 implementerar en endimensionell cellautomat där ändarna är sammankopplade till en ring. Cellautomaten består av 32 enbitars celler, vilket gör att automaten genererar ett 32-bit ord varje cykel.
Konstruktionen har implementerats i en Altera Cyclone II FPGA. Konstruktionen kräver 32 registers och 64 LE:s. Den maximala interna klockfrekvensen är drygt 400MHz, vilket ger en PRNG-bandbredd på 1.6 GByte/s.
IP-kärnan Rule 30 inkluderar RTL-kod i Verilog 2001, dokumentation, testbänk, samt scriptfil för att simulera konstruktionen med den öppna Verilogsimulatorn Icarus Verilog.
Licens
Licens för användning av IP-kärnan Rule 30 är Two Clause BSD License, se nedan.
Klicka HÄR för nerladdning av kärnan
Filinformation:
Release: 2008-10-17
Namn: Rule 30_2008-10-17.tgz
Storlek: 10612 Bytes
SHA1(Rule 30_2008-10-17.tgz)= dba4425c96107a71f0933d2b389e5f01801c5c7f
Two Clause BSD License
<quote>
// Copyright (c) 2008, InformAsic AB
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY InformAsic AB ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFORMASIC AB BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</quote>
|