ZYNQ ZCU102 SPI 自测

一、MIO、EMIO 、 AXI_GPIO三种 GPIO的区别

1.MIO 是 PS 专用的多路复用 IO,用于驱动 PS 的外设;
2.EMIO 是扩展的 MIO,因为 MIO 数量有限,可以使用部分 PL 的 IO 来扩展,当作 MIO 使用;
3. AXI_GPIO 是 PL 的 IO 通过 AXI 总线与 PS 进行交互,不具有 MIO 的功能。

二、SPI 接口实现方法

(选用1中的(2)方法)
1.使用PS端的SPI控制器(PS端有两个SPI控制器)
(1)可以使用PS侧的MIO实现SPI接口
(2)可以使用FPGA侧的EMIO实现SPI接口(但是在使用EMIO时发现SPI接口并不是我们通常理解的仅包括spi_clk ,spi_mosi,spi_miso,ss0/ss1/ss2(支持三个片选)这6根信号线,而是有14(或12)根信号线,如何使用和连线是个重要的问题)
在这里插入图片描述
2.在PL端使用配置成标准SPI通信的AXI Quad SPI (QSPI) IP模块
配置复杂

三、PL部分配置

在这里插入图片描述
1.新建Block Design,添加zynq Ultrascale+ MpSoc Processing System
2.添加SPI_0接口,本次只用到SPI_0。将SPI_0的四个管脚引出,其中MISO为Input,其余三个为Output。
注意 : 在SPI自测实验中,上面有一处错误,即不应该用spi0_s_i,应该用spi0_m_i!!!
3.Creat HDL Wrapper生成.v文件,然后进行综合
4.分配管脚
参考开发板的Schematic,找到适合的管脚编号:
在这里插入图片描述
在这里插入图片描述
5.点击Generate Bitstream,完成后导出hdf文件,然后Launch SDK
注:

  • 错误1:在这里插入图片描述
    如果没有使用DDR,但是配置的时候依旧使能,那一旦配置出错,就会报错。因此如果不用DDR,那再配置的时候就不要使能。
    在这里插入图片描述
  • 错误2:
    在这里插入图片描述
    在进行管脚分配时,哪怕不使用片选信号,SPI_0_ 0_ss1_o和SPI_0_ 0_ss2_o和必须分配管脚,否则Synthesis和Implement都可以通过,但生成比特流时,会出现配置错误

四、PS部分配置

1.进入SDK后,新建工程
2.加入代码:

int main(void) {
	int Status;
	int i,j;
	int value;
	xil_printf("SPI Selftest Example \r\n");
	Status = spi0_init();
	if (Status != XST_SUCCESS) {
		xil_printf("SPI Selftest Example Failed\r\n");
		return XST_FAILURE;
	}


	for (i = 0; i < 6; i++)
	{
		SpiWrite(WriteBuffer,10);
		SpiRead(10);
		//xil_printf("read back \n");
		for (j = 0; j < 10; j++ )
		{
			xil_printf("%d,",ReadBuffer[j]);
		}
		xil_printf("\n");
		memset(ReadBuffer, 0x00, 1024);
		sleep(1);
	}
	xil_printf("Successfully ran SPI Selftest Example\r\n");
	return XST_SUCCESS;
}

在xilinx SDK中查询API函数的方法:
(1)将vivado设计好的硬件设计导入到SDK中,就可以把SDK代码编辑区的变迁也让切换到system.mss页面。
在这里插入图片描述
(2)所有的外设都已被列出来,单击每类外设后面的"Documentation"超链接即可打开其相应的API函数说明页面。以及个人外设可以导入例程供你参考。
在这里插入图片描述
(3)弹出库浏览页面:
“overview”页面讲解的是这个外设的简单介绍;
"data Structures"页面列出了软件驱动所涉及的数据结构;
"File list"页面显示了所有相关的头文件和源文件的超链接,可点击查看其版本信息和主要函数。
在这里插入图片描述
进入"file list"页面,即可列出某个外设的所有函数。单击某个函数后面的头文件超链接即可进入到详细说明页,会给出函数的功能、输入参数以及返回参数的含义。

