judyzhong 的blog

在对zynq进行Linux驱动开发时,除了需要针对zynq内ARM自带的控制器适配驱动外,还需要对zynq PL部分的IP核进行驱动开发。对于ARM来说,zynq PL部分的IP核就是一段地址空间,这段地址空间包含了该IP的一系列寄存器,ARM操作该IP核的寄存器也就是操作这段地址空间,而PL部分IP的驱动也就是对IP寄存器的操作。

1、 硬件设计
在vivado内进行设计时,RapidIO IP核通过AXI总线与ARM相连,地址空间区域如图:

从0x40000000-0x7FFFFFFF均为RapidIO IP的地址空间,注意这里的地址是物理地址,在zynq的裸程序中,可以通过xil_out32()或xil_in32()等函数直接操纵该地址的值,也即对RapidIO IP核寄存器的读写操作。

硬件工程师必知的几十个电路设计问答

一、下面是一些基本的数字电路知识问题

(1) 什么是 Setup 和 Hold 时间?
答:Setup/Hold Time 用于测试芯片对输入信号和时钟信号之间的时间要求。 建立时间(Setup Time)是指触发器的时钟信号上升沿到来以前,数据能够保持稳 定不变的时间。输入数据信号应提前时钟上升沿(如上升沿有效)T 时间到达芯片, 这个 T 就是建立时间通常所说的 Setup Time。如不满足 Setup Time,这个数据就 不能被这一时钟打入触发器,只有在下一个时钟上升沿到来时,数据才能被打入 触发器。 保持时间(Hold Time)是指触发器的时钟信号上升沿到来以后,数据保 持稳定不变的时间。如果 Hold Time 不够,数据同样不能被打入触发器。

(2) 什么是竞争与冒险现象?怎样判断?如何消除?

答:在组合逻辑电路中,由于门电路的输入信号经过的通路不尽相同,所产生的延时也就会不同,从而导致到达该门的时间不一致,我们把这种现象叫做竞 争。由于竞争而在电路输出端可能产生尖峰脉冲或毛刺的现象叫冒险。如果布尔 式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消 去项,二是在芯片外部加电容。

(3) 请画出用 D 触发器实现 2 倍分频的逻辑电路?

答:把 D 触发器的输出端加非门接到 D 端即可,如下图所示:

Vivado 2017.1模块连接

作者: East FPGA那点事儿

最近xilinx发布了vivado2017.1,不仅仅增加了很多新的KU+ ZU+ VU+器件,还有很多功能很方便,比如通用的模块连接。通常在较大的设计中,工程师都需要很长时间来做顶层的模块连接,这样做需要很大的工作量还容易出错,大的设计顶层连接通常上千行代码。现在vivado支持BD文件的方式来完成顶层模块连接:

A.在设计文件中添加module,如PWM_controller:

七步带你认识计算机视觉(Computer Vision)

