完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`小弟,用单片机做主机给FPGA发一个字节数据,然后FPGA发送回来。但是发现在FPGA里MISO延迟一个周期导致单片机接受的数据少了一位。想请教大神们怎么解决啊?下图为仿真图FPGA,上升沿接受数据,下降沿发送数据,程序也如下 LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENtiTY spi_fpga is PORT (SCK: IN std_logic; MOSI: IN std_logic; CS : IN std_logic; MISO: OUT std_logic); END spi_fpga; ARCHITECTURE one of spi_fpga is SIGNAL MOSI_IN: std_logic; BEGIN PROCESS (CS,SCK) BEGIN IF (CS='1') THEN NULL; ELSIF rising_edge(SCK) THEN MOSI_IN <= MOSI; END IF; END PROCESS; PROCESS (SCK) BEGIN IF falling_edge (SCK) THEN MISO <= MOSI_IN; END IF; END PROCESS; END one; ` ![]() |
|
相关推荐
7个回答
|
|
PROCESS (CS,SCK) 使用同一个时钟的上升沿和下降沿操作数据是不能满足数据的建立时间和保持时间的,建议采用更快的时钟来处理这两个操作。 你说的附图有没有看到? |
|
|
|
你的图我也没有看到。
不过,从你的程序来看,单片机的确只能收到发送的8个bit中的7个比特。 1)你的单片机程序一定是边向FPGA发送数据,边从FPGA接收数据。举例来说:当单片机发送出第1个bit的数据后,单片机要再将这个bit的数据接收回来,肯定是在第二个sck处。这样算下来,单片机,只能接收到7个bit。除非,有两种情况下可以:a)假设数据在FPGA以及线路上的传输耗费小于半个sclk,而且,单片机接收数据时是下降沿采样数据,发送时是上升沿发送数据。b)一个SPI操作器件有9个sclk。其中,前八个用于发送数据,后8个用于接收数据。不论对于a或b来说,不会有人设计这样变态的SPI协议吧? 2)首先你的FPGA程序在写的时候,是否已经明白了单片接收数据是在SCLK的上升沿采样数据?如果是在上升沿采样数据,那么,在SPI空闲时,SCLK是高电平还是低电平,这个你也要清楚。若SCLK在SPI空闲时(CS=1),为高电平,则你用SCLK的下降沿送出数据是可行的。但是,就我前述1)来看,不论单片机是在上升沿还是下降沿采样数据,都只能收到8bit,除非满足1)的b条件。 3)按正常的设计,应该是FPGA接收到一帧SPI数据后,缓存一下,然后再把这一帧数据由单片机回读回去。 4)好好用笔画下波形,就什么都清楚了。 |
|
|
|
1)不是上升沿下降沿不能满足建立时间和保持时间的问题。
2)你没有理解好单片机的SPI时序图。你让单片机边发边回读,自然只能收到7bit。除非,单片机的SPI协议做成一个字节操作中,有9个sclk,其中前8个用于发送,后8个用于读取采样。有人设计这么变态的SPI协议吗? 3)正常的做法是:在FPGA中将接收到的SPI数据缓存一下,然后在下一个cs有效期间,发送出去。假设,你的一次CS有效是8个sclk。 4)好好画下波形图就可以看的很明白的。 5)虽然用同一个时钟的上升沿和下降沿来采样和发送数据不是很规范,但是,不是不可以使用。只要时序关系满足,怎么不可以使用? |
|
|
|
1)楼主没有好好理解单片机的SPI时序。
2)从的FPGA代码看,单片机是边发送数据边回读数据,这样算来,单片机确实只能收到7bit。除非单片机的一字节操作中,有9个sclk。其中前8个用于发送,后8个用于接收。 3)正常的FPGA代码设计应该是先把接收的数据缓存一下,然后在逐个bit被回读回去。 4)用同一个时钟的上升沿采样数据,下降沿发送数据是可以的。只要时序关系满足,就是可以的。 |
|
|
|
多谢回复。时间久了。 |
|
|
|
大神 有没有verilog版的程序呢
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求FPGA 驱动控制ltc2271 或者 ltc2180 或者 ltc2190或者 ltc2202 的代码
962 浏览 0 评论
363 浏览 0 评论
求助:遇见诡异问题,FPGA模块A输出端口连接模块B输入后,模块A不能正常工作的
1139 浏览 1 评论
414 浏览 0 评论
1071 浏览 1 评论
3987 浏览 89 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-6 14:40 , Processed in 0.619017 second(s), Total 52, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191