【www.myl5520.com--教学设计】
四选一多路选择器设计实验
篇一:设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件
EDA试验实验二 四选一多路选择器设计实验
一、实验目的
进一步熟悉QuartusII的VHDL文本设计流程、组合电路的设计仿真和测试。 二、实验内容
实验内容一:根据以下流程,利用QuartusII完成四选一多路选择器的文本编辑输入和仿真测试等步骤,给出仿真波形。 创建工程。 新建文件夹。
输入正确的源程序,保存,编译。 波形仿真,分配引脚,编译。 下载到试验箱,进行功能验证。 (原理图及仿真的波形界面在备注)
实验内容二:在试验系统上硬件测试,验证此设计的功能,对于引脚锁定以及硬件下载测试。输出信号接蜂鸣器。最后进行编译、下载和硬件测试实验。
实验内容三:对VHDL不同描述方式的四选一多路选择器进行硬件实验,比较他们的特性。
三、程序设计
其示意框图如下:
其中输入数据端口为a、b、c、d,s1、s2为控制信号,Y为输出。 令s1s2=“00”时,输出Y=a; 令s1s2=“01”时,输出Yb; 令s1s2=“10”时,输出Y=c; 令s1s2=“11’ 时,输出Y=d;
输入 b 数据 c
a
d
真值表如下:
第一种方案: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41a IS
PORT (a,b,c,d,s0,s1:IN STD_LOGIC; --输入信号 y:OUT STD_LOGIC); --输出信号 END ENTITY mux41a;
ARCHITECTURE one OF mux41a IS
SIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN
S<=s0&s1; --并置操作,获得二维矢量数据类型 PROCESS(s0,s1,a,b,c,d) --敏感信号 BEGIN CASE S IS
WHEN"00"=> y<=a; WHEN"01"=> y<=b; WHEN"10"=> y<=c; WHEN"11"=> y<=d;
WHEN OTHERS=>NULL; --其它情况为空值 END CASE; --CASE语句结束 END PROCESS; --PROCESS进程语句结束 END ARCHITECTURE one;
第二种方案: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY MUX41 IS
(
PORT
S1:IN BIT; S0:IN BIT; a:IN BIT; b:IN BIT; c:IN BIT; d:IN BIT; Y:OUT BIT );
END MUX41;
ARCHITECTURE LOGIC OF MUX41 IS BEGIN
Y<=(a AND (NOT S1)AND(NOT S0)) OR (b AND (NOT S1)AND S0) OR (c AND S1 AND(NOT S0)) OR (d AND S1 ANDS0); END LOGIC;
程序分析:四选一多路选择器设计时,定义输入S为标准以内漏记为STD_LOGIC,输出的信号y的数据类型定义为2位标准逻辑矢量位STD_LOGIC_VECTOR( 1 DOWNTO 0 ).使用LIBRATY语句和USE语句,来打开IEEE库的程序包STD_LOGIC_1164.ALL。当输入信号时,程序按照输入的指令来选择输出,例如输入信号为“00”时,将a的值给y,进而输出y的值,输入信号为“11”是,将a的值给y,进而输出y的值。若输入信号是已经定义的四个信号之外的值时(即当IF条件语句不满足时),输出值为x,并将x的值给输出信号z。这样即可实现四选一数据选择的功能。
四、仿真波形
分析: 从上图时序仿真可以看出:
s1s2=“00”时,输出Y=a; s1s2=“01”时,输出Yb; s1s2=“10”时,输出Y=c; s1s2=“11’ 时,输出Y=d;
(如图中注释)
实验二 四选一多路选择器的设计
篇二:设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件
实验二 四选一多路选择器的设计
姓名:庞啟明 学号:1112120110 专业:自动化
一、实验目的
进一步熟悉QuartusⅡ的Verilog HDL文本设计流程,学习组合电路的设计、仿真和硬件测试。
二、实验原理
if_else条件语句描述方式,以过程语句引导的顺序语句,适合描述复杂逻辑系统的行为描述语句。
(1)以模块定义语句关键词module_endmodule引导完整的电路模块。
(2)以input和output语句引导模块的外部端口。
(3)以reg等关键词定义模块内将出现的相关信息的特征和数据类型。
(4)以always @ 等关键词引导对模块逻辑功能描述的语句。负责描述电路器件的内部逻辑功能和电路结构。
三、实验设备与软件平台
实验设备:计算机、FPGA硬件平台是Cyclone系列FPGA
软件平台:Quartus II 9.1 (32-Bit)、5E+系统
四、实验内容
编写Verilog程序描述一个电路,实现以下功能:
具有6个输入端口 A、B、C、D、S1、SO,A、B、C、D均为输入端口,位宽为1;Sl、S0为通道选择控制信号端,位宽为1;Y为输出端口,位宽为1。当S1S0为“00”时,A的数据从Y输出,S1S0为“01”时,B的数据从Y输出,S1S0为“10”时,C的数据从Y输出,S1S0为“11”时,D的数据从Y输出。
五、实验步骤
设计流程:
1、编辑和输入设计文件
(1)、新建一个文件夹
如D:\MUX41 ,本工程所有文件将存放在此目录中。
1)输入VHDL源程序
打开QuartusII,选择菜单File->New。选择Verilog HDL File,输入源程序。
2)文件存盘
选择File->Save As命令,找到已设立的文件夹D:\MUX41,存盘文件名应与实体名一致,存盘为MUX41.v。当出现语句“do you want to create?..”的对话框,选择“是”自动创建工程。这里先选择“否”,即暂时不创建工程流程。下一步手动创建工程。
(2)、创建工程
1)选择菜单File->New project Wizard命令,即弹出工程设置对话框。单击此对话框右侧的“?”进行设置,第一行的D:\MUX41表示工程所在的工作库文件夹,第二行的MUX41表示此项工程的工程名,第三行是当前工程顶层文件的实体名。
2)将设计文件MUX41.v添加入工程中。点“?”按钮,在弹出的对话框中选择MUX41.v文件。单击“Add”按钮。
3)选择目标芯片
器件选择Cyclone系列中的EP1C6Q240C8。也可以从主菜单Assignments的下拉菜单中点击 Device目标芯片设置窗口。
4)工具设置,此处不进行设置,点击Next
5)结束设置
列出了此工程相关设置情况,点击Finish按钮,出现project nevigator窗口,显示本工程项目的层次结构和各层次的实体名。
2、全程综合与编译
选择Processing->start compilation,等待一段时间,跳出对话框提示编译成功或有错误,并在信息栏显示错误信息。
3、仿真测试
1)打开波形编辑器
选择File->new,选择vector waveform file。
2)设定仿真时间区域
在Edit->end time,在弹出的窗口time栏处输入50,单位选“us”。
3)波形文件存盘,默认文件名为MUX41.vwf
4)将此工程MUX41的端口信号名选入波形编辑器中
View->utility windows项的Node Finder选项。点击“list”。
5)将端口信号名拖入波形编辑器中,拖完信号后可以关掉浮动窗口
6)按键盘上“CTRL+W”,显示全部仿真时间区域。
7)编辑输入波形(输入激励信号)
8) 仿真器参数设置
9)启动仿真器。提示是否保存,选择“是”,仿真成功后选“确定”。
10) 观察仿真结果
按键盘上“CTRL+W”,在全部仿真时间区域内观察波形,并分析波形图显示的逻辑功能是否正确
4、引脚锁定与硬件测试
打开MUX41命名的工程,应选择File的Open Project命令。选择Assignments->assingnment editor项。Category栏中选择locations,然后双击TO栏的《new》,选择Node Finder。在出现的对话框左边框中选择需要锁定的端口信号名,这些信号跳到右栏,单击OK按键后,这些信号名即进入信号编辑栏。接着在表框中分别键入需要锁定的端口引脚名。锁定引脚后,必须重新编译,启动Processing->Start Ccomplication,编译完成后可下载配置文件。
5、使用USB编程器下载配置文件
首先安装USB编程器的驱动程序。选择自己搜索驱动程序。备注:若没有正确安装驱动程序,USB Blaster 编程器不可选,这时必须到硬件设备管理器中删除打问号的USB驱动程序,重新正确安装。
6、配置文件下载
将编译产生的SOF格式配置文件配置进FPGA中。在MODE选择JTAG。编程器选择USB Blaster下载方式。
7、点击“start”将配置文件下载,然后进行硬件测试。
实验程序:
module MUX41a (A,B,C,D,S1,S0,Y);
input A,B,C,D,S1,S0;
output Y;
reg [1:0] SEL;设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件。
reg Y;
always @ (A,B,C,D,SEL) begin
SEL = {S1,S0};
if (SEL==0) Y = A;
else if (SEL==1) Y = B;
else if (SEL==2) Y = C;
else Y = D;
end
endmodule
功能仿真截图:
仿真时序波形图
管脚锁定截图
六、实验结果及分析
由4选1多路选择器的时序波形图可知,程序的功能符合设计要求。5E+系统演示时,分别按下或放开键K1、K2,蜂鸣器发出四种不同的声音。
七、心得体会
四选一多路选择器的设计是典型的组合电路模块。源程序Verilog描述由四部分组成。程序虽然简短,但是如果不认真输入就容易出错,得不到预期的实验结果,设置仿真信号的时候要注意选择信号的大小,选择不当蜂鸣器发出的声音就不正常。
实验一 2选1多路选择器1
篇三:设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件
本科学生综合性实验报告
学号 114090317 姓名 李明旭
学院 物电学院 专业、班级 11电子
实验课程名称 电子设计自动化(EDA实验)
教师及职称 罗永道 (副教授)
开课学期至学年学期
填报时间年月
云南师范大学教务处编印
1
2
4设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件。
实验一verilog门级建模
篇四:设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件
西 安 郵 電 學 院
verilog设计基础课内实验
报 告 书
系部名称 :
学生姓名 :
专业名称 :
班 级 :
学
时号 : 间 : 计算机系 常成娟 电子信息科学与技术 电科0603 22号 2006-9-11 至 2006-9-22
实验题目 门级建模
一、 实验内容
1、使用bufif0和bufif1设计一个二选一多路选择器; 2、在设计完成后,写出激励模块对其进行仿真 。
二、 详细设计
多路选择器,如下图所示:设计一个1位的二选一多路选择器,使用门级描述实现,使用逻辑表达式实现,使用if条件。
门b1和b2
路选择器。用s来控制输出。
三、 仿真结果
四、 调试情况,设计技巧及体会
通过本次实验我学会了从门级抽象的角度来设计电路,同时练习了所学的词法约定和语法结构、模块以及端口。学会自己独立使用verilog语言对实际硬件建模。并学会了如何设计激励,尽可能把在容易出现的错误找出来地方改变激励信号,在
五、 源程序清单
module mux2(out, in1, in0,s);
output out;
input in0,in1,s;
bufif0 #(1:2:3,3:4:5,5:6:7) b1(out,in0,s);
bufif1 #(1:2:3,3:4:5,5:6:7) b2(out,in1,s);
endmodule
module t_mux2;
reg IN1,IN0,S;
wire OUT;
mux2 s1(OUT,IN1,IN0,S);
initial
begin
IN0= 0;IN1= 1;S= 1;
#10 S= 0;
#10 S= 1;
IN0= 1;IN1= 0;S= 1;
#10 S= 0;
#10 S= 1;
end
initial
$monitor($time,"IN0= %b,IN1= %b,S= %b,OUT= %b\n",IN0,IN1,S,OUT);
endmodule