龙芯1D芯片中文手册,龙芯1D用户手册


龙芯1D是超声波热表、水表和气表测量专用 SoC 芯片。该芯片集成超声波时间测量、超声波脉冲发生器、温度测量单元、CPU、串口、红外收发器、段式LCD 控制器、电压检测单元、空管检测单元、超声波换能器断线检测等功能部件,配合完善的编程、仿真、调试环境,将会大大简化超声波热表测量系统的软硬件设计。

龙芯 1D 由测量模块、处理器子系统、电源管理模块、显示模块等部分组成,采用 AXI、APB 总线相连。

其中,
(1)CPU 是处理器子系统,是整个芯片的控制核心,处理器子系统包括处理器核以及 Flash、SPI 等外设模块,其电源可单独关闭以节约功耗;
(2)Snrths 是测量模块,包括脉冲发生器、模拟比较器和时间数字转换器,时间测量精度达到 40ps,其电源可关闭以节约功耗;
(3)LCD 显示模块是段式 LCD 控制器,最多可对 96 段进行显示控制,电源由软件来控制,可单独关闭以降低功耗;
(4)PMU 是电源管理模块,是实现低功耗的关键部件。PMU 域的电源不可关断,自芯片硬复位之后,PMU 域将一直保持上电状态,从而实现对芯片其他模块的电源管理。系统启动后,软件可配置 PMU 寄存器,根据实际需要打开或者关闭CPU、Snrths 和 LCD 模块的电源,实现芯片功耗的精细控制。

LS132R 处理器核
LS132R 处理器核,兼容 MIPS32 指令集,包含一个硬件浮点部件,支持单精度 float 类型的浮点运算。(如需了解 MIPS 架构的背景知识,请参考 MIPS 官方文档。)

LS132R 处理器核是 32 位的处理器,一共有 32 个 32 位的通用寄存器,编号为$1~$31,用于数据的存储和运算;在协处理器 CP0(Co-Processor)中包含几个特殊的控制寄存器 SFR(Special Function Register),用于控制处理器的工作模式,当芯片上电或者复位时,需要对这些 SFR 进行配置,将处理器核初始化到一个合适的状态。

下面对几个需要配置的 SFR 进行简要介绍(本手册只标出实际中使用到的位域,请用户根据需要进行配置,其他未介绍的位域使用时请写‘0’):
CP0_COUNT(RO)

CP0_COUNT 和 CP0_COMPARE 这两个寄存器构成一个定时器,初始值都是 0,达到最大计数时也会自动清零,时钟源是芯片时钟(8MHz),也就是每 125ns 自动地 Count 寄存器加一,当 Count 和 Compare 相等时,产生一个 Timer 中断(参考 13.1 节内容)。往 CP0_COMPARE 寄存器写进一个新的值,可以清除这个中断。

CP0_STATUS(R/W)

其中,
CU1------“1”代表 enable 硬件浮点部件,“0”disable
CU0------“1”代表可访问控制器 CP0,“0”disable
BEV------“1”代表中断入口在 0xbfc00380
NMI------“1”代表出现 NMI,“0”表示不是 NMI
IMx------“1”代表 enable 第 x 号中断,“0”disable
IE-------“1”代表 enable 所有中断,“0”disable
注意:默认状态下不支持中断嵌套。
CP0_CAUSE(ExcCode 位域 RO,其它 R/W)

其中,

DC------“0”代表 enable 定时器(CP0_COUNT 和 CP0_COMPARE),“1”disable
IPx------“1”代表第 x 号中断等待处理
ExcCode-----代表异常类型

注:“RO----只读,R/W--可读可写,WO--只写”,这些都代表寄存器的访问类型,后面内容的描述都参照这个标准。

地址空间

注 1:访问类型包括字节(B),半字(H)和字(W),访存地址必须对齐。
注 2:若访存超出上表定义的范围则会触发 NMI 例外。

软件对地址空间的访问方式

龙芯1D芯片兼容 MIPS 架构,没有 cache 和 MMU 部件,软件可访问的地址空间为 0xa000,0000~0xbfff,ffff 这部分逻辑地址,通过将高 3 位(二进制)的地址清零来映射到物理地址 0x0000,0000~0x1fff,ffff。因此,软件在访问上述列表的地址时,需要访问对应的逻辑地址,计算公式为:(逻辑或操作)

逻辑地址 = 物理地址 | 0xa000,0000

例如,软件要读写 SRAM 第一个字节,访问的地址为 0xa000,0000,实际上访问的是 0x0000,0000。

测量相关寄存器

注:该表中的寄存器都处于 PMU 域,一直处于上电状态,芯片在“运行”和“休眠”之间切换时,这些寄存器的内容不变。

电源与测量控制
测量过程介绍

龙芯 1D 集成了完善的时差和温度测量功能。一个测量过程包括以下几个步骤:

1. 测量事件触发;
2. 测量模块启动,完成指定的测量后将值写入结果寄存器并引发中断;
3. 软件被唤醒,从结果寄存器取值并处理,随后清空结果寄存器;
4. 等待下一个测量事件

