PCIe上电PC机无法识别问题,bpi,vivado


本文基于Vivado软件调试PCIe板卡,讨论PCIe上电后PC机无法识的问题。同时PCIe开发板的flash芯片为:28f00ap30t-bpi-x16,且基于RIFFA2.0框架开发PCIe接口。


一、问题现象

当PCIe开发板供电由外部电源供电更改为PC主板供电时,将PCIe板卡插入到电脑主板中,电脑开机后,PC无法在设备管理器中识别到PCIe设备。


二、问题分析

经过查阅资料发现,主板会在上电的一段时间内与插在主板上的各个设备进行协商,从而得到外接设备的设备号,最终识别该设备。然而不同PC机的主板在启动速度不同,从而导致用于识别设备的时间各不相同。而PCIe开发板在上电时需要一段时间进行初始化,包括:读取FLASH存储器中固化的PCIe程序、配置PCIe设备产生设备号等。当主板启动过快,PCIe还未初始化完成,PC主板与PCIe协商就已经结束,自然便无法识别到PCIe设备。这就解释了为什么在外部电源供电时,PCIe先上电,PC主板后供电的时候PC便能正常识别到PCIe设备。以及为什么在开发板由PC主板供电时老主机能够识别到PCIe,而新几代的主机无法识别到PCIe板卡。

丢一张形象的电脑识别外设的流程图:
在这里插入图片描述


三、解决思路与结果

法1

在修改为主板供电后,最先想到的解决思路是人工打断PC启动,等PCIe初始化完成后再继续启动PC,操作方式为:
1、开机并按住键盘的break键不放
2、按住5~10s等PCIe初始化完成,随后松开break键以继续启动PC
3、最终PC正常识别PCIe设备。

法2

但容易发现如果经常开关机电脑,以上方法显得过于繁琐。于是从减少PCIe初始化时间的角度根治问题,经过多次实验发现PCIe读取型号为28f00ap30t-bpi-x16的FLASH存储器速率可修改,其可修改约束文件语句进行改变:

注意:这里只针对bpi的flash能使用此方法。spi的flash程序加载很快一般不会存在这种问题

set_property BITSTREAM.CONFIG.CONFIGRATE XX [current_design]

该芯片XX处支持3、6、9、12四个速率。若板未通过该语句设置速率,默认速率为3,而当将其修改为12,速率提高4倍后,PCIe上电初始化加快并能通过PC机识别到该设备。


对于spi与bpi的flash固化方法,在我上传的资源中有讲解,大家有兴趣可以去查看。


最后,觉得有用的博友点个赞吧!

  • 11
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值