初学Zynq与Vivado

前言

LDPC的项目终于进行到了最后的部分,落到我身上的任务是把视频数据传入板子供FPGA编译码,然后再把结果传回电脑处理。
板子型号是 Xilinx Zynq-7000 XC7Z045 FFG900 – 2
也就是这一块:【可能需要科学上网】
http://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html#hardware
这几天对它的学习,简直颠覆了我对FPGA的认识。
感觉应该要写好几篇才能完全把这几天学到的东西记录下来。

Vivado

在讲Zynq之前,需要先讲Vivado
Vivado是Xilinx公司的一款EDA,2012年出第一版,现在已经成为Xilinx官方指定的开发软件了。
而ISE,呵呵哒的ISE,早在2013年就停止更新,被它的Xilinx粑粑抛弃了。
所以,在2013年及之后生产的板子和芯片,都不要用ISE开发
虽然在ISE的新建工程列表下能找到新的芯片和板子,也能综合布线生成比特流,但是依然不推荐。
原因有如下几个:

  • 来自Xilinx官方的所有支持,包括示例工程、IP核、操作说明文档等,全部都是基于Vivado的。也就是说,如果你用ISE,那么就会发生很尴尬的事情——你无法得到来自官方的任何支持。
  • Vivado跟ISE的开发理念完全不一样,ISE适合快速开发小型项目,而Vivado更适合开发大型项目。
  • ISE是面向文件的开发,.v文件、IP核、层次调用结构,讲道理更适合用于教学而不是工程开发。在ISE里甚至没有封装IP核这么一种说法…
  • Vivado则是面向IP核的开发,Xilinx公司认为,未来要快速开发大型的项目,实际上就是要堆砌IP核,所以在Vivado里一切皆是IP核,调用起来非常方便,很多协议也直接集成在里面了,例如AXI总线协议之类的,不用担心协议不匹配。

Zynq7000

众所周知,Xilinx有很出名的“7系列”:Artix7,Kintex7,Virtex7
而Zynq7是一个特殊的7系列,它是唯一一款集成了ARM9核的产品。虽然我觉得在FPGA里集成一个ARM有种脱裤放屁的无聊感,但是看新闻貌似大家都很激动的样子,可能是我的水平太低,不能看到这款产品真正的价值所在。

学习过程

首先跟着BIST测试一遍,既能测试板子是否能用,也能稍微了解一下这个板子都有些什么东西在上面。
然后看代码,你会发现Zynq根本不像一个FPGA,它更像一个ARM,在Vivado搭好硬件电路(一般都会有一个Zynq processing system7软核),生成bitstream,然后就可以到SDK去进行软件开发,编写C语言烧到ARM核里,就连启动的boot都是由ARM带动的,而FPGA更像一个ASIC,用来给ARM调用的。
Vivado有两种形式的设计,一种是source,跟一般的FPGA开发一样,没有用到ARM核;另一种是Block Design,就是IP核的堆砌,实际上一般都会用这种,因为Vivado可以把source封装成IP核,所以完全可以写一个source的Project,然后封装成一个IP加入到Block Design。但是这个端口连接是个问题,Block Design一般会用AXI总线互联,但是我们自己写的哪有这么规范…如果全部用GPIO互联,不仅浪费,GPIO还可能不够用,速度也不会很理想,反正还需要慢慢摸索。。。

总结

这几天看Xilinx的技术文档,看代码,上网慢慢找不懂的知识,还要连蒙带猜的,真是心累。感觉做Zynq比做单纯的FPGA门槛要高一些,既要有FPGA的编程知识,还要会嵌入式软件编写,貌似还能在FPGA上跑Linux,这么说还需要嵌入式Linux的知识,简直有够麻烦的,两三个人的工作量压到一个人身上,简直惨,学起来也麻烦。幸好我C语言和汇编的基础还算不错,不然就那一大堆嵌入式C代码就够搞几天的了。

你可能感兴趣的:(Verilog)