计算机视觉(Computer vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理成更适合人眼观察或进行仪器检测的图像。

学习和运算能让机器能够更好的理解图片环境,并且建立具有真正智能的视觉系统。当下环境中存在着大量的图片和视频内容,这些内容亟需学者们理解并在其中找出模式,来揭示那些我们以前不曾注意过的细节。 计算机视觉的实现基本过程为:

  • 计算机从图片中生成数学模型
  • 计算机图形在模型中对图像进行绘制,然后在图像处理过程中将其作为输入,另外给出处理图像作为输出
  • 在编程一对采用并行模式连接的 QSPI Flash ROM 时,会出现以下问题。

    在使用函数 XQspiPs_SetOptions()(文件 xqspips_options.c 中)在线性模式与 I/O 模式间转换时,XQSPIPS_LQSPI_MODE_OPTION 将覆盖 XQspiPs_LinearInit() 此前选择的模式设置(堆叠式或并行模式)。

    寄存器 XQSPIPS_LQSPI_CR 只采用 XQSPIPS_CR_RST_STATE 进行初始化。

    解决方案:

    在使用 SetOption 转换至线性模式时,写入重设值才会看到有效的线性模式设置。

    只要从 I/O 转换至线性模式,就可选择总线配置与读取类型等。

    在转换至线性模式后,可使用 set_lqspiconfig API 来选择这些设置。

    LinearInit 是最近添加的低层 API(没有使用实例指示器,直接使用基础地址)

    该 API 可根据 CONNECTION_MODE 进行堆叠式/并行选择,例如硬件连接。

    这是通过简化实现的。

    在理想情况下,您应该提供相关 Flash 配置的信息来使用,该驱动器应对其进行设置。

    SSetOption 与 SetLqspiConfig 只是常用方法。

    Zynq UltraScale+ MPSoC ZCU102 评估套件使用 MAX15301 及 MAX15303 PMBus 稳压器以及 MAX20751E 主控基于 Maxim PMBus 的电源系统。

    MAX20751E 器件可进行重新编程,仅限 4 次。

    如果在 ZCU102 上遇到了电源问题,可能就必须使用 Maxim InTune PowerTool 线缆重新编程这些器件。

    解决方案

    ZCU102 评估套件上的 MAX15301 和 MAX15303 PMBus 器件可进行重新编程。

    ZCU102 上的 MAX20751E 器件可进行重新编程,仅限 4 次。

    因此,需要 PowerTool MAXPOWERTOOL002# USB 转 PMBUS 接口加密狗以及 PowerTool 软件。

    PowerTool 软件可以在这里下载: http://www.maximintegrated.com/en/design/tools/applications/evkit-softwa...

    请找到为附加 KCU102 重新编程所需的脚本以及需要遵循的重要指令。

    Zynq的PL与PS之间的数据传输

    作者:高视 文章来源:FPGA2嵌入式微信公众号

    1. PS与PL之间传输接口
    PS和PL部分的连接时通过EMIO和AXI总线连接通信。其中,一共9个双向读写的通信的AXI端口,他们分别是:
    1)M_GP0 &M_GP1
    2)S_GP0 &S_GP1
    3)S_AXI_HP0-3
    4)S_AXI_ACP

    这些端口的特性和适合的使用场景都不太一样,其中M_GP适合CPU和FPGA之间少量的数据通信,S_HP用来进行大批量的数据交互,S_GP很少用到,S_ACP同S_HP类似,但是它可以保证CPU和DDR3之间的Cache一致性。

    对比Vivado 2017.1和Vivado 2016.4 的性能测试分享

    作者: Plunify全球团队

    此篇文章里,我们将通过使用InTime来检验Vivado 2017.1和Vivado2016.4之间的性能对比。

    概要:分别进行了3个Vivado 2017.1对Vivado2016.4的性能测试。总体而言,Vivado 2017.1比Vivado2016.4给出了更好的效果。虽然在测试1中的结果有些相似,但是Vivado2017.1从测试2和3中获得的最佳TNS总负余量和WS最差余量却比Vivado2016.4要好得多。

    方法Methods

    此性能测试我们将使用名为“CPU”的设计,目标器件为“XC7K70TFBG676-2”。

    比较2个工具链版本之间将通过以下测试进行:

    用于编译的设置将通过InTime使用Vivado2016.4生成。Vivado 2017.1将使用相同的设置进行编译。

    用于编译的设置将通过InTime使用Vivado2017.1生成。 Vivado 2016.4将使用相同的设置进行编译。

    嵌入式系统开发中驱动程序设计的5个窍门

    作者:Jacob Beningo

    在嵌入式系统的开发中,驱动程序的设计和实施是一个关键组成部分,是满足系统实时性需求的关键。本文由资深嵌入式软件开发专家Jacob Beningo撰写,总结了设计驱动程序开发者应该掌握的五个技巧。

    每一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。 驱动的设计和实施是确保一个系统能够满足其实时性要求的关键。以下五个窍门是每一个开发者在设计驱动程序时应该考虑的。

    1、使用设计模式
    设计模式是一个用来处理那些在软件中会重复出现的问题的解决方案。 开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具箱中选择一个最适合解决这个问题的方案。在微处理器出现之初,底层驱动已经很成熟了,那么,为什么不利用现有的成熟的解决方案呢?

    驱动程序设计模式大致分属以下4个类别:bit bang、轮询、中断驱动和直接存储器访问(DMA)。

    PetaLinux安装教程,基于Ubuntu

    作者:Joyce

    PetalLinux是Xilinx公司推出的嵌入式Linux开发工具,专门针对Xilinx公司的FPGA SoC芯片和开发板,用户可以在PetaLinux工具的帮助下进行完整的开发流程,包括设计,验证,仿真,下载等。

    本文将详细介绍PetaLinux的安装流程,虽然实际上基本就是把Xilinx的UG1144翻译一遍。但对于初学者而言,全是英文的Guidance还是很难受的,可能某一步要输入某个命令,但是却并不知道为什么要这么做,这并不好,也容易打击信心,尤其是UG里还有一点小错误。

    安装前的准备工作

  • 你需要一个运行着Linux操作系统的电脑作为主机。
  • 你可以用虚拟机,也可以装双系统,或者你甚至可以直接把系统换成Linux。
    在这里,我用的是VMware虚拟机下的Ubuntu Kylin 14.04 LTS

  • 你需要一个足够大的硬盘空间,一个足够好的CPU,尽量大的内存。
  • 毕竟是用来做开发的,对于配置要求还是比较高,Xilinx推荐4GB内存,20GB硬盘,2GHz主频CPU。

    同步内容