我正在做一个练习,我必须找到VHDL代码的错误,我不会在这里直接粘贴代码,因为它是一个打印。
此刻,代码的这一部分:
用E选择 当“110”|“100”|“000”时,S< =“001”,
如果此运算符“|”存在,我可以注意到|之间的区别和“或”。
但是它存在吗?
答案 0 :(得分:3)
它存在。它不是运营商,而是分界线。 (IEEE Std 1076-1993,13.2词法元素,分隔符和分隔符)。
从您的问题来看,您会发现很难在LRM中找到支持。 BNF在附录中包含语法摘要的标准文本中有各种规范。
来自IEEE Std 1076-1993:
<8> 8.8案例陈述...
case_statement_alternative ::=
when choices =>
sequence_of_statements
...
在case语句中作为选项给出的简单表达式和离散范围 必须是本地静态的。由离散范围定义的选择代表所有 相应范围内的值。选择其他人只允许 最后的选择,作为唯一的选择;它代表所有价值观(可能 没有)在以前的替代选择中没有给出。一个简单的元素 名称(见7.3.2)不允许作为案例陈述备选的选择。
7.3.2汇总
...
choices ::= choice { | choice }
choice ::=
simple_expression
| discrete_range
| element_simple_name
| others
分隔符垂直条('|')用于分隔选项。 case语句替代选项不能是元素简单名称。您的示例显示了简单表达式的选择。