Добавить вход сброса / сброса в оператор выбора в VHDL - PullRequest
0 голосов
/ 04 декабря 2018

Я надеюсь получить некоторую помощь о том, как добавить к этому коду вход сброса или сброса, поэтому в любое время, когда вход clr ​​равен 1, тогда the_output_S сбрасывается на 0000.Этот код прекрасно работает для запуска таблицы истинности, которая мне нужна, но я не могу понять, какой-либо ясный ввод, который работает должным образом.Я пытался добавить с помощью clr_S select the_output_S <= "0000", когда 1, the_output_S, когда 0, XXXX, когда другие;Я просто не уверен, как указать на мою таблицу истинности, когда clr равен '0'.Любые предложения о том, как добавить это будет оценено.Спасибо

library IEEE;

    use IEEE.std_logic_1164.all;
    use IEEE.std_logic_arith.all;
    use IEEE.std_logic_unsigned.all;

Entity Design_Proj_8K is
port(
    --clr : in std_logic;

    INA : in std_logic;
    INB : in std_logic;
    INC : in std_logic;
    IND : in std_logic;
    INE : in std_logic);

end Design_Proj_8K;

 architecture Behaviroal of Design_Proj_8K is

 signal the_input_S: std_logic_vector (4 downto 0);
 signal the_output_S: std_logic_vector (3 downto 0);
 --signal clr_S: std_logic;

begin

--clr_S <= clr;

the_input_S <= INA & INB & INC & IND & INE;

with the_input_S select
                    the_output_S <= 
                    "0000" when "00000",
                    "0000" when "00001",
                    "0000" when "00010",
                    "0001" when "00011",
                    "0001" when "00100",
                    "0001" when "00101",
                    "0010" when "00110",
                    "0010" when "00111",
                    "0010" when "01000",
                    "0011" when "01001",
                    "0011" when "01010",
                    "0011" when "01011",
                    "0100" when "01100",
                    "0100" when "01101",
                    "0100" when "01110",
                    "0101" when "01111",
                    "0101" when "10000",
                    "0101" when "10001",
                    "0110" when "10010",
                    "0110" when "10011",
                    "0110" when "10100",
                    "0111" when "10101",
                    "0111" when "10110",
                    "0111" when "10111",
                    "1000" when "11000",
                    "1000" when "11001",
                    "1000" when "11010",
                    "1001" when "11011",
                    "XXXX" when others;


end Behaviroal; 

1 Ответ

0 голосов
/ 04 декабря 2018

Один из способов - сделать результат внутренним значением, а затем использовать clr, чтобы переопределить его перед выводом окончательного значения, например:

...
signal the_output_S_pre : std_logic_vector (3 downto 0);
signal the_output_S     : std_logic_vector (3 downto 0);
...

with the_input_S select
  the_output_S_pre <=
  ...

the_output_S <= the_output_S_pre when (clr = '0') else "0000";

...
...