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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

多路选择器与多路分解器文档格式.docx

1、 input iD, input 1:0 iSel, output reg oQ );always (*) case (iSel) 2b00 : oQ = iA;b01 : oQ = iB;b10 : oQ = iC;b11 : oQ = iD; endcaseendmodule第1016行,使用case语句来实现4选1多路选择器。因为是2n个case选项,所以此处没有使用default语句。下面我会使用一个3选1的多路选择器来说明default的作用。图1.1 4选1多路选择器的RTL视图由图1.1所示,在2n个case选项时,没有加上default语句,其综合的结果为并行的MUX。代码1.

2、2 4选1多路选择器testbench(不可综合,仅用于仿真)module multiplexer_tb;reg i_a, i_b, i_c, i_d;reg 1:0 i_sel;wire o_q; initial begin i_a = 1; i_b = 0; i_c = 0; i_d = 0; #20 i_a = 1; i_c = 1; i_d = 1; #20 i_a = 0; i_b = 1;end i_sel = 2b00; #20 i_sel = 2b01;b10;b11; #20 $stop;multiplexer multiplexer_inst( .iA (i_a), .iB

3、 (i_b), .iC (i_c), .iD (i_d), .iSel (i_sel), .oQ (o_q) 第35行声明了一些变量,使用的标准为:映射为所需测试模块的输入信号,即需要使用initial或always来给出激励,因此多声明为reg类型;而映射为所需测试模块的输出信号,不需要激励,声明为wire类型即可。第21行,$stop表示仿真在此时刻终止。更多$打头的函数,请参考Verilog语法书。#20 $stop;图1.2 4选1多路选择器的功能仿真波形图1.3 4选1多路选择器的门级仿真波形由图1.2和图1.3所示,在2n个case选项时,没有加上default语句,其功能仿真和门

4、级仿真保持一致。1.1.2 怎么多出个锁存器?此处以3选1多路选择器为例。代码1.3 3选1多路选择器1(可综合)图1.4 3选1多路选择器1的RTL视图如图1.4所示,综合出来了锁存器。下面我们讨论如何消除这个锁存器。方法1 加(* full_case *)修饰代码1.4 3选1多路选择器2(可综合) (* full_case *) case (iSel)第10行,加(* full_case *)修饰,强制综合成full case。(* full_case *) case (iSel)图1.5 3选1多路选择器2的RTL视图方法2 使用default语句代码1.5 3选1多路选择器3(可综合

5、) default: oQ = 1b0;第14行,加上default语句,来描述缺省动作。图1.6 3选1多路选择器3的RTL视图方法3 在敏感列表后,赋初值代码1.6 3选1多路选择器4(可综合)always (*)beginend注意第917,在代码1.3的基础上,于敏感列表之后,加入oQ的初值。图1.7 3选1多路选择器4的RTL视图方法123的比较代码1.7 3选1多路选择器的testbench(不可综合,仅用于仿真)reg i_a, i_b, i_c; i_a = 0; #20 i_a = 1bx; i_b = 1 i_c = 1bxx;图1.8 方法1的功能仿真波形图1.9 方法1

6、的门级仿真波形由图1.8和图1.9所示,虽然方法1加了(* full_case *)修饰后,3选1多路选择器的综合结果没有产生锁存器,但是其功能仿真波形却当作锁存器来处理,而其门级仿真波形则是当作无关项来处理。即方法1,其前后仿真结果是不一致的。至于其他的特点,本文暂不讨论。想要了解更多full case的信息,请阅读参考2。图1.10 方法2的功能仿真波形图1.11 方法2的门级仿真波形如图1.10和1.11所示,方法2使用了default语句,其前后仿真和综合的RTL视图一致。萧鸿森大哥提醒我们:正确的做法是,default指定输出0或者某个选项。图1.12 方法3的功能仿真波形图1.13

7、 方法3的门级仿真波形如图1.12和1.13所示,方法3在敏感列表后,赋初值也可以很好解决锁存器的问题。1.1.3 结论虽然方法123都可以解决锁存器的问题,但是:方法1的前后仿真结果不同;方法3的其他特点暂时没有研究。因此此处只推荐大家使用方法2,即要实现并行的mux,当case选项不是2n个的时候,加上default指定输出0或某个选项是最安全的(虽然Verilog语法没有强制加入default)。1.2 带优先级的多路选择器1.2.1 使用if-else-if描述代码1.8 使用if-else-if描述的3选1多路选择器(可综合) if (iSel = 2b0) else if (iSel = 2b01) else第915行,使用if-else-if描述带优先级的多路选择器。有人看到我的代码会有一点小疑问?为什么always块没有加begin-end的。其实呢这个begin-end就相当于C语言里面的,与C语言类似,当后面的语句条数为1时,可以省略begin-end。而if-else-if恰好为一个完整的语句。图1.14 使用if-else-if描述的3选1多路选择器的RTL视图1.2.2 使用“: ?”描述既然使用if-else-if可以描述带优先级的多路选择器,那么使用“:”当然也是可行的。代码1.9

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

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