资源描述
精品文档
实验七 4选1多路选择器设计实验
一、 实验目的
进一步熟悉QuartusII的VHDL文本设计流程、组合电路的设计仿真和测试。
二、 实验原理
四选一多路选择器设计时,试分别用IF_THEN语句、WHEN_ELSE和CASE语句的表达方式写出此电路的VHDL程序,要求选择控制信号s1和s2的数据类型为STD_LOGIC;当s1=‘0’,s0=‘0’;s1=‘0’,s0=‘1’;s1=‘1’,s0=‘0’和s1=‘1’,s0=‘1’时,分别执行y<=a、y<=b、y<=c、y<=d。
三、程序设计
其示意框图如下:
其中输入数据端口为a、b、c、d,s1、s2为控制信号,Y为输出。
令s0s1=“00”时,输出y=a;
令s0s1=“01”时,输出y=b;
令s0s1=“10”时,输出y=c;
令s0s1=“11’ 时,输出y=d;
4 选 1
数 据 选 择 器
a
输入 b y
数据 c
d
s0 s1
真值表如下:
输入
输出
x s0 s1
y
a 0 0
a
b 0 1
b
c 1 0
c
d 1 1
d
四、 VHDL仿真实验
(1)用IF_THEN语句设计4选1多路选择器
1.建立文件夹D:\alteral\EDAzuoye\if_mux41,启动QuartusII软件工作平台,打开并建立新工程管理窗口,完成创建工程。
图1 利用New Project Wizard创建工程mux41
2.打开文本编辑。NEW→VHDL File→相应的输入源程序代码→存盘为mux41.vhd.。
图2 选择编辑文件类型
源程序代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux41 IS
PORT(a,b,c,d:IN STD_LOGIC;
s0: IN STD_LOGIC;
s1: IN STD_LOGIC;
y: OUT STD_LOGIC);
END ENTITY mux41;
ARCHITECTURE if_mux41 OF mux41 IS
SIGNAL s0s1:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
s0s1<=s0&s1;
PROCESS(s0s1,a,b,c,d)
BEGIN
IF s0s1="00" THEN y<=a;
ELSIF s0s1="01" THEN y<=b;
ELSIF s0s1="10" THEN y<=c;
ELSE y<=d;
END IF;
END PROCESS;
END ARCHITECTURE if_mux41;
3.综合运行,检查设计是否正确。
图3 全程编译无错后的报告信息
4.生成symbol。
图4 生成symbol
5.建立波形编辑文件进行功能仿真,仿真结果如下图所示。
图5 设置时钟CLK的周期
图6 仿真波形输出报告
从上图时序仿真可以看出:
s0s1=“00”时,输出y=a;
s0s1=“01”时,输出y=b;
s0s1=“10”时,输出y=c;
s0s1=“11’ 时,输出y=d;
6.查看RTL电路。选择Tools->Netlist Viewers->RTL Viewers命令,即HDL的RTL级图形观测器,选择好后即自动弹出计数器设计的RTL电路,如下图:
图7 RTL电路图
(2)用WHEN_ELSE语句设计4选1多路选择器
1.建立文件夹D:\alteral\EDAzuoye\when_mux41,启动QuartusII软件工作平台,打开并建立新工程管理窗口,完成创建工程。
图1 利用New Project Wizard创建工程mux41
2.打开文本编辑。NEW→VHDL File→相应的输入源程序代码→存盘为mux41.vhd.。
图2 选择编辑文件类型
源程序代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux41 IS
PORT(a,b,c,d:IN STD_LOGIC;
s0: IN STD_LOGIC;
s1: IN STD_LOGIC;
y: OUT STD_LOGIC);
END ENTITY mux41;
ARCHITECTURE when_mux41 OF mux41 IS
SIGNAL s:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
s<=s0&s1;
y<=a WHEN s="00" ELSE
b WHEN s="01" ELSE
c WHEN s="10" ELSE
d WHEN s="11" ELSE
'0';
END when_mux41;
3.综合运行,检查设计是否正确。
图3 全程编译无错后的报告信息
4.生成symbol。
图4 生成symbol
5.建立波形编辑文件进行功能仿真,仿真结果如下图所示。
图5 设置时钟CLK的周期
图6 仿真波形输出报告
从上图时序仿真可以看出:
s0s1=“00”时,输出y=a;
s0s1=“01”时,输出y=b;
s0s1=“10”时,输出y=c;
s0s1=“11’ 时,输出y=d;
6.查看RTL电路。选择Tools->Netlist Viewers->RTL Viewers命令,即HDL的RTL级图形观测器,选择好后即自动弹出计数器设计的RTL电路,如下图:
图7 RTL电路图
(3)用CASE语句设计4选1多路选择器
1.建立文件夹D:\alteral\EDAzuoye\case_mux41,启动QuartusII软件工作平台,打开并建立新工程管理窗口,完成创建工程。
图1 利用New Project Wizard创建工程mux41
2.打开文本编辑。NEW→VHDL File→相应的输入源程序代码→存盘为mux41.vhd.。
图2 选择编辑文件类型
源程序代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux41 IS
PORT(a,b,c,d:IN STD_LOGIC;
s0: IN STD_LOGIC;
s1: IN STD_LOGIC;
y: OUT STD_LOGIC);
END ENTITY mux41;
ARCHITECTURE case_mux41 OF mux41 IS
SIGNAL s0s1:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
s0s1<=s0&s1;
PROCESS(s0s1,a,b,c,d) BEGIN
CASE s0s1 IS
WHEN"00"=>y<=a;
WHEN"01"=>y<=b;
WHEN"10"=>y<=c;
WHEN"11"=>y<=d;
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END ARCHITECTURE case_mux41;
3.综合运行,检查设计是否正确。
图3 全程编译无错后的报告信息
4.生成symbol。
图4 生成symbol
5.建立波形编辑文件进行功能仿真,仿真结果如下图所示。
图5 设置时钟CLK的周期
图6 仿真波形输出报告
从上图时序仿真可以看出:
s0s1=“00”时,输出y=a;
s0s1=“01”时,输出y=b;
s0s1=“10”时,输出y=c;
s0s1=“11’ 时,输出y=d;
6.查看RTL电路。选择Tools->Netlist Viewers->RTL Viewers命令,即HDL的RTL级图形观测器,选择好后即自动弹出计数器设计的RTL电路,如下图:
图7 RTL电路图
精品文档
展开阅读全文