vivado+zedboard之纯PL开发基本流程
2014-09-04 08:27
579 查看
环境:win7 64 vivado 2014.1
开发板:zedboard version d xc7z020clg484-1
目标:在vivado环境下进行传统的FPGA开发,对zynq来说,也可以叫做纯PL开发。本文重点介绍纯PL的开发流程,具体实例为按键控制LD灯。
说明:文本在参考何宾老师的书籍的基础上整理而成。
注意:本文中所有的源码、工程文件在“我的资源”中可以找到,如果没有请联系作者本人。转载请注明出处。
正文:
本文将分为以下步骤:
1. 使用Vivado 建一个工程,创建源文件,功能仿真等
2. 创建约束文件,综合、实现
3. 生成位流文件,在开发板中进行验证
4. 总结
1. 使用Vivado 建一个工程,创建源文件,功能仿真等
1)打开vivado,创建一个新的工程TestPL,不指定文件,选择zedboard开发板
2)左侧导航面板,选择add sources--add Design source--Create File,设置文件名为top,选择ok
3)在弹出的的对话框中创建端口,也可以在HDL文件中定义。
4)添加源代码,本文采用的代码很简单,重点在说明流程。保存后即可看到sources面板自动更新,top.v文件黑色粗体显示
5)左侧导航面板,add sources--add Simulationsource--Create File,设置文件名为top_tb,即testbench文件,选择ok。这时候可以看到sources面板自动更新
6)这时候就可进行RTL分析了,左侧导航面板,选择RTL analysis下面的额Open elaborate Design,可以看到top模块的RTL原理图
7)添加testbench源代码,给予输入信号a,b以不同的值用以验证模块的情况。本例比较简单,4个组合就包括所有情况。对于复杂的程序需要好好设计testbench。
8)左侧导航面板,run Simulation,进行功能行为仿真,即利用testbench验证top模块的逻辑正确性。和手算结果进行对比,无误
2. 创建约束文件,综合、实现
9)左侧导航面板,run Synthesis,进行综合。综合的目的是把RTL级转换为门级
10)综合后选择I/O Planning视图进行引脚规划
11)查阅zedboard用户手册,可以看到关于LD灯和开关的引脚定义
12)指定端口的引脚分配。本例为a:SW0-F22;b:SW1-G22;z:LD0-LD5-T22-W22。注意IO标准为LVCMOS33,在用户手册中有说明
13)创建约束文件,命名为top.xdc
14)右键,在弹出菜单中选择export IO ports导出IO约束文件,选择刚刚创建的xdc文件并覆盖它。这样就可以自动生成约束文件了
Implementation,进行实现。
16)左侧导航面板,run
Post-Implementation Timing Simulation进行实现后时序仿真,验证实现后的、加时序的仿真。这里我们可以看到有微小的延迟但是可以接受
3. 生成位流文件,在开发板中进行验证
17)左侧导航面板,Generate Bitstream,生成位流文件
18)连接开发板,包括micro USB线、电源线。上电
19)左侧导航面板,选择Open Hardware
Manager。一路默认,确认已经找到开发板并连接
20)选择Program Device,烧写开发板。烧写完毕后就可以通过控制sw0和sw1,看ld0-LD5的变化,对比功能仿真图即可验证正确性
4. 总结
本文简单介绍了使用vivado进行zynq芯片纯PL开发的流程,和传统的FPGA的开发基本相同。关于硬件调试可以参考官网的教程,这里未做介绍。
开发板:zedboard version d xc7z020clg484-1
目标:在vivado环境下进行传统的FPGA开发,对zynq来说,也可以叫做纯PL开发。本文重点介绍纯PL的开发流程,具体实例为按键控制LD灯。
说明:文本在参考何宾老师的书籍的基础上整理而成。
注意:本文中所有的源码、工程文件在“我的资源”中可以找到,如果没有请联系作者本人。转载请注明出处。
正文:
本文将分为以下步骤:
1. 使用Vivado 建一个工程,创建源文件,功能仿真等
2. 创建约束文件,综合、实现
3. 生成位流文件,在开发板中进行验证
4. 总结
1. 使用Vivado 建一个工程,创建源文件,功能仿真等
1)打开vivado,创建一个新的工程TestPL,不指定文件,选择zedboard开发板
2)左侧导航面板,选择add sources--add Design source--Create File,设置文件名为top,选择ok
3)在弹出的的对话框中创建端口,也可以在HDL文件中定义。
4)添加源代码,本文采用的代码很简单,重点在说明流程。保存后即可看到sources面板自动更新,top.v文件黑色粗体显示
module top( input a, input b, output [5:0] z ); assign z[0]=a&b; assign z[1]=~(a&b); assign z[2]=a|b; assign z[3]=~(a&b); assign z[4]=a^b; assign z[5]=a~^b; endmodule
5)左侧导航面板,add sources--add Simulationsource--Create File,设置文件名为top_tb,即testbench文件,选择ok。这时候可以看到sources面板自动更新
6)这时候就可进行RTL分析了,左侧导航面板,选择RTL analysis下面的额Open elaborate Design,可以看到top模块的RTL原理图
7)添加testbench源代码,给予输入信号a,b以不同的值用以验证模块的情况。本例比较简单,4个组合就包括所有情况。对于复杂的程序需要好好设计testbench。
module test; reg a; reg b; wire [5:0] z; top uut( .a(a), .b(b), .z(z) ); initial begin while(1) begin a=0; b=0; #100; a=1; b=0; #100; a=0; b=1; #100; a=1; b=1; #100; end end endmodule
8)左侧导航面板,run Simulation,进行功能行为仿真,即利用testbench验证top模块的逻辑正确性。和手算结果进行对比,无误
2. 创建约束文件,综合、实现
9)左侧导航面板,run Synthesis,进行综合。综合的目的是把RTL级转换为门级
10)综合后选择I/O Planning视图进行引脚规划
11)查阅zedboard用户手册,可以看到关于LD灯和开关的引脚定义
12)指定端口的引脚分配。本例为a:SW0-F22;b:SW1-G22;z:LD0-LD5-T22-W22。注意IO标准为LVCMOS33,在用户手册中有说明
13)创建约束文件,命名为top.xdc
14)右键,在弹出菜单中选择export IO ports导出IO约束文件,选择刚刚创建的xdc文件并覆盖它。这样就可以自动生成约束文件了
set_property PACKAGE_PIN T22 [get_ports {z[0]}] set_property PACKAGE_PIN T21 [get_ports {z[1]}] set_property PACKAGE_PIN U22 [get_ports {z[2]}] set_property PACKAGE_PIN U21 [get_ports {z[3]}] set_property PACKAGE_PIN V22 [get_ports {z[4]}] set_property PACKAGE_PIN W22 [get_ports {z[5]}] set_property PACKAGE_PIN F22 [get_ports a] set_property PACKAGE_PIN G22 [get_ports b] set_property DIRECTION OUT [get_ports {z[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {z[5]}] set_property DRIVE 12 [get_ports {z[5]}] set_property SLEW SLOW [get_ports {z[5]}] set_property DIRECTION OUT [get_ports {z[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {z[4]}] set_property DRIVE 12 [get_ports {z[4]}] set_property SLEW SLOW [get_ports {z[4]}] set_property DIRECTION OUT [get_ports {z[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {z[3]}] set_property DRIVE 12 [get_ports {z[3]}] set_property SLEW SLOW [get_ports {z[3]}] set_property DIRECTION OUT [get_ports {z[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {z[2]}] set_property DRIVE 12 [get_ports {z[2]}] set_property SLEW SLOW [get_ports {z[2]}] set_property DIRECTION OUT [get_ports {z[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {z[1]}] set_property DRIVE 12 [get_ports {z[1]}] set_property SLEW SLOW [get_ports {z[1]}] set_property DIRECTION OUT [get_ports {z[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {z[0]}] set_property DRIVE 12 [get_ports {z[0]}] set_property SLEW SLOW [get_ports {z[0]}] set_property DIRECTION IN [get_ports a] set_property IOSTANDARD LVCMOS33 [get_ports a] set_property DIRECTION IN [get_ports b] set_property IOSTANDARD LVCMOS33 [get_ports b]15)左侧导航面板,run
Implementation,进行实现。
16)左侧导航面板,run
Post-Implementation Timing Simulation进行实现后时序仿真,验证实现后的、加时序的仿真。这里我们可以看到有微小的延迟但是可以接受
3. 生成位流文件,在开发板中进行验证
17)左侧导航面板,Generate Bitstream,生成位流文件
18)连接开发板,包括micro USB线、电源线。上电
19)左侧导航面板,选择Open Hardware
Manager。一路默认,确认已经找到开发板并连接
20)选择Program Device,烧写开发板。烧写完毕后就可以通过控制sw0和sw1,看ld0-LD5的变化,对比功能仿真图即可验证正确性
4. 总结
本文简单介绍了使用vivado进行zynq芯片纯PL开发的流程,和传统的FPGA的开发基本相同。关于硬件调试可以参考官网的教程,这里未做介绍。
相关文章推荐
- Struts框架开发基本流程
- Hadoop基本流程与应用开发
- 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯
- 基于OSGi的Web模块开发基本流程
- 转:敏捷开发基本流程概念的理解与实践
- 软件开发流程基本结构
- spring的原理,基本API,开发流程,环境搭建.
- Windows窗体程序开发基本流程
- Hibernate开发流程——基本概念和CURD
- Hadoop基本流程与应用开发
- ADO数据库开发的基本流程
- BI Publisher开发基本流程
- 基于模型设计的FPGA开发与实现:基本流程(一)概述
- 网站开发的基本流程
- [转]开发Qt 4应用程序的基本流程和方法之我见
- apache module 开发调试 基本流程
- 嵌入式硬件开发流程及工程师应具备的基本技能
- Hadoop基本流程与应用开发
- 个人软件过程2 项目开发的基本流程
- 项目开发基本流程