前言
射频模块完成之后,就是基带处理板的工作了,最初提到我买了一块微相科技的Z7-lite开发板,ZYNQ7020处理器。我用它实现了MAX2769功能的验证,但是当我用它跑软件的时候,发现PL部分根本无法工作,连自带的hello world都跑不起来,无奈只能放弃。于是我又在在某鱼上看到了绿宝石XAVIER核心板拆机件,只需要一两百块,可以说性价比极高,赠送了引脚说明和底板的参考设计资料。于是我把MAX2769也做到了底板上,这样就构成了一个双层结构的接收机。
ZYNQ7020简介
ZYNQ7020 核心板主控芯片采用 Xilinx 公司的 ZYNQ7000 系列的 XC7Z020 ,具体型号为
XC7Z020CLG400-2 。 ZYNQ 分为 PS ( Processing System )和 PL ( Programmable Logic )两部分。 PL 部分拥有 85K 个逻辑单元、 4.9Mbits 的嵌入式存储资源、 220 个 DSP 单元、
4 个时钟管理单元( CMT )、 16 个全局时钟网络、 6 个用户 I/O BANK 和最大 253 个用户 I/O ,是一款非常具有性价比的芯片。
XC7Z020 集成了两个 Cortex-A9 处理器, AMBA® 互连,内部存储器,外部存储器接口 和外设。这些外设主要包括 USB 总线接口,以太网接口, SD/SDIO 接口, I2C 总线接口, CAN 总线接口, UART 接口, GPIO 等。 ZYNQ 芯片系统框图如下图
接下来就是一些必备功能的验证,我需要用到两个硬件中断,PS-PL交互,任务和队列邮箱等。
首先是PS-PL的配置,结果如下图,除了ZYNQ处理器之外,只用到了一个AXI-EMC IP,非常简洁。
ZYNQ PL-PS中断
首先验证了在裸机下的中断程序,通过串口打印中断次数计数,证明整个通路无问题。因为我要跑操作系统,还需要在freeRTOS下实现,下面直接上代码,在初始化时调用 interrupt_init()即可。
void ExtIrq_Handler0(void *InstancePtr)
{
BaseType_t xHigherPriorityTaskWoken