其中测量事件的触发有两种方式:
1. 单次测量:软件往 StartOP 位写 1,启动 MOP 类型的测量;
2. 定时测量:开启巡航模式,硬件会根据配置,周期性地产生测量事件。
测量是非常精密的过程,对环境要求较高,因此软件最好在测量模块工作前将芯片置为休眠模式,关闭处理器系统。

电源管理

龙芯1D实现了完善的电源管理,通过有效的软件控制,可大大延长电池寿命。按电源状态分组,龙芯 1D 包括:电源管理模块(PMU)、液晶显示模块(SLCD)、测量模块(SNRTHS,Sonar 和 Thsens 的缩写)、处理器模块(CPU),如图 4- 1 所示。

除 PMU 外,其它模块均实现了低功耗关断模式。
(1)SLCD 模块的电源由 ChipCtrl.lcd_pd 一位控制,写 1 关断,写 0 打开。该模块的电源只能由软件进行控制,关断后再次打开需要重新配置其寄存器。

(2)SNRTHS 模块的电源主要由测量状态机自动控制。当有新的测量操作需要进行时,电源将自动打开;当测量结束,测量结果被软件读走(resread)后,电源自动关断。该模块的配置寄存器不会因为电源关断而丢失,因此软件无需反复配置。但应注意,如果其电源处于关断状态,模块内所有寄存器将无法访问,读寄存器操作只会返回 0,写操作则被忽略掉。将 ChipCtrl.sonar_pd 寄存器写 0可强行将该模块打开,不受测量状态机的控制。SNRTHS 模块需要一段时间上电,软件强行打开后等 8 个时钟周期(8 条指令的延迟)才能访问。

(3)CPU 模块的电源只能被软件关断,并且只能通过 PMU 中断唤醒后自动打开电源。(详见 13.1 节内容,并不是所有中断都能唤醒 CPU)CPU 模块的关断由 Command.Sleep 控制,软件写 1 后进入关断模式,软件需要保证在关断电源之前所有内部模块(包括 cpu 核以及外设模块)都已完成任务,否则关断操作将强制关闭模块电源造成异常。例如,软件写 1 执行关断操作时,如果串口打印尚未完成,那么打印信息的末端将不能正常显示而是出现乱码。当PMU 有中断时,CPU 模块将被唤醒并自动打开电源。唤醒后 CPU 模块内所有内部寄存器都会被复位成默认值,处理器的执行与系统复位一致,因此软件需要重新进行初始化操作。软件需要判断是一次系统复位,还是一次待机唤醒(无需重新初始化 PMU 域寄存器)。一个简单的方法是在不掉电的 PMU 模块中ChipCtrl.soft_flag 寄存器存储状态信息,根据其复位值为 0 进行判断。CPU 模块在关断、打开时还会控制外部的 SPI Flash,使其进行相应的电源状态转换。如果没有外部 SPI Flash,则关闭此功能可加速 CPU 模块的电源状态转换,进一步降低功耗。

“运行”和“休眠”

CPU 模块是系统运行的必要条件,根据 CPU 模块的电源开关情况,可以将芯片划分为两个状态:“运行”和“休眠”。

在实际使用中,当系统正在执行任务时,CPU 模块电源打开,进行数据计算或者控制操作,此时芯片处于“运行”状态;当系统处理完所有当前任务,CPU 模块将处于一个等待的状态,等待下一个未处理任务,这段等待时间内 CPU 处于无效工作状态;在系统负载较轻的情况下,大部分时间内 CPU 处于无效工作状态,如果在这段时间内关闭 CPU 的电源,将显著地降低芯片功耗。将 CPU 模块电源关闭,此时芯片处于“休眠”状态,注意,在进入休眠之前,需要对芯片引脚(GPIO 的输入输出)进行配置,防止漏电。

巡航模式

龙芯1D支持硬件自发进行的周期性测量,称为巡航模式。该模式下测量由硬件发起,测量结束后再唤醒软件进行结果处理,可有效地降低电流消耗。

巡航模式下测量事件的触发与 32.768K 时钟产生的 1/16 秒事件同步。根据巡航的时间间隔,当 Count 寄存器的低几位为 0,且即将加 1 时,触发测量事件。以每秒 4 次测量为例,比较时看 Count.RTC 的最低两位。若软件希望使用定时器唤醒,为了不干扰测量,最好将唤醒时间配置与测量事件错开。

时差巡航和温度巡航的测量事件有可能同时产生,但时差巡航优先级高,只有测完时差,结束读出后,测试状态机才会接着处理温度测量。

若测量结果长时间未被读出,后续的巡航测量将无法开始。使用巡航模式时,软件应当被设计成能够及时处理测量结果。因此当出现连续两次测量未能执行时通常意味着系统进入了异常状态,软件可配置 Command.WatchEn,使芯片在碰到这种情况时进行复位。

 

注:资料内容太多,完整资料,可到“http://bbs.16rd.com/thread-472326-1-1.html”,转载请注明出处


作者:牛牛00,发布于:2019/05/16
原文:https://www.cnblogs.com/16rd/p/10869532.html