我在VHDL中有一个代码段,这让我不确定是否正确:a和b是std_logic_vectors。 c1和c0是std_logic。这个写的正确吗?特别是“ c1 ='1'和c0 ='0'”这一部分让我很挣扎。
if unsigned(a) > unsigned(b) then
assert(c1 = '1' and c0 = '0')
您不确定的部分是正确的。 c0
,c1
,'0'
和'1'
均为std_logic
,因此以这种方式进行比较是正确的。 (在VHDL =
中,是相等比较运算符。它不执行赋值,就像许多软件编程语言一样)。每个比较的结果都是一个布尔值(true
或false
),因此可以与assert
语句一起使用。
我认为真正错误的唯一部分是,您必须以if
结尾end if
。通常还建议每当您使用assert
时,都将显示report
错误消息并设置一个severity
(例如note
,warning
,error
或failure
,具体取决于错误的严重程度)是)。
因此:
if unsigned(a) > unsigned(b) then
assert c1 = '1' and c0 = '0' report "<Error message>" severity warning;
end if;