本文转载自:http://xilinx.eetrend.com/blog/7073

硬件平台:ZedBoard

开发环境:XPS + ISE

操作系统:WinXP SP3

一直说要研究官方的例子XAP792,也确实在断断续续地学习着,现在硬件基本搞明白了,在公司也已经做出了测试画面。在搭建硬件平台的时候碰到了一些问题,本文要探讨的是这些问题当中比较重要的一个:如何在XPS中调用HDL语言编写的模块。

在网上搜索“XPS ISE 协同工作”相关资料的时候,搜到过这样的说法:

------------------------------------------------------------------------------------------

为了和ise协同工作,edk和ise也是有两种结合方式:

(1) ise中添加处理器,处理器结构部分会自动在xps中运行配置,此时fpga作为顶层模块。

(2) 输出edk设计到ise。当在xps中产生网表和比特流后,可以运用命令project options,选择export to project navigator.生成一个 system.ise 工程。注意有两个文件.bit和system.bmm文件。此时,需要在ise软件中重新打开工程,然后综合布局布线生成.bit硬件文件和.bmm文件,然后再下载到fpga。而elf不变下载到fpga。下载时,可以在ise中,把.bit和system_bd.bmm硬件部分下载以及把elf软件比特下载到fpga中即可。也可以在xps中下载硬件,此时只需利用命令xps菜单中的
import from project navigator 把两个文件复制一下到implention文件夹下即可。

------------------------------------------------------------------------------------------

可能是由于版本更新的问题,我在14.2版本的XPS和ISE中不知道怎么实现上述两种操作,最终是这样完成设计的:

step1:在ISE中设计所需要的逻辑模块;

step2:利用XPS的IP核向导,将ISE所做的设计导入到XPS,生成一个新的IP核;

step3:添加该IP核,和其他模块组合,完成硬件平台的搭建。

下面给一个例子吧,还是以VGA画面测试为例,这次和以往不同的是设计逻辑时使用了参数,通过改变参数改变模块的输出,避免了修改HDL代码的弊端。这也做也是有原因的:ISE设计完毕并导入至XPS之后,再修改HDL代码的时候,XPS检测不到相应的改动。有同病相怜的网友在网上提问得到这样的回答:“用户自定义ip核最好在wizards里面修改,因为会涉及到很多配置文件,你可能没有修改完全。”这个问题我还没有深入研究,明天弄个带DVI接口的显示器回来之后再搞XAP792,应该还要面对这个问题,到时候再摸索解决办法。

以前都是使用PlanAhead搭建整个硬件平台,但是由于实质性的工作还是由XPS完成,所以,我就抛弃了PlanAhead,最近一直在用XPS搭硬件,完了导出至SDK就可以了。

ISE部分:

这一部分我就不多说了,前面已经给过一个利用PL实现简单VGA测试的教程了,操作是一样的。ISE主要是用来验证所设计的模块是否存在逻辑错误和语法、语义错误。下文我直接拿一个验证无误的vtc.v做示例。

XPS部分:

其实操作方法和使用PlanAhead调用XPS是一样的,由于是第一次这样做,仍然记录一次详细的操作流程。

1、新建工程

1.1、打开XPS:弹出下图所示的引导画面:

1.2、"the Base System Builder wizard " 创建一个新的XPS工程:点击上图红色方框中的新建工程连接,弹出下图所示的对话框:

1.3、设置工程文件的保存路径,完毕后点击OK,进入下一步:

1.4、选择开发板,完了点击Next,弹出的是外设配置界面,如下图所示:

这里我们没有用到开关或是LED,所以把两个都删掉:选中之后,点击Remove即可,设置完毕后点击Finish,出现下图所示的画面:表示正在生成各种工程文件。

1.5、接下来就来到了无比熟悉的界面:

至此,工程建立完成。

2、导入逻辑模块

2.1、菜单Hardware,选择Create or Import Peripheral

弹出新建/导入外设向导,如下图所示:

2.2、都是一些描述信息,没太大用,直接Next,这里要选择新建还是导入,我这里选择导入,如下图所示:

2.3、接下来要选择外设的存储路径,为了方便起见,我选择存储在XPS的工程文件夹内。点击Next,进入下一步。

2.4、为IP命名,注意IP的名称最好和顶层模块的名称相同,向导是这么提示的。

2.5、选择文件类型:一般默认选择HDL就可以了。

2.6、选择在下一步指定HDL文件。

2.7、点击Add Files,找到需要被导入的HDL文件,我这里是vtc.v




找到vtc.v后,点击打开,或者双击,返回。核对一下信息,如果正确,点击Next进入下一步:

2.8、选择总线类型,由于我做的这个是总线无关的纯逻辑模块,所以要去掉“Select Bus Interface”前面的√,如下图所示。点击Next,进入下一步。

