嵌入式开发

介绍与赛灵思FPGA开发有关的嵌入式实时软件、操作系统、中间件、开发平台、工具以及开源资料等。

Vivado FIR IP使用方法

在matlab中使用fdatool设计自己想要的数字滤波器,然后保存文件为.coe文件。

在vivado中调用FIR IP核,在Select Source处,选择COE File。

在Filter Type中可以选择插值,抽取等选项。

Number of Channels 和Number of Paths 分别设置通道数为3和路径数为2(通道之间是时分多路复用,相当于一个帧有3个时隙;路径数相当于并行数据,相当于有两路信号)。Input Sampling Frequency 设置的是单个通道的频率。Clock Frequency 设置的是工作的时钟频率。3个通道对应的信号的输入的频率=3.84*3=11.52MHz。输入一个数据需要的时钟数184.32/11.52=16 。插值倍数为2 ,则输出的频率=11.52*2=23.04MHz 输出一个数据需要的时钟数184.32/23.04=8

Vivado 2017.1模块连接

作者: East FPGA那点事儿

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

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

基于Vivado调用ROM IP core设计DDS

DDS直接数字式频率合成器(Direct Digital Synthesizer)

下面是使用MATLAB生成正弦波、三角波、方波的代码,直接使用即可。
t=0:2*pi/2^12:2*pi
y=0.5*sin(t)+0.5;
r=ceil(y*(2^8-1)); %将小数转换为整数,ceil是向上取整。
fid = fopen('sin.coe','w'); %写到sin.coe文件,用来初始化sin_rom
fprintf(fid,'MEMORY_INITIALIZATION_RADIX=10;\n');
fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n');
for i = 1:1:2^12
fprintf(fid,'%d',r(i));
if i==2^12
fprintf(fid,';');
else
fprintf(fid,',');
end
if i%15==0
fprintf(fid,'\n');
end
end
fclose(fid);
t=1:1:2^12;
y=(t<=2047);
r=ceil(y*(2^8-1));
fid = fopen('square.coe','w'); %写到square.coe,用来初始化rom_square

Vivado中各个文件的含义

在Xilinx ISE中不同的操作都有不同的文件类型对应,例如综合、布局、布线、生成比特流等都会产生特定格式的文件,在vivado中也是一样,只不过在vivado中,文件的格式相比于ISE中更加同一。

1,.dcp文件,在ise中每个过程都会产生特定格式的文件,例如.ncd, .pcf, .ngd等等,但是在vivado中,不论是综合还是布局布线都只会产生一种格式的文件,即.dcp文件,每个阶段的.dcp文件都是下一阶段的输入文件,.dcp文件实际上包含了对应阶段处理的信息,用vivado可以直接打开,File->Open Checkpoint.

.dcp文件主要包括Physical Constraints, Device Constraints, Netlists以及device的信息,如下图所示:

从这可以看出其实.dcp文件就是ise中的网表文件和约束文件的集合,只不过在vivado中被集合在了一个文件里。

视频:Vivado Design Suite 2017.1 的全新功能

此视频重点演示了全新 Vivado Design Suite 2017.1版本的增强功能,包括操作系统和设备支持、新外观、以及部分重配置广泛可用性等。

Vivado中新建工程或把IP搭建成原理图

上一节说了怎么建自己的IP,下面把自己的设计方案用IP的方式搭建成原理图。

1、新建project

2、选择芯片型号xc7z020clg400-1

3、既然vivado是按照IP原理图来设计的,首先是要添加block

4、直接从IP Catalog中选择想要的IP模块

Vivado中将verilog代码封装成IP

Xilinx的Vivado采用原理图的设计方式,比较直观适合大型项目,我们自己的code都需要封装成user IP。

这里主要介绍怎么把多个关联管脚合并成类似bus的大端口

第一大部分 选择source文件

先新建一个project,把要package的v文件加进去,一般都会先做功能仿真

Tools->Create and Package IP,我个人喜欢用第一项current project;

第二项block design用来封装多层嵌套的大IP;

第三项是封装指定文件夹下的source文件,也非常好用;

第四项是新建一个AXI4接口的IP,比如说我要自己写AXI-HP的接口就用这个;

建个文件夹Verilog_IP,存自己的IP,每个IP再建个子文件夹

视频:Vivado Design Suite 2017.1 新版面与体验

该视频介绍了 Vivado Design Suite 2017.1 中的新版面与体验。视频还讨论了变革的动机,带您熟悉一些亮点信息,并演示了几个功能。

HLS视频教程16:FOR循环优化 — 循环合并

在之前的课程我们介绍了了解 HLS 的入门,以及通过实例讲解了 HLS 的工作原理和对不同数据类型的介绍和处理 ... ... 上节课我们介绍了 "FOR" 循环优化的一些基本性能指标。本节视频,我们将继续介绍 Vivado HLS 所支持的 “for循环” 的优化方法。在默认情况下,Vivado HLS 并不会对顺序执行的 for 循环优化为并行执行,LOOP_MERGE 约束提供了这样一种可能:for 循环并行执行。本讲结合案例介绍了循环合并的三个主要规则。

HLS视频教程15:for 循环优化 — 基本性能指标

上节课我们介绍了接口综合的一些基本概念以及对“数组”的处理方式以及其他案例等。本节视频开始,我们将给大家介绍 Vivado HLS 所支持的 “for循环” 的优化方法。本讲着重介绍一些基本概念如 latency, Initial Interval 等,同时介绍了常用的优化方法:流水设计。

同步内容