Xilinx FPGA的多重配置功能(2)

 

当我们在对产品的FPGA代码做远程升级时,通常都是把加密后的下载文件发给用户,让用户在本地进行下载升级。但有时候由于我们没检查好,致使更新程序有问题,这样给到用户手上下载后,就会使得东西无法工作或者工作异常。如果不是紧急情况,做些沟通再把正确的文件重新给用户即可;但如果设备是属于持续工作型,那便一个钟也耽误不起,此时便会造成很多不必要的麻烦了。

所以在对FPGA代码进行远程升级时,建议使用多重配置功能。

1.ICAPE核
使用多重配置功能时,必须调用FPGA内部的ICAPE核,该核可以对上一节讲的IPROG的指令进行配置。

 

IPROG配置指令

 

IPROG配置指令

在Vivado中的“Language Templates”中进行搜索,输入”ICAPE”便可以看到你所使用的器件对应的ICAPE核的源语了。ISE的也是如此。

 

 

2.多重配置的代码
多重配置的代码是放在旧程序上,更新程序不需要此段代码。旧程序则从Flash的0地址开始存储;更新程序是存储在旧程序的后面。当系统上电后,FPGA会访问Flash的0地址起,查看旧程序中的ICAPE核,以此判断是否去加载新程序。

 

 

 

 

在更新程序中,则不需要以上的代码,原因上一小节已经说过了。

3.多重配置文件的打包
在Vivado中,生成.xdc文件时,还需要把Flash加载的信息写入。如下图所示,设置为SPI Flash存储,采用4速率进行读写。

 

 

之后便是将两个.bit文件合并成一个.mcs文件了。在Vivado的菜单栏中选择“Tools”——“Generate Memory Configuration File”,进行.mcs文件的配置。

 

 

如下图所示,选择Flash器件,选择读写速率,选择下载文件,点击OK便可以生成.mcs文件了。

 

 

最后将生成的.mcs文件发给用户即可,这样当用户在加载更新程序过程中出现问题时,FPGA会自动跳到之前的旧文件重新进行程序加载,从而保证设备可以正常运行。

有兴趣的读者可以尝试一下,在ICAPE核的控制代码中加入一些控制信号,比如使用一个外部按键,当检测到按键按下时,则执行ICAPE核的代码,此时FPGA便会去重新加载新的工程。如果没有按键按下,则继续运行当前的工程。

 

 

3.结语
本小节只是简单的介绍了如何编写代码与生成下载文件,在一般的运用中,按照本小节的做法便可以做到程序的多重加载了。如果大家还有其他的想法或者方法,欢迎留言讨论,一起学习~~

  •                     <li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use>
                        </svg><span class="name">点赞</span>
                        <span class="count">2</span>
                        </a></li>
                        <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;}"><svg class="icon" aria-hidden="true">
                            <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-Collection-G"></use>
                        </svg><span class="name">收藏</span></a></li>
                        <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-fenxiang"></use>
                        </svg>分享</a></li>
                        <!--打赏开始-->
                                                <!--打赏结束-->
                                                <li class="tool-item tool-more">
                            <a>
                            <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                            </a>
                            <ul class="more-box">
                                <li class="item"><a class="article-report">文章举报</a></li>
                            </ul>
                        </li>
                                            </ul>
                </div>
                            </div>
            <div class="person-messagebox">
                <div class="left-message"><a href="https://blog.csdn.net/neufeifatonju">
                    <img src="https://profile.csdnimg.cn/E/F/C/3_neufeifatonju" class="avatar_pic" username="neufeifatonju">
                                            <img src="https://g.csdnimg.cn/static/user-reg-year/2x/9.png" class="user-years">
                                    </a></div>
                <div class="middle-message">
                                        <div class="title"><span class="tit"><a href="https://blog.csdn.net/neufeifatonju" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}" target="_blank">neufeifatonju</a></span>
                                            </div>
                    <div class="text"><span>发布了19 篇原创文章</span> · <span>获赞 124</span> · <span>访问量 12万+</span></div>
                </div>
                                <div class="right-message">
                                            <a href="https://im.csdn.net/im/main.html?userName=neufeifatonju" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
                        </a>
                                                            <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}">关注</a>
                                    </div>
                            </div>
        </div>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值