gpt4 book ai didi

if-statement - 没有 elsif 和 else 条件的 if 语句的 VHDL 综合

转载 作者:行者123 更新时间:2023-12-04 05:29:11 27 4
gpt4 key购买 nike

我试图更好地了解合成如何在没有指定其他条件的过程中工作。

我认为这不是编码方式,因为我没有考虑其他选项,但我的问题是如何解释这段代码?

process(clock)
begin
if (clock'event and clock ='1') then
if sel0 = '1' then qout <= A - B; end if;
if sel1 = '1' then qout <= qout sra 2; end if;
end if;
end process;

IF 语句将被合成到多路复用器中。我认为对于这个例子,两个多路复用器将在一个链中连接在一起,最后一个 D 寄存器用于 out 的注册值。我在猜测 sel0 '0' 和 sel1 '0' 时 qout 的值是多少?
当每个多路复用器的选择器为“0”时会发生什么?网络是否保持相同的输出,推断锁存器?

谢谢。

最佳答案

为了展示和了解综合工具如何实现设计,您可以例如使用 Altera Quartus II 进行综合,然后使用内置 RTL 查看器来显示最终设计的高级表示。

该代码使用 1 位向量来简化结构,给出如下所示的结果。

enter image description here

所以这显示了一个每个周期更新的触发器,其值:

  • qout_sra_2如果 sel1 = '1'
  • a_minus_b如果 sel1 = '0'sel0 = '1'
  • qout (重新分配相同的值)如果 sel1 = '0'sel0 = '0'

  • 因此等效于:
    if clock'event and clock ='1' then 
    if sel1 = '1' then
    qout <= qout sra 2;
    elsif sel0 = '1' then
    qout <= A - B;
    else
    qout <= qout;
    end if;
    end if;

    其他综合工具可能会以不同的方式实现它,例如在触发器上使用时钟使能的 Xilinx ISE,从而给出以下结果。

    enter image description here

    所以这显示了一个触发器,如果​​ sel0 被更新或 sel1'1' ,值:
  • qout_sra_2如果 sel1 = '1'
  • a_minus_b如果 sel1 = '0'

  • 因此等效于:
    if clock'event and clock ='1' then 
    if not ((sel0 = '0') and (sel1 = '0')) then -- (sel0 = '1') or (sel1 = '1')
    if sel1 = '1' then
    qout <= qout sra 2;
    else
    qout <= A - B;
    end if;
    end if;
    end if;

    关于if-statement - 没有 elsif 和 else 条件的 if 语句的 VHDL 综合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26768763/

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