实现SoC和FPGA原型
蜂鸟E200在Freeedim E310基础上修改。称为HBird-E200-Soc。
总线地址分配表
•HCLKGEN(High Speed Clock Generation)
•CLINT(Core-Local Interrupt Controller)主要实现RISC-V手册中规定的标准计时器和软件中断功能
•PLIC(Platform-Level Interrupt Controller)该 PLIC 能够支持多个中断源,并且每个中断可以配置中断优先级,所有中断源经过 PLIC 仲裁后,生成一根最终的中断信号通给处理器核作为其外部中断信号 。 PLIC 的中断来源包括 UART 、 SPI 和 GPIO 等。
•JTAG用于连接系统外部调试器与内部调试模块
•调试模块,使得处理器核能够通过GDB对齐进行交互调试,譬如设置断点、单步执行等调试功能
•Quad-SPI Flash
•QSPI
•UART
•PWM
•常开域 LCLKGEN/WatchDog/RTC/PMU
运行跑分程序
跑分程序(Benchmarks)通常是一组标准的软件程序,让处理器运行改标注程序,并通过运行速度计算出一组分数,作为衡量处理器性能的指标。嵌入式处理器最为知名和常见的跑分程序为Drystone和CoreMark。
Drystone是一个综合的处理器跑分程序,用于衡量处理器整数运算处理性能。DMIPS(DrtStone Million Instruction Per Second)衡量性能
CoreMark和Drystone类似,运行在包括基地功耗微处理器在内的处理器上。CoreMark 程序由 C 语言编写,包含了很多典型的算法, 譬如链表操作、矩阵运算 、 状态机 ( 用来确定输入流中是否包含有效数字〉和循环冗余校验 (CRC )。这些算法尤其在嵌入式领域的软件中极为常见, 因此 CoreMark 在嵌入式领域被认为比 Dhrystone 更加具有代表意义 ,很多嵌入式领域的 CPU 都公布了其 CoreMark 的跑分作为衡量其性能指标的重要参数 。用 Number of iterations per second 作为衡量标准,表示处理器每秒钟能够执行的 CoreMark 主循环的次数。
譬如 : 假设某处理器以 20MHz 的主频运行 CoreMark,程序能够达到每秒执行 50 次主循环则其性能为 50/20=2.5CoreMark/Mhz。
Drystone、CoreMark只使用了整数运算类型,因此不能衡量浮点运算处理性能。有其他Benchmark程序衡量浮点性能指标。
RISC-V架构指令集介绍
RV32GC架构介绍
RISC-V架构文档主要分为:“指令集文档”、“特权架构文档”
蜂鸟 E200 处理器核系列支持如下模块化指令集。
• 32 位 : 32 位地址空间,通用寄存器宽度 32 位 。
• I:支持 32 个通用整数寄存器。
• M:支持整数乘法与除法指令 。
• A:支持存储器原子( Atomic )操作指令和 Load-Reserved/Store-Conditional 指令 。
• F : 支持单精度浮点指令。
• D:支持双精度浮点指令。
• C : 支持编码长度为 16 位的压缩指令,提高代码密度 。
• Machine Mode Only : 只支持机器模式 。
以上指令集组合可表示为RV32IMAFDC。IMAFD为通用组合(Genernal Purpose),以字母G表示,因此也可以表示为RV32GC。
另外还有嵌入式架构E(仅需要16个通用寄存器)、C(压缩指令集)。
RISC-V架构中,寄存器组主要包括通用寄存器(General Purpose Registers)和控制寄存器(CSR)。
•如果使用指令集I,则有32个通用寄存器,用代号x0~x31表示。
x0通常预留常数0,其他31个为普通的通用整数寄存器。宽度按有XLEN表示,32位架构RV32I,64位架构RX64I。
•如果支持F或D,则包含32个通用浮点寄存器,标号为f0~f31。