孤狼默戮

不断学习,不断的发现自己无知

基于ZC706,ZYNQ学习手记(2):用PL端点亮流水灯

1
阅读(4485) 评论(8)

--------------------------------------------------分割线---------------------------------------------------------        开发环境安装好之后,进行大家都喜闻乐见的第一个程序——点灯,本次使用纯逻辑端也就是PL端来控制ZC706开发板上的4个LED灯。

--------------------------------------------------手动分割------------------------------------------------------

        一、查看开发板原理图

blob.png

                打开之后,找到GPIO页面中四个LED灯位置

blob.png

            然后找到与LED灯相连的FPGA芯片对应管脚

            blob.png

blob.png

blob.png

        对应板上从左至右的四个LED灯的管脚分别为Y21、G2、W21、A17。记住这四个管脚,之后在写约束文件也就是XDC文件时需要用到。

        同理找到我们需要的外部时钟和复位端口。

        

        二、新建工程

        1.打开vivadoblob.png进入初始页面,点击新建工程

blob.png

        2.弹出向导窗口,直接NEXT。

blob.png

        3.设置工程名以及工程路径,楼主在这里设定工程名为Water_Leds,设置好后,点击NEXT

blob.png

        4.选择工程类型,选择RTL工程,这一次先不添加源文件,NEXT

        

blob.png


        5.选择对应的芯片或者开发板型号,楼主这里选择Boards中ZC706评估板,NEXT

    

blob.png

        6.最后会弹出一个关于该新建工程的综述窗口,没有问题直接Finish

blob.png

        新建工程的向导就结束了,接下来就是要添加我们的文件到工程中去了。

        

        三、添加文件

        1.添加设计文件也就是我们的.v文件,在工程界面左边Project Manger窗口中点击Add Sources,

blob.png

        或者是快捷键ALT+A,弹出Add Sources窗口,选择Add or create design sources,然后NEXT

blob.png

        如果我们有已经写好的.v文件,可以直接点击Add Files,这里我们要新建一个.v文件,所以选择Create

 File,

        

blob.png

        在弹出的小窗口中,输入要创建的文件名(这里楼主填的是Water_Leds_top),然后点击OK

blob.png

        点击Finish

blob.png

        在弹出的窗口中,你可以定义输入输出接口,VIVADO会根据你选择的接口在生成相应的模版,当然,也可以不在这里定义,楼主习惯自己在代码中定义,所以直接点OK,软件会弹出窗口提醒Define Module,直接Yes就好

    

blob.png

blob.png

        我们的Water_Leds_top.v文件就已经创建好并添加到工程中了。


        2.添加仿真文件

        众所周知,FPGA中仿真是极其关键的一步,接下来说怎么添加test bench到vivado工程中。

        与添加设计文件一样,ALT+A打开Add Sources窗口,不同的是,选择Add or create design sources。然后NEXT

blob.png

        后面的步骤跟添加设计文件的过程大同小异,不再赘述。

        3.添加约束文件

        约束文件的添加可以放到功能仿真之后添加,系统综合后打开I/O 配置界面可以用图行化方式配置管脚约束,并自动更新到XDC文件,这次只讲如何创建XDC文件并添加到工程。

        与添加设计文件和约束文件相似,ALT+A后选择Add or create constraints。

blob.png

        之后步骤也与之前一样。

        当文件都添加到工程后,我们可以在Sources 窗口中看到刚刚添加的文件,双击后就可以编辑

blob.png

        

        四、编辑文件

        1.编辑设计文件(逻辑设计代码)

        双击打开Water_Leds_top.v后,添加设计代码到文件中。

        

blob.png

    

blob.png

        

        2.编写test bench

        同样的,双击打开Water_Leds_tb.v后,添加相关代码到仿真文件

            

blob.png

