查看: 1623|回复: 0
收起左侧

蜂鸟FPGA开发板全知道篇3: 开源SoC简介(3)

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-10-16 23:52:55 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-10-16 23:52 编辑




    目录
    1  总体介绍

    1.1    总体特性

    1.2    SoC整体框图

    1.3    总线地址分配

    2  RISC-V核介绍

    2.1    处理器核简介

    2.2    处理器核中断

    2.2.1    CLINT

    2.2.2    PLIC

    2.3    JTAG调试模块

    3  SoC总线介绍

    3.1    ICB总线协议信号

    3.2    ICB总线协议时序

    3.3    SoC总线结构

    4  SoC外设介绍

    4.1    QSPIMaster

    4.2    GPIO

    4.3    UART

    4.4    PWM

    4.5    Always-On模块

    4.5.1    WatchDog

    4.5.2    RTC

    4.5.3    PMU

    4.5.4    LCLKGEN

    4.5.5    RESETGEN

    4.6    I2CMaster

    4.7    HCLKGEN

    5  SoC片上存储器介绍

    5.1    ITCM

    5.2    DTCM

    5.3    ROM

    6  SoC电源域管理

    6.1    电源域划分

    6.2    低功耗模式

    7  SoC时钟管理

    7.1    时钟域划分

    8  SoC复位管理

    8.1    芯片复位策略

    8.1.1    POR电路Reset

    8.1.2    WatchDogReset

    8.1.3    芯片引脚AON_ERST_N

    8.1.4    复位树关系

    9  上电流程控制

    9.1    上电流程

    9.1.1    从外部Flash开始执行

    9.1.2    从内部ROM开始执行

    9.2    上电地址选择

    10  SoC 顶层引脚

    10.1    SoC顶层引脚分配



    4 SoC外设介绍

    本章将对挂载在私有设备总线上的外设模块进行介绍。本文在此仅对每个模块功能进行极为简略的描述。


    注意:

    • 本文档对SoC的各外设的介绍尚不够详细,由于本SoC中外设模块重用自Freedom E310 SoC且软件完全兼容,可以参阅Freedom E310 SoC的技术文档了解其细节。分别为SiFive-E300-platform-reference-manual-v1.0.1.pdf与SiFive-E310-G000-manual-v1.0.1.pdf,其中有对每个模块的详细功能描述与详细配置寄存器描述供参阅。

    • 或者,在中文书籍《RISC-V架构与嵌入式开发快速入门》中对英文SoC的材料进行了通俗化翻译,并进行深入浅出的系统讲解。感兴趣的用户可以自行搜索此书。



    4.1    QSPI Master

    有关QSPI的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    在本SoC中,有三个QSPI Master,分别是QSPI0,QSPI1和QSPI2,均是直接复用来自FreedomE310 SoC平台。其中QSPI0专用于外部的Flash,有专用的Pad接口,而QSPI1和QSPI2则通过GPIO复用管脚。

    • Quad-SPI Flash:

      (1)专用于连接外部Flash的Quad-SPI(QSPI)接口。

      (2)并且该QSPI接口还可以被软件配置成为eXecute-In-Place模式,在此模式下,Flash可以被当作一段只读区间直接被当做存储器读取。在默认上电之后,QSPI即处于该模式之下,由于Flash掉电不丢失的特性,因此可以将系统的启动程序存放于外部的Flash中,然后处理器核通过eXecute-In-Place模式的QSPI接口直接访问外部Flash加载启动程序启动。

    • QSPI:

      (1)除了上述专用于Flash的QSPI接口之外,SoC还有两个独立的QSPI接口控制器。一个QSPI使用四个片选信号(Chip Selects),一个QSPI使用一个片选信号。两个QSPI均使用GPIO的IOF功能与外界通信。



    4.2    GPIO

    有关GPIO的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    GPIO全称为General Purpose I/O,其要点如下:

    • GPIO用于提供一组32 I/O的通用输入输出接口。每个I/O可用被软件配置为输入或者输出,如果是输出可以设置具体的输出值。
    • 每个I/O还可以被配置为IOF(Hardware I/O Functions),也就是将I/O供SoC内部的其他模块复用,譬如SPI,UART,PWM等等。
    • 另外,每个GPIO的I/O均作为一个中断源连接到PLIC的中断源上。
    • GPIO的32个I/O被SoC内部模块的复用分配如下表所示,其中每个I/O均可以供两个内部模块复用,软件可以通过配置每个I/O使其选择IOF0或者IOF1来选择信号来源。注意:表中黄色高亮部分为本SoC新添加的IO映射,其他IO均与Freedom E310 I/O映射相同。

    GPIO的接口分配表
    国内芯片技术交流-蜂鸟FPGA开发板全知道篇3: 开源SoC简介(3)risc-v单片机中文社区(1)

    4.3    UART

    有关UART的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    UART全称为Universal AsynchronousReceiver-Transmitter(通用异步接收-发射器),本SoC有两个独立的UART,两个UART均使用GPIO的IOF功能与外界通信。

    4.4    PWM

    有关PWM的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    PWM全称为Pulse-Width Modulator(脉宽调节器)。本SoC有三个独立的PWM,其中两个是16比特的精度,另外一个是8比特的精度,均使用GPIO的IOF功能与外界通信。

    4.5    Always-On模块

    有关Always-On模块的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    Always-ON模块包含了三个主要子模块,分别是WatchDog,RTC和PMU。

    4.5.1     WatchDog


    有关WatchDog模块的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    WatchDog全称为WatchDog Timer(看门狗计数器),该计数器位于Always-on Domain中,因此使用低速时钟进行计数,并且可以通过配置其计数的目标值产生中断。

    4.5.2     RTC


    有关RTC模块的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    RTC全称为Real-TimeCounter(实时计数器),该计数器位于Always-on Domain中,因此使用低速时钟进行计数,并且还能产生中断。

    4.5.3     PMU

    有关PMU模块的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。本文在此进行中文简述。

    PMU全称为Power Management Unit(电源管理单元),用于控制SoC的电源管理。整个SoC除了WatchDog、RTC、PMU等模块处于Always-on Domain之外,其他Main Domain可以在PMU的控制下被置于断电状态以节省功耗,或者重新唤醒等等。

    4.5.4     LCLKGEN

    LCLKGEN全称为Low-Speed Clock Generation。LCLKGEN主要为Always-On Domain生成时钟。Always-On Domain主要使用低速的实时时钟,频率应为32.768KHz,可以选择来自片上振荡器、外部晶振或者直接通过芯片引脚输入。

    LCLKGEN模块的结构取决于具体芯片的工艺和IP,因此本文在此不做介绍。

    注意:在FPGA开发板中,LCLKGEN模块为空模块,直接输出由FPGA产生的32.768KHz时钟。

    4.5.5     RESETGEN

    RESETGEN模块主要为整个SoC模块产生复位信号,请参见第9章了解SoC复位管理。

    4.6    I2C Master

    I2C Master模块是采用开源的并经过测试验证后的IP core;内部采用wishbone总线通信。寄存器列表如下,关于寄存器的详细介绍请参考《I2CMasterwithWISHBONEBusInterface-Documentation.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。

    国内芯片技术交流-蜂鸟FPGA开发板全知道篇3: 开源SoC简介(3)risc-v单片机中文社区(2)

    注意,上表中地址为偏移地址,总线分配的基地址为0x1004_2000。

    4.7    HCLKGEN

    HCLKGEN全称为High-Speed Clock Generation。HCLKGEN其主要为Main Domain生成高速时钟(譬如频率为100MHz)。HCLKGEN可以使用片上振荡器、外部晶振和片上PLL产生高速时钟,PLL也可以通过软件配置将其旁路。HCLKGEN模块的结构取决于具体芯片的工艺和IP,因此本文在此不做介绍。

    注意:在FPGA开发板中,HCLKGEN模块为空模块,直接输出由FPGA产生的16MHz时钟。

    HCLKGEN模块有若干可编程寄存器(地址区间为0x1000_8000~0x1000_8FFF),其用于控制HCLKGEN相关功能。由于HCLKGEN模块的结构取决于具体芯片的工艺和IP,因此本文在此对相关寄存器不做介绍。

    5 SoC片上存储器介绍
    5.1    ITCM

    ITCM为RISC-V Core私有的指令存储器,其特性如下:

    • 大小为64KB。
    • ITCM数据宽度为64位。
    • ITCM SRAM虽然主要用于存放指令,但是其地址区间也可以被Load、Store指令访问,从而用来存放数据。


    5.2    DTCM

    DTCM为RISC-V Core私有的数据存储器,其特性如下:

    • 大小为64KB。
    • DTCM SRAM数据宽度为32位。


    5.3    ROM

    在本SoC中使用Verilog常数逻辑化的ROM,本质上就是常数逻辑。

    6  SoC电源域管理
    6.1    电源域划分

    为了保证芯片能够进入低功耗模式,将整个芯片划分为两个主要的电源域:

    • Always-On Domain:

      (1)此Domain即第5章中介绍的Always-on模块,包括子模块WatchDog,RTC,和PMU,还有Always-On时钟生成电路。

    • MOFF Domain:

      (1)MOFF是Most-Off的简称,即芯片中除了Always-On Domain之外的所有其他主体部分。


    注意:在FPGA平台上没有真正的电源域。

    6.2     低功耗模式

    整个芯片分为三个工作模式:

    • 正常模式:Always-On和MOFF均处于正常供电状态。
    • 等待模式:Always-On和MOFF均处于正常供电状态。但是Core执行了一条WFI指令,因此处理器停止执行,时钟被关闭。直到下次被中断唤醒。
    • 休眠模式:Always-On正常供电,但是MOFF的外部电源切断。
      (1)进入休眠模式由Always-On的PMU模块控制,PMU模块会通过芯片的Pad输出一根控制信号AON_PMU_VDDPADEN,该信号会控制芯片外部的MOFF供电电路使其切断电源。注意:在FPGA平台上没有真正的电源域和切断电源。
      (2)退出休眠模式由PMU定义的若干唤醒条件唤醒,具体的唤醒条件请参见有关PMU模块的详细介绍请参见文档《SiFive-E300-platform-reference-manual-v1.0.1.pdf》或者中文书籍《RISC-V架构与嵌入式开发快速入门》。

    后续文章
    此篇为《蜂鸟FPGA开发板全知道篇3:  开源SoC简介(3)》,请持续关注,后续即将发布:
    《蜂鸟FPGA开发板全知道篇3:  开源SoC简介(4)》

    文章回顾:





    上一篇:蜂鸟FPGA开发板全知道篇3: 开源SoC简介(2)
    下一篇:蜂鸟FPGA开发板全知道篇3: 开源SoC简介(4)
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-29 01:42 , Processed in 0.414354 second(s), 48 queries .

    快速回复 返回顶部 返回列表