跳转到主要内容
瑞苏盈科专栏
我与瑞苏盈科板卡的开发故事

Zynq

ZYNQ 高速接口系列(一) PCIe接口

judy /

<strong>PCIe 学习笔记</strong>

<strong>一、PCIe概况</strong>
随着现代处理器技术的发展,使用高速差分总线替代并行总线已是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而可以使用更少的信号线达到更高的通讯速度。PCIe总线解决了PCI总线的不足,它的发展将取代PCI成为新型的数据总线,其提供了更加完善的性能,更多的功能,更强的可扩展性和更低的成本 。

在PCIE中有两种数据传输方式:
1>DMA(Direct Memory Access)模式:直接内存访问,该模式下数据传送不是由CPU负责处理,而是由一个DMA控制器来完成,占用较少的CPU资源
2>PIO(Programmed Input-Output)模式:可编程IO,该模式下数据传送由CPU执行I/O端口指令来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式
使用DMA模式时,计算机的运行速度会比使用PIO模式快很多

利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

judy /

<font color="#FF8000">作者:没落骑士</font>

最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台。大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更新硬件算法模块配置寄存器内容,同时可计算分析PL端算法实现性能指标。PL端的FPGA逻辑则负责算法的硬件实现,以探索高效并行硬件架构。为此本人后续会持续编写《利用ZYNQ SOC快速打开算法验证通路》系列专题博文,在各个阶段进行些基础性总结。

  MATLAB中数据为双精度浮点型,因此打开算法验证通路的第一步即为MATLAB中浮点数与定点二进制补码之间的相互转换。在之前的博文:《FPGA与MATLAB数据交互高效率验证算法——仿真阶段》中提到过两种数值表示方式之间的转换,但为了便于testbench仿真,MATLAB写和读的文件均为txt文本文件。在算法板级验证中,数据应以未经过ASCII码编码的二进制数据方式被处理。这里涉及到MATLAB函数fscanf和fprintf以及函数fread和fwrite的区别,前两个分别为读和写文本文件,后两个则是读写二进制文件。

使用即用型开发板和开源软件快速开发定制的 HP 测试仪器

judy /

<font color="#FF8000">作者:Steve Leibson</font>

人们经常需要开发定制的仪器用于实验或生产测试。早期的方法是通过 GPIB/IEEE-488 接口来连接仪器,并通过台式电脑或工作站进行控制。如今流行的则是 PXI 和 PXI Express 机架系统等更加模块化的方法。然而,此类安装可能很昂贵,尤其对于一次性测试或一次性堆叠更是如此。

为加快开发速度并降低定制仪器的成本,设计人员应考虑具有充足板载模数转换器 (ADC) 或数模转换器 (DAC) 资源的单板仪器平台,所有资源均由嵌入式处理器和配套的 FPGA 进行控制。

本文将展示如何使用基于处理器/FPGA 的系统级模块 (SoM) 以及附带的开发工具来开发定制仪器。依托一个由社区支持的仪器设计开放市场,这种仪器开发方式可以避免开发硬件的需要,并可以开发出紧凑的低成本工具,用于开发多种类型的仪器。

Zynq-7000 rgb2ycbcr IP的创建与使用

judy /

<font color="#FF8000">作者:OpenSLee</font>

<strong>1 背景知识</strong>

IP(Intellectual Property)在嵌入式FPGA设计中,指的是某些设计好的模块,分为软件模块和硬件模块。这些模块,一般都是已经测试好,所有功能完善的,由一些用户自己设计的。有些模块是免费的,也有收费的模块。所有用户都可以将这些IP核(IP Core)导入到自己的工程中,同样,所有用户也都可以定制自己的IP核。

将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等等设计成可修改参数的模块,让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复劳动。随着CPLD/FPGA的规模越来越大,设计越来越复杂,使用IP核是一个发展趋势。理想地,一个知识产权核应该是完全易操作的--也就是说,易于插入任何一个卖主的技术或者设计方法。通用异步接发报机(UARTs)、中央处理器(CPUs)、以太网控制器和PCI接口(周边元件扩展接口)等都是知识产权核的具体例子。

CNN在ZYNQ上的实现

judy /

<strong>ZYNQ简介</strong>

ZYNQ系列是Xilinx推出的高端嵌入式SoC,其在片上集成了ARM处理器和FPGA。ZYNQ与传统的嵌入式CPU相比,具有强大的并行处理能力。开发人员利用FPGA强大的并行处理能力,不仅可以解决多种不同信号处理应用中的大量数据处理问题,而且还能通过加入更多外设来扩展处理系统的功能。ZYNQ通过引入最新的高速AXI-4总线,可轻松实现外设的扩展与高速互访。

