第一次开发Lattic FPGA,记录一下遇到的问题供大家参考
使用的芯片时iCE40HX8K,采用的是外接flash方式。
问题1:烧写程序时出错
ERROR - Function:CHECK_ID
Data Expected: h16 Actual: hFF

网上有人使用其他款FPGA的,说是要先擦除,再编程。经试验,我这不是这个问题。经查资料,每一款flash都有其对应的厂商和ID,应当是编程协议中需要进行识别的,我这款ID的确是0x16,而报错是说收到的是0xFF,那么很有理由怀疑就是信号线一直处于高电平,而得到0xFF。因此对线路进行检查,后发现SPI的数据线错了,错误图如下:


我的SDI应当为SPI协议中的MOSI,SDO应当为SPI协议中的MISO,而这里的flash作为SPI协议中的从端(slave端),那么SDI应当连接到DI(pin5)引脚,而SDO应当连接DO(pin2)引脚,也就是说FPGA的SDO应当连接flash的DO,FPGA的SDI应当连接flash的DI。于是我用飞线的方式将两根线交换了,再测试,结果对flash编程成功了。
然而,始终觉得不对劲,自己设计电路时,是参考了lattice官方demo板的,按说不应该会

本文记录了在开发Lattice iCE40HX8K FPGA时遇到的两个主要问题:1) 烧写程序时的CHECK_ID错误,由于SPI数据线接反导致;2) FPGA无法自动从flash配置,原因是SPI接线与自动配置要求相反。作者通过检查电路、参考官方demo和手册,最终解决了问题。总结指出,iCE40系列FPGA的SPI接线设计与自动配置和编程有别,需要特别注意。
6221

被折叠的 条评论
为什么被折叠?



