3

我知道它不允许与可综合的 VHDL 代码进行X比较Z。但是是否允许编写代码来比较信号01检测信号Z并暂停操作?代码如下:

process(clk)
begin
  if rising_edge(clk ) then
    if(rst = '0') then
      reg_0 <= (others => 'Z');
    elsif(btf_start = '1') then
      reg_0 <= "ZZ" & frame_in;
    elsif(t_btf_finish = '1') then
      reg_0 <= (others => 'Z');
    end if;
  end if;  
end process;

process(clk)
begin
  if rising_edge(clk) then
    if(reg_0(0) = '0' or reg_0(0) = '1') then
        -- DO SOME OPERATIONS
    else
        -- DO NOTHING
    end if;
  end if;
end process; 
4

1 回答 1

5

不,这行不通。物理数字信号可以恰好有两种状态,“0”和“1”。状态由信号上的电压定义:小于某个电压为“0”,大于该电压为“1”。即使是浮动(高阻抗)信号也会有一些电压,这些电压将被解释为“1”或“0”。

“Z”基本上表示某个源没有驱动信号,允许不同的源驱动“0”或“1”。对于没有源驱动信号的情况,信号通常会有一个上拉或下拉电阻,以默认将其保持在定义的“1”或“0”状态。

于 2013-07-22T07:31:25.953 回答