与0或1比较,检测高阻抗

时间:2013-07-22 06:32:07

标签: vhdl

我知道不允许在可综合的VHDL代码中与XZ进行比较。但是,它是否允许编写一个代码,在其中我将信号与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; 

1 个答案:

答案 0 :(得分:5)

不,这不起作用。物理数字信号可以具有正好2个状态,'0'和'1'。状态由信号上的电压定义:小于某个电压为“0”,大于该电压为“1”。即使浮动(高z)信号也会有一些电压被解释为'1'或'0'。

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