【发布时间】:2015-05-07 22:25:43
【问题描述】:
我已经定义了模块的结构架构,例如
architecture structural of my_entity is
signal counter : integer := 0;
begin
MODULE port map(......count => counter.....); --this is an inout port
end structural;
我想实现一个计数器,它根据输入信号signalIn 到my_entity 的变化而递增,并将这个计数器值传输到MODULE。
有没有办法在my_entity 的行为架构中增加这个counter 信号?例如
architecture Behavioural of my_entity is
begin
process(signalIn)
begin
counter <= counter + 1;
end process;
end Behavioural;
当然,在这种行为架构中,counter 被报告为未声明。我该如何解决这个问题?
【问题讨论】:
-
在架构行为中没有明显的信号计数器声明。将声明从架构结构复制到行为。另请注意,您的流程将在
signalIn上的任何事件上增加计数器,即使有意此行为也不符合合成条件。 -
感谢您的 cmets。我假设如果我再次以行为方式声明它,那么它将是一个新信号,并且不会影响被转移到
MODULE的信号。有没有办法在更改为signalIn时增加该信号? -
它如何影响
MODULE的实例化?它在不同的架构中。 “对应于给定的实体声明,可能存在多个架构主体。每个都声明具有相同接口的不同主体;因此,每个与实体声明一起代表具有相同接口的不同设计实体。” -
这就是我原来的问题所指的。如何增加转移到
MODULE的计数器?我想我可能需要专门为此创建一个新实体。 -
您的问题在a Minimal, Complete, and Verifiable example 中显得既不清楚又缺乏 - 您显示的抽象代码没有传达这个想法。在一个架构中实例化
MODULE,该架构还包含一个带有计数器的进程,该计数器递增声明的信号counter。您可以将流程(可能是为了综合而固定)从第二个架构移动到第一个架构(将第一个架构复制到第三个架构并将流程复制到其中)。
标签: architecture signals vhdl counter