加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

随机数产生电路设计

(2011-09-09 15:36:00)
标签:

it

分类: Verilog

一、概述

    伪随机序列又称为伪随机码,是一组人工生成的周期序列。它不仅具有随机序列的一些统计特性和高斯噪声所有的良好的自相关特性,而且具有某种确定的编码规则,同时又便于重复产生和处理,因而在通信领域应用广泛。

    伪随机序列的产生方式很多,通常产生的伪随机序列的电路为一反馈移位寄存器。它又可分为线性反馈移位寄存器和非线性反馈移位寄存器两类。由线性反馈移位寄存器产生的周期最长的二进制数字序列称为最大长度线性反馈移位寄存器序列,简称m序列,移位寄存器的长度为n,则序列的周期为2的n次方-1,没有全0状态。

    其中,伪随机数发生器的初始状态由微处理器通过SEED寄存器给出。

二=伪随机序列发生器的硬件实现

    伪随机序列发生器的初始状态由微处理器中SEED寄存器提供的,而SEED寄存器的位数为8位,所以需要设计一种8位的伪随机序列发生器,它的本原多项式为:

http://s4/middle/4dbde8edhac7e90dab8a3&690

    伪随机序列发生器结构如图所示:

http://s15/middle/4dbde8edhac7e94e1e55e&690


    图中Ci代表本原多项式F(x)中各项的系数。

三、8位伪随机序列发生器的verilog代码

module RANGEN(

       Reset,

       Gclk,

       Load,

       Seed,

       Ran_num

       );

input Reset;

input Gclk;

input Load;

input [7:0] Seed;

output [7:0] Ran_num;

 

wire Reset;

wire Gclk;

wire Load;

wire [7:0] Seed;

wire [7:0] Ran_num;

integer i;

 

parameter U_DLY=1;

 

always@(posedeg Reset or posedge Gclk)

begin

if(Reset)

Ran_num<=8`b0;

else if(Load)

Ran_num<=#U_DLY Seed;

else

begin

for(i=1;i<8;i=i+1)

Ran_num[i]<=#U_DLY Ran_num[i-1];

Ran_num[0]<=#U_DLY Ran_num[1]^(Ran_num[2]^(Ran_num[3]^Ran_num[7]));

end

end

endmodule

 




 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有