跳转到主要内容

技术

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式、参数等对来对其算法模块性能进行全面的评估。最重要的是无需重新综合硬件模块。

Vivado时序分析练习

时序分析在FPGA设计中是分析工程很重要的手段,时序分析的原理和相关的公式小编在这里不再介绍,这篇文章是小编在练习Vivado软件时序分析的笔记,小编这里使用的是18.1版本的Vivado。

这次的练习选择的是ZYNQ的芯片,原本工程是工作在100MHz的时钟,但是作为练习,我们可以把时钟调到一个极限的程度来进行优化。

首先,打开一个工程,更改一下时钟频率,使得工程能够有一些时序问题,我们再通过时序分析的方法对它进行优化。我们这里把原本的100M时钟改成了200M时钟,具体步骤如下:

MPSOC之9——host、embeded间tftp、nfs、ftp环境搭建

tftp
可传输单个文件,不能传文件夹
需要通过命令传输文件,略显复杂
==一般调试kernel时,用uboot通过tftp方式启动,不用每次都烧写存储介质==

nfs
在host linux(ubuntu)上的nfs文件夹中存放文件
开发板上mount ubuntu的文件夹,mount后就像自己的文件一样
这种方式共享文件很方便
也有linux启动后,拿nfs作为根文件系统,方便调试根文件系统的内容

ftp
没有host linux环境时,可以把windows当成ftp client,开发板ftp server
方便拖动文件

Vivado(2017.1)中 BRAM IP核的配置与使用(1)

  Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP核,比如数学类的IP核,数字信号处理使用的IP核,以及存储类的IP核,本篇文章主要介绍BRAM  IP核的使用。

    BRAM是FPGA定制的RAM资源,有着较大的存储空间,且在日常的工程中使用较为频繁。BRAM以阵列的方式排布于FPGA的内部,是FPGA实现各种存储功能的主要部分,是真正的双读/写端口的同步的RAM。

    本片文章是基于Vivado的 2017.1的版本,其他版本都大同小异。

Vivado使用技巧(21)——仿真中的Debug特性

<strong>源代码级别调试</strong>
Vivado Simulator提供了在仿真过程中debug设计的特性,通过为源代码添加一些可控制的执行条件来检查出问题的地方。总的来说有三种调试方法:

Xilinx基于PCIE的部分重配置实现(一)

本博文主要是对基于PCIE(mcap)的部分可重构实现的步骤做一个简单的演示,如有错误之处,欢迎批评指正。值得说明的是,基于PCIE的部分可重构需在ultrascale系列及ultrascale+芯片才能实现,具体哪些系列能实现哪种配置方式如下图所示:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/blog/201810/13754-39975-…; alt=""></center>

MPSOC之8——启动及错误处理

有了BOOT.BIN(fsbl+pmu+atl+uboot)、uImage、uramdisk.image.gz,dtb文件,就可以启动了。把上述文件统统拷贝到SD卡,并设置开发板为SD卡启动。

0. U-BOOT启动参数
设置启动参数,然后启动
fatload mmc 0 0x1000000 uImage;fatload mmc 0 0x2000000 uramdisk.image.gz;fatload mmc 0 0x4000000 zynqmp-sf-zcu102.dtb;
setenv bootargs root=/dev/ram0
bootm 0x1000000 0x2000000 0x4000000

将上述参数固化到flash里,免得每次都要输入

学会System Generator(22)——图像采集与输出(数据流方法)

本文是该系列的第22篇。上一篇介绍了使用Image From File和Video Viewer完成图像的采集和输出,并将两部分分别打包为子系统,使其具有通用性。本文将介绍如何使用Simulink提供的回调函数机制,实现从MATLAB工作空间采集和输出图像。

ZYNQ的Linux开发--使用SDK生成设备树

开发环境:
Windows下的Vivado套件
Linux ubuntu

Step1:首先从Xilinx GitHub上下载Device Tree Generator(设备树生成器)的BSP https://github.com/Xilinx/device-tree-xlnx/pulls 并将其复制到SDK的安装目录下

PYNQ 和 ZYNQ 对比

PYNQ = Python + ZYNQ —— ZYNQ部分功能的Python化

<strong>PYNQ</strong>

优点:

1、 Python用于ZYNQ开发,Python库和FPGA硬件库可以直接调用,极大加快开发进程、缩短开发周期、降低开发难度,更方便、快捷;

