【发布时间】:2016-01-27 19:28:43
【问题描述】:
我正在尝试检测我的选择器输入信号的变化。当我发现第一个改变的输入(上升沿或下降沿)时,我给出一个索引作为输出。当我尝试合成我的源代码时,我收到一个错误“不支持的时钟语句”。 A 也尝试使用“rising_edge”和“falling_edge”,但我得到了同样的错误。 这是我的代码
library ieee;
use ieee.std_logic_1164.all;
entity Selector is
port (
X1: in std_logic;
X2: in std_logic;
X3: in std_logic;
X4: in std_logic;
X5: in std_logic;
X6: in std_logic;
O: out std_logic_vector(2 downto 0)
);
end Selector;
architecture behave of Selector is
begin
process(X1,X2,X3,X4,X5,X6)
begin
if (X1'event) then
O <= "000";
elsif (X2'event) then
O <= "001";
elsif (X3'event) then
O <= "010";
elsif (X4'event) then
O <= "011";
elsif (X5'event) then
O <= "100";
elsif (X6'event) then
O <= "101";
else
O <= "000";
end if;
end process;
end behave;
是否有替代解决方案?
【问题讨论】:
-
不完整的 Xilinx XST 错误消息告诉您具有六个时钟的双倍数据速率寄存器不是受支持的综合构造(请参阅 XST HDL 支持的构造)。也许您可以多了解一下您在这里要做什么。除了对时间顺序敏感之外,它看起来有点像优先级编码器。如果您需要依赖于时间顺序的模拟结果,则需要强制使用与所有事件兼容的时钟以确保顺序。
-
我想监控这六个信号。我希望能够找到第一个改变的人(从 H 到 L 或从 L 到 H),尊重他们的优先级。当我找到那个信号时,我会输出一个特定的向量。
标签: vhdl