数字基带传输系统与电子琴设计说明

上传人:hs****ma 文档编号:486780173 上传时间:2023-08-13 格式:DOC 页数:33 大小:2.62MB
返回 下载 相关 举报
数字基带传输系统与电子琴设计说明_第1页
第1页 / 共33页
数字基带传输系统与电子琴设计说明_第2页
第2页 / 共33页
数字基带传输系统与电子琴设计说明_第3页
第3页 / 共33页
数字基带传输系统与电子琴设计说明_第4页
第4页 / 共33页
数字基带传输系统与电子琴设计说明_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《数字基带传输系统与电子琴设计说明》由会员分享,可在线阅读,更多相关《数字基带传输系统与电子琴设计说明(33页珍藏版)》请在金锄头文库上搜索。

1、 . . . 电路综合实验实验报告一最长线性反馈移存器序列生成器1.设计流程本部分是设计如下图所示的模块m_genclkdouttempclear在clear为1的时候清零dout为已转变为2bit的输出将temp输出有两个目的:1. temp0为未转变的1bit输出2. 在部分测试时,在波形中一目了然设计大致流程p1:PROCESS BEGIN IF THEN IF clear=1 THEN tmp=0000; ELSE IF tmp=0000 THEN tmp=0001; ELSE tmp=tmp xor tmp; tmp=tmp; tmp=tmp; tmp=tmp; END IF; EN

2、D IF; END IF; IF tmp=0 THEN dout=01; ELSE dout=11; END IF; temp01,111。2.设计思路: 1在时钟的上升沿作用时执行以下操作 2在clear为1时执行tmp赋值为0000;否则对tmp执行以下操作a将最高位与最低位进行异或运算并将结果赋给最高位;b将除了最低位的其余三位依次向后挪一位 3在tmp为0时,将dout赋值为01;否则,将dout赋值为11 4将tmp赋给temp输出。3.实验仿真结果及分析1quartusii运行结果:2modelsim测试文件代码以及仿真结果:(3) 分析:可以从图中看出形成的序列是以0001100

3、011001110111101111011010110101101011000111001010000100001为周期,即15个数字2的4次方减1为周期的M序列。Dout则是根据4位的最后一位决定的,将1转化成11,0转化成01。4.实验中遇到的问题及解决方法:相对于整个项目,这个部分容易一些,所以在编写过程中没有遇到太大的问题1在第一次编写仿真时发现波形在每次变化时波动较大,在15次变化,即一个周期结束进入下一周期时会出现一段时间的乱码,刨除quartusii选择的板子本身带来的不精确外,虽然不影响输出,但是会带来一定程度的误差。经过仔细重新研究逻辑后,调整了clear和clk顺序后的代码

4、后发现这种情况有了很大程度的改观。波形图对比:未调整的quartus调整后的quartusii调整后的modelsim(2) 第一次用modelsim软件进行仿真,对其测试文件的编写可以说是从零开始,虽然并不是很难,但是有一些细节必须要注意,例如箭头的方向还有逗号和分号的使用等等,所以失败了很多次,慢慢的耐心下来细心起来就适应了。二加性高斯白噪声1. 设计流程:Vhdl文件模块结构如下: Mult Rom1 Rom2M_gen1 M_gen22.设计思路基本原理 :产生高斯白噪声的基本原理用的是Box_Muller算法,算法如下1在0,1产生两个随机数和;2进行以下运算:;3产生高斯随机变量:

5、根据其原理,用modelsim编译分为三大模块模块一产生两随机信号,由两个m序列发生器产生,其由16个D触发器组成,产生周期为216-1的伪随机序列,取任意四位信号作为随机信号结果,因为周期很大,取数位置又是随机的,所以基本上可以认为伪随机数,同时,为了使两随机信号不同,我用了不同的生成多项式,取了不同位置的数,保证了两随机信号基本上不相同,保证了随机信号的正确性。3.编译结果如下:M_gen1:M_gen2:由图形可知,两信号序列发生器在系统时钟作用下产生了4位随机信号4.产生问题及分析:1 开始随机信号产生时用的quatusII,并且,没有生成多项式的含义,结果仍沿用4个d触发器的生成方法

6、,结果写第二个时卡卡了,去网上一搜才知道生成多项式的含义,但那时网上给的都是多项式的形式,不知道与端口的对应关系,后来才知道多项式的系数对应的就是端口的序号,到这里,新的问题又产生了,定义端口是只是模仿了书上的容,不知道downto意味着为什么,知道一同伴问我她用to为什么不对,才明白其对应关系,囧了,看来还是没有基础啊2 刚开始接触modelsim时它编译需要写测试文件,但是对此一无所知,仿照书上给的例子写了一遍,结果就是不出结果,出的结果为红直线,看了好几遍代码一没有找出结果,将其加到quatus2中编译成功,最好加了一个头文件ieee.numeric_std就成功了,结果编译总是在不经意

7、的位置出现错误模块二 分别根据多项式,产生f和g对应rom1,rom2板块。因为在FPGA中无法快速实时的实现乘除、开方及正弦表达式的运算,为了保证实时性,采用查表的方法实现,即将四位二进制数输出,然后在MATLAB中将其转化为小数,再分别做f和g的运算,将运算结果分别转换为9位的二进制数,这个数表示一个既有整数位又有小数位的有符号数。然后将按两个式子算得的9位二进制结果分别对应其输入的4位二进制数写成两个ROM以共查表.这里有一个细节,用matlab转换成的二进制为其补码形式,以后用到的相乘操作也为补码形式,故不需改过来.因为f的结果讲义中已给,所以直接编写rom2的结果即可,该模块比较简单

8、,没有很复杂的程序逻辑,算出会用matlab即可.这里虽然模块代码不难,但是有了一个新的容,及文件调用问题,文件调用我查的书,不难,主要是测试文件是否还需写出调用文件接口问题我拿不准,最后咨询了学长.Rom1表如下:when0001 =dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout1dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2dout2=000000000;结果:Rom1:Rom

9、2:遇到问题:在计算dout2时遇到了点麻烦,因为大部分数是小数加整数的形式,开始计算二进制时出现了问题,小数的进位加到了整数上,结果再后来画功率频谱图时,出现波形浮动较大,不稳定.模块三将rom1,rom2产生的两信号相乘,得到18位二进制,仅为所要的最终信号.结果如下:该模块比较简单,主要是我自己想复杂了,开始我将注意力放在了乘法器上,以为乘法器需要编译,还查大量资料,虽然最后没有编译,还是把我所查结果写着吧,算是对乘法器的部了解吧.利用混合型的全加器就可以构成直接补码数阵列乘法器。设被乘数A和乘数B是两个5位的二进制补码数,即 Aa3a2a1a0 Ba3a2a1a0它们具有带负权的符号位a4和b4,并用括号标注。如果我们用括号来标注负的被加项,例如,那么A和B相乘过程中所包含的操作步骤如下面矩阵所示: a3a2a1a0A b3 b2b1b0B a3b0a1b0a1b0a0b0 a3b1a2b1a1b1a0b1 a3b2a2b2a1b2a0b2 a3b3a2b3a1b3a0b3 a4b4 a0b4

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号