2、 用PYNQ开发,当Python有更加有效的可用库时(如图像处理—OpenCV),其性能要比C/C++开发更强。

缺点:

目前,PYNQ还不支持任何高级的综合,也无法将Python应用直接移植到FPGA中,仅能调用已有库。

<strong>ZYNQ</strong>

优点:

一文教你搞定FPGA有符号数、无符号数难题

在设计中,所有的算数运算符都是按照无符号数进行的。如果要完成有符号数计算,对于加、减操作通过补码处理即可用无符号加法完成。对于乘法操作,无符号数直接采用“*”运算符,有符号数运算可通过定义输出为 signed 来处理。

通过“*”运算符完成有符号数的乘法运算。
module ceshi (out, clk, a, b);
output [15:0] out;
input clk;

//通过 signed 关键字定义输入端口的数据类型为有符号数
input signed [7:0] a;
input signed [7:0] b;

Vivado使用技巧(20)——Waveform功能详解

<strong> 使用波形配置文件</strong>

Zynq 的64位全局定时器

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

Zynq 有一个64位全局定时器,我觉得有点实用价值,比如精确的实时计算,代码运行时间计算。

怎么用呢?我就google 了一下,有篇文章推荐查看2个文件。这2个文件名分别是 sleep.c, xtime_l.c。

这2个文件是Vivado 安装的时候就安装好了的样例程序,我的是在这个目录下:
C:\Xilinx\SDK\2015.4\data\embeddedsw\lib\bsp\standalone_v5_3\src\cortexa9

查看这2个文件,就可以清楚其用法了。

MPSOC之7——开发流程uramdisk

用petalinux的预编译目录里有rootfs文件,选择rootfs.tar.gz作为初始输入。

1.原始文件——>uramdisk
1.1 解压原始rootfs.tar.gz,得到若干文件
1.2 !!!制作空ramdisk.image

命令:
dd if=/dev/zero of=ramdisk.image bs=1024 count=131072
mke2fs -F ramdisk.image -L "ramdisk" -b 1024 -m 0
tune2fs ramdisk.image -i 0
chmod a+rwx ramdisk.image

执行过程:

用FPGA对ASIC进行原型验证的过程

鉴于芯片设计的复杂度提升, 成功设计一个芯片所牵扯的步骤与过程也愈加复杂,所需花费的资金也成倍增加,一个典型的芯片开发项目的周期和花销如下所示
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/article/201810/13736-398…; width="670"></center>

移位寄存器复位与不复位的区别

<font color="#FF8000">作者:胡建东,玩儿转FPGA</font>

实现一个4bit的移位寄存器如下,不带复位
module shift_reg(

input clk,

input rst,

input din,

output dout

);

reg [ 3:0] buff;

assign dout = buff[3];

HDMI协议解析

本文从软件工程师角度对HDMI spec进行解析,基于的spec版本为1.4,也是设备支持最多最成熟的版本,目前最新版本为2.0。

<strong>1 概述</strong>

HDMI(High-Definition Multiface Interface)是Hitachi, Panasonic, Philips, SiliconImage, Sony, Thomson, Toshiba几家公司共同发布的一款音视频传输协议,主要用于DVD, 机顶盒等音视频source到TV,显示器等sink设备的传输。传输基于的是TMDS(Transition Minimized Differential Signaling)协议。此外,使用TMDS也是DVI标准的主要特点 。

学会System Generator(21)——图像采集与输出(文件方法)

本文是该系列的第21篇。前几篇介绍的音频信号处理本质上属于一维信号,直接采样与输出即可。但图像属于二维信号,如果想在Simulink中采集和输出图像,进行图像处理算法的仿真时会遇到一些问题。本文将介绍如何搭建图像的采集与输出模型。

<strong>采集图像需要解决的问题</strong>

Computer Vision System Toolbox中包含两个模块:Image From File可以读取图片格式的文件;Video Viewer可以输入图像并显示(类似于Scope观察信号波形一样)。

Python开发的十个Tips,你知道几个?

<font color="#FF8000">译 | 王坚 整理 | AI时间</font>

下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。

注意:假设我们都用的是Python 3

1. 列表推导式

你有一个list:bag = [1, 2, 3, 4, 5]

现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, 8, 10]

大多初学者,根据之前语言的经验会大概这样来做

bag = [1, 2, 3, 4, 5]
for i in range(len(bag)):
bag[i] = bag[i] * 2