ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:1.82MB ,
资源ID:20382742      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20382742.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮电子院asic实验报告Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮电子院asic实验报告Word文件下载.docx

1、(3)当相邻破坏点V 中间有偶数个原始传号时,用B00V取代;(4)用取代时,B 码和V 码与它们前面一个原始传号(或V 码)极性相反;(5)用000V取代时,V 码与它前面的传号极性相同。可以证明,按照上述原则编出的BPn 码,相邻破坏点V 的极性也是相反的,因此,破坏点的引入不会导致码流的正负不平衡。由于HDB3 码中的V 码破坏了极性交替原则,因此,在收端很容易找到它。在译码时,将破坏点V 检出,包括它前面的三位码一律还原为“0”码就完成了HDB3 码的译码工作。例 设前一个破坏点极性为正(记为V+),求NRZ 码所对应的HDB3 码。解 1 1 1 0 l 0 0 0 0 1 0 1

2、1 0 0 0 0 1 1 (NRZ)(V)- + - 0 + - 0 0 - + 0 - + 0 0 0 + - + (HDB3)B_0 0 V_ 0 0 0 V+由于已知前一个破坏点为V+,当遇到第一个四连零时,破坏点V 的极性一定为负。但如果用“000V-”来取代,则V 码正好与它前面的传号极性相反,没有形成“破坏点”,因此,第一个取代节只能用“B00V”且极性为负。在确定第二个取代节时,由于两个破坏点间共有三个原始传号(奇数),故取代节为000V+”。例设有一串全零NRZ 码,求它对应的HDB3 码(设前一个破坏点为V-)。解 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

3、 0 (NRZ)(V_)+ 0 0 + - 0 0 - + 0 0 + - 0 0 - (HDB3)此例说明,相邻破坏点间没有原始传号时,也要用“B00V”取代,以保证相邻的V 码极性相反。2HDB3 译码电路HDB3 译码电路完成编码的反变换,关键之处是检出破坏点,取消“取代节”,即将“000V”或“B00V”还原成“0000”,其管腿框图如下:四、实验要求: 工作速率为50kb/s10Mb/s(符合CCITT G.703 建议)这里取时钟频率=2M,信号速率=2M。用VERILOG HDL 进行电路描述,并写出测试文件。电路仿真结果正确。五、设计思路: 1、译码原理: 根据编码规则,破坏点

4、V脉冲与前一个脉冲同极性。因此可从所接受的信码中找到V码,然后根据加取代节的原则,V码与前面的三位码必然是取代码,需要全部复原为四连0。只要找到V码,不管V码前是两个“0”码,一律把取代节清零,完成了扣V扣B功能,进而得到原二元信码序列。可实现HDB3译码的模型框图如图所示, V码检测、扣V扣B、双向码转换三部分组成。2、 V码检测: 为了方便起见,设从正信号为bp,从负信号为bn。+V码检测时钟上升沿的控制下,对输入的bp进行检测。其原理是:当bp的上升沿到来时,对输入的bp脉冲进行计数,当计数值等于1时,输出一个脉冲作为+V脉冲,同时计数器清零,而且计数期间,一旦有bn信号为“1”电平时,

5、立即对计数器清零,计数器重新从零开始计数。这是因为在两个bp脉冲之间,存在bn脉冲,说明第二个bp脉冲不是+V码,而只有在连续两个bp脉冲之间无bn脉冲,才能说明这两个bp脉冲在HDB3码中,是真正同极性的于是就可以判定第二个bp脉冲实际上是+V码,达到检测+V码的目的。-V码-V码检测与+V码的检测类似,所不同的是-V码的检测是在正整流信号脉冲的控制下对负整流信号脉冲进行计数、检测和判定。3.扣B扣V模块:扣V扣B模块有三个输入信号,即时钟信号、V码信号和来自正、负整流输出的和路信号。由于该和路信号可能包含有B脉冲和V脉冲,因此需要在扣V扣B模块中,去除V和B脉冲。本模块的建模方法是,用V码

6、检测模块所检测出的V码信号,去控制一个移位寄存器,若未碰到V脉冲,则整流输出合成信号在时钟的节拍下,顺利通过移位寄存器,当碰到有V脉冲时,该V脉冲将使移位寄存器清零。考虑到四连0,即V脉冲及其前面的三个码元应为0码,所以,可设置四位的移位寄存器,当V码清零时,同时将移存器中的四位码全变为0。不管是否有B脉冲,在此模块中,一并清零,因而无需另设扣B电路。另外移位四位寄存器起到延时四位时钟周期的作用,以使所检测出的V脉冲与信号流中的V脉冲位置对齐,保证清零的准确性。六、电路测试: (1)测试思路通过给HDB3译码电路模块bp、bn端口一串固定的激励信号,观察输出端口nrz的输出信号是否与预期一致。

7、可通过观察仿真波形图或通过测试程序自行判断输出结果是否正确。同理,需要测试多组数据以确保电路编码的准确性。(2)输入、输出端口信号电平预期值输入信号 输出信号 (3)仿真波形图由仿真波形图可直接观察出HDB3译码电路模块输入与输出信号的关系,通过读信号波形电平值可确定电路编码结果的正确性。HDB3译码电路仿真波形图下图所示: 分析:从图中可以看出,我们对该译码器的输入实际为:手动解码得出的结果为:从波形可以看出,通过该译码器后,对应的输出为:手动解码与译码器解码相符,译码器译码成功。过相应的verilog设计正确。(4)测试程序验证结果测试程序可以直接验证仿真结果是否正确,下图为测试程序判断结

