# LTspice - fast NRZ pulses how?

Discussion in 'CAD' started by [email protected], Aug 29, 2008.

1. ### Guest

Does anyone know a trick to make fast random NRZ pulses in LTspice?

I don't want to use the read-from-file option, but would like to
generate them procedurally.

This is for speed and convenience.

The pulses should be rectangular, be 1s (or whatever 1/datarate is)
and be either +1 or -1, with a random probability distribution.

2. ### batguyGuest

You could probably use two independent sources to make a
multiplicative congruental generator.

Something like Va = fraction ( pi * Vb ) and Vb = Va.

You'll have to set up Va to be nonzero when the simulation starts, and
I'm not sure how you would put in a proper time delay between the two
sources.

Then you have a pseudorandom number, to make data, you'll probably
have to sgn() it etc. Probably need a sample & hold to to hold it
still for one bit period.

3. ### Guest

Thanks! I tried this:

B1 a 0 V = if ( rand( time ) , 1, -1 )
..tran 1000
..backanno
..end

and it seems to work! It's fast too - around 4000 seconds per
second.

How about some other tricks to accomplish the same?

4. ### batguyGuest

That's a cool trick.

For grins, I tried B1 a 0 V= pi*v(a) - floor( pi*v(a) ) combined
with a sample & hold.

That worked too, but it's a lot slower.

5. ### Helmut SennewaldGuest

Hello,

I recommend a B-source.

V={ampl}*(rand(time*{br}) >=.5)

..param br=533meg
..param ampl=2

The option below enables the eye diagram.

..options baudrate={br} delay=.1n

Setup for a transient simulation.

..tran 0 1u 2n 10p
..options plotwinsize=0

Best regards,
Helmut