基于Verilog语言的伪随机码的编写

写之初,笔者并没有太大的自信,因为笔者对伪随机码并没有太多的认识。但老师有命,笔者不得不进行编写,同时笔者也特别希望能有个项目来锻炼自己。

笔者在开始编写的时候,首先上网查了很多的资料,对伪随机码算是有了一定的了解,但是相关的程序代码却没有找到多少,或许是太简单,亦或许是涉及到商业,所以网上资源很少,没办法笔者又再次阅读了有关伪随机码的资料。伪随机码又称伪随机序列,它是具有类似于随机序列基本特性的确定序列。通常广泛应用二进制序列,因此我们仅限于研究二进制序列。二进制独立随机序列在概率论中一般称为贝努利(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/2^n(对于所有有限的 n )此性质我们简称为随机序列的游程特性:

  3 如果将给定的随机序列位移任何个元素 则所得序列的和原序列的对应的

  元素有一半相同,一半不同。

  如果确定序列近似满足以上三个特性则称此确定序列为伪随机序列。

在明白了伪随机码的概念之后,笔者开始从功能上着手,采用由下至上的方式,进行编写代码。

因为本次要产生码元序列为010110010001111和0100111的2Khz和32Khz的伪随机码,所以笔者首先编写码元序列为010110010001111,速率为32Khz的伪随机码。请注意,码元序列的方向和速率。在理解其速率时,着实让笔者头疼了一番,最终笔者明白了其速率是指一位编码的速率。

在理解这些东西时,笔者开始构思,不管采用什么方式,笔者只需产生编码为010110010001111速率为32Khz的序列即可。因此笔者决定采用移位寄存器和分频的方式来产生,以下为Verilog代码:

module wsjm(clk,data_15bit_2Khz,data_15bit_32Khz,data_7bit_2Khz,data_7bit_32Khz);

input clk;

 

output data_15bit_2Khz;

output data_15bit_32Khz;

output data_7bit_2Khz;

output data_7bit_32Khz;

 

reg [14:0]data_out_15bit_2Khz;

reg [14:0]data_out_15bit_32Khz;

 

reg [6:0]data_out_7bit_2Khz;

 

reg [6:0]data_out_7bit_32Khz;

 

 

 

reg [13:0]buffer_15bit_2Khz;

 

reg [13:0]buffer_15bit_32Khz;

 

reg [13:0]buffer_7bit_2Khz;

 

reg [13:0]buffer_7bit_32Khz;

 

always@(posedge clk)

 

begin

 

buffer_15bit_2Khz<=buffer_15bit_2Khz+1'b1;

 

if(buffer_15bit_2Khz==13'd4090)

 

begin

 

buffer_15bit_2Khz<=0;

 

data_out_15bit_2Khz=data_out_15bit_2Khz>>1;

 

if(data_out_15bit_2Khz==16'b0000000000000000)

 

data_out_15bit_2Khz=16'b0101100100011110;

 

end

 

end

 

always @(posedge clk)

 

begin

 

buffer_15bit_32Khz<=buffer_15bit_32Khz+1'b1;

 

if(buffer_15bit_32Khz==10'd262)

 

begin

 

buffer_15bit_32Khz<=0;

 

data_out_15bit_32Khz=data_out_15bit_32Khz>>1;

 

if(data_out_15bit_32Khz==16'b0000000000000000)

 

data_out_15bit_32Khz=16'b0101100100011110;

 

end

 

end

 

always@(posedge clk)

 

begin

 

buffer_7bit_2Khz<=buffer_7bit_2Khz+1'b1;

 

if(buffer_7bit_2Khz==13'd4090)

 

begin

 

buffer_7bit_2Khz<=0;

 

data_out_7bit_2Khz=data_out_7bit_2Khz>>1;

 

if(data_out_7bit_2Khz==8'b00000000)

 

data_out_7bit_2Khz=8'b01001110;

 

end

 

end

 

always @(posedge clk)

 

begin

 

buffer_7bit_32Khz<=buffer_7bit_32Khz+1'b1;

 

if(buffer_7bit_32Khz==10'd262)

 

begin

 

buffer_7bit_32Khz<=0;

 

data_out_7bit_32Khz=data_out_7bit_32Khz>>1;

 

if(data_out_7bit_32Khz==8'b00000000)

 

data_out_7bit_32Khz=8'b01001110;

 

end

 

end

 

 

 

assign data_15bit_2Khz=data_out_15bit_2Khz[14:0];

 

assign data_15bit_32Khz=data_out_15bit_32Khz[14:0];

 

assign data_7bit_2Khz=data_out_7bit_2Khz[6:0];

 

assign data_7bit_32Khz=data_out_7bit_32Khz[6:0];

 

 http://www.cnblogs.com/shihuasheng1990/archive/2012/01/01/2309607.html

转载于:https://www.cnblogs.com/fenleixinxi/archive/2012/01/01/2309609.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HBuilder】手机App推送至Apple App Store过程

一、前言 最近由于公司同事离职&#xff0c;顶替这位同事从事手机App的研发工作&#xff0c;BIM数据平台部门采用的是HBuilder作为手机App的制作环境。本篇介绍我是如何将HBuilder的Release包发布至App Store的。 二、内容 1. 首先登录Apple Developer网站 2. 点击iTunes Conn…

Java性能调优调查结果(第四部分)

这是系列文章中的最后一篇&#xff0c;我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果。如果您还没有阅读第一篇文章&#xff0c;我建议您首先阅读以下内容&#xff1a; 性能问题的频率和严重性 最受欢迎的监控解决方案 查找根本原因的工具和技术 …

2012年第一个工作日

换代理尝试&#xff0c;竟然可以发博客了。以前的博客太散乱&#xff0c;打算在这里安家。 今天花了一上午时间&#xff0c;在各大网站不停地晃。希望自己能够弄清楚这个快速变化的世界。 2012确切的目标&#xff1a; 1. 工作仍然是首要的&#xff0c;锻炼的能力不同而已&#…

基于ArcEngine的插件式框架

先整理下&#xff0c;过几天把我以前用过的一个插件式GIS框架共享出来。转载于:https://www.cnblogs.com/songhuaiyu/archive/2010/08/16/1800854.html

【JQuery】选择器

一、前言 上一章学习完了Js的一些基本内容&#xff0c;本章开始学习JQuery语法。JQuery的基础语法是&#xff1a; $(selector).action() 那么重要的两个元素&#xff0c;一个是选择器&#xff0c;另一个是行为&#xff01;本章开始学习JQuery的选择器。 二、内容 $("*&quo…

android eclipse 配置 在项目右击选择properties

转载于:https://www.cnblogs.com/guoxiaoyue/p/3485243.html

减少主要GC暂停的频率

这篇文章将讨论一种技术&#xff0c;以减少应用程序等待时间造成的垃圾收集暂停的负担。 正如我几年前所写&#xff0c; 在JVM中无法禁用垃圾收集 。 但是&#xff0c;有一个巧妙的技巧可以用来大大减少长时间停顿的时间和频率。 如您所知&#xff0c;JVM中发生了两个不同的GC…

软件工程中交流的思考

良好的交流可以有效的降低项目的开发成本&#xff0c;相反不但可能数倍的增加成本&#xff0c;甚至可能导致项目的失败。 怎样在项目执行过程进行有效的交流呢&#xff1f; 1. 识别项目中交流主体。 2. 明确交流主题、内容、目标。 3. 做好交流记录、分析、整理、执行。 4. 交流…

【WebGL】《WebGL编程指南》读书笔记——第2章

一、前言 最近看了《WebGL编程指南》这本书&#xff0c;发现还是很有意思的&#xff0c;故每章阅读后做个笔记。 二、正文 Example1&#xff1a;在canvas中绘制2D矩形 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /&…

一个人的网站开发

从零开始开发一个全栈Web应用实录 https://blog.csdn.net/weixin_31347831/article/details/74625813 如何用PHP完整的开发一个网站&#xff1f; https://blog.csdn.net/a6984021/article/details/88787885 一个人如何完成一整个网站的开发&#xff08;推荐好文&#xff0c;看完…

WAI-ARIA对自动完成小部件的支持

在本文中&#xff0c;我想讨论AutoComplete小部件的可访问性。 在您键入该字段时&#xff0c;通常会使用“自动完成”窗口小部件提供建议。 在当前的工作中&#xff0c;我基于Twitter的Typeahead &#xff08;一个灵活JavaScript库&#xff09;实现了JSF组件&#xff0c;该库为…

eclipse中java.lang.OutOfMemoryError: Java heap space错误

Myeclipse中报java.lang.OutOfMemoryError: Java heap space错误 解决办法: 选中被运行的类&#xff0c;点击菜单‘run->run Configuration’&#xff0c;选择(x)Argument标签页下的vm arguments框里 输入 -Xmx800m, 保存运行。问题解决 转载于:https://www.cnblogs.com/vig…

[Vue warn]: Invalid prop: custom validator check failed for prop xxx.问题

在用vue ui框架&#xff08;iview、elementui等&#xff09;做项目&#xff0c;会遇到这种问题 这样的&#xff0c;点那都报错&#xff0c;千辛万苦的付出&#xff0c;却找不到问题在哪 其实很简单&#xff0c;报错都显示出那个组件的问题了 ‘<Form>’这个组件&#xf…

CheckList 如何梳理可减少上线的验证时间(总结篇)

对CheckList的执行发起的思考&#xff1f; &#xff08;1&#xff09;功能越来越多&#xff0c;CheckList越补充越多&#xff0c;执行CheckList时间越来越长&#xff0c;如何减少上线的验证时间&#xff1f;&#xff08;2&#xff09;减少上线验证的时间外&#xff0c;如何保证…

PrimeFaces 5.0 DataTable列切换器

我有机会与PrimeFaces 5.0 DataTable一起工作&#xff0c;并且增强功能很棒。 今天&#xff0c;我只想展示其中的一项新功能……DataTable列切换器。 此功能使您可以通过复选框列表选择显示哪些列。 要使用列切换器&#xff0c;只需添加一个commandButton即可将列选择的选择列…

[恢]hdu 2016

2011-12-14 04:21:57 地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2016 题意&#xff1a;中文。 mark&#xff1a;wa了2次&#xff0c;a^b^a^b这种交换只能用在a和b不同的时候&#xff0c;否则清零。没考虑第一个元素就是最小值的情况。 代码&#xff1a; # in…

CSS3总结(干货)

1、css3中好用的选择器   :target       //突出显示活动的HTML锚 ::after / ::before{content:" ";}  //content必须有&#xff0c;若无内容&#xff0c;用空格占位 2、文字 a.导入字体&#xff1a; font-face b.文字阴影&#xff1a;text-shadow ps:相…

关于Java泛型和擦除

“编译期间擦除泛型”是常识&#xff08;好吧&#xff0c;类型参数和实参实际上就是被擦除的&#xff09;。 这是由于“类型擦除”而发生的。 但这是错误的&#xff0c;正如许多开发人员所假设的那样&#xff0c;删除了<..>符号内指定的所有内容。 请参见下面的代码&…

关于软件测试学习心得

软件测试是软件开发过程中最重要环节&#xff0c;在进行测试之前需要写测试计划&#xff0c;测试计划需要哪几个部分呢&#xff1f;在郁莲老师的课上教导如何做测试计划。 目录 1 引言 1.1 编写目的 1.2 项目背景和产品简介 1.3 专业术语 2 测试目标 3. 测试范围 3.1 功能性测试…

使用JGit API探索Git内部

您是否想过提交及​​其内容如何存储在Git中&#xff1f; 好吧&#xff0c;我有&#xff0c;在上一个下雨的周末&#xff0c;我有一些空闲时间&#xff0c;所以我做了一些研究。 因为我对Java的感觉比对Bash的感觉要多&#xff0c;所以我使用了JGit和一些学习测试来探索提交的…