VHDL中的elseif和elsif有啥区别
Posted
技术标签:
【中文标题】VHDL中的elseif和elsif有啥区别【英文标题】:What is the difference between elseif and elsif in VHDLVHDL中的elseif和elsif有什么区别 【发布时间】:2012-08-27 11:38:54 【问题描述】:目前,我一直在使用 Xilinix 参与 FPGA 设计技术。在解决设计问题的过程中,我反复发现elseif
和elsif
在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 在编程语言中通常有同义词或几种方式来编写相同的东西。 【参考方案1】:如您在此处所见http://tams-www.informatik.uni-hamburg.de/vhdl/tools/grammar/vhdl93-bnf.htmlelseif 不是 vhdl 中的有效关键字。因此,如果它被认可,那么某些工具供应商想帮您一个忙……我猜您实际上看到了 else if,如上所述
【讨论】:
【参考方案2】:看起来正确的语法是 elsif。在任何 VHDL 参考中都没有提到 elseif。 http://www.eda.org/rassp/vhdl/guidelines/vhdlqrc.pdfhttp://webdocs.cs.ualberta.ca/~amaral/courses/329/labs/VHDL_Reference.htmlhttp://www.lsi.die.upm.es/~angelfh/LCSE/docs/Synario_VHDL_Reference_Manual_1997.pdf
【讨论】:
很高兴看到这个问题已经在谷歌中引用了“VHDL elseif elsif”这个词......仅仅一小时后。 感谢您的努力。但是,我在许多著名作家的 VHDL 书籍中都看到了这两种结构。 @bokan 我想你看到的是“else if”而不是“elseif”。 "else if" 是一个 else 后跟序列。这个序列可以是一条指令……;或 bloc 将以下 if() 视为一个序列。反正肯定是一样的。您应该认为这是理所当然的,并将您的大脑周期用于其他事情。 我认为这个语句中ELSE和IF之间没有空格:ELSEIF (clear = ‘1’) THEN dout 好吧,它们都被编译了,这次结果是一样的。正如你在第一条评论中评论的那样“我不知道 VHDL”,所以最好知道在 VHDL 中,指令与机器周期相关,设计人员应该了解这些指令,以便他/她可以优化设计。想着所以我发了这个问题,也许有这样的原因。最后,您为我的问题所做的努力很棒,谢谢! @bokan以上是关于VHDL中的elseif和elsif有啥区别的主要内容,如果未能解决你的问题,请参考以下文章