龙芯1D处理器用户手册

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

另外,龙芯1D芯片采用特殊的电源设计,实现对芯片功耗的动态精细化管理,在低功耗方面有着出色的表现。

龙芯1D结构图:

龙芯 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 域,一直处于上电状态,芯片在“运行”和“休眠”之间切换时,这些寄存器的内容不变。(请参考 4.2 节内容)

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

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

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

其中测量事件的触发有两种方式:

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

电源管理

龙芯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 模块的电源状态转换,进一步降低功耗。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值