gpt4 book ai didi

VHDL 是在 Generic 中使用字符串的有效语法吗?

转载 作者:行者123 更新时间:2023-12-04 22:30:32 26 4
gpt4 key购买 nike

我使用 Xilinx 工具已经有一段时间了,它们非常适合使用如下代码:

ENTITY Example IS
GENERIC(
g_Mode : STRING := "Normal"); -- "Normal", "Test"
PORT(
Clk : IN STD_LOGIC;
-- ETC
);

END Example;

ARCHITECTURE rtl OF Example IS

Normal_g : IF g_Mode = "Normal" GENERATE
-- Normal Operation Code Here
END GENERATE Normal_g;

Test_g : IF g_Mode = "Test" GENERATE
-- Test Operation Code Here
END GENERATE Test_g;

但是,我最近切换到使用 Lattice Tools,第二次检查 g_Mode 时出现错误。错误是“不等长数组之间的比较总是返回 FALSE”。所以这两个 generate 语句之一似乎永远不会执行。我的问题是,这是合法的 VHDL 语法,因此是 Lattice 工具的问题吗?或者我的代码样式应该更改为不使用字符串作为泛型?

最佳答案

将字符串用于泛型是合法的。但是看看实际的错误消息:它非常清楚。

一种解决方案是使所有字符串的长度相同。 Test_g : IF g_Mode = "Testxx" GENERATE应该按预期编译和工作。

一个更好的解决方案——因为字符串比较在这里没有增加真正的值(value)——可能是声明一个枚举类型 type Mode is (Normal, Test, Special);在一个包中,并使您的泛型类型为 Mode。 (这也避免了例如拼写错误的事故)

或者,如果只有两种模式,则将泛型设为 bool 值 Testing .那么正常情况变成if not Testing generate...

关于VHDL 是在 Generic 中使用字符串的有效语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com