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

  • 相关阅读:
    终端I/O之行控制函数
    终端I/O之波特率函数
    终端I/O之stty命令
    终端I/O之终端选项标志
    终端I/O之获得和设置终端属性
    终端I/O之特殊输入字符
    终端I/O之综述
    css大小单位px em rem的转换和详解
    简单jquery实现select三级联动
    html 页面内锚点定位及跳转方法总结
  • 原文地址:https://www.cnblogs.com/surpassal/p/ZedBoard_Lab2.html
Copyright © 2011-2022 走看看