Xilinx 7系FPGA配置

#配置概述:
Xilinx7系列 FPGA 通过将特定于应用的配置数据(比特流)加载到内部存储器中进行配置。7系列 FPGA 可以从外部非易失性存储器器件加载自身,也可以由外部智能源(如微处理器、DSP 处理器、微控制器、PC 或电路板测试仪)进行配置。在任何情况下,都有两个常规配置数据路径。第一种是串行数据路径,用于最大限度地降低器件引脚要求。第二个数据路径是 8 位、16 位或 32 位数据路径,用于提高性能或访问(或链接)行业标准接口,非常适合处理器或 x8 或 x16 并行闪存等外部数据源。
每种FPGA器件类型的完整比特流都有固定的长度。FPGA 要么自动从非易失性闪存加载配置数据,要么另一个外部智能设备(如处理器或微控制器)可以将配置数据下载到 FPGA。此外,配置数据可以通过电缆从主机下载到FPGA的JTAG端口。
Xilinx FPGA配置数据存储在CMOS配置锁存器(ccl)中,因此必须在掉电后重新配置。每次通过特殊配置引脚将比特流加载到设备中。这些配置引脚是许多不同配置模式的接口。
•Master-Serial配置模式
•Slave-Serial配置模式
•Master SelectMAP(并行)配置模式(x8和x16)
•Slave SelectMAP(并行)配置模式(x8, x16和x32)
•JTAG/边界扫描配置模式
•Master Serial Peripheral Interface (SPI) flash配置模式(x1, x2, x4)
•Master Byte Peripheral Interface (BPI) flash配置模式(x8和x16)使用并行NOR flash
通过在专用模式输入引脚M[2:0]上设置适当的电平来选择特定的配置模式。在配置期间和配置后,模式引脚M[2:0]保持不变。
相对于Virtex-6, SelectMAP模式和ICAPE2原语没有BUSY引脚/端口。在7系列中不需要BUSY,因为SelectMAP/ICAPE2输出数据是确定的(参见通过SelectMAP接口访问配置寄存器,第120页)。ICAPE2最大频率(FICAPCK)见7系列数据表。

在这里插入图片描述
在这里插入图片描述
串行模式非常简单,仅由时钟和串行数据输入组成。JTAG模式也是一种简单的串行配置模式,用于原型设计和电路板测试。Slave SelectMAP模式是一个简单的x8、x16或x32位宽的处理器外设接口,包括一个芯片选择输入和一个读/写控制输入。
FPGA具有串行外设接口(SPI),通过该接口FPGA可以从标准SPI闪存设备读取位流。
Vivado工具提供了Tcl命令CALC_CONFIG_TIME,可用于估计配置时间。使用help calc_config_time获取使用信息。


配置接口:

Xilinx7系列设备有5个配置接口。每个配置接口对应一个或多个配置模式和总线宽度,如表2-1所示。
在这里插入图片描述
每种配置模式都有一组相应的接口引脚,Bank 0包含专用配置引脚,并且始终是每个配置接口的一部分。Bank 14和Bank 15包含用于特定配置模式的多功能引脚。
具体过程https://zhuanlan.zhihu.com/p/14765192
Partial Reconfiguration(部分重配置)在现在的FPGA应用中越来越常见,我们这次的教程以Project模式为例来说明部分重配置的操作过程。

这里我们使用的Vivado版本是2017.2,使用的例程是Vivado自带的wavegen工程,并在工程中增加一个计数器模块,如下图所示

在这里插入图片描述
下面开始进行Partial Reconfiguration的配置
1.首先打开工程,并将其中一个Reconfiguration Module添加到工程中即可,这里我们选择将count_add添加到工程中,选择Tools->Enable Partial Reconfiguration
在这里插入图片描述
出现下面的对话框,点击Convert。该对话框是指如果使能了Partial Reconfiguration模式,是不能返回到普通模式的。
在这里插入图片描述
此时在Flow Navigator的PROJECT MANAGER下面就会出现Partial Reconfiguration Wizard的选项

在这里插入图片描述
2. 右键要reconfiguration的模块,即inst_count,并选择Create Partition Definition
在这里插入图片描述
此时,弹出对话框提示我们输入创建的Partition的名字,我们起名为count_demo,点击OK
在这里插入图片描述
在这里插入图片描述
在这一步我们需要提醒一下,通常我们需要进行PR的模块都是比较复杂的模块,里面很可能会包含IP Core,那样的话我们就不能直接这样操作,比如我们要对该工程中的clk_gen_i0模块进行PR,可以看到,这个模块中包含了clk_core_i0这个IP
在这里插入图片描述

当我们在clk_gen_i0这个模块上右键选择Create Partition Definition时,会提示下面的对话框:

