【问题标题】:Is it possible to index using a variable of the for/loop in vhdl?是否可以在 vhdl 中使用 for/loop 的变量进行索引?
【发布时间】:2014-01-19 19:35:22
【问题描述】:

我是 VHDL 代码的新手。

我想使用 for/loop 中定义的变量来索引共享变量。尽管编译器告诉我有一些警告,但它似乎在模拟中工作:

(ID:13024)。输出引脚卡在 VCC 或 GND。

不幸的是,它在船上并没有像警告中预期的那样工作。

我想使用 for/loop,因为它们似乎可以很好地降低使用的“总组合函数”的复杂性,所以我想以一种愚蠢的方式索引我的共享变量。

这是我的代码的摘录:

for I in I_top to I_top loop
for J in J_top to J_top loop

    if type = 1 then
        matrix(I,J) := "110";   
        vector(I) := vector(I) + 1;
        end := true;
    elsif type = 2 then
    ...
    end if;
end loop;
end loop;

【问题讨论】:

  • 这些 for 循环是否在进程中? for ... loop 不能在进程之外工作,但 for ... generate 可以代替工作。
  • 在当前语言中,共享变量只允许使用受保护的类型。您可以使用在流程中定义的常规变量。
  • 这个 for ... 循环在进程内部使用。他们在模拟中工作,但不在船上。现在我用信号替换了共享变量,但它总是只在模拟中有效。
  • 我认为这个sn-p是不可合成的。你有没有想过什么样的组合逻辑可以在没有时钟的情况下增加或者可以随时中断。它看起来像计算机程序而不是硬件设计。
  • 所以我想知道,在硬件项目中管理 4 位 (10x10) 矩阵的最佳方法是什么?

标签: loops for-loop matrix indexing vhdl


【解决方案1】:

我想我已经找到了解决这个问题的方法。

我的理解是,在 VHDL 中使用 10x10 变量会带来很多复杂性,因为编译器会为其分配所需的所有资源。

如果您想使用空间来保存变量,可以使用 ram 芯片之类的东西:

http://www.doulos.com/knowhow/vhdl_designers_guide/models/simple_ram_model/

然后,您需要管理地址周期和读/写周期,但之前的复杂性似乎消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2016-08-28
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2016-10-19
    相关资源
    最近更新 更多