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