Суммированный вопрос внизу.
Я анализирую и изучаю существующий код VHDL.
В этом коде port reset_i был инициализирован как 'X' , как вы можете видеть в приведенном ниже коде.
entity ADC_fsm is
Port ( clk_i : in std_logic := 'X';
reset_i : in std_logic := 'X';
di_req_i : in std_logic := 'X';
wr_ack_i : in std_logic := 'X';
spi_ssel_i : in std_logic := 'X';
reg_enable_i : in std_logic := 'X';
reg_data_i : in std_logic_vector(23 downto 0);
adc_data_i : in std_logic_vector(11 downto 0);
bitslip_o : out std_logic;
sync_done_o : out std_logic;
wr_en_o : out std_logic;
spi_data_o : out std_logic_vector(23 downto 0) := (others => '0')
);
end ADC_fsm;
Этот порт (reset_i) не был подключен к другому внешнему порту или сигналу.
И в следующем коде,
begin
process(clk_i, reset_i)
begin
if (reset_i = '1') then
wr_en_o <= '0';
sync_done_o <= '0';
bitslip_o <= '0';
spi_data_o <= (others => '0');
s_delay_count <= 0;
s_write_indicator <= 0;
state <= ready;
elsif rising_edge(clk_i) then
wr_en_o <= '0';
sync_done_o <= '0';
bitslip_o <= '0';
Я знаю, что «Х» не является ни 1, ни 0.
Итак, сначала, если оператор в приведенном выше коде не будет работать.
Мой вопрос, как насчет Эльсифа.
«Х» - это не «1», поэтому «Х» входит в ситуацию с эльсифом?
Короче.
if (reset_i ='1') then
(A)
elsif(rising_edge(clk_i)) then
(B)
end if;
Код (B) работает только тогда, когда reset_i = '0'?
или также работает, когда reset_i = 'X'?
1028 * БЛАГОДАРЯ *