FPGA与单片机上位机用哪种通讯方式速度最快?
下位机FPGA CII EP2C8, 跑Nios II 上位机用 STM32 或 AVR32 ,上位机要传大量数据到下位机。不是连续传输,只是在加载数据的时候传一次。
如果用 USART 方式速度应该快不了。 当然也不能用并行总线了(远程通讯 50cm - 100cm左右距离)
传输数据量一般是 1MByte - 5MByte左右, 所以算比较大。USART在115200下花太多时间,用户会感觉
到明显很慢。
不知道还有什么方式简单又可以提高这个通讯速度的呢? 不用总线只能用SPI了,STM32最快18Mbps,AVR32最快60/66Mbps。 用SPI,也省IO。
最好把SPI总线加驱动变成5V,如用74等芯片。让SPI工作于这个速度上以及这个距离,不成问题。 SPI可以多远距离? 还有要双向上位机可以读下位机的数据。
下位机到上位机的数据量比较少,只是一些状态。 再远没试过,公司里同事试过100米正常工作,且是双向通讯。
你是上电交换一下数据,如果速度放慢点,如在3秒内完成所有数据量,那SPI的速度可以下调,更可靠点,也就更远些。 长距离传输时,SPI这种串行传输比并行传输更可靠,可以用更高的速度
SPI有同步时钟,比UART好,节省了同步位,唯一的缺点就是比UART多用一根时钟线
楼上说的100米传输,线上的电容太大,会严重影响速度,用示波器看,振铃信号会很大,最后不得不降低速度
1米以内,地线解决好,高速SPI应该没问题 显然,如果SPI须要更远,更可靠,那每条线都用双绞差分驱动传输,是最好的办法。 我只是在重载的时候传一下数据过去。 大部份时间是上位机回传状态。
如果能在2,3少传完还不算太慢。 应该可以接受。
是不是上位机做主机,下位机做从机比较合适? 以太网 回复【1楼】gzhuli咕唧霖
不用总线只能用spi了,stm32最快18mbps,avr32最快60/66mbps。
-----------------------------------------------------------------------
纯通信速度有这么快,但是SPI的通信开销很大 以太网 就复杂了。。 还要跑IP栈
且外围要加很多。
不知道Nios的 SPI性能怎么样? 能不能跟上 FIFO 回复【10楼】p.nicholas
回复【1楼】gzhuli咕唧霖
不用总线只能用spi了,stm32最快18mbps,avr32最快60/66mbps。
-----------------------------------------------------------------------
纯通信速度有这么快,但是spi的通信开销很大
-----------------------------------------------------------------------
SPI通信会有什么开销? 回复【12楼】eworker
fifo
-----------------------------------------------------------------------
fifo又怎么样使用呢? 回复【13楼】gzhuli咕唧霖
回复【10楼】p.nicholas
回复【1楼】gzhuli咕唧霖
不用总线只能用spi了,stm32最快18mbps,avr32最快60/66mbps。
-----------------------------------------------------------------------
纯通信速度有这么快,但是spi的通信开销很大
-----------------------------------------------------------------------
spi通信会有什么开销?
-----------------------------------------------------------------------
XD可以测试一下,如果单次通信是一个字节,发送1W个字节到FPGA,总共消耗多少时间,SPI时钟以16M为例。 回复【15楼】p.nicholas
-----------------------------------------------------------------------
谁让你单次一个字节了?LZ要一次性传1MB-5MB数据,你一次一个字节传去? -_-! 回复【16楼】gzhuli咕唧霖
回复【15楼】p.nicholas
-----------------------------------------------------------------------
谁让你单次一个字节了?lz要一次性传1mb-5mb数据,你一次一个字节传去? -_-!
-----------------------------------------------------------------------
你想一次传5MB? 有问题么? 回复【18楼】gzhuli咕唧霖
有问题么?
-----------------------------------------------------------------------
没问题,我只能深深的感叹好牛的单片机啊,一次能传5MB数据 如果AVR32UC3A0外挂32MB SDRAM,能不能一次传5MB数据呢你说? 那NIOS要不要也外挂一块 如果LZ的NIOS吃不了5MB数据LZ会问这个问题?
你再读读LZ的说明:“只是在加载数据的时候传一次”,“传输数据量一般是 1MByte - 5MByte左右”。 Nios有外挂SDRAM >8MByte
谢谢这么多高手支招! 准备做些实验,打算用 AVR32 做上位机。
再问:如果用把SPI变差分信号传,有没有专用的芯片? SN65LVDT14
SN65LVDT41
很适合SPI
可以考虑用网线传输 h2feo4 无机酸 提到的都非常好。另外,LZ使用普通常用的RS485双绞传输也可。 远距离传输最好封包加CRC并使用确认应答机制,否则不知道会发生什么奇怪的事情…… 回复【26楼】gzhuli咕唧霖
远距离传输最好封包加crc并使用确认应答机制,否则不知道会发生什么奇怪的事情……
-----------------------------------------------------------------------
封包大小为多少合适? 给个经验值。。 0.5~4K,根据实际情况定,包越大封包开销越小,速率越接近理论值,但如果出错率高的话速率损失也越严重。 回复【28楼】gzhuli 咕唧霖
-----------------------------------------------------------------------
谢谢!
页:
[1]