跳转到主要内容

博客

Verilog中generate语句的用法

Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和条件语句中使用,为此,Verilog-2001增加了四个关键字generate,endgenerate, genvar, localparam。

ZYNQ7000 芯片Linux下的SPI接口与驱动配置

本文将介绍如何利用Vivado和petalinux开发Zynq7000系列芯片的SPI外设接口。开发环境:Vivado 2015.4、Petalinux 2015.4

xilinx 7系列FPGA之slice篇简介

Xilinx的官方文档在介绍FPGA的逻辑资源时通常是按照CLB(Configurable Logic Block)来介绍,把CLB作为FPGA里的最小逻辑单元。但是CLB是由2个slice构成,因此平时大家都把slice挂嘴边,称为最小的逻辑单元,很少提起CLB。因此本篇咱们就简要聊一聊slice的功能。对于大部分应用,咱们不必深入了解slice,写好代码后FPGA的开发软件会自动帮助咱们布局布线,所以本篇以了解为主,当然如果您是高级用户,是大佬级FPGA专家,就另当别论。

7系列FPGA的slice包含4个部分:

(1)逻辑功能产生器,也就是咱们常说的查找表,1个slice里包含4个6输入的查找表。

(2)存储单元,也就是常说的触发器,1个slice里包含8个触发器。每4个触发器为一组,可配置成D触发器或锁存器。

zynq开发软件操作整体流程

网上关于vivado开发zynq的资料很多,总结以下操作流程,以SD模式为例。

zcu102(9)hello_petalinux

由于本人习惯在Windows环境下做FPGA开发,因此将PetaLinux安装在Linux虚拟机中,开发环境如下:Windows 10;Vivado 2018.2.1;VMware Workstation 14 Pro;Ubuntu 16.04.5 desktop amd64;Petalinux 2018.2。

学会Zynq(27)UART中断驱动模式示例

Zynq中的UART支持轮询和中断驱动两种模式。本文给出使用中断驱动模式的例子,完成与26篇中轮询模式下相同的功能,即UART收到8字节数据后执行某项操作。对比之下,体会中断驱动模式的特点。

xilinx 7系列FPGA时钟篇(4)_CMT简介

上篇仅仅简要的介绍了时钟的用法,并未详细的说明,主要是因为很多时钟用法是针对特定的应用需求,无法一一介绍。本篇将重提上篇的CMT时钟模块,聊一聊它的用法。可以这么说,每个靠谱的FPGA应用里都应该用到CMT模块。

Vivado里程序固化详细教程

将FPGA的配置文件(固化用的配置文件是二进制文件,仅bin文件)烧写到板载Flash中,实现上电自启动,完成程序固化。

xilinx 7系列FPGA时钟篇(3)_时钟操作法则

上一篇咱们介绍了7系列FPGA的时钟区域内部结构,本篇咱们接着介绍如何实际操作时钟。不说其它的,直接先上两张图。

zynq的启动方式学习

Zynq-7000AP SOC器件有效利用了片上CPU来帮忙配置。在没有外部JTAG的情况下,处理系统(PS)与可编程逻辑(PL)都必须依靠PS来完成芯片的初始化配置。ZYNQ的两种启动模式:从BootROM主动启动,从JTAG被动启动。

学会Zynq(26)UART轮询(poll)模式示例

Zynq中的UART支持轮询和中断驱动两种模式。本文给出两个使用轮询模式的例子,在24篇程序框架的基础上进行改动(贴出主要改动代码,改动很小的地方,如函数接口变化导致函数声明也要改,相信你可以根据我的代码和设计目的自己完成),最后再讨论一下轮询模式的特点。

Xilinx FPGA常见配置模式总结

Spartan6系列FPGA常见的配置模式有5种,由模式输入管脚M1、M0决定。该5种模式可分为3大类,1. JTAG模式(可归为从模式);2. 主模式;3. 从模式。

xilinx 7系列FPGA时钟篇(2)_时钟区域简介

上一篇咱们介绍了7系列FPGA的整体时钟架构,知道了FPGA是由很多个时钟区域组成,时钟区域之间可以通过Clock Backbone 和CMT Backbone来统一工作。本篇咱们就说一下时钟区域的内部结构。

学会Zynq(25)UART的基本使用方法

上文对Zynq中的UART控制器做了简单介绍。从本文开始将以实例的方式详细讲述UART的各种使用方法。本文是UART最基础的使用方法,每秒发送一个“hello world”,实现的功能与printf或xil_printf相同。但后面介绍UART更复杂特性的文章,都是在本文设计的基础上进行改动。

<strong>SDK程序设计</strong>

Vivado中配置Zynq时启用开发板提供的UART接口。SDK中user_uart.h文件代码如下:

<pre>
#ifndef SRC_USER_UART_H_
#define SRC_USER_UART_H_

zcu102(8)AXI_STREAM实现AXI_DMA

AXI_STREAM的时序:AXI_STREAM接口一般用于大规模持续的无地址映射关系的流数据传输......

单口RAM、双口RAM、FIFO三者的关系

单口与双口的区别在于,单口只有一组数据线与地址线,因此读写不能同时进行;而双口有两组数据线与地址线,读写可同时进行;FIFO读写可同时进行,可以看作是双口;

重温FPGA设计流程七:(纯Verilog实现数字频率计)

软件:Vivado2017.4 板卡:Ego1 型号:xc7a35tcsg324-1

重温FPGA设计流程六:(纯Verilog实现数字钟)

软件:Vivado2017.4 板卡:Ego1 型号:xc7a35tcsg324-1

重温FPGA设计流程五:(调用DDS IP核产生正弦波)

创建工程,DDS_test。在IP Catalog中搜索DDS,选择其中一个DDS Compiler,双击打开。

学会Zynq(24)UART控制器简介

本文简单介绍Zynq中的UART控制器,重点放在编程所需了解的知识。很多功能使用库函数可以快速配置,因此没必要仔细了解每个寄存器是干什么的这种问题,应把精力放在UART的特性、工作原理和可实现功能方面。