Vivado FPGA设计实战:从新建工程到Chipscope调试

4星 · 超过85%的资源 需积分: 42 525 下载量 91 浏览量 更新于2024-07-22 5 收藏 5.01MB PDF 举报
"这篇教程详细介绍了如何在Vivado环境下进行FPGA开发,包括新建工程、选择器件、源代码输入、IP核的调用与例化、功能仿真、Chipscope的使用以及时钟约束、管脚锁定和工程实现等关键步骤。教程以实例为引导,涵盖PLL时钟生成、DDS信号发生器的配置,以及如何利用Chipscope进行调试。" 在Vivado中,首先需要新建工程,选择合适的FPGA器件。这一步至关重要,因为不同的器件具有不同的逻辑资源和时钟速度,会影响到设计方案的选择和性能。接着,用户需要输入源代码,这通常包括定义顶层文件和各个子模块的Verilog或VHDL代码。在源代码中,可以创建计数器、DDS(直接数字频率合成)等模块,通过调用IP核如PLL来生成不同频率的时钟。 调用IP核是Vivado的一大特色,例如PLL(锁相环)IP核用于频率合成,可以根据输入时钟生成多种输出频率。用户可以通过界面配置时钟输入频率,并对信号进行重命名,以便在代码中更好地识别和管理。同样,DDS IP核则用于生成精确的数字频率信号,用户需要指定所需的输出频率,并声明相关信号。 为了进行功能仿真,Vivado提供了集成的仿真工具,可以验证设计的功能是否符合预期。此外,Chipscope是一种内建的逻辑分析仪,用于在硬件级别调试设计。在代码中声明DEBUG变量,即使未连接到其他模块,也能在Chipscope中观察到,这对于查找问题非常有用。在设置Chipscope的Debug信号时,需要选择合适的采样时钟,并添加要监控的设计信号。 在完成所有设计工作后,需要进行综合(Synthesis)步骤,这将把高级语言代码转化为硬件描述语言,然后进行实现(Implementation),包括布局布线等,最终生成用于编程FPGA的bit文件。在这一过程中,还需要设置时钟约束,确保设计满足实时性要求,并锁定管脚,以确保硬件连接正确无误。 Vivado中文教程详细阐述了FPGA设计流程,从创建工程到实现和调试,为初学者和有经验的工程师提供了一条清晰的学习路径。通过实践这些步骤,用户能够有效地掌握Vivado工具并成功地进行FPGA项目开发。
2019-06-21 上传
Vivado软件的使用 一、 建立工程 1.1新建一个工程 或者: 1.2设置工程名字和路径。输入工程名称、选择工程存储路径,并勾选Create project subdirectory选项,为工程在制定存储路径下建立独立的文件夹设置完成后,点击Next。注意: 工程名称和存储路径中不能出现中文和空格,建议工程名称以字母、数字、下划线来组成。 1.3选择RTL Project一项,并勾选Do not specify sources at this time,勾选该选项是为了跳过在新建工程的过程中添加设计源文件。点击Next。根据使用的FPGA开发平台,选择对应的FPGA目标器件. 1.4确认相关信息与设计所用的FPGA器件信息是否一致,一致请点击Finish,不一致,请返回上一步修改。 1.5得到如下的空白的Vivado工程界面,完成空白工程新建 二、 工程设计 2.1设计文件输入,如下图所示,点击Flow Navigator下的Project Manager->Add Sources或中间Sources中的对话框打开设计文件导入添加对话框。 2.2添加设计文件,然后Next 2.3如果有v/vhd文件,可以通过Add File一项添加。在这里,我们要新建文件,所以选择Create File一项。 2.4在Create Source File中输入File Name,点击OK。注:名称中不可出现中文和空格。 2.5在弹出的Define Module中的I/O Port Definition,输入设计模块所需的端口,并设置端口防线,如果端口为总线型,勾选Bus选项,并通过MSB和LSB确定总线宽度。完成后点击OK. 2.6新建的设计文件(此处为flow_led.v)即存在于Source中的Design Source中。双击打开该文件,输入相应的设计代码。 三、 添加约束 添加约束文件,有两种方法可以添加约束文件,一是利用Vivado中planning功能,二是可以直接新建XDC的约束文件,手动输入约束命令。 3.1利用IO planning 3.1.1点击Flow Navigator 中Synthesis中的Run Synthesis,先对工程进行综合。 3.1.2综合完成后,选择Open Synthesized Design,打开综合结果。 3.1.3此处应该出现如下界面,如果没有出现,在图示位置layout中选择IO planning在右下方的选项卡中切换I/O ports 一栏,并在对应的信号后,输出对应的FPGA管脚标号,并制定I/O std。(具体的FPGA约束管脚和IO电平标准,可参考对应板卡的用户手册或原理图)。 3.1.4完成后,点击上方工具栏中的保存按钮,工程提示新建XDC文件或选择工程中已有的XDC文件。在这里,我们要Create a new file,输入File name,点击OK完成约束过程。 3.1.5、此时在Source下的Constraints中会找到新建的XDC文件。 3.2建立XDC文件 3.2.1、点击Add Source ,选择第一项Add or Create Constraints一项,点击Next。 3.2.2、点击Create File ,新建一个XDC文件,输入XDC文件名,点击OK。点击Finish。 3.2.3、双击打开新建好的XDC文件,按照如下规则,输入相应的FPGA管脚约束信息和电平标准。 四、 功能仿真 4.1创建激励测试文件,在Source中右击选择Add source。在Add Source界面中选择第三项Add or Create Simulation Source,点击Next。 4.2选择Creat File,创建一个新的激励测试文件。输入激励测试文件名,点击OK,然后点击Finish。 4.3弹出module端口定义对话框,由于此处是激励文件,不需要有对外的接口,所以为空。点击OK,空白的激励测试文件就建好了。 4.4在source 下双击打开空白的激励测试文件,完成对将要仿真的module的实例化和激励代码的编写。激励文件完成后,工程目录如下图: 4.5此时,进入仿真。在左侧Flow Navigator中点击Simulation 下的Run Simulation 选项,并且选择Run Behavioral Simulaiton一项,进入仿真界面。 4.6下图为仿真界面。 4.7可以通过左侧的Scope一栏中的目录结构定位到设计者想要查看的module内部寄存器,在Objects对应的信号名称上右击选择Add To Wave Window,将信号加入波形中。 4.8可通过选择工具栏中的如下选项来进行波形的仿真时间控制,如下工具条,分别是复位波形(即清空现有波形)、运行仿真、运行特定时长的仿真、仿真时长设置、仿真时长单位、单步运行、暂停…… 4.9最终得到的仿真效果图如下。核对波形与预设的逻辑功能是否一致,仿真完成。 五、综合下载 5.1在Flow Navigator中点击Program and Debug下的Generate Bitstream选项,工程会自动完成综合、实现、Bit文件生成过程,完成之后,可点击Open Implemented Design 来查看工程实现结果。 5.2点击Flow Navigator中的Open Hardware Manager一项,进入硬件编程管理界面。 5.3在Flow Navigator中展开Hardware Manager ,点击Open New Target 5.4在弹出的Open hardware target向导中,先点击Next,进入Server选择向导。 5.5保持默认,next。 5.6选中FPGA芯片型号,点击Next。完成新建Hardware Target。 5.7此时,Hardware一栏中出现硬件平台上可编程的器件。(此处以zynq为例,如果是纯的FPGA的平台,该出只有一个器件。)在对应的FPGA器件上右击,选择Program Device 5.8选择bit文件位置,默认,直接Program。 观察实验结果,设计完成。