Порядок условий VHDL if-else - PullRequest
       7

Порядок условий VHDL if-else

0 голосов
/ 22 сентября 2018

Любая идея, какая разница между этим:

p_persist_reg_CRC_calc: process (Clk_50Mhz)
begin
    if falling_edge(Clk_50Mhz) then
        if crc_rx_init <= '0' then
            flash_crc_calc <= (others =>'1');
            else
            flash_crc_calc <= (others =>'0');
        end if;
    end if;
end process p_persist_reg_CRC_calc;

и это:

p_persist_reg_CRC_calc: process (Clk_50Mhz)
begin
    if falling_edge(Clk_50Mhz) then
        if crc_rx_init <= '1' then
            flash_crc_calc <= (others =>'0');
            else
            flash_crc_calc <= (others =>'1');
        end if;
    end if;
end process p_persist_reg_CRC_calc;

Второй стек в ноль.В моем понимании они должны быть такими же, как функции.С уважением, Эмиль

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Если предположить, что crc_rx_init является std_logic, то единственное отличие, скорее всего, в симуляции.Помните, что std_logic имеет 9 состояний («U», «0», «1», «X», «Z», «L», «H», «W», «-»).В первом случае, если crc_rx_init был «U», то flash_crc_calc будет все «0».Во втором случае flash_crc_calc будет иметь значение «1».

0 голосов
/ 22 сентября 2018

Скорее всего, опечатка: попробуйте

if crc_rx_init = '1' then 

('0' и '1' оба <= '1')

...