VHDL コーディングを始めたばかりで、現在 BCD を 7 セグメント デコーダにコーディングする必要があります。私は動作設計を行っています (必須です) が、現在、ディスプレイのコーディング方法に問題があります。
このデコーダーを 1 つの入力と 1 つの出力だけでコーディングする方法は知っていますが、ディスプレイとして使用される DIGEN_L という 2 番目の出力があります。これは、ボード上の 7 セグメント ディスプレイの各桁を有効にするアクティブ ロー バス出力です。
彼は '01110 にプログラムするだけで、4 桁目が常にオンになり、他の 3 桁がオフになるように指示されました。
コードに 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;