【发布时间】:2011-02-22 02:49:52
【问题描述】:
我正在尝试使用结构化 VHDL 和组件来实现一位计数器。 尝试执行端口映射时出现语法错误。 错误是“错误 (10028): Can't resolve multiple constant drivers for net "P" at Assign4.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;
【问题讨论】:
-
@TomiJ 有正确的答案。但是您的代码中还有一些其他问题: 1. 避免使用 ieee.std_logic_unsigned.all。改用 ieee.numeric_std:parallelpoints.com/node/3 2. 你有两个死信号 Y 和 Z。我敢打赌你写它们是因为你以后想使用它们。
-
别忘了添加一个重置来初始化X(你的状态),否则什么都不会发生。
-
非常感谢你们。是的,你是对的 TomiJ 是对的。代码现在可以工作了。