FPGA开发

FPGA开发中的脚本语言

多数FPGA开发者都习惯图形化界面(GUI)。GUI方式简单易学,为小项目提供了一键式流程。然而,随着FPGA项目越来越复杂,在很多情况下GUI工具就阻碍了工作效率。因为GUI工具不能对整个开发过程提供足够的灵活性和控制。另一方,GUI工具本身会占用很大一部CPU资源和内存。

脚本语言的选择

在IC和FPGA的最常用的是TCL,Perl以及Shell。除此之外,还有可能用到其他的脚本语言。比如,Xilinx工具脚本语言还有Ruby和Python。

TCL

概述

  通常我们使用的是Vivado IDE进行FPGA的开发,IDE提供了图形化的界面和自动化管理方案,我们只需要点击几个按钮就会得到结果。有时候还会用到另外一种开发方式:在Vivado Tcl Shell中使用Tcl命令的方式控制开发设计流程。使用Tcl的好处是每一个命令都有一个具体的操作,我们可以详细的控制设计过程中的每一步,设计更加灵活,也更有效率。

  通常的情况下都会根据需求事先编辑好一个完整的Tcl脚本,直接运行即可得到想要的结果。本文将会保留一个设计过程的每一步(实际使用时不会用到这么多的步骤)。以下Tcl命令对于所有的Vivado版本都是通用的。进行操作前需要准备好已经设计好的Verilog文件和约束XDC文件,并放在一个固定目录下。本文参考了Xilinx官方文档与《Xilinx FPGA权威设计指南》这本书中的内容。

一.准备

  1.1 在开始菜单的Xilinx工具集中找到“Vivado xxxx.x Tcl Shell”,xxxx.x代表安装的Vivado版本号。在Shell中先将当前环境指向设计源文件的目录(注意路径中斜线方向是左斜杠):
Vivado% cd C:/Users/GodWa/Desktop/SDK_Test/gate

FPGA开发要懂得使用硬件分析仪调试——ILA(1)

作者:浅搁 来源:FPGA2嵌入式微信公众号(微信号:fpga234)

0. ILA概述
在FPGA开发中,当我们写完代码,进行仿真,确定设计没有问题后,下载到硬件上一般都能按照我们的设计意愿执行相应功能。但这也并非绝对的,有时候你会遇到一些突然情况,比如时序问题或者仿真时我没有考虑到某种情况,但实际中它确实存在的,这就会造成功能上的错误了。也有时候你的设计似乎你没法进行仿真或者做起来很费劲,比如设计一个SDRAM或者DDR控制器,让你相应写一个SDRAM或者DDR之类的模型进行仿真,这时候是不是就很为难了哈哈。

所以在很多时候,一个FPGA工程师应该学会使用在线调试工具进行分析。我没法写一个DDR模型,我还不能采集它的时序进行修改,直到满足要求吗?这里给大家介绍Xilinx公司的开发软件Vivado上的在线调试工具——ILA。Vivado中对ILA的使用非常灵活,操作也很方便,这里先介绍做常用的调试方式,即使用ILA核。

1. ILA核如何调用

NI LabVIEW高性能FPGA开发者指南

现场可编程门阵列(FPGA)技术为专用的定制硬件提供高性能和可靠性。作为LabVIEW FPGA用户,您可以在与台式和实时系统相同的编程设计环境中利用FPGA技术。高性能LabVIEW FPGA应用程序将NI可重配置I/O(RIO)设备的性能扩展到定时、FPGA资源、以及其他方面。通过总结常用的LabVIEW FPGA优化概念和技巧,此指南旨在帮助您创建高性能应用程序。

目标读者
如果您已经熟悉LaVIEW或者LabVIEW FPGA模块,可使用此指南来学习业内不知晓的高级LabVIEW FPGA理论,帮助您解决需要高吞吐量、精确定时控制或者更高FPGA资源效率的严苛应用需求。

“高性能”这个术语是一个相对概念,但是通常它指当您需要从设计中获得更多性能时那些使LabVIEW FPGA编程更具挑战性的底层细节。关于高性能应用程序相关概述,请参见基于FPGA的高性能设计一章。

