if (((loadnian[4]='1' or loadnian[3]='1' or loadnian[1]='1' or loadnian[0]='1') and (loadnian[2]='1' and loadnian[1]='0' and loadnian[0]='0')) or (loadnian[8]='1' and loadnian[7]='1' and loadnian[4]='1' and loadnian[6]='0' and loadnian[5]='0' and loadnian[3]='0' and loadnian[2]='0' and loadnian[1]='0' and loadnian[0]='0'))then
Error (10500): VHDL syntax error at test.vhd(332) near text "4"; expecting "]", or an identifier, or a string literal, or "return"
if 里面的判断不应该是==吗
vhdl语言是=
帮你格式化一下:
if
(
(
(
loadnian[4]='1' or loadnian[3]='1' or loadnian[1]='1' or loadnian[0]='1'
)
and
(
loadnian[2]='1' and loadnian[1]='0' and loadnian[0]='0'
)
)
or
(
loadnian[8]='1' and loadnian[7]='1' and loadnian[4]='1' and loadnian[6]='0' and loadnian[5]='0' and loadnian[3]='0' and loadnian[2]='0' and loadnian[1]='0' and loadnian[0]='0'
)
)
then
条件有问题哦!!
loadnian[1]='1' and loadnian[1]='0' 两个互斥的
loadnian[0]='1' and loadnian[0]='0' 两个是互斥的
题主是否真正理顺你的判断逻辑??
我是在判断一个年份是不是闰年,年份的代码是11位2进制代码,不能用rem取余函数
@winner12: 那就得判断bit位,但是明显你的
(
loadnian[4]='1' or loadnian[3]='1' or loadnian[1]='1' or loadnian[0]='1'
)
and
(
loadnian[2]='1' and loadnian[1]='0' and loadnian[0]='0'
)
第一行的loadnian[1]='1' 和第二行loadnian[1]='0' 是互斥事件,不能在一起and的
第一行的loadnian[0]='1' 和第二行loadnian[0]='0' 是互斥事件,不能在一起and的,
这个判断本身就存在问题。
@winner12: 我觉的你还是定义一个integer类型的变量非信号,按照位移存储起来,然后用integer做运算,这样子也方便,代码维护也好。
为什么要把那么多判断放在一起啊
判断一个年份是不是闰年,不能用rem取余函数