【问题标题】:Accessing a signal in both structural and behavioural architecture在结构和行为架构中访问信号
【发布时间】: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;

我想实现一个计数器,它根据输入信号signalInmy_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


【解决方案1】:

您的问题在显示counter 的一种架构中的声明时未显示信号inSignal 的声明(这是一个信号,因为它显示在进程的敏感度列表中)。您也没有显示MODULE 的组件声明。

my_enity is
end entity;

architecture structural of my_entity is
    signal counter: integer := 0;
begin
UNLABELLED_COMPONENT_INSTANTIATION:  -- presuming count is declared mode in
   MODULE port map(......count => counter.....); --this is an inout port
UNLABELLED_PROCESS:
    process (inSignal)
    begin
        counter <= counter + 1;
end architecture structural;

您可以使用进程来操作计数器(注意它没有以易于合成的形式显示)或不同实体架构的单独组件实例化对实现计数器。

architecture pure_structural of my_entity is
    signal counter: integer := 0;
begin
UNLABELLED_COMPONENT_INSTANTIATION:  -- presuming count is declared mode in
   MODULE port map(......count => counter.....); --this is an inout port

COUNTER_COMPONENT:

    SOME_COUNTER port map (trigger => signalIn, count => counter);

-- where in this case count is mode out

end architecture pure_structural;

【讨论】:

  • 所以这里的解决方案是结合行为体和结构体。感谢您的帮助。
  • 在模拟级别,一切都是行为性的。结构通用是指根据由实例化的实体/架构对组成的互连层次结构来描述设计。每个并发语句都被分解为一个过程语句或过程语句和块语句的组合,为模拟(和综合)提供层次结构。函数调用是表达式,过程调用是语句(顺序或并发,后者下放为进程)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 2020-08-23
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多