gpt4 book ai didi

vhdl - 查询用于 IC 设计(非 FPGA)的 VHDL 合成,特别是在变量分配的情况下

转载 作者:行者123 更新时间:2023-12-01 16:18:45 25 4
gpt4 key购买 nike

如果对于给定的过程,我声明了一个变量(比如说一个 1 位变量,variable temp : std_logic;),那么如果给定条件返回 true,我可以为该变量赋值吗,即

if (xyz=1) then --Assuming that this condition returns TRUE
temp:= '1';

??这种逻辑是否可以为 ASIC 综合?

最佳答案

是的。变量对于 FPGA 和 IC 都是可综合的。进程是对硬件进行建模的一小部分软件。一点点软件可以使用变量,但由于变量仅在进程范围内,最终您必须驱动信号 - 一点点硬件的输出。

例如,这里有一些组合逻辑:

process (A, B, C, D)
variable TMP : std_logic;
begin
if A = '1' then
TMP := B and C;
TMP := TMP and D;
else
TMP := '0';
end if;
F <= TMP;
end process;

这是一个使用变量的示例,该变量将在触发器的 D 输入上合成组合逻辑(因为它处于时钟过程中):

process (CLOCK)
variable TMP : std_logic;
begin
if rising_edge(CLOCK) then
TMP := A and B;
Q <= TMP;
end if;
end process;

下面是一个在时钟控制过程中使用变量的示例,该过程将合成一个触发器(在其 D 输入端带有一个与门):

process (CLOCK)
variable TMP : std_logic;
begin
if rising_edge(CLOCK) then
Q <= TMP;
TMP := A and B;
end if;
end process;

两个时钟进程之间的唯一区别是顺序。首先,变量在被访问之前被赋值;在第二个中,它在分配给之前被访问。

  • 如果在时钟进程中访问变量之前分配给变量,将推断出组合逻辑;

  • 如果您访问在时钟过程中分配给它之前的变量,一个触发器将被推断。

  • 永远不要在赋值之前访问变量在组合过程中对其进行处理:将推断闩锁。

变量在流程的执行之间保留其值。因此,如果一个变量在一个时钟进程中被赋值之前被访问,那么读取的值一定是在该进程的前一次执行中写入的。在时钟进程中,之前的执行将在之前的时钟边沿进行:因此,可以推断出触发器。

关于vhdl - 查询用于 IC 设计(非 FPGA)的 VHDL 合成,特别是在变量分配的情况下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43559961/

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