经过HPS控制FPGA端的GPIO

该笔记主要记录HPS端如何经过AXI Bridge控制FPGA端口的GPIO,主要是如何操做FPGA侧的Ledshell

一、AXI Bridge

   
    AXIB主要包括H2FB、F2HB、LWH2FB(Light Weight Bridge)
    H2FB 的AXI地址位宽是30Bit,数据位宽3二、6四、128可配置,ID位宽为12Bit
    F2HB 的AXI地址位宽是32Bit ,数据位宽3二、6四、128可配置,ID为8Bit
    LWH2FB的地址位宽是21Bit,数据位宽是32bit,ID为8Bit,适用于作控制总线

二、HPS控制FPGA端的GPIO

    (1) Hardware:在qsys下把GPIO Core链接到LWBridge Master下

        1)下载sof文件
        2)执行generate_hps_qsys_header.sh文件生成有关硬件信息的供软件使用的头文件,其实就是一个shell命令写在了文件里面,便于执行
sopc-create-header-files \
"./soc_system.sopcinfo" \
--single hps_0.h \
--module hps_0

    (2) Software:spa

        1)映射GPIO组件的物理地址到应用程序能够操做的虚拟地址
        前面还有两步分别是打开内存设备和虚拟地址映射mmap获得 virtual_addr
        LWAXI总线相对于其虚拟基地址的偏移量
(ALT_LWFPGASLVS_OFST & (unsigned long) HW_REGS_MASK)
        FPGA外设相对于LWAXi的地址为PIO_LED_BASE
        最终的虚拟地址入口地址为:
h2p_lw_led_addr = virtual_base + ((unsigned long)(ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (unsigned long)(HW_REGS_MASK));

应用程序经过获得的虚拟地址入口控制FPGA端的Led
  三、最后经过操做h2p_lw_led_addr就能够对FPGA端的GPIO操做
相关文章
相关标签/搜索