04-24-2016 08:40 PM
I am trying to generate TRUE RANDOM numbers on Kintex-7. I am following the paper published by Xilinx, where a ring oscillator is used for random number generation and LHCA has been used as a scrambler.
BUT, whenever I capture 11 Mega bytes of data (True Random Numbers) and pass them through the DIE HARD TESTING software, then every time the following 3 tests fail :
1. THE BITSTREAM TEST
2. OPSO (Overlapping-Pairs-Sparse-Occupancy)
3. COUNT-THE-1's TEST on a stream of bytes
What am I doing wrong. Xilinx suggested that by sampling the data on 125Mhz, All 15 DIE HARD tests got passed.
I am sampling the data on 100 Mhz with 8-bit LHCA.
Attached is the paper by Xilinx that I am following.
04-24-2016 11:59 PM
04-25-2016 07:30 AM
As noted, the speed of the sampling must be (much) less than the intrinsic speed of the cross-coupled XOR's. At the time, in this now ancient product, 125 MHz was pretty fast.
The interconnect delay dominates, so even with the latest devices, I believe the speed of operation may only be doubled.
If you need more random bits per second, I would create ten, or even 100 generators, all running at 100 MHz sampling. In this fashion, the random bits per second are nearly unlimited.
Also, 'failing' a test may not be a bad thing. True random numbers are just that: truly random. Any sample set may fail one or more tests, but on a new sample it should not always fail that test.
Adding the LFSR to the generator as described in the paper does create a more perfect 1's vs. 0's ratio.
11-06-2018 02:12 PM
I've implemented this TRNG on Zedboard as 32-bit generator without scrambler and despite of 100MHz sampling got much worse results: 88 tests failed, 2 weak and 24 passed.
What can be a reason of such a poor performance?