【问题标题】:What is the difference between elseif and elsif in VHDLVHDL中的elseif和elsif有什么区别
【发布时间】:2012-08-27 11:38:54
【问题描述】:

目前,我一直在使用 Xilinix 参与 FPGA 设计技术。在解决设计问题的过程中,我反复发现elseifelsif在if-chain中的使用几乎是为了类似的语句。

elsif(clk'event and clk='1') then
                 pr_state<=nx_state;

elseif S1=’0’ and  S0=’1’ then
     Z <= B;

我的问题是——这两种结构有什么区别?它们相似吗?我已经通过 D.L. Perry 的 VHDL 书籍和其他在线 VHDL 教程网站,但找不到解决方案。提前致谢!

【问题讨论】:

  • 我不知道 VHDL,我想没有区别。如果它们是一个,那将是非常混乱的。我无法想象语言设计师会这样做。
  • 嗯,我认为至少应该有一点不同,否则设计师不会为完全相同的功能制作两个构造。 @bokan
  • 在编程语言中通常有同义词或几种方式来编写相同的东西。

标签: vhdl fpga digital


【解决方案1】:

如您在此处所见
http://tams-www.informatik.uni-hamburg.de/vhdl/tools/grammar/vhdl93-bnf.html
elseif 不是 vhdl 中的有效关键字。因此,如果它被认可,那么某些工具供应商想帮您一个忙……我猜您实际上看到了 else if,如上所述

【讨论】:

    【解决方案2】:

    【讨论】:

    • 很高兴看到这个问题已经在谷歌中引用了“VHDL elseif elsif”这个词......仅仅一小时后。
    • 感谢您的努力。但是,我在许多著名作家的 VHDL 书籍中都看到了这两种结构。 @bokan
    • 我想你看到的是“else if”而不是“elseif”。 "else if" 是一个 else 后跟序列。这个序列可以是一条指令……;或 bloc {} 将以下 if(){} 视为一个序列。反正肯定是一样的。您应该认为这是理所当然的,并将您的大脑周期用于其他事情。
    • 我认为这个语句中ELSE和IF之间没有空格:ELSEIF (clear = ‘1’) THEN dout
    • 好吧,它们都被编译了,这次结果是一样的。正如你在第一条评论中评论的那样“我不知道 VHDL”,所以最好知道在 VHDL 中,指令与机器周期相关,设计人员应该了解这些指令,以便他/她可以优化设计。想着所以我发了这个问题,也许有这样的原因。最后,您为我的问题所做的努力很棒,谢谢! @bokan
    猜你喜欢
    • 2011-03-24
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多