赞
踩
目录
ZYNQ中包含了两个部分,双核的arm和FPGA。根据XILINX提供的手册,arm模块被称为PS,而FPGA模块被称为PL。PL 和 PS 两部分的供电电路是独立的,这样 PS 或 PL 部分不被使用的话就可以被断电。
ZYNQ内部包含PS和PL两部分,ZYNQ开发有一下四种方式:
A:纯PS开发
PS中包含2个ARM Cortex-9的内核,一些基本的外设扩展口以及Memory接口。PS中包含以下4个主要功能模块:
Application processor unit (APU)
Memory interfaces
I/O peripherals (IOP)
Interconnect
PS开发有两种方式:即传统的arm的方式和xilinx方法(这个是生成一个elf文件,这个elf文件包括了硬件配置信息(xmp)和裸跑程序(c文件))。
B:纯PL开发
PL即FPGA,这个和一般的xilinx的FPGA没有很大的区别。
C:PS+PL(不跑操作系统)开发
生成elf文件包括了硬件配置信息(xmp)和裸跑程序(c文件),还有一个.bit文件。
D:PS+PL(跑操作系统)开发
这个就需要BOOT.BIN,设备树,linux内核镜像,文件系统了。
其中BOOT.BIN是由3部分组成的(boot.elf, .bit, fsbl.elf),boot.elf这个是由交叉编译环境产生的,相当于ssbl,.bit文件是PL使用文件,fsbl.elf这个是fsbl。
ZYNQ 支持 JTAG 启动模式、NOR BOOT 模式、NAND FLASH 启动模式、QSPI 启动模式、SD 卡启动模式。 可以根据我们的硬件来选择对应的启动模式。(部分硬件不支持)
上电需要满足PS_POR_B应该一直保持低电平,并在PS_SRST_B引脚拉高2us后拉高,如上电时序图1.2-1所示。很多上电异常的情况应该排查电源的启动顺序是否满足要求。
1.2-1 上电时序图
打开vivado,选择create project创建工程。
在该窗口中输入工程名和需要保存的路径(英文路径),然后一直next。
在该窗口中选择使用的FPGA型号,根据开发板类型选择的是xc7z015clg485-2。
选择Create Block Design,输入设计名。
选择中间或者工具栏+,搜索ZYNQ,选择ZYNQ 7 Processing system添加IP,根据自己设计需求可以双击ZYNQ对其进行参数设计和更改;
应用程序处理器单元(APU)提供了广泛的高性能特性和符合标准的功能。
两个 ARM Cortex™-A9 处理器和ARM v7:
系统功能:
多种功能的内存接口。
DDR控制器
DDR控制器核心和事务调度程序
QSPI控制器
线性QSPI控制器(它可以作为一个主要的引导设备)的主要特点是:
此外,线性地址映射模式的特点包括:
静态存储器控制器(SMC)
以下任一个都可以是主引导设备:
I/O外围设备(IOP)是用于外部数据通信的行业标准接口的集合。
注意:控制器寄存器需要单个32位的读/写访问,不使用字节、半字或双字引用。
GPIO
千兆以太网控制器(两个)
USB控制器:每个作为主机、设备或OTG(两个)
SD/SDIO控制器(两个)
SPI控制器(两个):主或从
CAN控制器(两个)
UART控制器(两个)
I2C 控制器(两个)
PS MIO I/Os
PS MIO I/O缓冲器被分成两个电压域。在每个域内,每个MIO都是独立可编程的。
FPGA使用的是 Xilinx 公司的 Zynq70015 系列的芯片,型号xc7z015clg485-2。 芯片的 PS 系统集成了两个 ARM Cortex™-A9 处理器,AMBA®互连,内部存储器,外部存 储器接口和外设。这些外设主要包括 USB 总线接口,以太网接口(ENET),SDI/SDO 接口,I2C 总线接口,CAN 总线接口,UART 接口,GPIO 等。PS 可以独立运行并在上电或复位下启动。 ZYNQ 芯片的总体框图如图所示。
PS块的接口与相关外设
1、PS部分的MIO是固定的,但可以选择连接到其上的不同外设,这就类似于典型MCU的“GPIO复用”;
2、PS模块具有2个连接到引脚的MIO bank和2个连接到PL端的EMIO bank;
3、PS端可以通过PS-PL端时钟生成器、AXI主从端口、DMA等端口连接PL端 。
Input frequency 的时钟,根据输入设置,本次设置是33.333333M(默认设置)。
DDR时钟设置默认即可。
CPU运行时钟设置默认,不同速度等级的CPU所支持的ARM最高频率也不一样,根据需求决定。
QSPI的时钟设置125M,MIO中选择了QSPI后即可更改时钟,设置其他时钟频率可能无法加载FLASH。
对DDR进行设置,根据硬件DDR3所使用的类型、时钟、位宽、突发长度等进行相关设置。
DDR Controller Configuration(DDR相关控制配置):
Memory type(DDR类型):可选用DDR2或者DDR3,根据硬件设计选择DDR3;
Memory Part(DDR型号):根据硬件设计选择型号MT41K256M16RE-125;
Effective DRAM Bus Width(数据总线位宽):可选位宽16 bit 和32bit,根据硬件设计(使用两片DDR)选择总线位宽32 bit;
ECC:错误纠正码,只支持16位的有效数据宽度;
Burst Length:突发长度,可选4个或者8个,默认选择8个;
DDR:内存时钟频率。允许的频率范围是(200.000000:534.000000)MHz。
Internal Vref:内部电压参考源。禁止使用外部Vref引脚作为电压参考。
Juntion Temperature(C):预期工作温度范围。控制DDR刷新间隔。
Memory Part Configuration(内存部分配置):这部分不可选择,默认即可。
Training/Board Details:
DRAM Training:
Write leveling:启用写电平校准,调整相对于DDR时钟的写DQS。
Read gate:使能读取门校准,调整有效的RD DQS窗口。
Read data eye:启用读取数据眼校准,将读取DQ调整到读取DQ的中心。
DQS to Clock Delay(ns):DQS时钟延迟[0](ns)。时钟路径延迟减去DQS路径延迟。
Board Delay(ns):字节通道0的中间数据(DDR_DQ, DDR_DM)跟踪延迟与时钟(DDR_CK, DR_CK_N)跟踪延迟的平均值。
可以通过Peripheral I/O Pins或MIO Configuration(如下图)中可以查看和配置I/O管脚。Zynq-7000器件的PS部分有超过20种可选的外设,设计者可以将这些外设直接与专用的复用I/O相连,通常称为MIO;也可以使用扩展的复用I/O,通常称为EMIO。
通过设置 Quad SPI Flash和SD0/1来选择启动模式。
加入一个串口设置。
加入一个以太网设置。
在配置完成后可以返回设计看看选用的配置是否都满足需求了,满足需求后点击右下角OK即完成配置。
由于没用到其他PL端的IP可直接自动连线,也可以手动连线(熟练后建议手动)。
连接完成后可以将一些需要用到的外设接口引出去,完成后进行验证(圈红处),验证完成后就可以将图形化设计进行打包输出。
接口说明:
M_AXI_GP0_ACLK:M_AXI_GP0的时钟信号,可以将PS端的时钟提供给PL端使用
DDR:内存控制器输入/输出总线端口
FIXED_IO:PS连接外部IO的端口
M_AXI_GP0:PS与PL进行片上通信的AXI总线端口
FCLK_CLK0:PS部分的FCLK时钟端口
FCLK_RESET0_N:PS提供给PL的FPGA硬件复位端口
先将设计打包输出,然后在生成产生顶层的HDL文件,通过查看源码的层次结构和顶层文件可以看到调用了CPU。
可以添加代码来实现led灯的控制;
- begin
- if(!RSTn_i)
- begin
- C0 <= 32'd0;
- LED_o <= 4'b1;
- end
- else
- begin
- if(C0 == 32'd50_000_000)
- begin
- C0 <= 32'd0;
- if(LED_o == 4'b1000)
- LED_o <= 4'b1;
- else
- LED_o <= LED_o << 1;
- end
- else
- begin
- C0 <= C0 + 32'd1;
- LED_o <= LED_o;
- end
- end
- end
关于ZYNQ在VIVADO中的基本设置已完成,关于SDK详细的设计与下载流程可在下篇文章中进行阅读和了解,欢迎大家交流与指教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。