欢迎光临散文网 会员登陆 & 注册

Verilog-A模块之64BIT随机序列产生

2022-05-23 22:47 作者:核弹君·  | 我要投稿

1bit的随机序列产生器可以用ahdl库里的rand_bit_stream就可以了

按照ahdl库的用法改了一个64bit的随机序列

如果需要产生一个随机电压,那么只需要在这个后面接一个理想DAC即可

代码如下,当作抛砖引玉之作:

(使用时记得改参数)


`include "discipline.h"

`include "constants.h"

//--------------------

// rand_bit_stream

// -  Random bit steam generator

// vout: [V,A]

// INSTANCE parameters

//    tperiod     = period of stream [s]

//    seed        = random number seed []

//    vlogic_high = output voltage for high [V]

//    vlogic_low  = output voltage for low  [V]

//    tdel, trise, tfall = {usual} [s]

// MODEL parameters

//    {none}

// This model generates a random steam of bits.

(* instrument_module *)

module RANDOM_64BIT (vout);

output [63:0] vout;

electrical [63:0] vout;

parameter real tperiod = 1 from (0:inf);

parameter integer seed = 21;

parameter real vlogic_high = 1;

parameter real vlogic_low  = 0 ;

parameter real tdel=0 from [0:inf);

parameter real trise=1n;

parameter real tfall=1n;


real next;

integer bit;

real vout_val [0:63];

integer iseed;

genvar i ;


analog begin

    @ ( initial_step ) begin

next = $abstime + tperiod;

bit = 0;

iseed = seed;

for(i=0; i<64; i=i+1) begin

            vout_val[i] = vlogic_low;

        end 

end


    $bound_step(tperiod);


    @ ( timer( next )) begin

    for(i=0; i<64; i=i+1) begin

    bit = abs($random(iseed)) & 1;

            vout_val[i] = (vlogic_high - vlogic_low) * bit + vlogic_low;

        end

        next = next + tperiod;

    end

for(i=0; i<64; i=i+1) begin

        V( vout[i] ) <+ transition(vout_val[i],tdel,trise,tfall);

end

end

endmodule




Verilog-A模块之64BIT随机序列产生的评论 (共 条)

分享到微博请遵守国家法律