对于xilinx的ZC706开发板单独使用PL做流水等试验的网上例程几乎是空白,大多数是PS+PL实验。如果是刚开始接触ZC706板,想写一个单独的PL程序时,你肯定以为很快就可以上手。但是如果你开始详细了解ZC706的核心芯片XC7Z045会发现一个关键性问题,就是时钟的使用。XC7Z045所使用PL时钟输入是以差分对的形式输入的,那在程序当中怎么搞嘞???疑惑???不解了吧?下面请看实例:

对于正常是时钟输入来说程序应该是这样的:

module led(

input sys_rst_n,

input sys_clk,

output [3:0] LD

);

reg [3:0]   LD_reg;

reg [31:0]     cnt;

assign LD = LD_reg;

always@(posedge sys_clk or negedge sys_rst_n)

begin

if(sys_reset_n == 1'b1)begin

LD_reg <= 4 'b1000;

cnt <= 32'b0;

end

else begin

if (cnt == 32'd25000000)begin

cnt <= 32'b0;

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

end

else begin

cnt <= cnt + 32'b1;

end

end

end

endmodule

按照上面的程序去编译,如果是单信号时钟的芯片没有任何问题。但是这里我们的XC7Z045用的是差分对时钟输入,编译肯定是通不过的,一堆error是跑不了的。那问题来了,我们程序中的时钟是sys_clk但信号呀!?总不用两根时钟吧!况且又是差分对。那在想一想,将差分对时钟变成单信号时钟。如果你能这样想,那就是赞了。我们要做的就是这个。在讲这个之前我们得先要了解一下,xilinx对于差分信号所使用的相关原语。(所谓原语就是xilinx给你做的例化)。我这里提及主要两个例化:IBUFGDS,IBUFDS(关于他们的使用,请自行百度)。IBUFGDS是我们例程中所需要用到的原语,具体形式

IBUFGDSrefclk_ibuf ( .I(sys_clk_p), .IB(sys_clk_n),.O(sys_clk));

sys_clk_p,sys_clk_p是差分对输入,sys_clk为程序中定义的wire通过这个例化后我们就可以将差分对时钟转变成但信号时钟使用。具体范例如下:

moduleled(

input sys_rst_n,

input sys_clk_p,

input sys_clk_n,

output [3:0] LD

);

wiresys_clk;

wiresys_reset_n;

reg[3:0]    LD_reg;

reg[31:0]     cnt;

 IBUFGDSrefclk_ibuf ( .I(sys_clk_p), .IB(sys_clk_n),.O(sys_clk));

IBUF  sys_reset_n_ibuf (.O(sys_reset_n), .I(sys_rst_n));

assignLD = LD_reg;

always@(posedgesys_clk or negedge sys_reset_n)

begin

if(sys_reset_n == 1'b1)begin

LD_reg <= 4 'b1000;

cnt <= 32'b0;

end

else begin

if (cnt == 32'd25000000)begin

cnt <= 32'b0;

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

end

else begin

cnt <= cnt + 32'b1;

end

end

end

endmodule

写到这里当然还没有完,我们还要做I/O的constraint,对于led管脚的分配不多说跟以前一样。差分对时钟的例化,我们要稍加注意要加上这句原语:

create_clock-period 10.000 -name sys_clk [get_ports sys_clk_p] (周期为10ns)

set_propertyPACKAGE_PIN H9 [get_ports sys_clk_p]    差分时钟只要写一个clk_P就行clk_n软件会自动链接。

到此各项工作就算大体完成,编译吧!!!

看完请点赞! 也是对本人的支持!!需要工程文件的到CSDN网站,搜素“xilinx PL单独模块流水灯实验”,上传者为本人账号名:“xunaiqun”;

zynq学习01 zynq 单独使用PL模块点亮led相关推荐

  1. zynq学习06 zynq的PL中加入的AXI_GPIO IP核来控制GPIO操作

    http://m.blog.csdn.net/article/details?id=19934837 http://www.cnblogs.com/rocbomb/archive/2014/07/29 ...

  2. zynq学习04 zynq中PS通过MIO控制LED

    http://m.blog.csdn.net/article/details?id=40954363 这几天在学习zynq,zynq芯片集成了两片arm a9的内核,和xilinx的fpga可编程部分 ...

  3. zynq学习03 zynq中三种实现GPIO的方式

    http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...

  4. zynq学习05 Zynq 7000 emio的gpio操作

    http://m.blog.csdn.net/article/details?id=44566855 本文讲述怎样使用emio功能的gpio,涉及到fpga部分,软件涉及到一级引导程序fsbl的创建及 ...

  5. OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)

    中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...

  6. Clion编辑器的学习与实践之完成stm32F103点亮LED的程序

    目录 一.安装环境 1.1 Clion 1.2 arm-none-eabi-gcc 1.3 STM32CubeMX 1.4 OpenOCD 1.5 MinGW 1.6 添加环境变量 二.配置Clion ...

  7. 【RK3399Pro学习笔记】十八、点亮LED灯(python、C语言、bash)

    目录 GPIO python3 python-periphery python2 RPi C语言 SysFs方式 编写 gpiolib.c gpiolib.h main.c 编译 测试 wiringP ...

  8. ZYNQ学习之pl和ps接口

    1.PL和PS的接口类型总共有两种: (1)功能接口:AXI.EMIO.中断.DMA流控制.时钟调试接口. (2)配置接口:PCAP.SEU.配置状态信号和Program/Done/Init信号.这些 ...

  9. ZYNQ学习之路17.自定义SDSoC硬件平台

    前言 在前面的学习中,我们已经学会了使用Vivado及SDK开发环境,熟悉了硬件开发与Linux软件驱动之间的联系及开发流程.本系列教程我们学习SDSoc的开发,在SDSoc IDE中,Xilinx为 ...

最新文章

  1. docker 删除容器_Docker使用命令和技巧
  2. 将信息系学生的计算机文化学,计算机学生论文,关于基于职业岗位的计算机文化基础课教学相关参考文献资料-免费论文范文...
  3. 古典人像秒变3D,视角还能随意切,华为上交联手出品
  4. 接口隔离原则(ISP)
  5. 苏州大学计算机学院报录比,【图片】18年苏州大学计算机872考研经验分享【苏州大学研究生吧】_百度贴吧...
  6. 一个程序员的一些想法(二)
  7. SpringBoot集成Shiro进行权限控制和管理
  8. Spider局域网通讯软件
  9. 《面向对象分析与设计》一1.4面向对象方法的主要优点
  10. 关于蓝桥杯竞赛考试的一些信息~
  11. 语言技能c1,从0开始学法语,20个月考下DALF C1,我如何立竿见影学语言?
  12. onenote怎么同步到电脑_OneNote 同步最佳做法
  13. css3,环绕圆环 loading,小组件
  14. k8s-污点和容忍度
  15. 速卖通获得aliexpress商品详情 API
  16. Vue实现省、市、县三级联动
  17. Linux 简要大纲
  18. PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合
  19. pes2020服务器维护中,【重磅】PES2021删卡时刻/传奇及国际服补偿一览
  20. 游戏设计艺术 第2版 第31章 读书笔记

热门文章

  1. 标杆课程采访补充问题
  2. 什么样的电路仿真软件可以显示电流流动?
  3. QN8027输出调频分裂的频谱
  4. jmeter tps指标在哪里看_JMeter功能不够用?看这里
  5. linux5.5内核,一条命令就可以升级到Linux 5.5内核或Linux 5.5以上版本
  6. mysql 执行顺序 别名_sql语句的执行顺序和别名问题
  7. jmeter导入已有的脚本_jmeter导入badboy录制的脚本
  8. matlab 二分法求方程近似解
  9. Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置
  10. pyhon 数据类型转换函数