verilog组合逻辑实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组合逻辑实验报告
无02 季涛2010012107 一多路选择器
实验目的
掌握组合逻辑基本设计方法;掌握多路选择器的基本原理。
设计方案
如图为二选一多路选择器的基本结构,根据真值表推出逻辑表达式为y=~s&a|s&b。
卡诺图如下图所示:
冒险分析:根据两级网络的冒险检测和消除理论我们得知,如果初始输入值和最终输入值能够被同一个本原蕴含想覆盖就不会出现毛刺,当输入变化跨越了多个本原蕴含项就会产生毛刺。
由卡诺图上可以看出,当AB=11,从s=0到s=1状态跳变时,这个过程没有包含在上面的逻辑表示式中,因此电路会产生冒险。
消除冒险的根本策略是添加冗余的本原蕴涵项。在这道题里,只要在逻辑表达式中加上a&b 这一项即可。当然我们这里只考虑了单个输入发生变化的问题,因为在实际应用中,输入是按一定顺序变化的,即使有多个输入发生变化也是如此。
还有一种方案就是利用采样脉冲消除冒险。在这里就不多说了。
在此基础上可以设计出四选一的多路选择器,也就是实例化两个二选一多路选择器,然后再对这两个选择器的输出进行一次二选一。
代码
二选一多路选择器:
module mux_2_1(a,b,s,y,leda,ledb,leds);
input a,b,s;
output y,leda,ledb,leds;
wire s1,a1,a2;
buf b1(leda,a);
buf b2(ledb,b);
buf b3(leds,s);
not not1(s1,s);
and and1(a1,s1,a);
and and2(a2,s,b);
or or1(y,a1,a2);
endmodule
管脚约束:
NET "a" LOC = T10;
NET "b" LOC = T9;
NET "s" LOC = V9;
NET "y" LOC = T11;
NET "leda" LOC = U16;
NET "ledb" LOC = V16;
NET "leds" LOC = U15;
四选一多路选择器:
module mux_4_1(a,b,c,d,s1,s2,y,leda,ledb,ledc,ledd,leds1,leds2 );
input a,b,c,d,s1,s2;
output y,leda,ledb,ledc,ledd,leds1,leds2;
wire ledy1,ledy2;
wire y1,y2;
mux_2_1 m1(a,b,s1,y1,leda,ledb,leds1); mux_2_1 m2(c,d,s1,y2,ledc,ledd,leds1); mux_2_1 m3(y1,y2,s2,y,ledy1,ledy2,leds2);
endmodule
管脚约束:
NET "a" LOC = T10;
NET "b" LOC = T9;
NET "c" LOC = V9;
NET "d" LOC = M8;
NET "s1" LOC = N8;
NET "s2" LOC = U8;
NET "y" LOC = T11;
NET "leda" LOC = U16;
NET "ledb" LOC = V16;
NET "ledc" LOC = U15;
NET "ledd" LOC = v15;
NET "leds1" LOC = M11;
NET "leds2" LOC = N11;
仿真结果
上图为四选一多路选择器的modelsim仿真结果。符合实验要求。综合和硬件调试情况
调试结果符合预期,没有问题
二译码器
实验目的
掌握组合逻辑设计方法;掌握译码器设计原理。
设计方案
三八译码器如上图所示,真值表如下:
由真值表很容易得出逻辑表达式。分别用门级和行为级来实现。
上图为数码管七段译码基本结构,直接由真值表进行行为级的描述。
代码
三八译码器行为级描述:
module dec3to8men(a,d);
input [2:0]a;
output [7:0]d;
assign d[0]=~a[2]&~a[1]&~a[0]; assign d[1]=~a[2]&~a[1]&a[0]; assign d[2]=~a[2]&a[1]&~a[0]; assign d[3]=~a[2]&a[1]&a[0]; assign d[4]=a[2]&~a[1]&~a[0]; assign d[5]=a[2]&~a[1]&a[0]; assign d[6]=a[2]&a[1]&~a[0]; assign d[7]=a[2]&a[1]&a[0]; endmodule
三八译码器门级描述:
module dec3to8men(a,d); input [2:0]a;
output [7:0]d;
wire[2:0]f;
wire
not not1(f[0],a[0]);
not not2(f[1],a[1]);
not not3(f[2],a[2]);
and and1(d[0],f[2],f[1],f[0]); and and2(d[1],f[2],f[1],a[0]); and and3(d[2],f[2],a[1],f[0]); and and4(d[3],f[2],a[1],a[0]); and and5(d[4],a[2],f[1],f[0]); and and6(d[5],a[2],f[1],a[0]); and and7(d[6],a[2],a[1],f[0]); and and8(d[7],a[2],a[1],a[0]);
endmodule
三八译码器管脚约束:NET"a[0]"LOC="T10"; NET"a[1]"LOC="T9"; NET"a[2]"LOC="V9"; NET"d[0]"LOC="U16"; NET"d[1]"LOC="V16"; NET"d[2]"LOC="U15"; NET"d[3]"LOC="v15"; NET"d[4]"LOC="M11"; NET"d[5]"LOC="N11";