潮声隔雨深 · 2021年11月30日

源同步接口设计2|slave篇

1.slave的同步设计

SPI NAND FLASH就是典型的同源接口中的slave。时钟从接口进来,就好比时钟从晶振进来一样。设计时,只需要像个收了钱的乙方,协议叫你躺,你就躺;叫你跪,你就跪。打拍,锁存,一系列的同步操作猛如虎。图2.1代码就是使用移位寄存器对数据进行锁存,其中i_cpm_spi_sclk为master发送过来的时钟,i_padctrl_spi_d0为master发送过来的数据。

图片.png

图2.1

然而,使用Master发送过来的时钟做同步设计,也是有局限的。如图2.2,所有的时钟都用在传输命令和数据上。如果你想用CS#去做复位相关寄存器,只能做异步复位,但没有多余的时钟给你去做同步释放。。。

图片.png

图2.2

为了解决复位的问题,协议上可能会将图2.3中的tSHCH和tCHSL设的大点,以保证复位的recovery和removal time能够达到满足。

图片.png

图2.3

2.slave的异步设计

为了提高兼容性,有些人也会放弃同步设计的思路,去采用异步设计——使用一个更高频的时钟对数据和接口的时钟进行采样。这时,接口时钟就好比多bit跨时钟域处理中的load信号了。先用采样时钟对接口时钟同步,然后再去对接口数据进行采样。多bit跨时钟域处理的方式如图2.4所示。

图片.png

图2.4

最后上两段代码,如图2.5图2.6所示,先用更高的时钟i_cpm_spi_sclk对master发送过来的时钟i_padctrl_spi_clk_in进行同步,然后再用同步后的上升下降沿去采样数据。看不懂也没关系,有个概念就好。。。。

图片.png

图2.5

图片.png
图2.6

3.STA需要关注的问题

若采用的是同步设计,则按照图2.3中的input timing的规定来设置input delay,output delay也是如此;如采用异步设计,STA中尽量将bus做齐,同时将load与数据bus做齐,这样能够更好的提高兼容性。

以上就是今天要分享的内容,谢谢!

END

作者:七点班车
原文链接:https://mp.weixin.qq.com/s/J3nIqtXIxOjpkNV2kKaJtQ
微信公众号:
IC小迷弟

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏
推荐阅读
关注数
20144
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息