3-8译码器的VHDL设计

3-8译码器的VHDL设计 1.实体框图

2.程序设计

正确的程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY DECODER38A IS

PORT(A2,A1,A0,S1,S2,S3:IN STD_LOGIC; Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY DECODER38A;

ARCHITECTURE ONE OF DECODER38A IS SIGNAL S: STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN

S<=A2&A1&A0&S1&S2&S3; WITH S SELECT

Y<=\ \ \ \ \ \ \

\ \END ARCHITECTURE ONE; 3.仿真波形图

4.仿真波形分析

当S1 S2 S3=100时,只有当A2 A1 A0=111时,Y[7]才输出低电平,否则为高电平,当A2 A1 A0=110时,Y[6]才输出低电平,否则为高电平,当A2 A1 A0=101时,Y[5]才输出低电平,否则为高电平,Y[4]到Y[0]同理。可见该程序设计的是3-8译码器

三、共阳极数码管七段显示译码器的VHDL设计 1.实体框图

2.程序设计

正确的程序 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY DISPLAY_DECODER IS PORT(A3,A2,A1,A0:IN STD_LOGIC;

Y:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY DISPLAY_DECODER;

ARCHITECTURE ONE OF DISPLAY_DECODER IS SIGNAL S: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

S<=A3&A2&A1&A0; WITH S SELECT

Y<=\ \ \ \ \ \ \ \ \ \ \END ARCHITECTURE ONE; 3.仿真波形图

4.仿真波形分析

由图可知,当A3 A2 A1 A0=0000时,输出Y[6]到Y[0]对应为1111110,即只有g不亮,数码管显示为0,

A3 A2 A1 A0=0001时,输出对应为0110000,数码管显示为1, A3 A2 A1 A0=0010时,输出对应为1101101,数码管显示为2, 其他同理,当A3 A2 A1 A0>1001,即大于9,数码管无显示。 由此可知,程序设计的是七段显示译码管。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COMPARE4 IS ——四位比较器

PORT(IA_MORE_THAN_B:IN STD_LOGIC; ——高位比较的标志位的输入

IB_MORE_THAN_A:IN STD_LOGIC;

IA_EQUAL_B:IN STD_LOGIC;

A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);——两个输入

B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

OA_MORE_THAN_B:OUT STD_LOGIC;

OB_MORE_THAN_A:OUT STD_LOGIC;

OA_EQUAL_B:OUT STD_LOGIC);

END COMPARE4;

ARCHITECTURE BEHAV OF COMPARE4 IS

BEGIN

PROCESS(IB_MORE_THAN_A, IA_EQUAL_B,IA_EQUAL_B)

BEGIN

IF(IA_EQUAL_B='1')THEN

——从最高位比较,如果高位大则停止比较输出结果,否则进行下一位比较

IF(A(3)>B(3))THEN

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(3)

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='1';OA_EQUAL_B<='0';

ELSIF(A(2)>B(2))THEN

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(2)

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='1';OA_EQUAL_B<='0';

ELSIF(A(1)>B(1))THEN

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(1)

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4