8、果。可以看到结果的每一位输出都是right即都是正确的。七、综合过程: 1、建立好yima.tcl约束文件。建立yima.sdc文件。 2、(1)启动综合工具。并选择相应的约束文件。 可以得到下图所示的门级电路。(2)分析report的timing、power等。 a:timing菜单下的对应的显示如下图所示:B:power子菜单先的选项如下图所示。(3)文件分析:Sdf文件:分析:sdf文件是对触发器的延迟的描述,其中延时信息包括每一个逻辑单元的每一个管脚的上升时延与下降时延的最小值、典型值、最大值。可以看到里面有对应的该处的delay就是在设置延迟。Vg文件:vg文件描述的是通过逻辑综合生

9、成的逻辑单元的连线组成。这个文件是对逻辑单元的结构化描述。3 门级电路仿真过程:不加maxdelays加了maxdelays 分析: 使用+maxdelays与不使用+maxdelays在门级仿真中有延时的差别,是因为门级仿真时使用到.sdf文件。这个文件中包含逻辑综合中生成的逻辑单元的延时信息。这些信息表示了每一个逻辑单元的每一个管脚的上升时延与下降时延的最小值、典型值、最大值。当使用+maxdelays时,门级仿真使用了延时的最大值,故门级仿真波形表现出其延时要长于不用+maxdelays.八、实验总结:本次实验要求我们使用verilog设计一个HDB3译码器。通过本次实验,我进一步加深了

10、对verilog的体会,提高了对相关语法知识,赋值方式等的理解,也加强了我对硬件描述语言的认识。当然,通过这次实验,我还回顾了一些关于HDB3编码解码的相关知识,这是一些额外的收获。在实验过程中,由于是第一次真正使用verilog进行设计开发。因此,在实验开始时,曾遇到了较大的困难。第一问题就是,开始前思绪有好多,但是真正动手开始写却又各种出状况。这直接导致了前两次实验的低效率问题。后来,通过一位同学拿到了一位学长的代码作为参考。为了真正读懂那个代码,在课下我也花了不少的时间。好在功夫不负有心人,通过差找资料以及找同学找老师交流,最后终于将代码弄明白了。其后的实验做起来就相对来说顺利多了。虽然

11、,在后续的上机过程中出现过几个小问题,不过,基于软件的强大以及仔细的查找,都能较快的将错误改正过来。基本编写以及测试便得以完成。其后,就是对程序进行逻辑综合。在这过程中,要得到相应的图形其实并不难,因为实验教程中有较为完整的步奏。但是,要做到对电路进行错误查找就是一个较为困难的地方。以前没有相应的上机实践经验,因此,即便知道有地方错了,也无法发现错误具体出现在哪个地方。当然,跟不用说对其改正了。虽然韩老师有在旁边指点我们如何分析问题在哪,但是,由于对相关分析方法以及相关文件内容所指代的具体含义的不清楚,于是队友和我商量着放弃了。没有得到最后的正确仿真图形。这也是我这次实验一个比较大的遗憾。在实

12、验过程中,遇到了好多次挫折,但是一次又一次的查找问题,一次又一次的继续坐到电脑前继续我的实验,不仅提高了我相应的知识水平,也提过了我分析问题解决问题的能力。这次实验对我的来说是一次比较好的磨练。感谢韩老师对我们细心地指导!九、相关代码:HDB3译码电路模块设计 / Port Description:/ Yima/ -/ bp- | |/ bn- | | / | | -nrz/ clk-/ reset-/ -/*/module yima(bp,bn,clk,reset,nrz); input bp,bn,clk,reset; /define input ports output nrz; /de

13、fine output ports reg nrz; reg1:0 shift_reg3:0; /define shift register reg count; /flag to detect positive V code reg count_; /flag to detect negtive V code0 pole_change; /polar converting state0 flag; /record input signal always ( bp or bn ) /detect positive V code and negtive V code begin if(bp) b

14、egin if(count) flag=2b00; count=0; /clear count flag end elseb10; count=1; /set count flag count_=0; else if(bn) if(count_) /clear count_ flagb01; count_=1; /set count_ flagb11; always (posedge clk or posedge reset) if(reset) shift_reg3=0; shift_reg2 shift_reg1 shift_reg0 pole_change=shift_reg3; /sh

15、ift out data from shift register=shift_reg2;=shift_reg1;=shift_reg0; case(flag) 2b00:begin /clear B code and V codeb01:shift_reg0=2b10:b11: default: endcase end always (posedge clk or posedge reset) /ouput signal nrz nrz else if(pole_change=2b10 | pole_change=2b01)=1;endmodule4、HDB3译码模块测试程序timescale

16、 100ns/10nsmodule yima_test; reg bp,bn,clk,reset; /drive input ports wire nrz; /test output port reg flag; /detect first high level integer i; reg35:0 exp_nrz; /output expect reg39:0 judgement; /judge the accuracy between the output and expect0 result; /show the simulation result yima u1(.bp(bp),.bn

17、(bn),.clk(clk),.reset(reset),.nrz(nrz); /instantiation initial /initialize variables and input reset signal flag=0; i=0; exp_nrz=36b0000_0000_1101_1000_0100_0111_0001_1000_0111; clk=0; reset=0; #1 reset=1; #5 reset=0; always #2.5 clk=clk; /clock signal initial /input test signal bp=0; bn=0; #10 bp=1

18、;bn=0; #5 bp=0;bn=1; #5 bp=1; #15 bp=1; #15 bp=0; #10 bp=0; while(1) always (posedge nrz) if(!flag) flag result=right; always (posedge clk) /judge the result and show the information if(flag) if(i36) if(nrz=exp_nrzi) judgementwrong if(i!=0) $display( %s !,judgement); $write(nrz=%b; expect: nrz=%b;,nrz,exp_nrzi); i=i+1;The simulation result is %s !,result); $stop;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1