VHDL测试平台中的AWGN通道

时间:2017-07-30 21:24:00

标签: vhdl testbed

我想在VHDL测试平台中创建AWGN通道。可能吗?我该怎么办?我在网上搜索但没有很多相关帖子。

此致

1 个答案:

答案 0 :(得分:2)

是的,你可以。

如何在VHDL中生成统一的分布式值here。引用(原作“Vipin Lal”):

library ieee;
use ieee.math_real.all;

entity rand_gen is end rand_gen;

architecture behavior of rand_gen is 
    signal rand_num : integer := 0;
begin
    process
        variable seed1, seed2: positive;               -- seed values for random generator
        variable rand: real;   -- random real-number value in range 0 to 1.0  
        variable range_of_rand : real := 1000.0;    -- the range of random values created will be 0 to +1000.
    begin
        uniform(seed1, seed2, rand);   -- generate random number
        rand_num <= integer(rand*range_of_rand);  -- rescale to 0..1000, convert integer part 
        wait for 10 ns;
    end process;
end behavior;

然后,您必须将统一函数的输出缩放到AWGN分布。 C中的一个例子是here。引用(原文由“Cagri Tanriover博士”总结)

temp2 = ( rand() / ( (double)RAND_MAX ) );
temp1 = cos( ( 2.0 * (double)PI ) * rand() / ( (double)RAND_MAX ) );
result = sqrt( -2.0 * log( temp2 ) ) * temp1;

只需正确将其转换为VHDL。 math_real库包含所需的所有函数和常量。