zoukankan      html  css  js  c++  java
  • SoC FPGA 篇之 HPS IO 复用 知多少?

    刚接触SoC FPGA时,我对SoC FPGA的灵活性并没有领会多少,我只觉得它很复杂。为啥复杂?因为不懂嘛!查了好些资料,终于弄明白HPS IO复用的特性,也更加领会到SoC FPGA的灵活是说得一点都没错!
     
    言归正传。
     
    前面已经给大家介绍了SoC FPGA 是在单一芯片上集成了 基于ARM的硬核处理器系统(HPS)和 FPGA 逻辑资源的新型SoC 芯片。SoC FPGA 的 HPS端可以做到在有限的引脚资源上支持很多不同类型的外设,比如USB, I2C, SPI, UART, EMAC等等。这些引脚与外设不是一一对应的, 这些引脚是通过 HPS 引脚复用器切换不同的映射方式来支持不同功能外设的连接。这里映射方式选择有4种: set0 set1 set2 和 FPGA used。对应到具体的硬件产品上的设计时,引脚复用需要根据使用到的具体功能合理设置引脚复用。可能这样讲大家还是不能理解这个HPS IO复用是怎么去应用的, 别急,我来举个栗子:
     
    5CSEB6 器件(DE10-Nano上的器件)的A22 B21引脚复用如下图2 所示(查看器件引脚复用对应的完整情况可参考Intel的引脚信息表
    https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/dp/cyclone-v/5cseba6.pdf。),从截图可看到A22 和B21 可以被选择当TRACE功能,也可以被选择为SPI功能,或者是UART,或者直接就是GPIO功能。
     
    (注意这个截图中的 HPS Pin Mux Select 0 1 2 3 代表四种不同选择,但 不是对应后面HPS IP设置界面的 HPS I/O Set0、1、2 。)
     
                                                                                       (图1)DE10-Nano开发板的5CSEB6 器件 引脚 信息对应表
     
    但5CSEB6 器件安装到DE10-Nano(http://www.terasic.com.cn/cgi-bin/page/archive.pl?Language=China&CategoryNo=182&No=1048)开发板以后,它的 A22 B21引脚被固定接UART0 设备了:
     
                                                              (图2)DE10-Nano 电路图
     
                                                                                   (图3)DE10-Nano 的实际硬件(UART接口)
     
    因为DE10-Nano 的外围电路已经固定到UART0, 那么用户在设置 HPS IP 时,UART0的 UART0 pin要设置为HPS I/O Set0 ,UART1不用设置(DE10-Nano硬件上是使用了HPS端的 uart0,没使用uart1)。这就是按照硬件具体情况设置HPS IP 的IO复用。
     
                                                                (图4)该界面是通过打开Quartus Prime软件里面的Platform Designer的HPS IP
     
    那大家肯定会问,为啥 UART0 pin 这里是选 HPS I/O set0 呢?怎么不选择HPS I/O set1或者HPS I/O set2? 那是因为在HPS 映射方案里面set0 才将 A22 B21 映射为UART0了(如下图5所标注的)。(另外还可以参考我后来博客 https://www.cnblogs.com/DoreenLiu/p/14242046.html 的解释)
     
                                                                                                                      (图5)
     
    如果这些可复用的引脚没有被复用,那么空闲的它们也可以被HPS GPIO外设使用。具体操作是在Peripherals Mux Table下, 单击倒数第二列中的GPIOxx按钮,即可启用对应的GPIO端口,这时无需设置set0 还是set1等 。这些GPIO 有用于连接HPS用户灯的,有用于连接HPS用户按钮的,等等。
     
                                                                                                                                    (图6)
    眼尖的用户可能发现最右边还有一排 LOANIO,这个是干什么用的呢? “LOAN” 是借贷的意思,这里是表示 当这些引脚没有被HPS外设所用的时候,也可以将其借给FPGA用,被FPGA所控制。 注意这时必须先配 这些管脚为HPS相应管脚再借给FPGA。这种情况在一般的实际应用中其实比较少见。
     
    Pin Mux标签的底部是一个冲突信息提示框,显示每一引脚复用的使用情况。如果出现引脚冲突,这也会显示在提示框中。假设将一组管脚即分配外设EMAC1, 又分配给NAND 外设,显示框就会显示EMAC1的引脚和NAND的引脚使用冲突了(如图7所示),为解决这一冲突问题,需要查看开发板硬件实际对应情况。在允许生成系统前,应确保HPS组件的冲突信息提示框没有错误。
     
                                                                                           (图7)
     
    关于HPS 端外设的引脚 要不要手动分配?请参考我后来的博客: https://www.cnblogs.com/DoreenLiu/p/14242046.html
     

  • 相关阅读:
    627. Swap Salary
    176. Second Highest Salary
    596. Classes More Than 5 Students
    183. Customers Who Never Order
    181. Employees Earning More Than Their Managers
    182. Duplicate Emails
    175. Combine Two Tables
    620. Not Boring Movies
    595. Big Countries
    HDU 6034 Balala Power! (贪心+坑题)
  • 原文地址:https://www.cnblogs.com/DoreenLiu/p/14012088.html
Copyright © 2011-2022 走看看