在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2221|回复: 1

[讨论] 如果用逻辑电路来而非CPU来实现循环发送命令,什么方式比较好?

[复制链接]
发表于 2012-12-27 22:15:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
现在很多电路设计中都会遇到对外围芯片发送命令的要求,例如设计SDRAM控制器或者I2C控制器等等。

按我理解,发送命令通常有两种方式:

一种是用逻辑电路作为协议接口,然后定义一组寄存器作为命令寄存器,CPU向命令寄存器中写入命令,逻辑电路将这组命令按照协议要求发送出去,并读取响应存入响应接收寄存器供CPU读取;

另一种就是在逻辑电路中用状态机实现命令的发送,这种方式,如果命令种类少,可以直接让每种命令对应状态机的一个状态,状态机在哪种状态则发送相应的命令,例如SDRAM的控制,但是如果命令种类比较多,例如SD/MMC卡的命令,如果还用这种方式,那么状态机的状态会比较复杂,冗余较多,我有一种想法,大家帮忙看看有什么好处和坏处:

以我现在在做的SD卡的控制接口为例,SD卡的初始化发送命令流程是固定的,那么我可以把所有需要的命令按一定顺序存在一个命令ROM中,其中初始化命令按照规范的顺序存放,初始化流程开始后开始发送第一条命令,命令执行完后判断响应是否正确,如果正确地址指针加1,指向下一条命令,否则重新发送当前地址存放的命令,初始化完成之后,地址指针停留在一个特殊地址Addr_invld,该地址中存放的是无效命令,如果外部有读写等请求,则地址指针跳向存放相应命令的地址,正确执行完成之后返回Addr_invld。这样我只需要在适当时刻判断SD卡返回的命令响应,而无需庞大的状态机来进行控制。感觉这种方式有点像CPU的指令执行机构从指令池取指的操作。
发表于 2012-12-28 17:22:53 | 显示全部楼层
你的最后一种做法是很好的,比较节省逻辑单元,如果不用CPU ,你的这种方法是首选
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-10 11:14 , Processed in 0.021476 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表