SDRAM 接口控制程序
在部分SDRAM接口控制程序中我发现IF条件语句中包含了与运算和或运算部分源程序如下:
if ((CMD == 3'b110)&(LOAD_REG1 == 0)&(CMD_ACK == 0)) //LOAD_REG1 command
LOAD_REG1 <= 1;
else
LOAD_REG1 <= 0;
if ((CMD == 3'b111)&(LOAD_REG2 == 0)&(CMD_ACK == 0)) //LOAD_REG2 command
LOAD_REG2 <= 1;
else
LOAD_REG2 <= 0;
if (((CM_ACK == 1)| (LOAD_REG1 == 1) |(LOAD_REG2 == 1))&(CMD_ACK == 0))
CMD_ACK <= 1;
在某些大型设计要求IF语句条件中不能包含有运算,虽然仿真结果一样,但把IF条件中的运算符号 "&","|"改为逻辑符号 "&&","||"好些
修改后如下:
if ((CMD == 3'b110) && (LOAD_REG1 == 0) & &(CMD_ACK == 0)) //LOAD_REG1 command
LOAD_REG1 <= 1;
else
LOAD_REG1 <= 0;
if ((CMD == 3'b111) && (LOAD_REG2 == 0) && (CMD_ACK == 0)) //LOAD_REG2 command
LOAD_REG2 <= 1;
else
LOAD_REG2 <= 0;
if (((CM_ACK == 1) || (LOAD_REG1 == 1) || (LOAD_REG2 == 1)) && (CMD_ACK == 0))
CMD_ACK <= 1;
请大家指正:谢谢! 很有道理!@
修改后语法严谨些
不过两者的结果是一样的 在vhdl 中则不会出现这样模棱两可的啦其逻辑与为 and
而且只有布尔类型的才可以进行与运算
页:
[1]