1、概述
如下图所示一个场景,FPGA系统工作时钟是125M,此时所能容忍的单片机与FPGA接口的SPI工作时钟最快是多少,本案例只考虑异步采样,后续有机会补充使用spi_clk采样的情况。
2、过程描述
SPI接口的时序:
FPGA接收单片的发送数据,此时,FPGA能够接收的spi_clk时钟是比较快的,发送端sys_clk的采样时序:
没有考虑spi_clk,spi_cs,spi_mosi之间的偏移。
FPGA返回数据,时序:
FPGA返回给单片机的建立时间为t1,会比较紧张
spi_clk_0:单片机(Soc)的管脚输出波形
spi_clk_1:fpga 逻辑处理段波形
sys_clk :fpga内部处理时钟
case1:采样时钟(sys_clk)和数据(spi_clk_1)边沿对齐,此时采集数据是亚稳态,经亚稳态处理后为0,spi_clk的延时较大;
case2:采样时钟(sys_clk)和数据(spi_clk_1)间隔一个sys_clk的建立时间,此时采集数据是亚稳态,经亚稳态处理后为0,spi_clk的延时较大;
显然case2的延时会更大
spi_clk_1_ff0:跨时钟域处理第一拍;
spi_clk_2 :为case2进入spi处理模块的波形(sys_clk打2拍跨时钟域处理在模块外部)
spi_clk_2_ff0:是spi_clk_2延时1拍,用来判断上升沿
spi_miso_0 :spi_clk_2的上升沿将数据打出波形,FPGA 逻辑资源输出波形
spi_miso_1 :spi_miso_0经过走线后在单片机端的波形
3、sys_clk倍数关系
因此sys_clk一个周期能够覆盖 走线,以及单片机端建立保持时间,sys_clk/spi_clk(频率关系) =4,是一个极限值,5倍时钟关系是比较保险的策略。