8位伪随机序列(m序列verilog HDL源码 )
伪随机码又称伪随机序列,它是具有类似于随机序列基本特性的确定序列。通常广泛应用二进制序列,因此我们仅限于研究二进制序列。二进制独立随机序列在概率论中一般称为贝努利(Bernoulli)序列,它由两个元素(符号)0, 1或1, -1组成。序列中不同位置的元素取值相互独立取0取1的概率相等等于1/2:我们简称此种系列为随机系列。
随机序列具有以下三个基本特性:
1)在序列中“0”和“1”出现的相对频率各为1/2。
2)序列中连0或连1称为游程连0或连1的个数称为游程的长度,序列中长度为1的游程数占游程总数的1/2;长度为2的游程数占游程总数的1/4;长度为3的游程数占游程总数的1/8;长度为n的游程数占游程总数的1/2n(对于所有有限的n)。此性质我们简称为随机序列的游程特性。
3)如果将给定的随机序列位移任何个元素,则所得序列的和原序列的对应的元素有一半相同,一半不同。
如果确定序列近似满足以上三个特性则称此确定序列为伪随机序列。
原理可以自行百度,给出Verilog hdl的实现代码:
本原多项式知识点补充:
m序列周期为2n-1,由移位寄存器和异或门构成,n表示移位寄存器的个数。
Verilog源码(选取本原多项式为(f(x)=x8+x4+x3+x2+1):
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 14:24:27 04/26/2018
// Design Name:
// Module Name: rangen
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module rangen(
input clk,
input rst_n,
input[7:0] data_in,
input load,
output reg[7:0] data_out
);
reg[7:0] cnt;
integer i;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) begin
data_out<=8'd0;
cnt<=0;
end
else if(load) begin
data_out<=data_in;
cnt<=0;
end
else if(cnt==8'hff)
cnt<=0;
else begin
for(i=1;i<8;i=i+1)
data_out[i]<=data_out[i-1];//移位寄存器
//根据本原多项式的线性反馈逻辑
data_out[0]<=((data_out[7]^data_out[3])^data_out[2])^data_out[1]; cnt<=cnt+1;
end
end
reg data_en;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
data_en<=1'b0;
else if(data_out==data_in)
data_en<=1'b1;
else
data_en<=1'b0;
end
endmodule
Testbench
`timescale 1ns / 1ps
// Company:
// Engineer:
//
// Create Date: 14:38:21 04/26/2018
// Design Name: rangen
// Module Name: D:/ise ex/seed/rangen/rangen_tsb.v
// Project Name: rangen
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: rangen
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
module rangen_tsb;
// Inputs
reg clk;
reg rst_n;
reg [7:0] data_in;
reg load;
// Outputs
wire [7:0] data_out;
// Instantiate the Unit Under Test (UUT)
rangen uut (
.clk(clk),
.rst_n(rst_n),
.data_in(data_in),
.load(load),
.data_out(data_out)
);
initial begin
// Initialize Inputs
clk = 0;
rst_n = 0;
data_in = 0;
load=0;
// Wait 100 ns for global reset to finish
#100;
rst_n = 1;
#100;
load=1;
data_in = 8'b1000_1000;
// Add stimulus here
#100;
load=0;
end
always #10 clk=~clk;
endmodule
仿真截图:初始值为10001000,周期为 255 ,在cnt计数到255是输出10001000;
8位伪随机序列(m序列verilog HDL源码 )相关推荐
- 日历android实训报告,EAD万年历实训报告及Verilog HDL源码
<EDA技术及应用>实训报告1 系统设 1.1 设计要求 1.1.1 设计任务 设计并制作一台数字日历. 1.1.2 性能指标要求 ⑴用Verilog HDL语言设计一个数字日历. ⑵数 ...
- JavaScript实现设置或清除数字指定偏移量上的位setBit算法(附完整源码)
JavaScript实现设置或清除数字指定偏移量上的位setBit算法(附完整源码) setBit.js完整源代码 setBit.js完整源代码 /*** @param {number} number ...
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载...
http://blog.csdn.net/scotfield_msn/article/details/60339415 在TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CR ...
- C语言重复加一个数的所有位数字的算法(附完整源码)
C语言重复加一个数的所有位数字的算法 问题举例 C语言重复加一个数的所有位数字的算法完整源码(定义,实现,main函数测试) 问题举例 例如给定num = 38,过程类似于:3 + 8 = 11,1 ...
- C++返回一个数的二进制最右边的一位的实现算法(附完整源码)
C++返回一个数的二进制最右边的一位的实现算法 C++返回一个数的二进制最右边的一位的实现算法完整源码(定义,实现,main函数测试) C++返回一个数的二进制最右边的一位的实现算法完整源码(定义,实 ...
- C++无符号整数的反转位的实现算法(附完整源码)
C++无符号整数的反转位的实现算法 C++无符号整数的反转位的实现算法完整源码(定义,实现,main函数测试) C++无符号整数的反转位的实现算法完整源码(定义,实现,main函数测试) #inclu ...
- C语言实现克拉茨Collatz序列(附完整源码)
实现克拉茨Collatz序列 实现克拉茨Collatz序列完整源码(main函数测试) 实现克拉茨Collatz序列完整源码(main函数测试) int main(int argc, char *ar ...
- Ubuntu14.04 32位上编译VLC2.2.0源码操作步骤
1. 首先安装必须的依赖软件,打开终端,执行: sudo apt-get install git libtool build-essential pkg-config autoconf 2. 从 h ...
- 【转】ubuntu 11.10(32位系统)下编译android源码
原文网址:http://www.cnblogs.com/dwayne/archive/2011/11/16/2251734.html 本文介绍在ubuntu 11.10系统下编译android 2.3 ...
最新文章
- html5 postMessage解决跨域、跨窗口消息传递
- 考察大新和南宁农业产业园 农业大健康·李喜贵:赋能乡村振兴
- 千兆光纤收发器调整措施
- Linux命令之crontab命令
- 学校邮箱注册IDEA、pycharm等全家桶(正式版就是香)
- oa系统哪个服务器好,谈谈用户对各大OA系统的使用心得
- 后来,我学会了每做完一件事
- c语言strTrimed函数用法介绍,c语言对字符串实现高效trim函数
- 中国综合能源服务市场盈利模式分析与投资战略规划研究报告2022-2028年
- 驱动一款淘宝购买的130万像素的USB双目摄像头-记录
- 【自考】数据结构导论
- java中object是什么_Java中的Object是什么?
- 使用Python、pandas、pyecharts进行数据分析——实例讲解
- 健身的基本知识(1)
- 特征频率、最y大振荡频率、截止频率有什么关系和异同
- sqldbx怎么连接远程服务器,SqlDbx连接远程DB2数据库
- 读《如何阅读一本书》有感
- 梅赛德斯-奔驰将区块链技术应用于可持续交易账簿及供应链
- saiku无缝对接kylin
- After Effects Premiere 教程收集