NI RIO硬件平台可负责许多底层实现细节,所以您可以专心应对具体应用挑战。如果您有数字设计经验,并且熟悉VHDL、Verilog或者电子设计自动化(EDA)工具,此指南可帮助您理解通过与NI RIO硬件平台的高度集成,LabVIEW FPGA是如何在实现相似性能的同时提供更高生产力。

FPGA开发之算法开发System Generator

现在的FPGA算法的实现有下面几种方法:
1. Verilog/VHDL 语言的开发 ;
2. system Generator;
3. ImpulsC 编译器实现从 C代码到 HDL 语言;
4. Vivado HLS。
本文主要讲述第二种方法的配置方法。

system Generator
System generator 可以和 ISE or Vivado 进行无缝连接。 但是需要有个版本的对应关系: http://www.xilinx.com/support/answers/17966.html

FPGA开发之数据传输模块

USB模式:通用串行总线,由VBUS,GND,D+,D-构成(USB3.0可以达到5Gbps)。具有不同的速度模式,当D-上拉的时候一个1.5k电阻到3.3v那么处于低速模式,否则处于上拉D+高速模式。


上图就是低速模式(1.5Mbps,以USB1.1为例)。


上图就是全速模式下的原理。(15Mbps,USB1.1)

FPGA开发之chipscope教程

使用CoreInsert的方法进行chipscope的在线调试:

步骤:

1、建立工程

像之前建立工程那样建立好一个ISE工程,有.v和.ucf文件。并运行综合:

2、chipscope正式开始使用

在工程那里添加文件的地方可以看到ChipScope Definition and Connection File,命名随便,我是命名为test_chipscope。
这里介绍的是ICON核和ILA核的使用方法。ILA核提供触发和跟踪功能,根据用户设置的触发条件捕获数据;然后在ICON的控制下,通过边界扫描口将数据上传到PC;最后在Analyzer中显示出信号波形。

FPGA开发之RAM IP的使用

CORE Generator里有很多的IP核,适合用于各方面的设计。一般来说,它包括了:基本模块,通信与网络模块,数字信号处理模块,数字功能设计模块,存储器模块,微处理器,控制器与外设,标准与协议设计模块,语音处理模块,标准总线模块,视频与图像处理模块等。

在Xilinx的IP核里有xilinx core generator 里面的memory interface generator 和block ram,使用这两个可以使用FPGA内部和外部的RAM。memory interface generator 是 ddr2/ddr3/qdr2 这些外部存储器的接口,block ram 是 fpga 芯片内部片上的存储器。接下来介绍一下block ram。

block ram有三种:单口RAm、简化双口RAM和真双口RAM。

单口:

简化双口,A写入,B读出:

FPGA开发之eCos系统

eCos是一个嵌入式可配置实时操作系统,eCos 良好的可配置性、可扩展性、移植性和兼容性主要得力于 eCos 的特殊的体系结构。

eCos 层次结构:将不同功能的软件分成不同的组件,这些组件具有可重用性,分别位于系统的不同层次,这种层次结构实现了eCos的可配置性、可移植性、兼容性和可扩展性。

下图是eCos系统的层次结构图:

FPGA开发之Tcl的基于项目设计

step1:使用creat_project指令创建一个项目设计,产生这个项目的目录,以及有关的子目录。
具体使用的指令是create_project tcl_first //这里的tcl_first是你的项目名称。
在你建好的项目中,有.xpr,.data,.srcs和.runs的目录。其中.xpr和.data保存着全部项目管理的信息和状态。在.srcs目录下的就是源文件:RTL(verilog,VHDL,system verilog);IP核(利用import_file指令将文件放到Source_1的目录下,或者add File);约束文件集在constrs_1:包含设计所需的全部约束文件(时序约束和物理约束);仿真文件:testbench和测试案例。使用get_filesets指令可以找到文件集,利用get_files指令可以找到文件。

step2:项目运行管理器:输出文件的位置:DIRECTORY。
利用的工具:FLOW。
综合运行:XST可以作为综合工具。

同步内容