FPGA|CPLD|ASIC论坛
直播中

dididi1

4年用户 7经验值
擅长:接口/总线/驱动 EDA/IC设计 EDA/IC设计 接口/总线/驱动
私信 关注
[问答]

FPGA作为从机通过SPI接收ARM传来的数据,回传的数据发生跳变

FPGA接收ARM端传过来的数据时,片选拉低时,直接通过SPI上的时钟SCLK的上升沿进行寄存数据,然后在spi_clk的下降沿输出寄存的数据,这样在输出时会导致传给ARM的数据发生跳变,然后我改了下代码,在FPGA的内部时钟(sys_clk)的上升沿对SPI上的时钟和数据进行操作,回读的数据正常了。请问前者和后者的区别是啥?是因为要经过内部的时钟进行同步操作吗?
4.png
上图为接收数据,这是修改后的代码,在sys_clk下操作,之前是直接在spi_clk 和片选进行操作,和片选无关。
3.png
2.png
第二张和第三张图之前也是在spi_clk下进行数据输出,现在就是将spi_clk和sys_clk的边沿对齐进行通信,我修改后回读数据正常了,有大佬能解答下下吗???
  • 1.png

回帖(2)

lalajie

2021-8-6 15:20:02
看看学习一下
举报

卿小小_9e6

2021-8-6 20:24:16
需要在时序上对齐,不对齐的话数据可能跳变,包括spi_clk也可能跳变的。
//------有一种情况读取的数据不会跳变
当ARM端输出的数据为全1或者全0,此种情况下读取的数据不会跳变。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分