Syntax VHDL中的语法错误

Syntax VHDL中的语法错误,syntax,counter,vhdl,hdl,Syntax,Counter,Vhdl,Hdl,我正在尝试使用结构VHDL和组件实现一位计数器。 我在尝试进行端口映射时遇到语法错误。 错误为“error(10028):无法解析Assign4处网络“P”的多个常量驱动程序。vhd(47)” 以下是我到目前为止的情况: 提前感谢您的任何想法 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ----------------------------------------------------

我正在尝试使用结构VHDL和组件实现一位计数器。 我在尝试进行端口映射时遇到语法错误。 错误为“error(10028):无法解析Assign4处网络“P”的多个常量驱动程序。vhd(47)” 以下是我到目前为止的情况: 提前感谢您的任何想法

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
--------------------------------------------------------------
Entity Assign4 is
      Generic (bits: POSITIVE := 1);
      Port (CLK: in std_logic;
            SE1,SE2: in std_logic;
            P: out std_logic);
End Entity Assign4;
---------------------------------------------------------------
Architecture Structural of Assign4 is 
--------------------------------
Component Counter is
--    Generic (N: Positive := 1);
    Port(clock,sel1,sel2: in std_logic;
         Q: out std_logic);
End Component;
--------------------------------
Signal x,y,z: std_logic;

begin
P <= x;
--Qn <= x;
  process(CLK)
  begin
    if (Clk'event and CLK = '1') then
        x <= x xor (SE1 and SE2);

    end if;
  end process;

--------------COUNTER-------------------------------------
count1: Counter PORT MAP (clk,SE1,SE2,P);
---------------END COUNTER--------------------------------


-- The generate will be used later for implementing more bits in the counter
--gen: FOR i IN 0 TO 1 GENERATE
--  count1: Counter PORT MAP (SE1 <= inbits(0),SE2 <= inbits(1),clock <= CLK, 
--                            outA <= SE1 and SE2, q <= outA xor  q);
--end GENERATE gen;

---------------------------------------------------

end Architecture;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_unsigned.all;
--------------------------------------------------------------
实体4是
通用(位:正:=1);
端口(时钟:在标准逻辑中;
SE1、SE2:标准逻辑中;
P:输出标准(U逻辑);
终端实体4;
---------------------------------------------------------------
Assign4的体系结构是
--------------------------------
组件计数器是
--一般(N:正:=1);
端口(时钟、sel1、sel2:标准_逻辑中;
Q:输出标准(U逻辑);
端部元件;
--------------------------------
信号x,y,z:std_逻辑;
开始

P

在端口映射语句中,语法是

label: componentName PORT MAP (componentSig => externalSig, ...)

您的箭头指向错误的方向。

在端口映射语句中,语法为

label: componentName PORT MAP (componentSig => externalSig, ...)

您的箭头指向错误的方向。

错误信息不言自明:您从两个不同的地方驾驶p:

P <= x;
(在计数器组件中,您已将最后一个端口列为输出,因此它也在驱动p。)


我说不出你想要哪种说法,尽管很可能是后者;您需要注释掉第一个赋值,这将解决此编译错误。

错误消息是不言自明的:您从两个不同的位置驾驶p:

P <= x;
(在计数器组件中,您已将最后一个端口列为输出,因此它也在驱动p。)


我说不出你想要哪种说法,尽管很可能是后者;您需要注释掉第一个赋值,这将解决此编译错误。

jualin代码中的该部分似乎已经注释掉了。@jualin,您可能需要删除问题中的注释代码。这只会让后来阅读它的人感到困惑。是的,这是以前测试的结果。我忘了把它脱下来。啊,我一定是错过了评论。箭头仍然向后,但这不是问题所在。TomiJ是对的。jualin代码中的那部分似乎已经被注释掉了。@jualin,您可能想删除问题中注释过的代码。这只会让后来阅读它的人感到困惑。是的,这是以前测试的结果。我忘了把它脱下来。啊,我一定是错过了评论。箭头仍然向后,但这不是问题所在。TomiJ是对的。@TomiJ有正确的答案。但代码中还有一些其他问题:1。避免使用ieee.std\u logic\u unsigned.all。使用ieee.numeric\u标准代替:2。你有两个死信号Y和Z。我打赌你写它们是因为你想稍后使用它们。别忘了添加一个重置来初始化X(你的状态),否则什么都不会发生。非常感谢大家。是的,你是对的,托米是对的。代码现在可以工作了。@TomiJ的答案是正确的。但代码中还有一些其他问题:1。避免使用ieee.std\u logic\u unsigned.all。使用ieee.numeric\u标准代替:2。你有两个死信号Y和Z。我打赌你写它们是因为你想稍后使用它们。别忘了添加一个重置来初始化X(你的状态),否则什么都不会发生。非常感谢大家。是的,你是对的,托米是对的。代码现在起作用了。