|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
哪位大牛可以帮小弟解决一下难题~不胜感激~ 第一步由两个LFSR(linear feedback shift register)构成,用两个小m序列生成器实现,这两个小m序列生成器分别由16个D触发器构成,产生周期为216-1的伪随机序列。但这两个小m序列的生成多项式不同,而且每次取出的四位二进制数也是在不同位置取出的,所以可认为这两个小m序列生成的两个四位二进制数是两个不相关的独立随机数。当然这两个四位二进制数我们均当作小数来看待,即这四位依次为小数点后四位。 第二步是两个ROM查表模块。因为在FPGA中无法快速实时的实现乘除、开方及正弦表达式的运算,为了保证实时性,采用查表的方法实现,即将四位二进制数输出,然后在MATLAB中将其转化为小数,在分别做f和g的运算,将运算结果分别转换为9位的二进制数,这个数表示一个既有整数位又有小数位的有符号数。然后将按两个式子算得的9位二进制结果分别对应其输入的4位二进制数写成两个ROM以共查表。这里需注意,在MATLAB中将计算的十进制结果转化为9位二进制数表示的小数时的得到二进制序列为补码,而非原码,此处不用再做补码到原码的转换,因为相乘时直接应用补码。 第三步是一个乘法器。这个乘法器将查表得到的算法第二步的计算结果相乘来得到最后的噪声值。在VHDL的乘法运算中,两个乘数编译器看做是补码而不是原码,而且其得到的相乘结果也是以补码形式给出的。故在乘法器中,可将查表得到的两个补码直接相乘,得到一个18位的补码。
PS:可以不用全部解答,说一下思路也好呀……
[ 本帖最后由 lovelysty 于 2009-9-16 08:58 编辑 ] |
|