xooo 的blog

petaLinux常用命令汇总

1
Create a new project from a reference BSP file.
$ petalinux-create -t project -s
用于从官方下载的BSP中抽取数据产生工程。

2
Create a new project based on the MicroBlaze™ template.
$ petalinux-create -t project -n –template microblaze
用于让petalinux工具包,从系统中抽取模板,产生工程。

3
Initialize a PetaLinux project within the project directory with an external HDF.
$ petalinux-config –get-hw-description=
用于指定一个位于工程目录之外的包含HDF的文件夹用于搜索。

4
Initialize a PetaLinux project from within the directory containing an HDF.

AXI总线协议时序

由于ZYNQ架构和常用接口IP核经常出现 AXI协议,赛灵思的协议手册讲解时序比较分散。所以笔者收藏AXI协议的几种时序,方便编程。

1>AXI_LITE协议:

( 1) 读地址通道, 包含ARVALID, ARADDR, ARREADY信号;

( 2) 读数据通道, 包含RVALID, RDATA, RREADY, RRESP信号;

( 3) 写地址通道, 包含AWVALID, AWADDR, AWREADY信号;

( 4) 写数据通道, 包含WVALID, WDATA, WSTRB, WREADY信号;

( 5) 写应答通道, 包含BVALID, BRESP, BREADY信号;( 6) 系统通道, 包含: ACLK, ARESETN信号。

AXI4总线和AXI4-Lite总线的信号也有他的命名特点:读地址信号都是以AR开头( A: address; R: read)写地址信号都是以AW开头( A: address; W: write)读数据信号都是以R开头( R: read)写数据信号都是以W开头( W: write)

petalinux基本命令

1,df命令
-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息。

2、mount命令

Zynq boot mode MIO 配置

Zynq 可以配置从不同目标boot的启动方式,官方提供表格如下:

一般是拨码开关设计,关注从mode0~4,五个配置开关。
其中发现Xilinx的zedboard的原理图中对MIO2-6的net取名和上图不是对应的。也就是说原理的SPI-DQ0/MODE0对应MIO2,上图的MIO2对应的BOOT_MODE3,也就是说两个MODE序号没有对应的关系,不能混淆了, 还是以MIO为准。

几个常用的配置MIO[5:2]:
1、JTAG独立配置0001,比较少用;
2、JTAG级联配置0000,JTAG调试常用;
3、FLASH启动:Quad-SPI mode,1000;
4、SD card:1100.

本文来源于: https://blog.csdn.net/liuheda/article/details/52743414

CAPI-PSLSE 在linux环境下的编译

我也是刚刚使用CAPI ,这个是ibm 推出的一个加速框架,示例还没有完全的做完,先把做的东西记下来,等到完全完事的时候在详细整理。 我使用的是ubuntu 16.04 LTS 系统。

在Ubuntu上安装Xilinx Vivado 软件

我在安装的时候,使用的是在线安装,但是下载一部分的时候出现了错误,后来只是安装Vivado ,其他的选项没有选。也可以尝试一下下载全版本的安装包,不使用在线安装。至于在线版本的安装的方法我在之前的博客已经写了。我安装的版本是Vivado 2016.2

在Linux系统上对CAPI进行编译
首先在命令行下运行
git clone https://github.com/ibm-capi/pslse

这个命令是在github上下载pslse repo.
命令行下执行,bulid the afu driver

cd pslse/afu_driver/src/
export VPI_USER_H_DIR="/home/lemon/Downloads/Vivado/2016.2/data/xsim/include"
BIT32=y make

Xilinx 浮点数IP核的用法- 定点数转浮点数

首先调用IP核

标注1:选择定点数转浮点数

标注1:32位定点数

标注2:数字格式,符号位,整数位和小数位

标注1,2:转化为的浮点数可以是单精度也可以是双精度。

标注3:为转化后的数据格式。

仿真如下:

双口BRAM的使用

打算在zynq的逻辑侧缓冲1-page数据。直接调用IP,使用内部的block ram,配置成双口BRAM。ARM一侧通过AXI总线读写Port-A,逻辑侧代码读写Port-B。

调用IP:
M_AXI_GP0 <-> AXI_Interconnect <-> AXI_BRAM_Controller <->

Port_A <->Block_Memory_Generator <-> Port_B <-> User_Logic

Mode里面可以选择Stand Alone和BRAM Controller,差别在Alone的可以配置位宽,Controller两侧都是32bit位宽。我们在Port-B侧需要8bit的byte位宽,所以选择Alone。如果是32位宽2K深度,那么A端地址是11位的,B端是13位的。当然也可以勾选右上的Generate address interface with 32 bit,都配置成32bit的。

Xilinx FIR IP核的的使用及延时问题

前一段时间一直在研究通信系统,必然就会和各种滤波器打交道,同样也遇到了一些问题。比如说本文的主要内容,滤波器的延时问题。

在生成滤波器IP核之前需要产生抽头系数,这个抽头系数的阶数是自己设定的,阶数越高代表滤波器乘累加运算越多,但是阶数大小的选择要看是否满足自己的设计要求(例如衰减db是否满足要求)。同时,生成的滤波器抽头系数的值是与自己设计滤波器的各种参数确定的,如数据采样速率,通带截止频率、阻带起始频率(低通)、滤波器类型等。

这些抽头系数可以用MATLAB生成,MATLAB中有一个FDATool的工具,以图形化的方式供使用者产生所需的滤波器,然后将系数导出(以coe格式),这样我们在ISE中新建FIR IP核之后就可以直接导入刚刚产生的抽头系数表,非常方便。

下面直接开始用MATLAB生成抽头系数表:

1、利用 matlab 的 FDATool,产生需要的滤波器系数,打开【FDATool】

基于AXI总线的DDR仿真模型

在xilinx平台下,经常要进行基于AXI总线的IP开发。尤其是当要使用DDR时,仿真就存在很大的问题了。之前我们的解决办法是修改接口,然后连接到一个模拟DDR的寄存器组中。但这样做一方面频繁修改接口,相当麻烦;另一方面仿真行为与下板行为不完全一样,不方便找出bug。所以我就决定建立一个DDR AXI 仿真模型来用于AXI总线下的仿真。其思想和原来的方法一样,都是在testbench中建立一个寄存器组来模拟DDR。只不过不修改接口,而是直接用AXI总线的接口来进行行为模拟。

首先,我们先来了解下AXI总线的主要接口与行为:

AXI总线信号说明:


写数据信号图

Vivado约束文件报错

'set_property' expects at least one object

报XDC里面的set_property找不到正确的object,这个在vivado后续版本中都显示为警告,一般都是处于object的port名大小写问题。XDC和Verilog都对大小写敏感。建议RTL内部接口定义全部用小写。

错误: set_property PACKAGE_PIN "V7 " [get_ports "CN1_V7 "]

正确: set_property PACKAGE_PIN "V7 " [get_ports "CN1_v7 "]

同步内容