首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于集成电路设计的VHDL综合查询(非FPGA),特别是在变量分配的情况下

用于集成电路设计的VHDL综合查询(非FPGA),特别是在变量分配的情况下
EN

Stack Overflow用户
提问于 2017-04-22 13:43:05
回答 1查看 90关注 0票数 3

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

代码语言:javascript
复制
if (xyz=1) then --Assuming that this condition returns TRUE
temp:= '1';

??这个逻辑会被ASIC合成吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-22 13:58:10

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

例如,下面是一些组合逻辑:

代码语言:javascript
复制
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输入上合成组合逻辑(因为它处于时钟过程中):

代码语言:javascript
复制
process (CLOCK)
  variable TMP : std_logic;
begin
  if rising_edge(CLOCK) then
    TMP := A and B;
    Q <= TMP;
  end if;
end process;

下面是在时钟进程中使用变量的示例,该变量将合成为触发器(D输入有一个和门):

代码语言:javascript
复制
process (CLOCK)
  variable TMP : std_logic;
begin
  if rising_edge(CLOCK) then
    Q <= TMP;
    TMP := A and B;
  end if;
end process;

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

  • 如果在访问变量之前,在时钟处理中分配给它,则将推断出组合逻辑;
  • 如果在时钟进程中在分配变量之前访问它,则将推断触发器。
  • 在组合过程中给变量赋值之前,千万不要访问它:闩锁将被推断。

变量在进程执行之间保留其值。因此,如果在时钟进程中分配给变量之前访问了一个变量,则必须在进程的前一次执行时写入读取的值。在时钟进程中,先前的执行将处于先前的时钟边缘:因此,将推断出触发器。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43559961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档