0

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;
4

2 に答える 2