电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

这个错误该怎么解决呢?(VHDL方面)

开发环境libero8.0

开发语言:VHDL

在综合是出现了如下错误:

Multiple non-tristate drivers for net AD_I in J_shi

 

源代码:

 

library    ieee;
use        ieee.std_logic_1164.all;
use        ieee.std_logic_arith.all;
use        ieee.std_logic_unsigned.all;

entity  J_shi is
  port (  clk_J_shi : in std_logic;
          flag_J_shi_srart : in std_logic;  -- 电压过零时
           flag_J_shi_stop : in std_logic;  -- 电流过零时
        AD_U  : out std_logic;      -- 电压结束转换标志
          AD_I   : out std_logic;    -- 电流转换结束标志
           Time       : out std_logic_vector(11 downto 0)
           );

 end J_shi;

architecture   behavioral   of  J_shi  is
signal    js_flag : std_logic;

begin

U1:   process(flag_J_shi_srart)     -- 电压过零
             begin  

              if flag_J_shi_srart'event and flag_J_shi_srart='1'  then   AD_U<='0'; -- 关闭电压转换
                                                                                             AD_I<='1'; -- 打开电流转换
                                                                                           
              end if;

        end process;

U2:  process(flag_J_shi_stop)   --   电流过零
             begin  

              if rising_edge(flag_J_shi_stop)  then    AD_U<='0'; -- 关闭电压转换
                                                                     AD_I<='0'; --关闭电流转换
                  end if;

      end process;

end behavioral;

 

错误的原因是不是AD_U和AD_I可能在同一时刻被赋不同的值呢?

在实际中,他们是不能在同一时刻被赋不同的值的。

那么怎么改程序可以综合通过呢?

博主
guanjun1015@126.com
EA's Blog
EA
点击跳转