2.9、配置中断:这里没有用到,所以去掉“”前面的√,如下图所示。点击Next,进入下一步。

2.10、初始化参数:

我的所有参数都有默认值,所以这里不需要再次赋值,直接Next

2.11、配置IO ports:看一下提示自己操作就好了,这里我没有任何操作,没有设置默认连接等,对端口的操作在XPS中完成。直接进入下一步。

2.12、终于完了:看到IP信息汇总页面了,点击Finish就可以了。

到XPS的IP Catalog下查看一下,发现vtc已经被做成一个IP了:

下面我就不多说了,一般而言还需要看情况修改IP的MPD文件,修改MPD文件之后再将IP添加到系统中进行模块间的连接。

来源:cuter的博客

如何将HDL文件实例化到XPS中的更多相关文章

  1. 转载.怎样在Quartus II中转化HDL文件为bsf文件?

    步骤1 新建或打开Quartus II工程,用QII自带文本编辑器打开HDL文件. 图1 用QII自带的文本编辑器打开HDL文件 步骤2 选择File>Create / Update>Cr ...

  2. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

    (转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...

  3. 【Python】自动生成html文件查看指定目录中的所有图片

    获取本目录下的pic子目录中的所有图片(jpg,png,bmp,gif等,此处以jpg文件为例),然后生成一个image.html文件,打开该html文件即可在浏览器中查看pic子目录中的所有图片. ...

  4. MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览

    之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...

  5. X-UniTMX:导入大型Tiled地图文件(*.tmx)到Unity3d中比较好的插件

    因工作原因,需要导入格子数为1200x1200的Tiled地图文件(*.tmx)到Unity3d中显示出来.尝试过一些其它插件,后面发现X-UniTMX是比较好用的. X-UniTMXhttp://f ...

  6. Innosetup中将bat文件压缩到压缩包中

      有时候在安装的过程中需要调用某些文件(bat或者exe等文件),但是只需要使用一次,然后就可以删掉该文件, 在Innosetup中应该这样操作: 1.在.iss脚本的[Files]章节写下: So ...

  7. WPF: 读取XPS文件或将word、txt文件转化为XPS文件

    读取XPS格式文件或将doc,txt文件转化为XPS文件,效果图如下: 1.XAML页面代码: <Window x:Class="WpfWord.MainWindow" xm ...

  8. Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键 批量修改文件名等

    http://blog.sina.com.cn/s/blog_62e7fe670101dg9d.html linux下二进制文件查找: strings 0000.ts | grep -o " ...

  9. WFP: 读取XPS文件或将word、txt文件转化为XPS文件

    读取XPS格式文件或将doc,txt文件转化为XPS文件,效果图如下: 1.XAML页面代码: <Window x:Class="WpfWord.MainWindow"    ...

随机推荐

  1. 终端I/O之波特率函数

    波特率(baud rate)是一个以往采用的术语,现在它指的是"位/秒"(bits per second).虽然大多数终端设备对输入和输出使用同一波特率,但是只要硬件许可,可以将它 ...

  2. Mingw:在Linux系统下编译Windows的程序

    Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...

  3. sqlserver 行转列 语文,数学,物理,化学

    数据库查询行转列 1.原数据库值 stdname stdsubject result 张三 语文 张三 数学 张三 物理 李四 语文 李四 数学 李四 物理 李四 化学 李四 化学 2.要得到如下表 ...

  4. oracle中to_date() 与 to_char() 日期和字符串转换

    to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...

  5. Xamarin自学教程(Android)之一

    废话少说,我们直接开始吧.有兴趣的就一起,我慢慢写,咱们一起慢慢学.希望两个月内能基本完成基于Xamarin的Android开发内容. 还是一样,先来安装开发环境吧.跟着做就行了. 首先,我们到微软的 ...

  6. Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

  7. 02.Java多线程并发库API使用

    1.        传统线程技术回顾 继承线程与实现Runnable的差异?为什么那么多人都采取第二种方式? 因为第二种方式更符合面向对象的思维方式.创建一个线程,线程要运行代码,而运行的代码都封装到 ...

  8. 通过layer的contents属性来实现uiimageview的淡入切换

    #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)CALayer ...

  9. 【Android 界面效果43】Android LayoutInflater的inflate方法中attachToRoot的作用

    我们在ListView的Adapter的getView方法里面经常会调用两个参数的inflate方法, mInflater.inflate(R.layout.adv_viewpager, null); ...

  10. 重构3-Pull Up Method(方法上移)

    上移方法(Pull Up Method)重构是将方法向继承链上层迁移的过程.用于一个方法被多个实现者使用时 public abstract class Vehicle { // other metho ...