楼主你这个逻辑表达式真长。。闲来无事Check了一下,发现你的代码:☆处要加一个),两个★处各去掉一个(,括号匹配就对了。
f1 <= (a3 AND NOT b3) OR (a2 AND NOT b2 AND ((a3 AND b3) OR (NOT a3 AND NOT b3))☆ OR ★((a1 AND NOT b1 AND ((a3 AND b3) OR (NOT a3 AND NOT b3)) AND ((a2 AND b2) OR (NOT a2 AND NOT b2))) OR ★((a0 AND NOT b0 AND ((a3 AND b3) OR (NOT a3 AND NOT b3)) AND ((a2 AND b2) OR (NOT a2 AND NOT b2)) AND ((a1 AND b1) OR (NOT a1 AND NOT b1))) OR (i1 AND ((a3 AND b3) OR (NOT a3 AND NOT b3)) AND ((a2 AND b2) OR (NOT a2 AND NOT b2)) AND ((a1 AND b1) OR (NOT a1 AND NOT b1)) AND ((a0 AND b0) OR (NOT a0 AND NOT b0)));
一个致命错误是你把f1、f2端口定义为OUT类型,却把它们放在f3的赋值语句的右侧,这是不允许的。
修改办法:
1.把f1 、f2定义为buffer类型,但一般不推荐这么用;
2.在Architecture内部定义两个信号或变量f1_temp和f2_temp,用它们来计算,然后再赋值给f1、f2和f3输出。
OVER,楼主谢谢我吧:)