跳转到主要内容
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名

Vivado2015.2

ZYNQ+Vivado2015.2系列(十四)按键中断控制LED亮灭

judy 提交于

前面我们介绍了按键中断,其实我们稍作修改就可以用按键控制LED了。做个小实验,两个按键分别控制两个led亮灭。

板子:zc702。

硬件部分

添加zynq核:

勾选串口用于打印信息,勾选EMIO,我们控制两个led,所以需要2bit
<center><img src="http://xilinx.eetrend.com/files/2019-01/%E5%8D%9A%E5%AE%A2/100016889-56…; alt="" width="670"></center>

ZYNQ+Vivado2015.2系列(十三)私有定时器中断

judy 提交于

私有定时器属于PS部分,定时器可以帮我们计数、计时,有效的控制模块的时序。这一次实验我们认识定时器并使用定时器产生中断。

CPU的私有中断(PPI),5个:全局定时器, 私有看门狗定时器, 私有定时器以及来自 PL 的 FIQ/IRQ。
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/1_4.png&quot; alt=""></center>

它们的触发类型都是固定不变的, 并且来自 PL 的快速中断信号 FIQ 和中断信号 IRQ 反向, 然后送到中断控制器因此尽管在ICDICFR1 寄存器内反映的他们是低电平触发,但是 PS-PL 接口中为高电平触发。

ZYNQ+Vivado2015.2系列(十一)BRAM的使用——PS与PL交互数据,及其与DRAM(Distributed RAM)的区别

judy 提交于

Block RAM是PL部分的存储器阵列,为了与DRAM(分布式RAM)区分开,所以叫块RAM。ZYNQ的每一个BRAM 36KB,7020的BRAM有140个(4.9M),7030有265个(9.3M),7045有545个(19.2M)。每一个BRAM都有两个共享数据的独立端口,当然是可以配置的,可用于片内数据缓存、FIFO缓冲

ZYNQ+Vivado2015.2系列(十)MIO/EMIO再识,MIO的引脚“复用”,EMIO当作PS的接口连接PL

judy 提交于

前面我们介绍过EMIO,但是不详细。MIO是PS的IO接口,这个M代表的是Multiuse,也就是多用途,在下图中我们可以看到54个MIO连接这么多东西,必须得复用,所以当我们开发的时候需要的功能配置上,不需要的去掉,防止IO口被占用

ZYNQ+Vivado2015.2系列(九)基于AXI总线的等精度频率计(测量数字信号频率)

judy 提交于

上一节我们体验了一把PS和PL是怎样联合开发的,这种ARM和FPGA联合设计是ZYNQ的精华所在。这一节我们实现一个稍微复杂一点的功能——测量未知信号的频率,PS和PL通过AXI总线交互数据,实现我们希望的功能。

如何测量数字信号的频率

最简单的办法——在一段时间内计数

在我们设定的时间(Tpr) 内对被测信号的脉冲进行计数, 得Nx, Fx=Nx/Tpr。

Tpr 越大,测频精度越高。这种方法适合于高频信号,因为这里可能会有一个被测信号周期的误差,测量高频信号时误差小。

另一个变种——在一个周期内计数

在 被测信号一个周期内对基准时钟信号计数,得Nx, 基准时钟周期为T, 则Tx=T*Nx, Fx=1/Tx。
被测信号频率越低, 基准时钟频率越高,测量精度越高。因此这种方法适用于低频信号。

二者结合——多个周期同步计数

ZYNQ+Vivado2015.2系列(八)ARM+FPGA的优势,PS控制PL产生需要的PWM波(基于AXI总线)

judy /

上一节我们观察了AXI总线的信号,了解了基于AXI总线读写的时序,这一节我们继续探索基于AXI总线的设计,来看一看ZYNQ系列开发板的独特优势,PS可以控制PL产生定制化的行为,而不需要去动硬件代码。

这次实验是产生频率和占空比可调的PWM(Pulse Width Modulation)信号,调用8次,产生8路PWM波,并用这些信号去控制8路LED灯,观察实验效果。后面会做一个比较。

用的板子是zc702。

新建一个工程,命名为PWM_AXI_Lite

创建基于AXI总线的PWM波IP

IP设计为一个寄存器负责控制频率,一个寄存器负责控制占空比。

创建一个IP核,tools-->Create and Package ,这里需要16个寄存器,创建方法见系列(六)、系列(七),这里命名为PWM_AXI_Lite。

在IP核工程里,新建一个PWM模块文件,这里占空比设计的比较糙,直接就用一个计数值代替功能,后面的软件设计要注意:

ZYNQ+Vivado2015.2系列(七)软硬件联合Debug观察AXI总线读、写时各信号的时序

judy /

前面一节我们学会了创建基于AXI总线的IP,但是对于AXI协议各信号的时序还不太了解。这个实验就是通过SDK和Vivado联合调试观察AXI总线的信号。由于我们创建的接口是基于AXI_Lite协议的,所以我们实际观察到是AXI_Lite协议的信号时序。

具体做法是创建一个基于AXI总线的加法器模块,在Vivado里将AXI总线添加到debug信号里,实际上是用逻辑分析仪探测信号,在SDK端通过debug方式依次写入两个加数,由PL计算出和,我们读出这个和打印到串口,这样AXI总线的读和写就都能观察到了。

板子使用的是zc702。

在观察信号之前我们有必要简单了解AXI是个什么:

AXI总线是一种高性能、高带宽、低延迟的片内总线,AXI协议描述了主从设备数据传输的方式。主设备和从设备通过握手信号建立连接,握手信号包括主机发送的VALID信号,表示数据有效,从机发送的READY信号,表示从机准备好了接收数据。当VALID和READY都有效的时候传输开始。

Xilinx ZYNQ 7000+Vivado2015.2系列(六)创建一个基于AXI总线的GPIO IP并使用

judy /

FPGA+ARM是ZYNQ的特点,那么PL部分怎么和ARM通信呢,依靠的就是AXI总线。这个实验是创建一个基于AXI总线的GPIO IP,利用PL的资源来扩充GPIO资源。通过这个实验迅速入门开发基于总线的系统。

使用的板子是zc702。

AXI总线初识:

AXI (Advanced eXtensible Interface),由ARM公司提出的一种总线协议。总线是一组传输通道, 是各种逻辑器件构成的传输数据的通道, 一般由数据线、地址线、 控制线构成。 Xilinx从6系列的 FPGA 开始对 AXI 总线提供支持, 此时 AXI 已经发展到了 AXI4 这个版本, Vivado里都是基于AIX4的 IP。