已存在的关键字的vhdl错误代码10500

时间:2016-06-14 08:46:48

标签: vhdl

此代码用于PRBS(伪随机二进制序列)接收器。它应该采用三个值并模拟PRBS生成器并使用生成的值检查获得的值。 但代码显示已经存在的关键字(如begin)的错误

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

    entity receiver is
    port(
        inp : in std_logic;
        clock : in std_logic;
        count : out std_logic_vector(4 downto 0);
        check : out std_logic);
    end receiver;

    architecture rec of receiver is
    signal P : std_logic_vector(2 downto 0);
    signal O : std_logic_vector(2 downto 0);

    process (clock)
        variable cnt  : integer range 0 to 3;
        begin
            if clock'event and clock='1'  then
                P <= inp & P(2 downto 1);
                cnt<=cnt+1;
            end if;
            if (cnt = 3) then
                O<=P;
                elseif (cnt >3)
                O <= inp & O(2 downto 1);
            end if;
            if((O(2) xor O(0)) = P(0))  
                check <= '0';
            else
                check <= '1';
                count <= count +1;
            end if;
        end process;
    end rec;
  

错误(10500):接收文件&#34; process&#34;; receiver.vhd(18)处的VHDL语法错误;期待&#34;开始&#34;或声明声明

     

错误(10500):接收文件的接收器.vhd(21)的VHDL语法错误&#34; if&#34 ;;期待&#34;结束&#34;,或&#34;(&#34;或标识符(&#34;如果&#34;是保留关键字)或并发声明

     

错误(10500):在文本&#34;和&#34;附近的receiver.vhd(21)处的VHDL语法错误;期待&#34;(&#34;,或&#34;&#39;&#34;,或&#34;。&#34;

     

错误(10500):接收文件的接收器.vhd(24)的VHDL语法错误&#34; if&#34 ;;期待&#34 ;;&#34;或标识符(&#34;如果&#34;是保留关键字),或&#34;架构&#34;

     

错误(10500):接收文件&#34;然后&#34;的receiver.vhd(25)处的VHDL语法错误;期待&#34;&lt; =&#34;

     

错误(10500):接收文件&#34; O&#34 ;;的receiver.vhd(28)处的VHDL语法错误;期待&#34;(&#34;,或&#34;&#39;&#34;,或&#34;。&#34;

     

错误(10500):接收文件的接收器.vhd(29)的VHDL语法错误&#34; if&#34 ;;期待&#34 ;;&#34;或标识符(&#34;如果&#34;是保留关键字),或&#34;架构&#34;

     

错误(10500):接收文件&#34; check&#34 ;; receiver.vhd(31)处的VHDL语法错误;期待&#34;&lt; =&#34;

     

错误(10500):接收文件&#34; else&#34 ;; receiver.vhd(32)处的VHDL语法错误;期待&#34;结束&#34;,或&#34;(&#34;或标识符(&#34;否则&#34;是保留关键字)或并发声明

     

错误(10500):接收文件的接收器.vhd(35)的VHDL语法错误&#34; if&#34 ;;期待&#34 ;;&#34;或标识符(&#34;如果&#34;是保留关键字),或&#34;架构&#34;

1 个答案:

答案 0 :(得分:0)

您的实体结构需要如下所示:

entity receiver is
  port (
    -- Your ports
  );
end receiver;

architecture rec of receiver is
  -- Declarations here
begin  -- ** Your code is missing this part

  process (clock)
  begin
    -- your process
  end process;

end rec;

如评论中所述,始终以您看到的第一个错误开头;首先理解并解决这个错误,因此许多后来的错误通常会消失。

您已将cnt声明为变量,然后尝试使用cnt <= cnt + 1;递增它,但变量分配应使用:=而不是<=

下一个错误是您使用elseif;这不是一个真正的关键字,看起来你想使用elsif。这一行也缺少then

然后你有一行if((O(2) xor O(0)) = P(0)),它再次错过then

最后,您尝试直接递增count这是一个out端口。这是不可能的,因为您正在尝试读取输出以向其添加输出;有几种方法可以解决这个问题,但我个人会创建一个中间信号(例如count_s),在您的过程中使用,然后将输出分配给count <= count_s的此信号,位于过程

解决了所有这些问题后,您的代码至少会编译。

作为旁注,它可以帮助您更好地垂直对齐代码;您的end process应与其开头process垂直对齐,依此类推。