本次实验旨在跑一下《软硬件协同设计》书里的Demo程序,熟悉一下开发流程
目的如下:1、通过USART和PC端通信,显示“Hello World”
2、PC端发送Hex,相应的LED亮起(这里有MIO和EMIO各4个)
平台如下: Zedboard板子一枚、ISE 14.6河蟹版软件一套
据说Xilinx准备在8系列中,全面支持下一代开发工具Vivado,也就是说上一代的ISE可能逐渐淡出舞台。虽说如此,但是国内有那么多的ISE工具应用开发者,一时半会应该不会有什么大地震。但是为了平滑过渡,现在提倡用PlanAhead来开发Xilinx的FPGA。据说PlanAhead和Vivado用的是统一的GUI,不同的只是换了更高效更强大的编译器和综合器,具体是不是就不得而知了,因为没用过(电脑跟不上,玩不起Vivado)。
回来正题,流程附图如下:
1、打开PlanAhead 14.6,这时会有个黑色类似cmd界面的启动窗,不用管,待会启动完后会自动关掉(道听途说,Vivado也会有这个黑窗,但不会关闭),启动后会弹出PlanAhead主界面。选择Create New Project
2、在工程类型选择RTL Project
3、之后的Add Sources和Add Existing IP 可以先不理,Next下去,直到选择板卡和芯片型号。ISE14.6里面已经支持Zedboard开发板,所以这里在Board里面可以直接选择Zedboard Zynq Evaluation and Development Kit。
4、搞定后,PlanAhead主界面
5、选择Add Sources后,在弹出界面中选取Embedded Sources(这里好似是把A9核当做一个子系统添加进来)
6、选择Create Sub-Design
7、之后会Lanch XPS来配置子系统。在开始时候会弹出如下窗口,点击OK就行。
8、为了简化对PS的预配置,点击IMPORT,选择提供的Zedboard Template配置文件,由图可以看到Zynq的PS已经根据Zedboard的Demo程序配置好了PS。
9、为了对比EMIO,点击System Assembly View下的IO Perlpherals,添加4个EMIO
10、利用GPIO IP核
11、添加完成后,可以看到GPIO的IP核已经和PS通过AXI相连
12、链接完了之后,将GPIO的IP核和PS的GPIO连接到外部Ports
弄完后,分配地址。DRC后,关闭XPS。
回到PlanAhead中,Create Top HDL,逻辑综合Run Synthesis,以及添加ucf引脚约束后,Implementation,再BitGen。
硬件平台配置好后,进行软件的编写。首先从PlanAhead中Export Hw
(这里要注意一点,有时候那个Include bitstream选项没有了,这时在后来的SDK下载时候会无法定位,可以用Export Bitstream来弥补)
12、创建Application Project后,选择Hello World会多出BSP以及工程文件,加上之前的硬件Platform,总共三大项。
对Helloworld.c进行修改后,就可以实现功能了。
13、为了使用SDK的Console来串口通信,可以在Run-->Run Configuration里面设置STDIO
14、Xilinx Tools--->Program FPGA 下载bitstream。
15、之后在Project Explorer中右击工程文件,Run As---》Launch On Hardware,运行。效果如下
过程问题总结:
1、Program FPGA时候无法找到JTAG
解决:首先怀疑是驱动问题,重装了Cypress的USB驱动,问题依旧。最终发现是少了一条Micro USB线,
就是说,要开发的话需要三条线插在板上,两条Micro Usb(一个用作串口,一个Digilent的Jtag下载口),一条电源线。