3.上板测试:回环连接,开发板上电
4.通过SDK自带串口,与开发板进行连接,这里用COM5
5.点击Program FPGA,将bit文件下载到板卡
6.Run As—>Launch On Hardware
在这里插入图片描述

五、参考链接(用了Zynq-7000 SoC)

链接名称: ZYNQ学习之SPI的使用

xilinx PYNQ PS与PL的接口说明
1.ZYNQ7 Processing System 的 Block Design:
在这里插入图片描述
(1)FCLK_CLK0是 PS 输出的时钟信号,它将作为 PL 中外设模块的时钟源。这个时钟由 PS 中的 IO PLL产生,频率范围可以从 0.1 到 250MHz,在配置 ZYNQ7 PS 的时候,该时钟默认为 50MHz。
(2)M_AXI_GP0是通用(General Purpose)AXI接口,它包含了一组信号。首字母 M 表示 PS 作为主机(Master),PL 中的外设作为从机(Slave).而左侧的M_AXI_GP0_ACLK 是这个接口的全局时钟信号,它是一个输入信号,
M_AXI_GP0 接口的所有信号都是在这个全局时钟的上升沿采样的。
(3)FCLK_RESET0_N 是由 PS 输出到 PL 的全局复位信号,低电平有效。
2.ZYNQ UltraScale+ Mpoc 的 Block Design:
在这里插入图片描述
ZYNQ 的 HPM0_LPD 接口,此接口用于访问PL端数据,大部分应用中是为了配置PL端模块的寄存器。
对比:

ZYNQ7 PSZYNQ UltraScale+ Mpoc PS
M_AXI_GP0_ACLKM_AXI_HPM0_LPD ? M_AXI_HPM{0,1}_FPD
FCLK_CLK0pl_clk0
FCLK_RESET0_Npl_resern0

在这里插入图片描述
在这里插入图片描述

六、附

1.SPI控制器的模块框图
在这里插入图片描述
RX和TX FIFO的深度各为128字节,软件可以读取和写入这些FIFO。

Zynq AXI Quad SPI(Quad Serial Peripheral Interface)是一种基于Xilinx Zynq SoC(System on Chip)的高速并行存储设备接口。它提供了一种高性能、低延迟的数据访问方式,适合应用于需要高带宽读写操作的应用场景,如大规模数据处理、实时信号处理等。 ### 工作原理 AXI Quad SPI接口可以同时支持四个SPI(Serial Peripheral Interface)设备,并允许每个设备在连续的时间周期内独立接收和发送数据。这种设计使得系统能够同时管理多个外设之间的通信,提高了系统的整体效率和吞吐量。 ### 特点及优势 1. **高带宽**:相较于传统的单通道SPI接口,四通道的设计显著增加了数据传输速率,适用于对数据交换速度有极高要求的应用。 2. **灵活配置**:Zynq SoC的AXI Quad SPI通常支持多种工作模式和数据宽度选项,用户可以根据实际需求进行配置,实现最佳性能和资源利用。 3. **集成度高**:作为Zynq SoC的一部分,AXI Quad SPI与其他处理器核心和硬件模块共享丰富的内存和IO资源,减少了外部连接的需求,降低了系统复杂性和成本。 4. **软件友好**:通过AXI总线协议与SoC内部其他组件通信,AXI Quad SPI接口的驱动程序和软件栈相对成熟,易于集成到现有的系统架构中。 ### 应用领域 Zynq AXI Quad SPI广泛应用于各类工业自动化、通讯网络、数据中心以及高性能计算等领域,特别是那些需要处理大量数据流、快速响应时间或具备高度并行处理能力的应用。 ### 相关问题: 1. **如何选择合适的Zynq AXI Quad SPI设备?** - 考虑所需的最大数据速率、兼容的电源电压范围、封装形式以及是否有特定的错误检测和校正功能。 2. **Zynq SoC上AXI Quad SPI接口的具体配置步骤是什么?** - 包括确定工作模式(如全双工、半双工)、设定数据宽度、配置片选和命令寄存器等关键参数。 3. **AXI Quad SPI如何与其他Zynq SoC内部资源协同工作提高系统效能?** - 详细解释资源分配策略、优化内存访问路径以及减少系统级延迟能力的关键技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠~~~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值