Xilinx火龙果学习笔记(1)---初识火龙果

来源:互联网 发布:l39h港行支持什么网络 编辑:程序博客网 时间:2024/06/02 23:10

Xilinx火龙果学习笔记(1)—初识火龙果

短学期很快结束,学习了一些Xilinx的火龙果的操作,并应用做了一个家居报警系统,也算是大概熟悉了这个玩意吧,对这种双核模式还是比较感兴趣的。在这里做一些记录,以备后用。

  1. 首先火龙果是双核片上系统,即FPGA+CPU=ALL Programmable System-on-chip(Soc):将一个计算机系统集成到单芯片中的结构,包含 ARM CPU 核,高级微控制器总线结构(Advanced Micro-controller Bus Architecture AMBA)以及用于和不同外设连接的物理 IP 核;

  2. IP核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。参考:http://www.cnblogs.com/lifan3a/articles/4229952.html

    • IP 硬核:硬核在 EDA 设计领域指经过验证的设计版图;具体在FPGA 设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。
    • IP 软核:软核在 EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型;具体在 FPGA 设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。用户可修改,灵活度高。(一般软核使用的多,灵活可修改)
  3. PS(Processing System): 基于 ARM 多核处理器的处理系统,即ARM处理器部分;

    PL(Programmable logic): 基于 Xilinx 可编程逻辑资源的可编程逻辑系统,即FPGA部分。

    • AXI介绍: 参考资料: http://xilinx.eetrend.com/blog/7320
    • AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式。在ZYNQ中继续使用,版本是AXI4,所以我们经常会看到AXI4.0,ZYNQ内部设备都有AXI接口。其实AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能、高带宽、低延迟的片内总线,也用来替代以前的AHB和APB总线。
    • AXI协议严格的讲是一个点对点的主从接口协议,当多个外设需要互相交互数据时,我们需要加入一个AXI Interconnect模块,也就是AXI互联矩阵,作用是提供将一个或多个AXI主设备连接到一个或多个AXI从设备的一种交换机制(有点类似于交换机里面的交换矩阵)。Xilinx为我们提供了实现这种互联矩阵的IP核axi_interconnect_1,在前面的例子中,我们在XPS中可以看到。这个IP核最多可以支持16个主设备、16个从设备,如果需要更多的接口,可以多加入几个IP核。
    • ZYNQ中的AXI接口共有9个,主要用于PS与PL的互联;PL与PL部分通信所使用的总线就是AXI总线
  4. zynq有三种GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接挂在PS上的GPIO,而AXI_GPIO是通过AXI总线挂在PS上的GPIO上。

    • 首先、MIO在zynq上的管脚是固定的,而EMIO,是通过PL部分扩展的,所以使用EMIO时候需要在约束文件中分配管脚,所以设计EMIO的程序时,需要生成PL部分的bit文件,烧写到FPGA中。
    • 其次、由下图可以看出MIO共占54bit,而EMIO占64bit。其中MIO占用IO号为0-53。而EMIO占用IO号为54-117。
    • 再者、无论是EMIO还是MIO都属于PS上的IO,直接由PS操作。在调用头文件,只调用#include “xgpiops.h”即可,而在调用AXI_GPIO时,则需要#include “xgpio.h”。
  5. 在redpedia的演示代码,xgpiops.h中有很多关于gpio函数的定义:
    这里写图片描述

  6. GPIO的相关信号被分为了4个bank(组),bank0与bank1为MIO信号,bank2与bank3为EMIO信号,MIO具有54根三态GPIO引脚,EMIO可以达到192根信号,64根输入,128根输出。由XILINX的官方文件还可以看出,EMIO是与PL部分直接相连的。

  7. EMIO是ZYNQ-7000中的一个新概念,全称是Extendable MIO,即可扩展的MIO。而MIO全称Multiplexed IO,也就是复用IO。我们从Xilinx的一些资料可以得知MIO的数量有限,而且已经将其地址分配给了PS部分已有的一些外设资源,这个分配工作由软件去做。而这个EMIO就是用来对有限的MIO做扩展的。

  8. EMIO也是我们从PL部分访问PS部分IOP的一个途径,不过相比总线,EMIO的速度会慢一点,但是它的灵活性却会更高一些。

  9. 另外,老师也承认火龙果这个板子资料太少,不是很好用。但强烈推荐我们好好研究一下它的架构。有空再看。

原创粉丝点击