搜索博文/帖子/用户
登录
长弓的坚持
关注
Xilinx FPGA部分重配置 *** 作流程 转载
2016-11-03 12:54:57
长弓的坚持
码龄10年
关注
部分重配置,既动态配置部分芯片时,芯片的其他部分可正常工作,且向芯片中下载部分
配置bit文件时,芯片的DONE脚不被拉低。
使用FPGA的这一特性,可实现对芯片的分时复用。
首先做部分重配置的FPGA内部必须要有TBUF,因为在部分可重配置中,重配置模块和其它模块的连接要使用由TBUF构成的总线宏(在设计中重配置模块不需要与其他模块连接的情况没考虑过)。SpartanII, SpartanIIE, Virtex, Virtex2, Virtex2P, VirtexE 这些系列都可做部分重配置。
做部分重配置时生成的文件很多,所以目录的结构很重要。参考xilinx的应用文档,以只有一个重配置模块为例,实现部分重配置时使用如下目录结构:
总目录
|---ise_top 顶层设计的ISE工程
|---ise_top1 重配置后的顶层ISE工程
|---top
| |---initial 生成整体约束
| |---assemble 组合各个模块
|
|---top1
| |---initial
| |---assemble
|
|---pims 各模块激活后发布在pims文件夹里
| |---子模块名
| |---.......
|
|---module 各模块激活过程使用的目录
|---子模块名
|---......
具体 *** 作(基于模块的部分重配置):
1、在ise_top工程中输入设计的顶层文件top.vhd,各模块必须是以“黑盒子”的形式出现,既各模块只声明端口,内部没有具体实现。综合生成 top.ngc文件。
2、将上面生成的ngc文件拷贝到top文件夹中的initial文件夹中,在cmd中运行ngdbuild -modular initial top.ngc生成ngd文件,再运行floorplanner top.ngd用ISE中的工具floorplanner对top.ngd进行区域和管教约束。之后保存为ucf文件,在ucf文件中手动加入对总线宏的约束。运行ngdbuild
verilog中,一般不可能将所有代码都写到同一个文件里,这就需要写顶层文件以及调用子模块,图示:
1、 首先建立一个module,命名为top
2、将连接后的整体输入和输出写入module
例如 :
3、点击要调用的子模块
选择View HDL Instaniation Template:
(instance name由用户自己定义)复制进top模块下:
!!!注意:最后要构成整体的里面的连线,要用wire <名字>;标注出来,要不然仿真会出错,如上图wire clk_1HZ,使分频后的时钟信号作为CONTROL模块的时钟输入。将调用的子模块都这样写入top模块即可完成模块的调用,构成一个新模块,或者理解为将这几个子模块封装起来,只留出了输入和输出,即为第一张图所示。
总结以下3个观点:
1 各个子模块的设计可以相互独立,不必写在同一个文件里
2 例化子模块的时候,不需要手打,采用“view HDL instantiaion Template”!例化更为方便。
3 线端子进行连接的时候,定义wire ,采用assign赋值的方式即可完成。
4 一定注意不要落下子模块间的连线,一定要用 wire <名字>声明一下。
fpga开发
vivo16年出的手机
精选推荐
广告
Verilog子模块调用教程
126下载·1评论
2014年11月23日
SV验证-1建立顶层文件
100阅读·0评论·2点赞
2022年11月13日
子模块到顶层模块——例化与调用
1.7W阅读·0评论·13点赞
2018年5月7日
verilog图像处理顶层文件和仿真文件
247阅读·0评论·0点赞
2022年11月4日
ISE tips
119阅读·0评论·0点赞
2013年5月31日
parameter 顶层模块和子模块之间的parameter 不一致
860阅读·0评论·0点赞
2019年7月1日
再现神预言:这也许是2023年黑马的行业,将造就大批千万富翁!
00:46
12天提升收入
广告
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)