ZYNQ SoC十分适用于硬件加速,最典型的架构就是将需要加速的大运算量逻辑部署到FPGA上,而将流程控制的逻辑部署到arm上。典型的ZYNQ SoC结构如图1。
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13353-392…; alt=""></center>

利用 SoM 实现嵌入式微处理器/FPGA 组合设计和项目的快速运行

judy /

<font color="#FF8000">作者:Steve Leibson</font>

很多嵌入式设计使用基于微处理器和微控制器的单板计算机 (SBC) 和系统级模块 (SoM)(例如,请参阅“使用 Raspberry Pi 3 构建低成本工业控制器”)。但是,更多嵌入式应用无法忍受与软件相关的响应时间所带来的延迟。

这些应用需要只有定制硬件方可实现的额外性能,而开发定制硬件的最快捷方法就是使用 FPGA。

本文将讨论使用 SoM 来开发嵌入式系统的优势,这些系统需要借由 FPGA 提供更高的处理能力。本文还将介绍各种不同的 FPGA SoM,并讨论它们在嵌入式设计开发中的使用。

<strong>FPGA 系统级模块的角色</strong>
系统级模块 (SoM) 可以帮助设计人员开发带有定制接口的特定外形尺寸的嵌入式系统,而无需从头开始开发内核处理系统。设计人员可将预先设计且经过测试的 SoM 插入到预先设计或定制的载卡中,以创建嵌入式设计,其功能与完全定制的设计相同,但硬件开发所需的时间要少得多。

Zynq串口调试中遇到的问题

judy /

<font color="#FF8000">作者:圆宵,来源:FPGA那点事儿</font>

串口是很常用的通信端口,其速率比较慢,控制也比较简单,一般来说,使用时不会出现太大的问题。但笔者前一阵调试一块zynq的板子,用CPU通过串口和板卡上的一款芯片进行通信时,却也碰到了不大不小的麻烦。现在把解决问题的过程分享出来,虽然犯的都是很low的错误,但是也希望能对读者有一些借鉴。

整个系统中,涉及串口通信的部分大概是这样的:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/article/201808/13304-389…; alt=""></center>

Zynq中纯PL编程

judy /

没接触zynq之前,只用过FPGA,在FPGA中用verilog编程简单明了,后来稍微学习过一点nios ii,就在FPGA中也用过一点点nios ii。所以在刚接触zynq的时候,我就感觉zynq跟altera的FPGA和nios ii的编程肯定会有一些相似的地方。学习zynq的时候,一开始我就想弄清楚三个问题,第一zynq中怎么使用纯PL(programmable logic)部分?(就是把zynq当做普通FPGA用)第二zynq中怎么使用纯PS(process system)部分?(就是把zynq当做一个纯arm使用)第三自然而然就是zynq的PS和PL部分怎么协调工作,谁是主谁是从?

刚接触的时候好多教程都是教你怎么用PS部分,我捉摸了一段时间弄清楚了怎么使用纯PL部分了。希望大家在初学的时候能把PS和PL部分的关系弄清楚,对学习也会更有帮助的~

使用纯PL部分的时候,就把zynq当做一个FPGA使用,使用FPGA的时候,有一个引脚是时钟输入引脚,这个特别重要,这个是源头,一般在FPGA中用verilog编程会使用同步操作,也就是在一个主时钟信号下编程。

Vivado及Zynq使用经验

judy /

1.添加debug核的合理方法是在源代码中添加(*mark_debug="true"*),综合后,打开综合结果,set debug内这些标记的信号全部在网标内,不会被优化掉。如果不在代码里加这些标记,直接在综合结果里添加net,很多感兴趣的信号会被优化掉,且残缺不全。

2.若果debug核使用的时钟是zynq ps端输出的时钟,那么烧录完bit文件后,是不会自动弹出debug界面的,需要在软件工程里,debug软件工程,让cpu跑起来,产生时钟信号,再回vivado内refresh device,即可弹出debug界面。

3.自定义IP内代码被改动后,Block Design内会提醒刷新IP路径,然后在窗口下方勾选改动的IP,点击UPDATE IP按钮,即可更新IP核。

4.重新生成bit文件后,建议关闭eclipse软件工程,vivado内file-> export hardware,重新输出.hdf等硬件信息文件,然后重新打开eclipse软件工程,eclipse会自动更新硬件信息,并重新编译整个工程。