random.dsp

来自「作者:Analog Devices,Inc 平台:ADSP21xx 编程语言」· DSP 代码 · 共 42 行

DSP
42
字号
.module/boot=3/boot=4           random;

{ RANDOM.DSP - Random number function. 

  INPUT :  
    sr1 = msw of seed
    sr0 = lsw of seed

  OUTPUT:  for best result use ONLY sr1 as random number 
    sr1 = msw of new seed between 0 and 2^32
    sr0 = lsw of new seed
    
  FUNCTIONS CALLED:
    None

  DESCRIPTION:
  The function (taken from the APPS handbook) implements 
      
      x(n+1) = (a*x(n) + c) mod m

      m = 2^32    a = 1,664,525   c =  32767

}

.entry noise_rand;

noise_rand:
  my1 = 25;                           {upper half of a}
  my0 = 26125;                        {lower half of a}
  mr = sr0*my1 (uu);                  
  mr = mr + sr1*my0 (uu);             {a(hi)*x(lo)}
  si = mr1;                           {a(hi)*x(lo) + a(lo)*x(hi)}
  mr1 = mr0;
  mr2 = si;
  mr0 = 0xfffe;                       {c = 32767, leftshifted by 1}
  mr = mr + sr0*my0 (uu);             { (above) + a(lo)*x(lo) +  c}
  sr = ashift mr2 by 15 (hi);
  sr = sr or lshift mr1 by -1 (hi);   {right shift by 1}
  sr = sr or lshift mr0 by -1 (lo);
rts;

.endmod;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?