组合逻辑电路实验1
1. 设计要求
1)设计新的多路选择器(三选一、五选一等等),并在开发板上验证 2)查看74LS138的Datasheet,用Verilog语言设计一个3-8译码器。用三个逻辑开关作为输入,8个LED灯作为输出,验证所设计的3-8译码器的逻辑功能。
2. 设计硬件原理图 1)画原理图 a b 三选一MUX y A2 74LS138 A1 Y0 Y1 Y2 Y3 Y4 Y5 A2 Y6 Y7 c
2)确定信号和FPGA引脚关系
三选一多路选择器
NET\ NET\NET\NET\NET\NET\
3-8译码器 NET\NET\NET\NET\NET\ NET\NET\NET\NET\NET\NET\
3. 实验方法和步骤 1)输入Verilog程序
①三选一多路选择器: module MUX( input a, input b, input c, input s1, input s2, output y );
assign y=(a&(~s1)&(~s2))|(b&(~s1)&(s2))|(c&(s1)&(~s2)); endmodule ②3-8译码器: module yimaqi38( input [2:0]a, output [7:0]y );
assign y[0]=~a[2]&~a[1]&~a[0]; assign y[1]=~a[2]&~a[1]&a[0]; assign y[2]=~a[2]&a[1]&~a[0]; assign y[3]=~a[2]&a[1]&a[0]; assign y[4]=a[2]&~a[1]&~a[0]; assign y[5]=a[2]&~a[1]&a[0]; assign y[6]=a[2]&a[1]&~a[0]; assign y[7]=a[2]&a[1]&a[0]; endmodule
2)编写约束文件
①三选一多路选择器: NET\NET\NET\NET\NET\NET\②3-8译码器: NET\NET\NET\
NET\
NET\NET\NET\NET\NET\NET\NET\
3)仿真与波形
(只进行对三选一选择器的仿真) 仿真程序 #100 a<=1; b<=0; c<=0; s1<=0; s2<=0; #100 a<=0; b<=1; c<=0; s1<=0; s2<=1; #100 a<=0; b<=0; c<=1; s1<=1; s2<=0; #100 a<=0; b<=0; c<=0; s1<=1; s2<=1; end
仿真波形图为:
4)实际Basys2实现(实际图片)
①三选一多路选择器:
图3.4.1 三选一选择器
解释说明:SW0与SW1代表s1与s2,图中均表示为低电平0,选择的是a端,SW2、SW3、SW4代表a、b、c三路,图中a为高电平1,b、c均为低电平0,故对应的LED0灯亮起,其他的不一一举例。 ②3-8译码器
图3.4.2 3-8译码器
解释说明:SW5、SW6、SW7分别代表a0、a1、a2,而LED0--LED7分别表示y0--y7,图中a0a1a2=001,即y1有效,故LED1发光,其他的不一一举例。
4. 讨论与分析 1)实验问题分析
无问题
2)实验心得体会及建议
心得体会:本次实验偏简单,没有涉及到时钟的输入,是对Verilog初学者十分不错的锻炼。