zoukankan      html  css  js  c++  java
  • (原创)一步一步学ZedBoard & Zynq(二):使用PL做流水灯

    《一步一步学ZedBoard & Zynq》系列第二篇,目的是为了学习不使用ARM PS情况下,只对Zynq PL的编程方法,同时学习Xilinx PlanAhead工具的使用方法 

    更多更新请关注我的博客:@超群天晴 http://www.cnblogs.com/surpassal/

    硬件平台:Digilent ZedBoard

    开发环境:Windows XP 32 bit

    软件: XPS 14.2 +PlanAhead 14.2 

    新建工程LAB2

    项目设置中,需要将芯片选为Zynq

    选择文件类型为verilog,名称就ledwater

    之后会提示引脚信息,默认空就可以,随后可以通过verilog代码来实现。

    进入ISE后,添加源文件,内容如下

     1 /*
     2 《一步一步学ZedBoard & Zynq》些列第二篇:使用Zynq的PL做流水灯
     3 2012年9月11日10:31:13
     4 超群天晴
     5 */
     6 
     7 module ledwater(
     8     input BTNU,
     9     input GCLK,
    10     output [7:0] LD
    11     );
    12 wire clk,rst;
    13 reg [7:0]    LD_reg;
    14 reg [31:0]     cnt;
    15 
    16 assign clk = GCLK;
    17 assign rst = ~BTNU;
    18 assign LD = LD_reg;
    19 
    20 always@(posedge clk or negedge rst) 
    21 begin
    22     if(rst==1'b0)begin
    23         LD_reg <= 8'b1000_0000;
    24         cnt <= 32'b0;
    25     end
    26     else begin 
    27         if (cnt == 32'd25000000)begin        
    28             cnt <= 32'b0;
    29             LD_reg <=(LD_reg>>1)|(LD_reg<<7);
    30         end 
    31         else begin
    32             cnt <= cnt + 32'b1;
    33         end
    34     end
    35 end    
    36     
    37 endmodule

    这里设定BTNU为复位,GCLK是时钟

    查看ZedBoard的原理图,可以知道BTNU默认是低电平。

    为了实现rst下降沿复位,第38句使用了一次取反

    1 assign rst = ~BTNU;

    小灯的移位采用“左移1位+右移N-1”模式,第29行可以看出来

    1 LD_reg <=(LD_reg>>1)|(LD_reg<<7);

    设定引脚约束,ucf内容如下。LOC表示引脚锁定,IOSTANDARD表明引脚电平。完整的ucf文件可以从Diligent官方网站上下载

     1 NET LD[0] LOC = T22  | IOSTANDARD=LVCMOS33;  # "LD0"
     2 NET LD[1] LOC = T21  | IOSTANDARD=LVCMOS33;  # "LD1"
     3 NET LD[2] LOC = U22  | IOSTANDARD=LVCMOS33;  # "LD2"
     4 NET LD[3] LOC = U21  | IOSTANDARD=LVCMOS33;  # "LD3"
     5 NET LD[4] LOC = V22  | IOSTANDARD=LVCMOS33;  # "LD4"
     6 NET LD[5] LOC = W22  | IOSTANDARD=LVCMOS33;  # "LD5"
     7 NET LD[6] LOC = U19  | IOSTANDARD=LVCMOS33;  # "LD6"
     8 NET LD[7] LOC = U14  | IOSTANDARD=LVCMOS33;  # "LD7"
     9 
    10 NET GCLK LOC = Y9   | IOSTANDARD=LVCMOS33;  # "GCLK"
    11 NET BTNU LOC = T18  | IOSTANDARD=LVCMOS18;  # "BTNU"

     使用PlanAhead I/O pin planing(post synthesis)可以看到引脚约束的结果

    下载之后能看到板子上LD0~LD7流水效果

    完整工程下载:LAB2.rar

  • 相关阅读:
    C#中 @ 的用法
    ASP.NET页面间传值
    ASP.NET中常用的文件上传下载方法
    把图片转换为字符
    把图片转换为字符
    JavaScript 时间延迟
    Using WSDLs in UCM 11g like you did in 10g
    The Definitive Guide to Stellent Content Server Development
    解决RedHat AS5 RPM安装包依赖问题
    在64位Windows 7上安装Oracle UCM 10gR3
  • 原文地址:https://www.cnblogs.com/surpassal/p/ZedBoard_Lab2.html
Copyright © 2011-2022 走看看