Strictly speaking what you should do is for each packet generate random number x (with the LFSR), then transform to exponential distribution, and then accumulate that to give t0, t1, t2, etc.
But what you can probably get away with is: generate random number x, use x as address of LUT to get the MSB of your sortof-exponential distribution. accumulate that to give MSBs of t0, t2, t3.
So you have random time slots of 1 LSB. Then if you want smaller chunks you generate another random number, which you then use as the LSBs. That does not have
exactly a Poisson distribution, but get suspiciously close to it at a reasonable hardware cost IMO.
Or if you don't like that, you can always implement a fullblown log function to plug x into. Personally I'd use the LFSR ==> LUT ==> MSB and LFSR ==> LSB approach. Oh and obviously first write a quick matlab script to verify that you indeed get a decent distribution this way. You can even use the very same matlab script to generate your vhdl/verilog LUT for you. ;-) That way you can play around a little with the number of bits you need for the lookup table (for those MSBs), and how many bits you want to use for the LSB part.
Capiche?
- - - Updated - - -
Incidentally, your specs are a bit mutually exclusive. The above answer I gave is for what you probably want. But if you really really meant what you wrote (probably not), then you should generate 10 timestamps between 0.0 and 1.0 seconds, sort them in ascending order, and then use those. But as said, you probably don't mean what you wrote
and it becomes impractical for larger numbers of packets. While for the LFSR with inverse transform (that LUT thingy) it doesn't suddenly become more expensive for more packets.
- - - Updated - - -
Since I am far too lazy to type all that I thought I'd see if there was some reading material you can use:
http://electronicdesign.com/digital-ics/random-number-generator-has-predefined-distribution
See the pretty pictures, that's precisely what I mean. So in figure 2 you have a LUT that spits out M random bits. And my suggestion is to accumulate that to get the MSB's of your t0, t1, t2, etc. And then for each t0, t1, t2 you generate some extra random bits directly from LFSR and use that as the LSB part.
- - - Updated - - -
While we're at it, this as well:
https://en.wikipedia.org/wiki/Inverse_transform_sampling
https://stackoverflow.com/questions/2106503/pseudorandom-number-generator-exponential-distribution
Notably this bit:
So, generate a uniform random number, u, in [0,1), then calculate x by:
x = log(1-u)/(−λ),
if that doesn't explain it I don't know what does.