blob.png

        这里由于仿真一秒的时间太长了,所以在test bench 中将时间参数例化为100个时钟周期。

        3.编写xdc文件

        vivado中约束文件是xdc文件,与ISE的ucf文件还是有些差别的,不过xilinx官方提供了相关的xdc文件

        打开blob.png

        其中是已经写好的XDC文件,里面记载了相关端口的电气参数,我们只需要将自己需要的语句copy到我们的xdc文件中就好了,根据前面led连接到芯片端口号搜索,这里以Y21为例

blob.png


        将其端口设置为与我们设计中led[4]口相连。。其余端口也类似。。。

blob.png

        这就是我们需要的Water_Leds_xdc.xdc文件了。

      

        五、仿真

        设计文件和仿真文件添加好后,就可以进行行为仿真来验证逻辑是否正确了,本次用VIVADO自带的Vivado simulator作为仿真工具。

        如图所示,打开行为仿真。

        

blob.png

        稍等片刻,出现仿真界面,添加感兴趣的信号到波形窗口(可以直接拖拽)

        

blob.png

        复位后开始仿真,三个蓝色的按钮,第一个是复位,第二个是马上开始仿真(不限时间),第三个是仿真到制定时间,这次我们只仿真10us。

       

blob.png

        完成仿真后,放大波形窗口,观察波形。可以通过边上的按钮来放大或者缩小时间刻度,也可以直接用CTRL+滚轮来控制。


blob.png

        当然,这只是行为仿真,只用来查看是否有逻辑错误。在工程综合和实现后,还可以分别进行加入线上延时以及约束后的仿真,更贴进片上实现的效果。也可以通过插入ILA核或者VIO核来做片上逻辑仿真,这个我们以后再提。

        

        六、综合,实现,生成bit文件

        在vivado界面的工具栏

blob.png

        这三个键分别对应综合、实验、生成bit流文件。

        一次点一遍或者直接点击生成bit文件,然后就是漫长的等待。。右上角有它的进度,如果中途报错了,查看错误提示并检查你的代码

blob.png

        这里说一下,如果逻辑仿真没问题而实现不能通过,一般都是约束文件那边出问题。

        成功后会弹出小窗口,关掉然后就可以下载文件到板子上了

blob.png

        七、上板测试

        bit文件生成好了,接下来就是上板测试了,找到Open Hardware Manager

        

blob.png

        

        打开后点Open Target 然后点Auto Connect,

blob.png

        没找到。。。什么鬼?哦,原来是开发板没上电,将开发板的usb jtag口连到PC上,上电,再次点链接,这次有了

blob.png

        直接点Program device,然后点下拉出来的xc7z045_1,弹出下面的窗口

blob.png

        注意检查bit文件的路径,千万别弄错了。

        这次我们没有添加ILA或者VIO核,所以没有degug 文件,直接点Program就好了。

        下载中。。。。

blob.png

        下载完后,就能看到板子上,电源边上的那四只LED灯在从左往右的闪啦。

---------------------------------------------再割----------------------------------------------------------------

        这么简单一个工程,为了写这个博客居然用来两个小时。。。好累,希望能坚持写下去。。。

        相关代码上传到附件了。

Water_Leds.srcs.rar

        

  1. @Charile   

    楼主漏了一个细节,最后一步板子上的SW4要拨到01的状态。

    有在另外一篇文章里专门写BOOT MODE的设置

  2. @yj1993   
    @mclaren1985   

    不错,很详细

    请问 我在最后一步无法找打Program Device这个选项 您能找到吗?谢谢



    最后一步板子上的SW4要拨到01的状态。

  3. 楼主漏了一个细节,最后一步板子上的SW4要拨到01的状态。

  4. @mclaren1985   

    不错,很详细

    请问 我在最后一步无法找打Program Device这个选项 您能找到吗?谢谢



  5. @xuefei_whu   

    多图,详细,好评

    请问 我在最后一步无法找打Program Device这个选项 您能找到吗?


  6. 你好 请问我在最后一步无法找打Program Device这个选项 谢谢

  7. 多图,详细,好评

  8. 不错,很详细