四选一选择器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验课程名称VHDL 四选一选择器

年级电技 111 专业电子科学与技术

学生姓名周伦稳

学号 1107010086

2013年12月

4选1数据选择器

1·设计背景和设计方案 1·1设计背景

该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。

1·2设计方案

用拨码开关作四位数据及两位控制端的输入,LED 作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED 与数据输入端a,b,c,d 的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。

其逻辑电路图如下:

>11

1

3

&

2

1

1

D

D D D A

A Y

其示意框图如下:

其中输入数据端口为D0、D1、D2、D3,A 、A ’为控制信号,Y 为输出。 令AA ’=“00”时,输出Y=D0;

令AA ’=“01”时,输出Y=D1; 令AA ’=“10”时,输出Y=D2; 令AA ’=“11’ 时,输出Y=D3;

D0

输入 D 1 Y

数据 D 2

D 3

A A ′

真值表如下:

输入

输出 D A1 A0 Y D0 0 0

D0 D1 0 1 D1 D2 1 0 D2 D3 1 1 D3

2·方案实施 1)程序1

2·1·1 设计思路

4 选 1

数 据 选 择 器

四选一多路选择器设计时,定义输入S为标准以内漏记为STD_LOGIC,输出的信号Z的数据类型定义为2位标准逻辑矢量位STD_LOGIC_VECTOR( 1 DOWNTO 0 ).使用LIBRATY语句和USE语句,来打开IEEE库的程序包STD_LOGIC_1164.ALL。当输入信号时,程序按照输入的指令来选择输出,例如输入信号为“00”时,将a的值给z,进而输出z的值,输入信号为“11”是,将a的值给z,进而输出z的值。若输入信号是已经定义的四个信号之外的值时(即当IF条件语句不满足时),输出值为x,并将x的值给输出信号z。这样即可实现四选一数据选择的功能。

2·1·2

程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY mux41 is

PORT (a,b,c,d :IN STD_LOGIC;

s :IN STD_LOGIC_VECTOR(1 DOWNTO 0);

z : OUT STD_LOGIC);

END mux41;

ARCHITECTURE one OF mux41 IS

BEGIN

PROCESS( s,a,b,c,d)

BEGIN

CASE s IS

WHEN "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;

2·1·3

运行结果

当输入信号“00”时,输出信号z的值为‘a’;

当输入信号“01”时,输出信号z的值为‘b’;

当输入信号“10”时,输出信号z的值为‘c’;

当输入信号“11”时,输出信号z的值为‘d’;

2·1·4

波形仿真及描述

输入:

a 的波形周期为10ns,b的波形周期为5ns,c的波形周期为15ns,d的波形周期为8ns。s[1]的波形周期为5ns,s[2]的波形周期为10ns。

输出:

2)程序2

2·2·1

设计思路

定义6个输入信号,一个输出信号,当控制信号A=‘1’时,muxval的值加1,即muxval=muxval+1;当控制信号B=‘1’时muxval的值加2,即muxval=muxval+2。当输入值为‘i0’时,输出q的值为0,当输入的值为‘i1’时,输出q的值为1,当输入值为‘i2’时,输出q的值为2,当输入值为‘i3’时,输出q的值为3。

2·2·2程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY mux41 IS

PORT ( i0,i1,i2,i3,a,b : IN STD_LOGIC;

q : OUT STD_LOGIC );

ENS mux4;

ARCHITECTURE b_mux4 OF mux4 IS BEGIN

Process ( i0,i1,i2,i3,a,b )

Variable muxval : integer rang 7 downto 0; Begin

muxval :=0;

if ( a = '1' ) then muxval : muxval + 1; end if; if ( b = '1' ) then muxval : muxval + 2; end if; case muxval is

when 0 = > q < = i0;

when 1 = > q < = i1;

when 2 = > q < = i2;

when 3 = > q < = i3;

When others = > null;

end case;

end process;

END b_mux4;

2·2·3

运行结果

当输入信号“00”时,输出信号z的值为‘i0’; 当输入信号“01”时,输出信号z的值为‘i1’; 当输入信号“10”时,输出信号z的值为‘i2’;

相关文档
最新文档