微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 上位机程序通过网口下载至FPGA

上位机程序通过网口下载至FPGA

时间:10-02 整理:3721RD 点击:
最近在调一块板子,想把上位机程序通过以太网口下载至板子上的FPGA里,或是经过FPGA下载至flash里,请有经验的哥们给予指导怎么实现这个流程。

我做过类似的东西
1.一般的FPGA的程序都是存放在外部flash中的,简单的,比如spi flash
2.FPGA与flash之间是基于spi协议通信的
3.上位机用网口将程序发给FPGA,FPGA将数据解析,然后用spi的方式写入flash中
4.过程很简单,但其实有很多细节需要考虑的



    这个我以前没做过啊 ,刚读硕士做FPGA,只玩过开发板,以为程序都是通过JTAG下载到FPGA里面的,这不老板突然让我通过网口下师兄们的算法程序到fpga,我查了好久都找不到流程,苦闷啊。求指教,谢谢了

你先好好看看spi的协议吧,这个还简单一点
网络的有些复杂,需要一些时间
边看数据手册边学习吧,如果没怎么弄过FPGA,那会需要一些时间的



   SPI协议我之前写过了,也实现了;现在的问题是:板子上的网口驱动程序启动后,上位机程序要通过网口先经过fpga再存到flash中,这个就不一样了。



   怎么启动FPGA下载Flash里的程序呢?望指教



    自己定义一个简单的协议,遇到开始符就开始重写flash

弄个 网口 转 串口模块 就可以实现 FPGA 和PC 通信了吧。
然后 FPGA 和FLASH 是SPI 总线。
具体通信协议 需要仔细考虑。
其实加个单片机 更灵活,

可以通过mcu把程序下载到flash,fpga设为主动配置,开机后自动从flash加载程序



   我的意思是怎么启动flash里面新下的程序,重新开机的话没什么必要了吧,还不如直接重新下载呢。怎么启动重新配置,给一下系统复位?

求高人解答


spartan6里面有ICAP的原语,通过操作这个原语就可以实现重新配置
具体的方法你可以看看spartan6的config user guide中关于 multi-boot的章节
我曾经用过一种方法:PC和FPGA通过串口通信,将bin文件传输到FPGA,FPGA通过SPI协议将bin文件烧写到flash当中。
烧写完成后,通过ICAP重新加载FLASH中的程序。



   多谢赐教,一会就去看看手册,再请教一下,flash的引脚怎么接:1.直接连到FPGA的专用下载引脚,但是在线下载PC端的程序不好控制吧,专用引脚不能当普通IO引脚;
2.接普通IO,我不知道可以不,我先去看看ICAP协议的;
3.每个引脚连到FPGA的两个引脚,一个是专用引脚,方便FPGA下载程序,另一个是普通IO,以便通过SPI往flash下载程序;如果是这样,普通IO空闲状态是什么电平,高阻吗?高电平或者低电平不行吧。
      多谢了啊



   大概明白了,相当于FPGA内部集成一个cpu进行控制,就用FPGA的专用引脚。和外部加MCU进行控制原理差不多,就是少个器件。要是说得不对请指教啊,多谢了!

xilinx有multi-boot的参考设计,你可以看看怎么使用icap的
FPGA与flash之间的spi接口的引脚是固定的,不能是普通的io。在加载完flash之后,这4个引脚就可以当做普通io来使用了。



   请问下,你把程序下载到flash以后,重新配置启动参数?

FPGA的配置文件一般是bit或mcs文件,要是想让上位机的程序下载到FPGA中执行,是否应该以这两种文件形式?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top