我刚开始 VHDL 编码,现在必须将 BCD 编码为 7 段解码器。我正在做一个行为设计(这是必需的),但现在我在如何编码显示时遇到了麻烦。
我知道如何只用一个输入和一个输出对这个解码器进行编码,但是我们有另一个名为 DIGEN_L 的输出用作我们的显示器。它是一个低电平有效总线输出,可启用我们板上 7 段显示器的每个数字。
他告诉我们只需将其编程为'01110,因此第四位数字始终打开,而其他三个数字关闭。
我不知道如何将 DIGEN_L 编码到我的代码中,也不知道上述语句的实际含义(代码方面)。任何人都可以帮忙吗?如果需要对此问题进行任何澄清,请发表评论,我将进行编辑。
这是我的代码:
library IEEE;
ise IEEE.std_logic_1164.all;
library unisim;
use unisim.vcomponents.all;
entity decoder is
port( BCD: in STD_LOGIC_VECTOR (3 downto 0);
( SEGS_L: out STD_LOGIC_VECTOR(5 downto 0);
( DIGEN_L: out STD_LOGIC_VECTOR(3 downto 0));
end decoder;
architecture decoder_arc of decoder is
begin
process(BCD)
begin
DIGEN_L <= "0111";
case BCD is
when "0000"=> SEGS_L <="1111110"; -- '0'
when "0001"=> SEGS_L <="0110000"; -- '1'
when "0010"=> SEGS_L <="1101101"; -- '2'
when "0011"=> SEGS_L <="1111001"; -- '3'
when "0100"=> SEGS_L <="0110011"; -- '4'
when "0101"=> SEGS_L <="1011011"; -- '5'
when "0110"=> SEGS_L <="1011111"; -- '6'
when "0111"=> SEGS_L <="1110000"; -- '7'
when "1000"=> SEGS_L <="1111111"; -- '8'
when "1001"=> SEGS_L <="1111011"; -- '9'
when others=> SEGS_L <="-";
end case;
end process;
end decoder_arc;