module with out-of-context child module cannot be made into partition definition
在这里插入图片描述
这个意思是包含有ooc子模块的模块,是不能做成partiton的,Vivado中所有的IP Core都是ooc的模块,因此我们需要把clk_gen_i0这个模块导出成dcp后再使用,具体可以参考我的另一篇文章

Vivado中模块封装成edif和dcp

简单来讲,就是先将这个模块设为top,综合后导出dcp,使用的tcl脚本是

write_checkpoint -noxdef <path_to_file>
有几个需要RM(Reconfiguration Module)的模块,就要综合几次,导出几个dcp文件

我看网上也有的教程是直接对整个工程进行综合,然后单独导出RM模块的dcp,使用下面的tcl

write_checkpoint -cell <path_to_cell> <path_to_file>
这两种导出dcp的方式是有区别的,把整个工程进行综合,每个子模块的接口很有可能会有所改变,可能是名字改了,也可能是增加或减少了一些接口。如果我们的几个RM只是接口相同,功能不同的话,这样带有不同RM模块的工程综合的结果可能不一样。因此推荐将RM模块设为top,综合后导出dcp

另一点需要注意的是,如果使用了dcp文件,我们也添加一个wrapper.v到工程中,因此dcp文件是不能直接进行Create Partition Definition操作的。
3. 选择左侧导航栏的Partial Reconfiguration Wizard,开始添加RM
在这里插入图片描述

这里,点击+号按钮,出现下面对话框,首先点击Add Files,选择count_sub.v;然后输入Reconfiguration Module Name,由于我们只有一个模块,因此top的name可以不填;如下图,Next
在这里插入图片描述
在这一步如果我们使用dcp文件和wrapper文件的话,需要把它们都添加进来
4. 编辑配置,点击automatically create configurations,如果在这个界面没看到这个auto…按钮,就先返回到上一步,再next到这个界面,总会出现的;点击后出现下面的界面
在这里插入图片描述
我们修改配置的名字如下,next
在这里插入图片描述
5. 配置runs,也是先点击automatically create configuration run在这里插入图片描述
在这里插入图片描述
这个图意思是工程中有两个implention runs,第一个叫impl_1,这个里面跑的是包含有count_add模块的程序;第一个叫child_0_impl_1,这个里面跑的是包含count_sub模块的程序。Next到Finish

6. 开始综合,完成后点击Open Synthesized Design,并在Vivado右上角,切换到Floorplanning视图
在这里插入图片描述
右键inst_count并点击Draw Pblock
在这里插入图片描述
选择一个区域作为Pblock
在这里插入图片描述
绘制Pblock是有讲究的,其中最简单的两个规则就是:
Pblock区域中包含的资源能可以覆盖我们模块需要的资源
不能与其他的Pblock冲突

当然,还有很多其他的规则,这里就不一一介绍了,如果Pblock没画好,很可能导致后面的DRC和Implementation不过。
关于该更多Pblock的说明,可以参考UG909手册UG909
选中框之后,改一下框的属性,将RESET_AFTER_RECONFIG的勾选中,意思是重新配置后,会复位这个Pblock里面的内容;再将SNAPPING_MODE改为Routing(或者设为On),意思是如果我们的边界选的不太好,Vivado会自动处理,选off的话,就是完全按照我们指定的边界。

在这里插入图片描述
7. 点击Tools->Report->Report DRC
在这里插入图片描述
只选择PR即可
在这里插入图片描述
如果提示No Violations Found,则说明上面的操作过程没有问题。
8. Run Implementation,可以看到有两个runs需要进行
在这里插入图片描述
9. Generate Bitstream,OK
在这一步进行前,Vivado会自动执行pr_verify,并生成<impl_name>_pr_verify.log文件。

对于7系列的FPGA,会在impl_1文件夹下生成两个bit文件:
wave_gen.bit和inst_count_count_add_partial.bit,第一个bit文件是整个工程且包含count_add模块的bit文件,第二个bit文件是当我们需要进行Partial Reconfiguration的时候需要下载的bit文件;在child_0_impl_1文件夹下会生成一个bit文件inst_count_count_sub_partial.bit,是当我们需要进行Partial Reconfiguration的时候需要下载的bit文件。

对于UltraScale系列的FPGA,会在生成*_partial.bit的同时多出来一个*_partial_clear.bit,意思是在进行Partial Reconfiguration的时候,先下载*_partial_clear.bit把那一部分的内容先清空,再下载*_partial.bit进行配置。

使用Project模式的好处就是比较简单,敲的指令也比较少,如果是Non-Project模式,在这中间还需要很多操作,虽然麻烦,但对我们理解它的工作模块很有帮助,有兴趣的同学可以再用Non-Project模式下操作一遍。
原文转述

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值