【Z-turn Board试用体验】+试用PL - 问答 - 电子威廉希尔官方网站 论坛 - 最好最受欢迎电子论坛!

【Z-turn Board试用体验】+试用PL

blackroot ( 楼主 ) 2015-6-10 16:59:53  只看该作者 倒序浏览
本帖最后由 blackroot 于 2015-6-10 17:06 编辑

一直没搞懂PS怎样给PL提供复位和时钟,今天这个问题终于解决了~~~~~用一个简单的例子来说明一下,怎样使用PS输出的时钟和复位信号:三色流水灯
配置PS部分就不用图说明了,方法和前面的一样,在其中勾选FCLK_CLK0、FCLK_RESET0_N
生成顶层例化代码
`timescale 1 ps / 1 ps

module system_wrapper
   (FIXED_IO_mio,
    FIXED_IO_ps_clk,
    FIXED_IO_ps_porb,
    FIXED_IO_ps_srstb,
    pl_clk,
    rst_n);
  inout [53:0]FIXED_IO_mio;
  inout FIXED_IO_ps_clk;
  inout FIXED_IO_ps_porb;
  inout FIXED_IO_ps_srstb;
  output pl_clk;
  output rst_n;

  wire [53:0]FIXED_IO_mio;
  wire FIXED_IO_ps_clk;
  wire FIXED_IO_ps_porb;
  wire FIXED_IO_ps_srstb;
  wire pl_clk;
  wire rst_n;

system system_i
       (.FIXED_IO_mio(FIXED_IO_mio),
        .FIXED_IO_ps_clk(FIXED_IO_ps_clk),
        .FIXED_IO_ps_porb(FIXED_IO_ps_porb),
        .FIXED_IO_ps_srstb(FIXED_IO_ps_srstb),
        .pl_clk(pl_clk),
        .rst_n(rst_n));
endmodule

新建verilog文件编写流水灯代码。
module led_flow(pl_clk,rst_n,led);
input pl_clk;//100Mhz
input rst_n;
output [2:0]led;
reg [2:0]led;
reg clk_100khz;
reg [9:0] count0;
reg clk_100hz;
reg [9:0]count1;
reg clk_1hz;
reg [6:0]count2;
always@(posedge pl_clk or negedge rst_n)
begin
    if(!rst_n)
        count0<=10'd1;
        else if(count0<=10'd1000)

            count0<=count0+1;

         else count0<=10'd1;
end
always@(posedge pl_clk or negedge rst_n)
begin
    if(!rst_n)
        clk_100khz<=0;
        else if(count0<=10'd500)
            clk_100khz<=1;
            else clk_100khz<=0;
end

always@(posedge clk_100khz or negedge rst_n)
begin
     if(!rst_n)
         count1<=10'd1;
         else if(count1<=10'd1000)
             count1<=count1+1;
          else count1<=10'd1;
  end

  always@(posedge clk_100khz or negedge rst_n)
  begin
    if(!rst_n)
        clk_100hz<=0;
        else if(count1<=10'd500)
            clk_100hz<=1;
            else clk_100hz<=0;
end

always@(posedge clk_100hz or negedge rst_n)
begin
     if(!rst_n)
         count2<=7'd1;
         else if(count2<=7'd100)

             count2<=count2+1;


          else count2<=7'd1;
  end
  always@(posedge clk_100hz or negedge rst_n)
  begin
    if(!rst_n)
        clk_1hz<=0;
        else if(count2<=7'd50)
            clk_1hz<=1;
            else clk_1hz<=0;
  end
always@(posedge clk_1hz or negedge rst_n)
begin
    if(!rst_n)
        led[2:0]<=3'b110;//led[0]<=1
        else led[2:0]<={led[1:0],led[2]};
end
endmodule

重新例化顶层代码
module top(led_f,FIXED_IO_mio,FIXED_IO_ps_clk,FIXED_IO_ps_porb,FIXED_IO_ps_srstb);
output [2:0]led_f;
  inout [53:0]FIXED_IO_mio;
  inout FIXED_IO_ps_clk;
  inout FIXED_IO_ps_porb;
  inout FIXED_IO_ps_srstb;
// output pl_clk;
  //output rst_n;
wire clk;
wire reset;


system system_i
       (.FIXED_IO_mio(FIXED_IO_mio),
        .FIXED_IO_ps_clk(FIXED_IO_ps_clk),
        .FIXED_IO_ps_porb(FIXED_IO_ps_porb),
        .FIXED_IO_ps_srstb(FIXED_IO_ps_srstb),
        .pl_clk(clk),
        .rst_n(reset));


led_flow led_flow_inst(.pl_clk(clk),
                        .rst_n(reset),
                        .led(led_f));
endmodule

生成bitstream下载到zynq,下载步骤open hardware manager->open target->open new target
然后一路NEXT到如下的界面

选择xc7z010 finish->program device进行下载。下面是结果:






网速实在不忍直视了,慢的像蜗。




1个回复

myir.tom 发表于 2015-6-11 09:10:15
不错,很有意义,学习了
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /7 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-10 14:27 , Processed in 0.336302 second(s), Total 37, Slave 28 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表