【问题标题】:Error with wait conditions等待条件错误
【发布时间】:2013-12-05 22:32:56
【问题描述】:

我是 VHDL 的初学者,我正在尝试做一个乘法器,但是我必须使用书中的代码不能用 xilinx 软件正确编译。代码是:

     library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity testMult is
    Port ( ISwitch  : in  STD_LOGIC_VECTOR (3 downto 0);
           IPress : in  STD_LOGIC;
           IRegIn : in  STD_LOGIC_VECTOR (31 downto 0);
           IRegOut : out  STD_LOGIC_VECTOR (31 downto 0);
           Iclk : in  STD_LOGIC);
end testMult;

architecture Beh of testMult is
    component asMult
        port(ISwitch  : in  STD_LOGIC_VECTOR (3 downto 0);
           IRegA : in  STD_LOGIC_VECTOR (7 downto 0);
              IRegB : in STD_LOGIC_VECTOR (7 downto 0);
           IRegProd : out  STD_LOGIC_VECTOR (15 downto 0);
           Iclk : in  STD_LOGIC;
              St : in STD_LOGIC;
              Done : out STD_LOGIC);
    end component;

constant aValue : std_logic_vector:= IRegIn(7 downto 0);
constant bValue : std_logic_vector:= IRegIn(15 downto 8);
signal Done : std_logic;
signal St : std_logic;
signal IRegA, IRegB : std_logic_vector(7 downto 0);
signal IRegProd : std_logic_vector(15 downto 0);
signal CLK : std_logic;

begin

CLK <= not CLK after 10 ns;

process
    begin
        if IPress = '1' then
            IRegA <= aValue;
            IRegB <= bValue;
            St <= '0';
        wait until CLK = '1' and CLK'event;
            St <= '1';
        wait until Done = '0' and Done'event;
            IRegOut <= IRegProd & IRegIn(15 downto 8) & IRegin(7 downto 0);
        end if;
end process;
asMult1 : asMult port map (ISwitch, aValue, bValue, IRegProd, Iclk, St, Done);
end Beh;

但我不断收到此错误:第 36 行:所有多次等待中预期的等待条件相同。

【问题讨论】:

    标签: hardware vhdl xilinx spartan


    【解决方案1】:

    您是想合成该代码,还是只想模拟它?代码不会合成,因为:

    1. CLK &lt;= not CLK after 10 ns 不是一个可综合的陈述,并且
    2. 合成工具仅用于处理更简单的过程。尝试将您的代码分解为纯粹组合的进程,或对同一时钟的同一边沿敏感的同步进程。

    如果您只想模拟代码,您的示例还有其他问题,但至少它可以使用 Modelsim ASE 10.1b 编译。我的猜测是您的编译器正在尝试合成代码。

    【讨论】:

      【解决方案2】:

      这是模拟代码 - 您可以在 ISIM 中运行模拟。

      完成该工作后,您可以合成其中的部分asmult 块),但您无法合成顶层块,因为它充满了测试台、模拟-only,代码,例如等待事件(只能以非常特定的方式进行综合)和after

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 2020-03-18
        • 2019-04-03
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多