基于case-VHDL的并发语句

基于case-VHDL的并发语句,vhdl,Vhdl,大家好,我正在尝试使用alliance工具合成一个VHDL代码。但是我有一个非法的并发语句错误。我是VHDL新手,我试图理解并发语句和顺序语句,所以我真的不明白为什么我在案例中得到了非法的并发语句。你能帮我解决这个错误吗 下面是一段代码,但基本相同: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity reg_P is port ( A : in unsigned(7 downto 0);

大家好,我正在尝试使用alliance工具合成一个VHDL代码。但是我有一个非法的并发语句错误。我是VHDL新手,我试图理解并发语句和顺序语句,所以我真的不明白为什么我在案例中得到了非法的并发语句。你能帮我解决这个错误吗

下面是一段代码,但基本相同:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity reg_P is
port (
   A : in unsigned(7 downto 0);
   CLK : in std_logic;
   EstPresente : in unsigned(7 downto 0);
   P : out unsigned(7 downto 0);
   RI : in unsigned(7 downto 0);
   RPS : in std_logic
);
end reg_P;
architecture FromVerilog of reg_P is
 signal P_Reg : unsigned(7 downto 0);
 begin
 P <= P_Reg;
 process (CLK)
  begin
   if (rising_edge(CLK)) then
     if ((not RPS) = '1') then
       P_Reg <= X"00";
     else
      case EstPresente is
       when X"02" then
        case RI is
          when X"16" then
            P_Reg <= A;
          when X"36" then
            P_Reg <= (P_Reg - X"01");
          when X"26" then
            P_Reg <= (P_Reg - X"01");
          when others then
            P_Reg <= P_Reg;
        end case;
        when others then
        P_Reg <= P_Reg;
      end case;
    end if;
  end if;
 end process;
end architecture;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体注册号为
港口(
A:无符号(7到0);
CLK:标准逻辑中;
EstPresenter:未签名(7到0);
P:无符号输出(7到0);
RI:无符号(7到0);
RPS:标准逻辑中
);
结束注册;
reg_P的Verilog架构是
信号P_Reg:无符号(7到0);
开始

P

case语句选择中的

然后
s应该是复合分隔符
=>

替换这6个实例并分析代码

      case EstePresente is
       when X"02" =>
        case RI is
          when X"16" =>
            P_Reg <= A;
          when X"36" =>
            P_Reg <= (P_Reg - X"01");
          when X"26" =>
            P_Reg <= (P_Reg - X"01");
          when others =>
            P_Reg <= P_Reg;
        end case;
        when others =>
        P_Reg <= P_Reg;
      end case;
案例演示是
当X“02”=>
案例RI是
当X“16”=>
P_注册
P_注册
P_注册
P_注册

P_Reg

case语句选择中的

then
s应该是复合分隔符
=>

替换这6个实例并分析代码

      case EstePresente is
       when X"02" =>
        case RI is
          when X"16" =>
            P_Reg <= A;
          when X"36" =>
            P_Reg <= (P_Reg - X"01");
          when X"26" =>
            P_Reg <= (P_Reg - X"01");
          when others =>
            P_Reg <= P_Reg;
        end case;
        when others =>
        P_Reg <= P_Reg;
      end case;
案例演示是
当X“02”=>
案例RI是
当X“16”=>
P_注册
P_注册
P_注册
P_注册
P_注册