集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2326|回复: 2

SDRAM 接口控制程序

[复制链接]
至芯兴洪 发表于 2011-5-29 13:59:49 | 显示全部楼层 |阅读模式
在部分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;

请大家指正:谢谢!
cgh996 发表于 2011-7-31 13:52:06 | 显示全部楼层
很有道理!@
修改后语法严谨些
   不过两者的结果是一样的
cgh996 发表于 2011-7-31 13:53:33 | 显示全部楼层
在vhdl 中则不会出现这样模棱两可的啦  其逻辑与为 and
   而且只有布尔类型的才可以进行与运算
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-4 10:00 , Processed in 0.058416 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表