gpt4 book ai didi

vhdl - 将信号分配给变量并将变量分配给信号

转载 作者:行者123 更新时间:2023-12-05 00:55:52 26 4
gpt4 key购买 nike

我是 VHDL 的新手,在阅读了大量教程后,我现在开始涉足了。这是一个困扰我的代码示例。
trade_cell 实体获得一个带符号的信号 n,在获得绝对值后,该信号被分配给变量 abs_n。然后将结果分配给输出的信号量。

每次我模拟这个时,金额都设置为 X。
我在这里缺少什么?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity trade_cell is
Port (
n: IN signed(31 downto 0);
amount: OUT signed(31 downto 0);
);
end trade_cell;

architecture Behavioral of trade_cell is
begin

trader: process(start, value, n, P, dP, delta, ddelta)
variable abs_n : signed(31 downto 0) := abs(n);
begin
amount <= abs_n;
end process;
end Behavioral;

以友好的问候,
暴风巫师

最佳答案

你的问题是这一行:

    variable abs_n : signed(31 downto 0) := abs(n);

正在初始化变量 abs_n 一次 在模拟开始时(技术上在详细说明期间)。此时,信号 n将具有值 'U'abs('U')将是 'X' ,所以变量 abs_n用值 'X' 初始化并且在此之后从未分配任何值。

所以,而不是:
    trader: process(start, value, n, P, dP, delta, ddelta)
variable abs_n : signed(31 downto 0) := abs(n);
begin
amount <= abs_n;
end process;

你需要:
    trader: process(start, value, n, P, dP, delta, ddelta)
variable abs_n : signed(31 downto 0);
begin
abs_n := abs(n); -- assign abs_n here...
amount <= abs_n; -- ...and use its value here
end process;

我假设您已经缩减了代码以制作 MCVE ,这就是为什么进程的敏感列表中还有很多其他信号 trader .如果没有,您只需要敏感列表中该进程的输入(在本例中只需要 n )。

关于vhdl - 将信号分配给变量并将变量分配给信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342609/

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