代码改变世界

ZedBoard学习(5)-ZedBoard和System Generator

2012-12-01 08:00  libing64  阅读(909)  评论(0编辑  收藏  举报

  Zynq中包含了一个FPGA内核和两个Cortex-A9内核,尽管功能十分的强大,又非常的时髦,但是本质上讲和之前Xilinx的FPGA 硬核PowerPC没什么区别,无非是PowerPC换成了更加有前景的ARM,因此我很自然的想法是以前在ARM上、在FPGA上做过的东西那个再Zynq上必然也是可以上实现的。

        因为之前一直在跟图像处理算法有关的学习,从Matlab到OpenCV、Directshow,从PC到STMF407再到ARM9(Linux),一直都是做跟图像处理有关的,直到开始接触FPGA,才解决了最困扰我的问题--运算速度问题。图像处理需要的高速的运算和大量的资源,刚好FPGA以其并行性以及流水线的思想很适合进行图像处理算法的高速实现,于是我毅然改变方向了选择了FPGA作为新的平台。

        进行图像处理个人以为算法始终是核心,平台其次。很喜欢System Generator 的Model Based Design的思想,将人从重复劳动中解救出来,专心于算法,毕竟工具是服务于人的。因此我非常喜欢用System Generator,从接触FPGA开始,大部分的时间都花在了SysGen上。

       之前一直是在ML605开发板上进行算法的测试,SysGen构建模型-->Hardware Co-Simulatuon,模型构建完成之后直接在板子上进行硬件协仿真,这样做一是仿真的速度大大的提高,在板子上free running的速度大概是在PC跑的10倍,二是算法完全是在FPGA上跑的,跑完对算法那叫一个放心。

       拿到ZedBoar之后我自然也希望在这个板子上也这么做,但是我错了,经过多少次的尝试之后发现"xc7z020-1clg484" is not supported for JTAG co-simulation.”,我在14.1下失败之后换到14.2和14.3下都进行了测试,发现它确实不是因为板子导致工具不支持,因为14.3中对更新的芯片都支持比如ZC702,ZC705等,那么我分析是因为PL PS的架构下由于JTAG要做的事变多了,因此就失去了Hardware Co-Simulatuon这项功能。

      虽然SysGen在ZedBoard上不支持Hardware Co-Simulatuon,但是我还是希望能够利用SysGen,起码我使用SysGen构建的模型转化为ISE工程后我希望它是可以使用的。因此就做了一个简单的测试。

大致思路是在SysGen下构建一个最简单的模型,生成HDL Netlist,在ISE下打开工程,添加UCF代码,编译生成Bitstream,iMPACT下载。

1、构建模型LEDSysGen

       没 有输入,只有一个输出,是一个常数25

 

常数配置为UFIX_8_0

2、生成HDL Netlist

       打开System Generator模块,简单配置一下

          时钟按照ZedBoard的时钟10ns,Clock Pin 是Y9,Generate

   2、ISE中编译

这是在netlist文件夹下多出一个ISE 的工程,ISE打开,修改ledsysgen_cw.ucf文件。

 

NET "clk"          LOC = Y9   | IOSTANDARD=LVCMOS33;  # "GCLK"

NET "ce"           LOC = P16  | IOSTANDARD=LVCMOS18;  # "BTNC"

NET "gateway_out1[0]"           LOC = T22  | IOSTANDARD=LVCMOS33;  # "LD0"

NET "gateway_out1[1]"           LOC = T21  | IOSTANDARD=LVCMOS33;  # "LD1"

NET "gateway_out1[2]"           LOC = U22  | IOSTANDARD=LVCMOS33;  # "LD2"

NET "gateway_out1[3]"           LOC = U21  | IOSTANDARD=LVCMOS33;  # "LD3"

NET "gateway_out1[4]"           LOC = V22  | IOSTANDARD=LVCMOS33;  # "LD4"

NET "gateway_out1[5]"           LOC = W22  | IOSTANDARD=LVCMOS33;  # "LD5"

NET "gateway_out1[6]"           LOC = U19  | IOSTANDARD=LVCMOS33;  # "LD6"

NET "gateway_out1[7]"           LOC = U14  | IOSTANDARD=LVCMOS33;  # "LD7"

然后选择Implementation,编译工程
3、iMPACT下载
打开iMPACT,下载刚刚生成的bitstream文件,看一看效果。
LED亮起,刚好是数字25。虽然只是很简单的点个灯,但是在hardware co-simulatiom无效的情况下我对SysGen又有了信心,我可以专心的做算法,因为我知道算法实现之后肯定是可以在FPGA上实现的。