VHDL实验报告 四选一数据选择器的设计
- 格式:ppt
- 大小:393.50 KB
- 文档页数:11
实验名称:组合逻辑VHDL设计——数据选择器班级: 09电气2Z 学号: 09312213 姓名:钱雷一、4选1数据选择器的VHDL设计(低电使能端)1.实体框图2.程序设计①正确的程序library ieee;use ieee.std_logic_1164.all;entity mux41a isport(D3,D2,D1,D0,EN:in std_logic;A1,A0:in std_logic;y:out std_logic);end mux41a;architecture aaa of mux41a isbeginy<=D3 when A1='0' and A0='0' and EN='0' elseD2 when A1='0' and A0='1' and EN='0' elseD1 when A1='1' and A0='0' and EN='0' elseD0 when A1='1' and A0='1' and EN='0'else 'Z';end architecture aaa;3.仿真波形图4.仿真波形分析D0-D3是数据输入端,EN为使能端,低电平有效,S(A1和A0)是控制输入端,Y是数据输出端。
当A1、A0=‘11’时,D0数据被选中,输出Y=D0;当A1、A0=‘10’时,D1数据被选中,输出Y=D1,当A1、A0=‘01’时,D2数据被选中,输出Y=D2,当A1、A0=‘00’时,D3数据被选中,输出Y=D3。
二、8选1数据选择器的VHDL设计(低电使能端)1.实体框图2.程序设计①正确的程序library ieee;use ieee.std_logic_1164.all;entity mux81a isport(A0,A1,A2,D0,D1,D2,D3,D4,D5,D6,D7,EN:in std_logic;y:out std_logic);end mux81a;architecture bbb of mux81a issignal Q:std_logic_vector (2 downto 0);beginQ<=A2&A1&A0;y<=D0 when Q="000" and EN='0' elseD1 when Q="001" and EN='0' elseD2 when Q="010" and EN='0' elseD3 when Q="011" and EN='0' elseD4 when Q="100" and EN='0' elseD5 when Q="101" and EN='0' elseD6 when Q="110" and EN='0' elseD7 when Q="111" and EN='0'else 'Z';end architecture bbb;3.仿真波形图4.仿真波形分析D0-D7是数据输入端,EN为使能端,低电平有效,A2,A1,A0是控制输入端,Y是数据输出端。
4选1多路选择器VHDL语言设计在VHDL语言中设计一个4选1多路选择器主要涉及到以下几个方面:实体声明、端口声明、内部信号声明、内部结构设计、行为建模以及仿真测试。
下面是一个VHDL语言设计的参考模板,详细解释了每个步骤的实现方法。
1. 实体声明(Entity Declaration)```vhdlentity mux_4to1 isportA, B, C, D : in std_logic;S : in std_logic_vector(1 downto 0);CLK : in std_logic;Y : out std_logicend mux_4to1;```2. 端口声明(Port Declaration)端口声明定义了输入和输出端口的类型。
在这个例子中,输入和输出端口的类型都是标准逻辑类型。
```vhdlarchitecture behavioral of mux_4to1 issignal input_mux : std_logic_vector(3 downto 0);beginA <= input_mux(0);B <= input_mux(1);C <= input_mux(2);D <= input_mux(3);end behavioral;```3. 内部信号声明(Internal Signal Declaration)内部信号声明是为了辅助模块内的信号传输和处理。
在这个例子中,我们需要声明一个内部信号来保存选择信号S对应的多路选择器输入信号。
```vhdlarchitecture behavioral of mux_4to1 issignal input_mux : std_logic_vector(3 downto 0);signal mux_out : std_logic;beginA <= input_mux(0);B <= input_mux(1);C <= input_mux(2);D <= input_mux(3);end behavioral;```4. 内部结构设计(Internal Structure Design)内部结构设计定义了多路选择器的逻辑结构。
实验二 4选1数据选择器的设计实验二4选1数据选择器的设计实验二4选1数据选择器的设计实验学时:2学时实验类型:设计实验建议:必搞一、实验目的通过实验使学生掌控女团逻辑电路的eda原理图输出设计法,通过电路的仿真和硬件检验,使学生进一步介绍4挑选1数据选择器的功能。
二、实验原理数据选择器又叫“多路开关”。
数据选择器在地址码(或叫选择控制)电位的控制下,从几个数据输入中选择一个并将其送到一个公共的输出端。
数据选择器的功能类似一个多掷开关。
数据选择器为目前逻辑设计中应用十分广泛的逻辑部件,它有2选1、4选1、8选1、16选1等类别。
数据选择器的电路结构一般由于活门阵列而成,也有用传输门开关和门电路混合而成的。
图14挑选1数据选择器原理图图1是一个4选1数据选择器,d3―d0是数据输入端,s1和s0是控制输入端,y是4选1数据输出端。
三、实验内容设计并实现一个4选1数据选择器,要求根据原理图写出它的逻辑关系,并利用开发工具软件对其进行编译和仿真,最后通过实验开发系统对其进行硬件验证。
四、实验步骤1)在maxplus2的图形编辑方式下,从prim元件库中调出4选1数据选择器电路所需要的元件。
并按照图1所示的原理电路,完成4选1数据选择器原理图的输入设计。
3)在波形编辑方式下,编辑mux41.gdf的波形文件,并顺利完成输出信号d3,d2,d1和d0,掌控信号s1和s0电平的设置。
波形文件编辑完结后以mux41.scf为波形文件名计算机上安装。
继续执行仿真器simulator命令,仿真已经开始,观测仿真波形展开设计电路的功能检验。
五、实验结果1.4选1数据选择器的逻辑功能及真值表2.仿真波形。
EDA技术-VHDL-四选⼀数据选择器程序设计与仿真实验四选⼀数据选择器程序设计与仿真实验1 实验⽬的(1) 熟悉在QuartusⅡ软件平台上建⽴⼯作库⽂件和编辑设计⽂件的⽅法。
(2) 熟悉创建⼯程⽂件⽅法。
(3) 熟悉编译前设置和启动全程编译设置的⽅法。
(4) 熟悉波形编辑器的使⽤⽅法(5) 熟悉在QuartusⅡ软件平台上对设计进⾏仿真的操作全过程(6) 会⽤VHDL语⾔设计⼀个四选⼀数据选择器。
2 实验原理数据选择器⼜叫“多路开关”。
数据选择器在地址码(或叫选择控制)电位的控制下,从⼏个数据输⼊中选择⼀个并将其送到⼀个公共的输出端。
数据选择器的功能类似⼀个多掷开关,如图3.2.1所⽰,图中有四路数据a、b、c、d输⼊,通过选择控制信号 s1、s2(地址码)从四路数据中选中某⼀路数据送⾄输出端y。
逻辑功能如表3.2.1所⽰。
图3.2.1 四选1数据选择器⽰意图表3.2.1 四选⼀数据选择器逻辑功能表从表3.2.1中可知使能端en=1时,不论a~c输⼊状态如何,均⽆输出(y=1,因为所⽤器件的显⽰电路是共阳极),多路开关被禁⽌。
使能端en=0时,多路开关正常⼯作,根据地址码s2、s1的状态选择a~c输⼊信号中某⼀个通道的数据输送到输出端y。
3 实验内容(1) 建⽴⼀个四选⼀数据选择器的⽂件夹。
(2) 在定义好的VHDL模型中完成四选⼀数据选择器的描述,并创建⼯程。
(3) 设计完成后进⾏全程编译,检查源程序编写是否正确。
(4) 建⽴波形编辑⽂件并对输⼊波形进⾏编辑。
(5) 启动仿真器进⾏仿真,并分析仿真结果。
4 实验预习与思考(1) 进⼀步学习在QuartusⅡ软件平台上建⽴⼯作库⽂件和编辑设计⽂件的⽅法。
(2) 进⼀步学习建⽴波形编辑器⽂件编辑输⼊波形的⽅法。
(3) VHDL语⾔的结构体在整个程序中起什么作⽤。
5 VHDL仿真实验(1)新建⼀个⽂件夹。
本例中⽂件夹名为mux。
(2)输⼊源程序,打开计算机桌⾯上图标。
实验名称:组合逻辑VHDL设计——数据选择器班级: 09电气2Z 学号: 09312213 姓名:钱雷一、4选1数据选择器的VHDL设计(低电使能端)1.实体框图2.程序设计①正确的程序library ieee;use ieee.std_logic_1164.all;entity mux41a isport(D3,D2,D1,D0,EN:in std_logic;A1,A0:in std_logic;y:out std_logic);end mux41a;architecture aaa of mux41a isbeginy<=D3 when A1='0' and A0='0' and EN='0' elseD2 when A1='0' and A0='1' and EN='0' elseD1 when A1='1' and A0='0' and EN='0' elseD0 when A1='1' and A0='1' and EN='0'else 'Z';end architecture aaa;3.仿真波形图4.仿真波形分析D0-D3是数据输入端,EN为使能端,低电平有效,S(A1和A0)是控制输入端,Y是数据输出端。
当A1、A0=‘11’时,D0数据被选中,输出Y=D0;当A1、A0=‘10’时,D1数据被选中,输出Y=D1,当A1、A0=‘01’时,D2数据被选中,输出Y=D2,当A1、A0=‘00’时,D3数据被选中,输出Y=D3。
二、8选1数据选择器的VHDL设计(低电使能端)1.实体框图2.程序设计①正确的程序library ieee;use ieee.std_logic_1164.all;entity mux81a isport(A0,A1,A2,D0,D1,D2,D3,D4,D5,D6,D7,EN:in std_logic;y:out std_logic);end mux81a;architecture bbb of mux81a issignal Q:std_logic_vector (2 downto 0);beginQ<=A2&A1&A0;y<=D0 when Q="000" and EN='0' elseD1 when Q="001" and EN='0' elseD2 when Q="010" and EN='0' elseD3 when Q="011" and EN='0' elseD4 when Q="100" and EN='0' elseD5 when Q="101" and EN='0' elseD6 when Q="110" and EN='0' elseD7 when Q="111" and EN='0'else 'Z';end architecture bbb;3.仿真波形图4.仿真波形分析D0-D7是数据输入端,EN为使能端,低电平有效,A2,A1,A0是控制输入端,Y是数据输出端。
实验⼀四选⼀数据选择器的设计实验⼀四选⼀数据选择器的设计⼀、实验⽬的1、熟悉Quartus II软件的使⽤。
2、了解数据选择器的⼯作原理。
3、熟悉EDA开发的基本流程。
⼆、实验原理及内容实验原理数据选择器在实际中得到了⼴泛的应⽤,尤其是在通信中为了利⽤多路信号中的⼀路,可以采⽤数据选择器进⾏选择再对该路信号加以利⽤。
从多路输⼊信号中选择其中⼀路进⾏输出的电路称为数据选择器。
或:在地址信号控制下,从多路输⼊信息中选择其中的某⼀路信息作为输出的电路称为数据选择器。
数据选择器⼜叫多路选择器,简称MUX。
4选1数据选择器:(1)原理框图:如右图。
D0 、D1、D2、D3 :输⼊数据A1 、A0 :地址变量由地址码决定从4路输⼊中选择哪1路输出。
(2)真值表如下图:(3)逻辑图数据选择器的原理⽐较简单,⾸先必须设置⼀个选择标志信号,⽬的就是为了从多路信号中选择所需要的⼀路信号,选择标志信号的⼀种状态对应着⼀路信号。
在应⽤中,设置⼀定的选择标志信号状态即可得到相应的某⼀路信号。
这就是数据选择器的实现原理。
实验内容1、分别采⽤原理图和VHDL语⾔的形式设计4选1数据选择器2、对所涉及的电路进⾏编译及正确的仿真。
三、实验条件Quartus II实验环境四、实验与仿真原理图:D0 、D1、D2、D3 :输⼊数据A1 、A0 :地址变量由地址码决定从4路输⼊中选择哪1路输出。
(2)真值表如下图:仿真结果:St为功能端。
当st=1时y=0;当st=0时选择器才开始⼯作。
当a1a0=00时y=d0 a1a0=01时y=d1a1a0=10 时y=d2a1a0=11时y=d3完成了四选⼀的功能。
Vhdl编码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux4 isport(a0,a1,a2,a3:in std_logic;s:in std_logic_vector(1 downto 0);y:out std_logic);end mux4;architecture archmux of mux4 isbeginy<=a0 when s="00" elsea1 when s="01" elsea2 when s="10" elsea3;end archmux;仿真:当s=0时y=a1;当s=1时y=a1;当s=2时y=a2;当s=3时y=a3 。
课程: 数字逻辑与数字系统VHDL语言设计四选一选择器实验报告系:电子信息与计算机科学系专业:自动化班级:文自112—2班姓名:桑*超学号: 2011905192**指导教师:徐红霞学年学期:2012-2013学年(第一学期)2012年12月15日姓名: 桑*超班级: 文自112-2班学号: 2011905192** 试验: VHDL语言设计日期:2012.12.15 指导老师: 徐洪霞一、实验报告的名称: VHDL语言设计二、本次实验的目的:1.掌握VHDL 语言的设计技巧2.用VHDL语言设计四选一选择器三、设计过程:1.工程编译源:用VHDL语言编程。
2.功能仿真:将功能编译后的结果进行仿真。
3.引脚锁定:将个信号按要求分配到相应引脚.4.物理实现:将结果下载到所悬着的器件中四、写出源程序,画出防真波形图.library ieee;use ieee.std_logic_1164.all;entity mux4_1 isport( a,b,c,d : in std_logic;s : in std_logic_vector(1 downto 0);z : out std_logic );end mux4_1;architecture one of mux4_1 isbeginprocess(s,a,b,c,d)begincase s iswhen "00"=>z<=a;when "01"=>z<=b;when "10"=>z<=c;when "11"=>z<=d;when others =>z<=null;end case;end process;end one ;波形仿真图:五、实验总结,主要包括实验中所犯错误,怎样改正等1.在文件名必须与VHDL文件中的设计实体名保持一致。
VHDL双四选⼀设计本双四选⼀数据选择器使⽤到了四选⼀数据选择器、译码器。
以下为VHDL双四选⼀数据选择器描述:library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity smux41 isPort (sa,sb,sele:instd_logic;d00: in std_logic_vector(7 downto 0);d01: in std_logic_vector(7 downto 0);d02: in std_logic_vector(7 downto 0);d03: in std_logic_vector(7 downto 0);d10: in std_logic_vector(7 downto 0);d11: in std_logic_vector(7 downto 0);d12: in std_logic_vector(7 downto 0);d13: in std_logic_vector(7 downto 0);clk: in std_logic;y1: out std_logic_vector(7 downto 0);y2: out std_logic_vector(7 downto 0));end smux41;architecturestruct of smux41 is-- components-- 8 bit mux41 for smux41component mux_41port (s1,s0,sel:instd_logic;d0,d1,d2,d3:instd_logic_vector(7 downto 0);y: out std_logic_vector(7 downto 0));end component;-- 1 to 2 Decodercomponent decoder_1_to_2port(sel: in std_logic;sel0,sel1: out std_logic);end component;signal sel0 ,sel1: std_logic;begin-- decoderdes_decoder: decoder_1_to_2 port map (sel =>sele,sel0 =>sel0 ,sel1 => sel1);mux1: mux_41 PORT MAP(d0 =>d00 ,d1 =>d01 ,d2 =>d02 ,d3 =>d03 ,s0 =>sa,s1 =>sb,sel => sel0 ,y =>y1);mux2: mux_41 PORT MAP(d0 =>d10 ,d1 =>d11 ,d2 =>d12 ,d3 =>d13 ,s0 =>sa,s1 =>sb,sel => sel1 ,y => y2);endstruct;以下是VHDL四选⼀数据选择器描述:libraryieee; use ieee.std_logic_1164.all;entity mux_41 isport (s1,s0,sel:in std_logic;d0,d1,d2,d3:instd_logic_vector(7 downto 0); y: out std_logic_vector(7 downto 0)); end mux_41;architecturebehav of mux_41 issignal s: std_logic_vector (1 downto 0);begins<=s1&s0;process(s)beginif (sel='1' and s="00") theny<=d0;elsif(sel='1' and s="01" )theny<=d1;elsif(sel='1' and s="10" )theny<=d2;elsif(sel='1' and s="11" )theny<=d3;end if;end process;endbehav;以下为VHDL译码器描述:libraryieee;use ieee.std_logic_1164.all;entity decoder_1_to_2 isport (sel:instd_logic;sel0,sel1:outstd_logic );end decoder_1_to_2;architecture one of decoder_1_to_2 is beginprocess(sel)beginif (sel='0') thensel0<='1';elsif(sel='1')thensel1<='1';end if;if (sel='0') thensel1<='0';elsif(sel='1')then sel0<='0';end if;end process; end one;。
班级:2009211411 学号:09211999 姓名:陈东东四选一数据选择器1.实验目的:利用数据选择器的原理,即在地址选择信号的控制下从输入的四路数据中选择一路数据作为输出。
2.实验内容和实验原理:四选一数据选择器有4条输入数据线,2条地址选择线和一条数据输出线,通过控制2条地址选择线实现数据输出线从4条输入线中选择一条输出。
3.试验程序:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY MUX4 ISPORT(D0:IN std_logic;D1:IN std_logic;D2:IN std_logic;D3:IN std_logic;S0:IN std_logic;S1:IN std_logic;Q :OUT std_logic);END mux4;ARCHITECTURE RTL OF mux4 ISBEGINPROCESS(D0,D1,D2,D3,S0,S1)BEGINIF(S1='0' AND S0='0')THENQ<=D0;ELSIF(S1='0' AND S0='1')THENQ<=D1;ELSIF(S1='1' AND S0='0')THENQ<=D2;ELSIF(S1='1' AND S0='1')THENQ<=D3;ELSEQ<='Z';END IF;END PROCESS;END RTL;4.波形仿真:S1和S0表示地址选择线,D3,D2,D1,D0表示输入数据线,Q表示输出数据线。
5.试验中遇到的问题及解决方法:实验较为简单,无问题。
组合逻辑电路之加法器设计1.实验目的:利用计算机组成原理中介绍的修正函数,编程实现一个任意位进位的1位BCD码加法器。
实验报告学院:电气工程学院专业:电子信息工程班级:姓名学号实验时间指导教师实验项目名称四选一多路选择器实验组成绩实1.学习组合逻辑电路、编码器的功能与定义,学习 Verilog 和VHDL语言验 2 .熟悉利用 Quartus II 开发数字电路的基本流程和 Quartus II 软件的相关目操作的 3 .学会使用 Vector Wave 波形仿真实验按照老师的要求完成实验,编写实验报告要求选择器常用于数字 4 路信号的切换。
实四选一选择器有 4 个输入端 input0、1、2、 3. 两个信号控制端 a,b 及一个信验号输出端 y。
当 a,b input0-input3中的原一个输入信号与输出 y 端口接通。
用拨码开关作四位数据及两位控制端的输理LED s1 和 s0LED 与数据输入端 a,b,c,d 4 选一数据选择器设计的正确性。
实验软件: Altera Quartus II 9.0集成开发环境。
仪器1. 选择“开始”→“所有程序”→“Altera ”→“ Quartus II 9.0 ” →“Quartus II 9.0 (32bit )”,启动软件。
2.选择“ File ” →“ New Project Wizard ”,出现“ Introduction ”页实验步骤实验内容面,如图所示,该页面介绍所要完成的具体任务。
3.单击“ Next ”按钮,进入工程名称的设定、工作目录的选择。
4.在对话框中第一行选择工程路径;第二行输入工程名,第三行输入顶层文件的实体名6.新建设计文件,选择“File|New ”,在New对话框中选择 Device Design Files 下的 Verilog File ,单击 OK,完成新建设计文件。
7.在新建设计文件中输入 Verilog 程序 .8.结果仿真编写四选一电路的VHDL代码并仿真,编译下载验证一:实验程序:LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT( input: IN STD_LOGIC_VECTOR (3 DOWNTO 0);实sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0);y: OUT STD_LOGIC);验END mux4 ;数ARCHITECTURE rtl OF mux4 ISBEGIN据PROCESS (input , sel)BEGINIF (sel= “ 00” ) THENy<= input ( 0);ELSIF ( sel=“01”) THENy<= input ( 1);ELSIF ( sel=“10”) THENy<= input ( 2);ELSEy<= input ( 3);END IF;END PROCESS;END rtl;二:程序运行图:三:波形图:实本次实验学习了组合逻辑电路、编码器的功能与定义,学习了Verilog 和VHDL语言,同时熟悉了利用 Quartus II 开发数字电路的基本流程和Quartus II 软件的相关操作,学会了使用Vector Wave波形仿真。
实验三、VHDL数据选择器的设计一、实验目的通过VHDL语言设计4选1数据选择器,掌握4选1数据选择器的设计方案;掌握软件工具的使用方法,并设计8选1数据选择器的VHDL语言。
二、实验原理图1为4选1数据选择器管脚图。
当S=0时工作,S=1时禁止工作。
A0与A1为4选1数据选择器的控制信号。
图 1 4选1数据选择器管脚图图2为8选1数据选择器管脚图。
当S=0时工作,S=1时禁止工作。
A0与A1,A2为8选1数据选择器的控制信号。
图 2 8选1数据选择器管脚图三、实验内容1.用VHDL语言设计4选1数据选择器,进行编译、波形仿真及器件的编程。
代码一详见附录。
MAX+plusII功能仿真图如下图3 4选1数据选择器功能仿真图2.用VHDL语言设计8选1数据选择器进行编译、波形仿真及器件的编程。
代码二详见附录。
MAX+plusII功能仿真图如下图4 8选1数据选择器功能仿真图四、实验心得在实验中通过4选1数据选择器VHDL语言结合4选1数据选择器工作原理。
对4选1数据选择器VHDL语言进行修改成8选1数据选择器VHDL语言。
将VHDL 语言中控制信号增加A2,对CASE代码中输入输出信号进行相对应的修改。
本次实验同时学会了对单独输入信号的设置。
以及使用软件生成器件管脚图。
附录代码一4选1数据选择器VHDL语言library ieee;use ieee.std_logic_1164.all;entity sxy isport(d0,d1,d2,d3,a0,a1,s:in std_logic;y:out std_logic);end sxy;architecture zhang of sxy issignal a:std_logic_vector (1 downto 0);beginprocess (a0,a1)begina<=a1&a0;if(s='0') thencase a iswhen"00"=>y<=d0;when"01"=>y<=d1;when"10"=>y<=d2;when others=>y<=d3;end case;end if;end process;end zhang;代码二8选1数据选择器VHDL语言library ieee;use ieee.std_logic_1164.all;entity sxy isport(d0,d1,d2,d3,d4,d5,d6,d7,a0,a1,a2,s:in std_logic;y:out std_logic);end sxy;architecture zhang of sxy issignal a:std_logic_vector (2 downto 0);beginprocess (a0,a1,a2) begina<=a2&a1&a0;if(s='0') thencase a is when"000"=>y<=d0; when"001"=>y<=d1; when"010"=>y<=d2; when"011"=>y<=d3; when"100"=>y<=d4; when"101"=>y<=d5; when"110"=>y<=d6; when others=>y<=d7; end case;end if;end process;end zhang;。
VHDL实验报告学院: 理学院专业:电子信息科学与技术班级:电科091END IF;END PROCESS; PROCESS进程语句结束END ARCHITECTURE rtl;1.实验源程序如下:实验步骤与数据82. 创建文件夹,保存文件。
3.选择芯片为‘EP1C6Q240C8’。
4. 完成设置,显示文件信息。
从显示中我们看到项目和实体名为:MUX4A1,其中只有一个文件,芯片为Cyclone系列的EP1C6Q240C8。
5.运行通过6.运行后的RTL视图7.波形分析(1)添加文件和引脚。
(2)设置输入信号。
可以对输入进行设置.结果分析:①当b='0',a='0'时候,选择出input(0),②当b='0',a='1',时候,选择出input(1)③当b='1',a='0'时候,选择出input(2),④当b='1',a='1'时候,选择出input(3),符合程序结果8.配置引脚⑴选择“Assignments”菜单的“Pins”命令,打开引脚编辑窗口。
四选一数据选择器的引脚分配如下:(2)在设置完引脚后,再次对程序进行编译。
这样就把程序与FPGA的引脚联系起来,这样才能将程序下载到FPGA 开发系统中进行运行仿真。
下载到FPGA中,并验证程序的运行结果。
(3)配置硬件驱动为“ByteBlassterMV[LPT1]”,然后“start”下载,到下载为100%即可完成和对程序进行试验。
9.实验结果。
4选1多路选择器实验报告
一、实验目的
熟悉Quartus II的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
二、实验原理
选择控制的信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=‘0’,s0=‘0’;s1=‘0’,s0=‘1’;s1=‘1’,s0=‘0’和s1=‘1’,s0=‘1’时分别执行y<=a、y<=b、y<=c、y<=d。
三、实验任务
利用Quartus II完成4选1多路选择器的VHDL程序(分别用IF_THEN语句和CASE语句的表达方式)和仿真测试等步骤,给出仿真波形。
四、实验步骤
1、创建工程:运行Quartus Ⅱ软件,执行File=>New Project Wizard 命令,建立工程。
2、编辑VHDL文件:执行File => New 命令,弹出新建文件对话框,选择“VHDL File ”。
(1)用CASE语句的表达方式编写的VHDL程序及其仿真波形
①VHDL程序
②模拟仿真,得到仿真波形,如下图
(2)、用IF_THEN语句的表达方式编写的VHDL程序及其仿真波形
①VHDL程序
②模拟仿真,得到仿真波形,如下图
3、功能真值表
五、实验小结
通过四选一选择器的设计,使我们对CPLD设计过程有了初步的了解,并且基本熟悉掌握了CPLD设计过程。
四选一数据选择器11微电子黄跃1117426021【实验目的】1.四选一数据选择器,2.学习Verilog HDL文本文件进行逻辑设计输入;3.学习设计仿真工具modelsim的使用方法;【实验内容】1. 实现四选一数据选择器的“Verilog ”语言设计。
2. 设计仿真文件,进行验证。
【实验原理】数据选择器又称为多路转换器或多路开关,它是数字系统中常用的一种典型电路。
其主要功能是从多路数据中选择其中一路信号发送出去。
所以它是一个多输入、单输出的组合逻辑电路。
4选1数据选择器的元件符号如图一所示,其中D0、D1、D2、D3是4位数据输入端,A0和A0是控制输入端,Y是数据输出端。
当A1A0=00时,输出Y=D1;A1A0=01时,Y=D1;A1A0=10时,Y=D2;A1A0=11,Y=D3。
A1 A0 D Y0 0 D00 1 D11 0 D2 1 1 D3 D0 D1 D2 D3图一4选1数据选择器的元件符号由真值表写出输出逻辑表达式 301201101001)()()()(D A A D A A D A A D A A F+++=由逻辑表达式做出逻辑电路图。
【程序源代码】module mux4_1(sel,in,out); input [1:0] sel; input [3:0] in; output out; reg out;always@(sel or in) begin case ({sel[1],sel[0]}) 2'b00: out=in[0]; 2'b01: out=in[1]; 2'b10: out=in[2]; 2'b11: out=in[3]; default: out=1'bx; endcase end图 二 4选1数据选择器原理图Endmodule测试程序代码如下:module test_mux4_1;reg [1:0] S;reg [3:0] IN;wire Y;mux4_1 M1(.sel(S),.in(IN),.out(Y));always #10 IN[0]=~IN[0];always #20 IN[1]=~IN[1];always #40 IN[2]=~IN[2];always #80 IN[3]=~IN[3];initialbegin S=1'b0;IN=4'h0;#100 $stop;endalways #10 S=S+1;endmodule【仿真和测试结果】【实验心得和体会】这次实验与上次相比有明显的进步,通过这次实验我对modelsim的应用更加得心应手,深切的体会到了verilog是一种描述性语言,这次实验总的来说是比较顺利的,但在实验过程中还是遇到了一些问题,比如端口的匹配问题,在写程序的时候误将位宽写在了变量名的后面,虽然程序能够运行但有警告,仿真波形是错误的,可见在写程序时警告有时也是致命的,这要求我们在学习的过程中思想一定要严谨!其次在做实验时一定要多想,例如在学习这门课时,书上说在模块外部输入可以是wire型或reg型,但在写程序时激励模块往往要初始化数据,所以编程时其类型往往声明为reg型,通过这个例子我明白了书上所说的有时往往是一个比较笼统的,而更多的需要我们自己去实践、探索、勤思考,只有这样我们才能把书本上的知识转化为属于我们自己的知识,才能在学习的道路上走的更远!。
4选1多路选择器的VHDL描述要求:THEN语句和CASE语句实现4选1多路选择器,其中选择控制信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=‟0‟,s0=‟0‟;s1=‟0‟,s0=‟1‟;s1=‟1‟,s0=‟0‟和s1=‟1‟,s0=‟1‟时,分别执行y<=a、y<=b、y<=c、y<=d。
一、解法1:用IF_THEN语句实现4选1多路选择器(1)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (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 ISSIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据BEGINs0s1<=s1&s0; --s1相并s0,即s1与s0并置操作PROCESS(s0s1,a,b,c,d)BEGINIF 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;(2)编译的结果如下:编译报告:二、解法2:用CASE语句实现4选1多路选择器(1)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (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 ISSIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据类型BEGINs0s1<=s1&s0; --s1相并s0,即s1与s0并置操作PROCESS(s0s1,a,b,c,d)BEGINCASE s0s1 IS --类似于真值表的case语句WHEN "00" => y <= a;WHEN "01" => y <= b;WHEN "10" => y <= c;WHEN "11" => y <= d;WHEN OTHERS =>NULL ;END CASE;END PROCESS;END case_mux41;(2)编译结果:编译报告:。