2014-09-21 33 views
0

一块我的VHDL代码:')'预计。 - VHDL

   133 if(grupo = '000' or grupo = '111') then -- 0 

       134 elsif(grupo = '001' or grupo = '010') then -- 1 

       135 elsif(grupo = '011') then -- 2 

       136 elsif(grupo = '100') then -- -2 

       137 elsif(grupo = '101' or grupo = '110') then -- -1 

       138 end if; 

然而,这样的错误就来了:


错误:COMP96_0049:Multiplicador.vhd:(133,17):语法错误的表达。

错误:COMP96_0015:Multiplicador.vhd:(133,17):')'预计。

错误:COMP96_0019:Multiplicador.vhd:(133,18):关键字'then'expected。

错误:COMP96_0019:Multiplicador.vhd:(141,6):关键字'结束'预计。

错误:COMP96_0049:Multiplicador.vhd:(141,20):表达式中的语法错误。

错误:COMP96_0015:Multiplicador.vhd:(141,20):')'预计。

错误:COMP96_0019:Multiplicador.vhd:(141,21):关键字'then'expected。

错误:COMP96_0019:Multiplicador.vhd:(147,9):关键字'过程'预计。

错误:COMP96_0015:Multiplicador.vhd:(150,8):';'预期。

错误:COMP96_0016:Multiplicador.vhd:(150,10):预期设计单位声明。


但我找不到解决方案。错误在这一部分。

+0

你应该* *可能仔细检查你有关于关闭括号左括号的数量。 – Makoto 2014-09-21 05:47:01

回答

9

您的代码中可能存在多个错误。只显示报告语法错误的行并不总是足够的。有时实际的错误可能在前面的一行中。

if(grupo = '000' or grupo = '111') then 

词法元件'(撇号)是唯一可以接受的要么指示属性,表示一个合格的表达的或作为字符文字的一部分靶。

'000'等都不是这些。属性名称是一个标识符,类型名称也是一个类型名称,用于指定集合应视为的类型。

这些应该使用圆括号吗? ("000","111"等)

您还没有提供足够的示例代码来重现错误。

这成功地分析:

entity multiplicador is 
end entity; 

library ieee; 
use ieee.std_logic_1164.all; 

architecture que of multiplicador is 
    signal grupo: std_logic_vector(2 downto 0); 
begin 
UNLABLED: 
    process (grupo) 
    begin 
     if (grupo = "000" or grupo = "111") then -- 0 

     elsif(grupo = "001" or grupo = "010") then -- 1 

     elsif(grupo = "011") then -- 2 

     elsif(grupo = "100") then -- -2 

     elsif(grupo = "101" or grupo = "110") then -- -1 

     end if; 
    end process; 
end architecture; 
+0

你是对的。例如,我只需要将“101”更改为“101”。问题在于单引号。奇怪的是我从来没有在VHDL的教程中看到它。 谢谢。 – 2014-09-21 15:51:02