1B数据手册 Loongson1B Processor User Manual V2.2

Loongson1B_processor_user_manual_V2.2

Loongson1B_processor_user_manual_V2.2

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 204

Download1B数据手册 Loongson1B Processor User Manual V2.2
Open PDF In BrowserView PDF
龙芯 1B 处理器用户手册

2015 年 4 月

龙芯中科技术有限公司

龙芯 1B 处理器用户手册

版权声明
本文档版权归龙芯中科技术有限公司所有,并保留一切权利。未经书面许可,任何公司和
个人不得将此文档中的任何部分公开、转载或以其他方式散发给第三方。否则,必将追究
其法律责任。

免责声明
本文档仅提供阶段性信息,所含内容可根据产品的实际情况随时更新,恕不另行通知。如
因文档使用不当造成的直接或间接损失,本公司不承担任何责任。

龙芯中科技术有限公司
Loongson Technology Corporation Limited
地址:北京市海淀区中关村环保科技示范园龙芯产业园 2 号楼
Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park,
电话(Tel):010-62546668
传真(Fax):010-62600826

I

龙芯 1B 处理器用户手册

阅读指南
《龙芯 1B 处理器用户手册》主要介绍龙芯 1B 架构与寄存器描述,包括用户手册和软件编程
指南两部分。软件编程指南介绍对 BIOS 和操作系统开发过程中的常见问题。

II

龙芯 1B 处理器用户手册

修订历史
文档编号:

文档更新记录

文档名:

龙芯 1B 处理器用户手册

版本号

V2.2

创建人:

研发中心

创建日期

2015-4-1

更新历史
序号.
1
2
3
4
5
6

更新日期

更新人

版本号

更新内容

2010-6-7

研发中心

V1.0

1B 处理器初稿完成

2010-11-13

研发中心

V1.1

增加了芯片引脚排布,DDR 控制器信息等

2010-11-15

研发中心

V1.2

修改并进行标准排版

2010-11-15

研发中心

V1.3

修正了第五章 DDR 的部分错误

2011-05-08

研发中心

V1.4

修订了调试发现的错误

2011-05-17

研发中心

V1.5

修订了多个小问题

7

研发中心

V1.6

2012-4-11

研发中心

V1.7

2012-4-20

研发中心

V1.8

研发中心

V1.9

研发中心

V2.0

研发中心

V2.1

2011-11-15

8
9

10

2012-05-26

11

2014-07-30

12

2015-3-11

III

GMAC0/1 的 RGMII 和 MII 模式需要配置才能使用
GPIO 配置和复用中修改 bug
SPI 部分,分频时钟明确是 DDR2_clk/2
DDR2 部分,配置 16/32 位可配置
时钟分频部分有改动
添加了 LCD PAD 在不同显示模式下的对应关系
GPIO 寄存器描述修改
NAND 部分寄存器说明修改
XTALI/O 与外部有源晶振、无源晶体连接方法
PAD 封装位置和封装延迟
GPIO 复位值和方向
GMAC0/1 在 MII 模式下信号处理
Wdog 地址修改
USB 启动需要复位
针对修改意见,做了 GPIO/ LCD/ DMA/ SPI/ UART
/I2C/ NAND /CLOCK 的修改
增加质量等级和封装顶视图
增加电特性,CAN 的速率计算

龙芯 1B 处理器用户手册
13

2015-4-1

研发中心

V2.1

手册信息反馈: service@loongson.cn

IV

补充质量等级描述

龙芯 1B 处理器用户手册目录

目

录

概述 ............................................................................................................................... 1
1.1
体系结构框图 ................................................................................................................... 1
1.2
芯片主要功能 ................................................................................................................... 2
1.2.1
GS232 CPU................................................................................................2
1.2.2
DDR2 .........................................................................................................3
1.2.3
LCD Controller ......................................................................................3
1.2.4
USB2.0 .....................................................................................................3
1.2.5
AC97 .........................................................................................................3
1.2.6
GMAC .........................................................................................................4
1.2.7
SPI...........................................................................................................4
1.2.8
UART .........................................................................................................4
2
1.2.9
I C ...........................................................................................................4
1.2.10 PWM...........................................................................................................4
1.2.11 CAN...........................................................................................................5
1.2.12 RTC...........................................................................................................5
1.2.13 GPIO .........................................................................................................5
1.2.14 NAND .........................................................................................................5
1.2.15 INT controller ......................................................................................5
1.2.16 Watchdog .................................................................................................5
1.2.17 功耗 .........................................................................................................5
1.2.18 其它 .........................................................................................................7
1.3
质量等级........................................................................................................................... 7
2 芯片引脚定义 ................................................................................................................ 9
2.1
1B 引脚分布图 .................................................................................................................. 9
2.2
封装顶视图..................................................................................................................... 16
2.3
系统相关引脚定义(6) ............................................................................................... 17
2.4
LCD 引脚定义(20) ...................................................................................................... 17
2.5
PLL 引脚定义(4) ........................................................................................................ 17
2.6
VR 引脚定义(6) .......................................................................................................... 18
2.7
DDR2 引脚定义(71) .................................................................................................... 18
2.8
USB 引脚定义(10) .......................................................................................................... 19
2.9
EJTAG 引脚定义(6) ........................................................................................................ 20
2.10 GMAC0 引脚定义(15) ...................................................................................................... 20
2.11 GMAC1 引脚定义(4) ........................................................................................................ 20
2.12 AC97 引脚定义(5) .......................................................................................................... 21
2.13 SPI 引脚定义(7) ............................................................................................................ 21
2.14 UART 引脚定义(20) ........................................................................................................ 21
2.15 I2C 引脚定义(2) ............................................................................................................ 22
2.16 CAN 引脚定义(4) ............................................................................................................ 22
2.17 NAND 引脚定义(14) ........................................................................................................ 22
2.18 PWM 引脚定义(4) ............................................................................................................ 22
2.19
电源/地引脚(58) ................................................................................................... 23

1

I

龙芯 1B 处理器用户手册目录
3

4

5

6

7

II

地址空间分配 .............................................................................................................. 24
3.1
一级 AXI 交叉开关上模块的地址空间 ......................................................................... 24
3.2
AXI MUX 下各模块的地址空间 ...................................................................................... 24
3.3
APB 各模块的地址空间分配 .......................................................................................... 24
CPU ............................................................................................................................... 26
4.1
MIPS32 指令系统结构 .................................................................................................... 26
4.1.1
CPU 寄存器 .............................................................................................27
4.1.2
CPU 指令集 .............................................................................................27
4.1.3
CP0 指令集 .............................................................................................31
4.1.4
存储空间 ...............................................................................................32
4.1.5
例外处理 ...............................................................................................33
4.1.6
CP0 寄存器 .............................................................................................35
4.2
CP0 指令.......................................................................................................................... 53
4.3
EJTAG 设计...................................................................................................................... 53
4.3.1
EJTAG 介绍 .............................................................................................53
4.3.2
调试控制寄存器(Debug Control Register) ..................................... 54
4.3.3
硬件断点 ...............................................................................................56
4.3.4
EJTAG 相关的处理器核扩展 ................................................................... 61
4.3.5
TAP 接口 ................................................................................................64
DDR2 ............................................................................................................................. 72
5.1
DDR2 SDRAM 控制器特性 ................................................................................................ 72
5.2
DDR2 SDRAM 读协议........................................................................................................ 72
5.3
DDR2 SDRAM 写协议 ........................................................................................................ 73
5.4
DDR2 SDRAM 参数设置顺序............................................................................................ 73
5.5
DDR2 SDRAM 采样模式配置............................................................................................ 74
5.6
DDR2 SDRAM PAD 驱动配置...................................................................................... 74
5.7
DDR2 16 位工作模式配置............................................................................................. 74
LCD ............................................................................................................................... 75
6.1
特性................................................................................................................................. 75
6.1.1
数据格式 ...............................................................................................75
6.2
寄存器............................................................................................................................. 75
GMAC0 ........................................................................................................................... 81
7.1
配置成 MAC 的连接和复用方式 .................................................................................. 81
7.2
DMA 寄存器描述 .............................................................................................................. 81
7.3
GMAC 控制器寄存器描述 ................................................................................................ 90
7.4
DMA 描述符.................................................................................................................... 101
7.4.1
DMA 描述符的基本格式 ........................................................................101
7.4.2
DMA 接收描述符 ...................................................................................102
7.4.3
RDES0 ...................................................................................................103
7.4.4
RDES .....................................................................................................104
7.4.5
RDES2 ...................................................................................................105
7.4.6
RDES3 ...................................................................................................105
7.4.7
DMA 发送描述符 ...................................................................................106
7.4.8
TDES0 ...................................................................................................106

龙芯 1B 处理器用户手册目录
7.4.9
TDES1 ...................................................................................................107
7.4.10 TDES2 ...................................................................................................109
7.4.11 TDES3 ...................................................................................................109
7.5
软件编程向导(SOFTWARE PROGRAMMING GUIDE):........................................................... 110
8 GMAC1 ......................................................................................................................... 112
8.1
配置成 MAC 的连接和复用方式 ................................................................................ 112
8.2
GMAC1 外部信号复用和配置 ........................................................................................ 112
8.3
寄存器描述................................................................................................................... 113
9 USB HOST .................................................................................................................... 114
9.1
总体概述....................................................................................................................... 114
9.2
USB 主机控制器寄存器 ................................................................................................ 115
9.2.1
EHCI 相关寄存器 .................................................................................. 115
9.2.2
Capability 寄存器 .............................................................................. 115
9.2.3
Operational 寄存器............................................................................. 116
9.2.4
EHCI 实现相关寄存器 ......................................................................... 116
9.2.4.1 INSNREG00 寄存器(disable) ......................................................... 117
9.2.4.2 INSNREG01 寄存器............................................................................. 117
9.2.4.3 INSNREG02 寄存器............................................................................. 117
9.2.4.4 INSNREG03 寄存器............................................................................. 117
9.2.4.5 INSNRE04 寄存器(仅用于调试,软件不必更改此寄存器) ........ 117
9.2.4.6 INSNRE05 寄存器 ............................................................................... 118
9.2.4.7
INSNREG06 寄存器 ........................................................................ 118
9.2.4.8
INSNREG07 寄存器 ........................................................................ 118
9.2.4.9
INSNREG08 寄存器 ........................................................................ 118
9.3
OHCI 相关寄存器 .......................................................................................................... 119
9.3.1
Operational 寄存器............................................................................. 119
9.3.2
OHCI 实现相关寄存器 ......................................................................... 119
9.3.2.1 INSNREG06 寄存器............................................................................. 120
9.3.2.2
INSNREG07 寄存器 ........................................................................ 120
9.4
USB 主机控制器时序 .................................................................................................... 120
9.4.1
数据接收时序 ......................................................................................120
9.4.2
数据传输时序 ......................................................................................121
10
SPI0 ................................................................................................................... 123
10.1 SPI 控制器结构 ............................................................................................................ 123
10.2 SPI 控制器寄存器 ........................................................................................................ 124
10.2.1 控制寄存器(SPCR) ...........................................................................124
10.2.2 状态寄存器(SPSR) ...........................................................................124
10.2.3 数据寄存器(TxFIFO/RxFIFO) ...........................................................125
10.2.4 外部寄存器(SPER) ...........................................................................125
10.2.5 参数控制寄存器(SFC_PARAM) ...........................................................125
10.2.6 片选控制寄存器(SFC_SOFTCS) .........................................................126
10.2.7 时序控制寄存器(SFC_TIMING) .........................................................126
10.3
接口时序 ............................................................................................................... 126
SPI 主控制器外部接口时序图 ............................................................................126
III

龙芯 1B 处理器用户手册目录

10.4

11
11.1
12
12.1
12.2
13
13.1
13.2
13.3

14
14.1
14.2

15
15.1
15.2
15.3

IV

SPI Flash 访问时序图 .......................................................................................127
SPI FLASH 控制器使用指南 .......................................................................................... 128
SPI 主控制器的读写操作....................................................................................128
硬件 SPI Flash 读..............................................................................................128
混合访问 SPI Flash 和 SPI 主控制器 ................................................................129
SPI1 ................................................................................................................... 130
SPI 主控制器结构 ........................................................................................................ 130
Conf and Interrupt .......................................................................................... 131
配置和中断控制器总体描述 ............................................................................... 131
中断控制器寄存器描述 ....................................................................................... 132
DMA ..................................................................................................................... 134
DMA 控制器结构描述 .................................................................................................... 134
DMA 控制器与 APB 设备的交互 .................................................................................... 134
DMA 控制器 ................................................................................................................ 134
13.3.1 ORDER_ADDR_IN ....................................................................................134
13.3.2 DMA_ORDER_ADDR ..................................................................................135
13.3.3 DMA_SADDR............................................................................................135
13.3.4 DMA_DADDR............................................................................................136
13.3.5 DMA_LENGTH ..........................................................................................136
13.3.6 DMA_STEP_LENGTH .................................................................................136
13.3.7 DMA_STEP_TIMES ..................................................................................137
13.3.8 DMA_CMD ...............................................................................................137
UART ................................................................................................................... 139
UART 控制器结构 .......................................................................................................... 139
UART 控制器寄存器 ...................................................................................................... 140
14.2.1 数据寄存器(DAT) .............................................................................141
14.2.2 中断使能寄存器(IER) ......................................................................141
14.2.3 中断标识寄存器(IIR) ......................................................................141
14.2.4 FIFO 控制寄存器(FCR) .....................................................................142
14.2.5 线路控制寄存器(LCR) ......................................................................142
14.2.6 MODEM 控制寄存器(MCR) ...................................................................143
14.2.7 线路状态寄存器(LSR) ......................................................................143
14.2.8 MODEM 状态寄存器 (MSR) .................................................................144
14.2.9 分频锁存器 ..........................................................................................144
CAN ..................................................................................................................... 146
概述....................................................................................................................... 146
CAN 控制器结构 ............................................................................................................ 146
标准模式 ............................................................................................................... 147
15.3.1 标准模式地址表 ..................................................................................147
15.3.2 控制寄存器(CR) ...............................................................................148
15.3.3 命令寄存器(CMR) ..........................................................................149
15.3.4 状态寄存器(SR) .............................................................................149
15.3.5 中断寄存器(IR) ...............................................................................149
15.3.6 验收代码寄存器(ACR)....................................................................150

龙芯 1B 处理器用户手册目录

15.4

15.5

16
16.1
16.2

17
17.1
17.2
17.3

V

15.3.7 验收屏蔽寄存器(AMR) ...................................................................150
15.3.8 发送缓冲区列表 ..................................................................................150
15.3.9 接收缓冲区列表 ..................................................................................150
扩展模式....................................................................................................................... 151
15.4.1 扩展模式地址表 ..................................................................................151
15.4.2 模式寄存器(MOD) ..........................................................................151
15.4.3 命令寄存器(CMR) ..........................................................................152
15.4.4 状态寄存器(SR) .............................................................................152
15.4.5 中断寄存器(IR) ...............................................................................152
15.4.6 中断使能寄存器(IER) .....................................................................153
15.4.7 仲裁丢失捕捉寄存器(IER) ..............................................................153
15.4.8 错误警报限制寄存器(EMLR).............................................................154
15.4.9 RX 错误计数寄存器(RXERR) ........................................................155
15.4.10 TX 错误计数寄存器(TXERR) .........................................................155
15.4.11 验收滤波器 ..........................................................................................155
15.4.12 RX 信息计数寄存器(RMCR) ..........................................................155
公共寄存器................................................................................................................... 155
15.5.1 总线定时寄存器 0(BTR0) ...............................................................155
15.5.2 总线定时寄存器 1(BTR1) ...............................................................156
15.5.3 输出控制寄存器(OCR) ...................................................................156
AC97.................................................................................................................. 157
AC97 结构描述 ............................................................................................................ 157
AC97 控制器寄存器 .................................................................................................... 157
16.2.1 CSR 寄存器 ........................................................................................158
16.2.2 OCC 寄存器 ........................................................................................158
16.2.3 ICC 寄存器 ..........................................................................................158
16.2.4 (输入输出)通道寄存器配置.............................................................159
16.2.5 Codec 寄存器访问命令 .......................................................................159
16.2.6 中断状态寄存器/中断掩膜寄存器 ........................................................160
16.2.7 中断状态/清除寄存器 ..........................................................................160
16.2.8 OC 中断清除寄存器 ............................................................................160
16.2.9 IC 中断清除寄存器 ..............................................................................160
16.2.10 CODEC WRITE 中断清除寄存器 .......................................................161
16.2.11 CODEC READ 中断清除寄存器 ........................................................161
I2C ..................................................................................................................... 162
概述............................................................................................................................... 162
I2C 控制器结构 ............................................................................................................ 162
I2C 控制器寄存器说明 ................................................................................................ 163
17.3.1 分频锁存器低字节寄存器(PRERlo)................................................163
17.3.2 分频锁存器高字节寄存器(PRERhi)..................................................163
17.3.3 控制寄存器(CTR) ...........................................................................164
17.3.4 发送数据寄存器(TXR) ....................................................................164
17.3.5 接受数据寄存器(RXR)....................................................................164
17.3.6 命令控制寄存器(CR) ......................................................................164

龙芯 1B 处理器用户手册目录

18
18.1
18.2
19
19.1
19.2

20
20.1
20.2

20.3
21
21.1
21.2

22
22.1
22.2
22.3
23
23.1
23.2
23.3
24
24.1
24.2
VI

17.3.7 状态寄存器(SR) .............................................................................165
PWM .................................................................................................................. 166
概述............................................................................................................................... 166
PWM 寄存器说明 ............................................................................................................ 166
RTC ................................................................................................................... 168
概述............................................................................................................................... 168
寄存器描述 ........................................................................................................... 168
19.2.1 寄存器地址列表 ..................................................................................168
19.2.2 SYS_TOYWRITE0 .............................................................................169
19.2.3 SYS_TOYWRITE1 .............................................................................169
19.2.4 SYS_TOYMATCH0/1/2 ......................................................................169
19.2.5 SYS_RTCCTRL ..................................................................................170
19.2.6 SYS_RTCMATCH0/1/2 ......................................................................171
NAND ................................................................................................................ 172
NAND 控制器结构描述 .............................................................................................. 172
NAND 控制器寄存器配置描述 .................................................................................. 172
20.2.1 NAND_CMD(地址:BFE7_8000) ..................................................172
20.2.2 ADDR_L(地址:BFE7_8004) ........................................................173
20.2.3 ADDR_H(地址:BFE7_8008)........................................................173
20.2.4 NAND_TIMING(地址:BFE7_800C) .............................................173
20.2.5 ID_L(地址:BFE7_8010) ...............................................................173
20.2.6 STATUS & ID_H(地址:BFE7_8014) ............................................173
20.2.7 NAND_PARAMETER(地址:BFE7_8018) .................................... 173
20.2.8 NAND_OP_NUM(地址:BFE7_801C) ..........................................173
20.2.9 CS_RDY_MAP(地址:BFE7_8020) ..............................................174
20.2.10 DMA_ADDRESS(地址:BFE7_8040) ...........................................174
NAND ADDR 说明 ...................................................................................................... 174
WATCHDOG ..................................................................................................... 177
概述............................................................................................................................... 177
WATCH DOG 寄存器描述........................................................................................... 177
21.2.1 WDT_EN 地址:(0XBFE5_C060) .................................................177
21.2.2 WDT_SET(地址:0XBFE5_C068) ................................................178
21.2.3 WDT_timer(地址:0XBFE5_C064) ...............................................178
Clock Management ........................................................................................... 179
CLOCK 模块结构描述 .................................................................................................. 179
CLOCK 配置描述 .......................................................................................................... 179
系统其它 CLOCK 描述 ................................................................................................. 180
GPIO and MUX ................................................................................................. 181
GPIO 结构描述 ............................................................................................................ 181
GPIO 寄存器描述 ........................................................................................................ 184
MUX 寄存器描述 ........................................................................................................ 185
AC/DC ............................................................................................................... 187
时钟系统 ............................................................................................................... 187
系统复位....................................................................................................................... 187

龙芯 1B 处理器用户手册目录
24.3
24.4

VII

推荐的工作条件 ........................................................................................................... 187
绝对最大额定值 ........................................................................................................... 188

龙芯 1B 处理器用户手册 图目录

图 目 录
图 1-1 1B 芯片结构图.................................................................................................. 2
图 4-1 TLB 表项内容................................................................................................. 33
图 4-2 Index 寄存器................................................................................................ 36
图 4-3 Random 寄存器............................................................................................... 37
图 4-4 EntryLo0 和 EntryLo1 寄存器..................................................................... 37
图 4-5 Context 寄存器............................................................................................. 38
图 4-6 PageMask 寄存器........................................................................................... 38
图 4-7 Wired 寄存器界限......................................................................................... 39
图 4-8 Wired 寄存器................................................................................................. 40
图 4-9 HWREna 寄存器............................................................................................... 40
图 4-10 BadVAddr 寄存器......................................................................................... 40
图 4-11 Count 寄存器和 Compare 寄存器............................................................... 41
图 4-12 EntryHi 寄存器........................................................................................... 41
图 4-13 Status 寄存器............................................................................................. 42
图 4-14 IntCtl 寄存器............................................................................................. 43
图 4-15SRSCtl 寄存器............................................................................................... 44
图 4-16 SRSMap 寄存器............................................................................................. 44
图 4-17 Cause 寄存器............................................................................................... 45
图 4-18 EPC 寄存器................................................................................................... 46
图 4-19 Processor Revision Identifier 寄存器........................................................... 46
图 4-20 Config 寄存器............................................................................................. 47
图 4-21 Config 寄存器............................................................................................. 48
图 4-22 Config 寄存器............................................................................................. 48
图 4-23 Config 寄存器............................................................................................. 49
图 4-24 Config 寄存器............................................................................................. 49
图 4-25 WatchLo 寄存器........................................................................................... 50
图 4-26 WatchHi 寄存器........................................................................................... 50
图 4-27 控制寄存器性能计数寄存器...................................................................... 51
图 4-28 性能计数器寄存器...................................................................................... 51
图 4-29 TagLo 寄存器(P-Cache)............................................................................ 52
图 4-30 ErrorEPC 寄存器......................................................................................... 53
图 4-31 EJTAG 调试连接示意图............................................................................... 54
图 4-32 DCR 寄存器格式........................................................................................... 55
VIII

龙芯 1B 处理器用户手册 图目录

图 4-33 硬件指令、数据断点概况.......................................................................... 56
图 4-34 IBS 寄存器格式........................................................................................... 57
图 4-35 IBAn 寄存器格式......................................................................................... 58
图 4-36 IBMn 寄存器格式......................................................................................... 58
图 4-37 IBCn 寄存器格式......................................................................................... 58
图 4-38 DBS 寄存器格式........................................................................................... 59
图 4-39 DBAn 寄存器格式......................................................................................... 60
图 4-40 DBMn 寄存器格式......................................................................................... 60
图 4-41 DBCn 寄存器格式......................................................................................... 60
图 4-42 TAP 主要部分 ............................................................................................... 64
图 4-43 ALL 指令示意图 .......................................................................................... 65
图 4-44

Fastdata 指令示意图 ................................................................................. 65

图 4-45 IDCODE 寄存器格式..................................................................................... 66
图 4-46 IMPCADE 寄存器示意图............................................................................... 67
图 4-47 数据寄存器格式.......................................................................................... 68
图 4-48 地址寄存器格式.......................................................................................... 69
图 4-49 ECR 格式....................................................................................................... 69
图 9-1

USB 主机控制器模块图 ......................................................................... 114

图 9-2

USB 主机控制器细节模块图(带 EHCI 控制器细节) ........................ 115

图 9-3 接收时序图(16 bit UTMI 接口,偶数个数据) ..................................... 121
图 9-4

接收时序图(16 bit UTMI 接口,奇数个数据) ................................... 121

图 9-5

传输时序图(16 bit UTMI 接口,偶数个数据) ................................... 122

图 9-6

传输时序图(16bit UTMI 接口,奇数个数据) .................................... 122

图 10-1

SPI 主控制器结构 .................................................................................. 124

图 10-2 SPI 主控制器时序图 .................................................................................. 127
图 16-1

AC97 应用系统 ........................................................................................ 157

图 21-1

看门狗的结构图 ...................................................................................... 177

IX

龙芯 1B 处理器用户手册 表目录

表 目 录
表 4-1 CPU 指令集:访存指令................................................................................. 27
表 4-2 CPU 指令集:算术指令 (ALU 立即数)...................................................... 28
表 4-3 CPU 指令集:算术指令 (2 操作数)........................................................... 28
表 4-4 CPU 指令集:算术指令(3 操作数, R-型).................................................. 28
表 4-5 CPU 指令集:乘法和除法指令..................................................................... 29
表 4-6 CPU 指令集:跳转和分支指令..................................................................... 29
表 4-7 CPU 指令集:移位指令................................................................................. 30
表 4-8 CPU 指令集:特殊指令................................................................................. 30
表 4-9 CPU 指令集:异常指令................................................................................. 30
表 4-10 CPU 指令集:CP0 指令................................................................................ 31
表 4-11 GS232 的 CP0 指令....................................................................................... 31
表 4-12 GS232IP 地址空间的分配........................................................................... 32
表 4-13 例外编码及寄存器修改.............................................................................. 33
表 4-14 例外入口地址.............................................................................................. 34
表 4-15 GS232IP 实现的 CP0 寄存器...................................................................... 35
表 4-16 Index 寄存器各域描述............................................................................... 36
表 4-17 Random 寄存器各域..................................................................................... 37
表 4-18 EntryLo 寄存器域....................................................................................... 37
表 4-19 Context 寄存器域....................................................................................... 38
表 4-20 不同页大小的掩码(Mask)值.................................................................. 39
表 4-21 Wired 寄存器域........................................................................................... 40
表 4-22 HWREna 寄存器域......................................................................................... 40
表 4-23 EntryHi 寄存器域....................................................................................... 41
表 4-24 Status 寄存器域........................................................................................ 42
表 4-25 IntCtl 寄存器域......................................................................................... 43
表 4-26 SRSCtl 寄存器域......................................................................................... 44
表 4-27Cause 寄存器域............................................................................................. 45
表 4-28 Cause 寄存器的 ExcCode 域....................................................................... 45
表 4-29 PRId 寄存器域............................................................................................ 46
表 4-30 Config 寄存器域........................................................................................ 47
表 4-31 Config 寄存器域........................................................................................ 48
表 4-32 Config 寄存器域........................................................................................ 48
表 4-33 Config 寄存器域........................................................................................ 49
X

龙芯 1B 处理器用户手册 表目录

表 4-34 Config 寄存器域........................................................................................ 49
表 4-35 WatchLo 寄存器域....................................................................................... 50
表 4-36 WatchHi 寄存器域....................................................................................... 50
表 4-37 控制域格式................................................................................................... 51
表 4-38 计数使能位定义.......................................................................................... 51
表 4-39 计数器 0/1 事件.......................................................................................... 51
表 4-40 Cache Tag 寄存器域................................................................................... 52
表 4-41 CP0 指令....................................................................................................... 53
表 4-42 DCR 寄存器域............................................................................................... 55
表 4-43 硬件断点寄存器.......................................................................................... 56
表 4-44 IBS 域描述................................................................................................... 57
表 4-45 IBCn 域描述................................................................................................. 58
表 4-46 DBS 域描述................................................................................................... 59
表 4-47 DBCn 域描述................................................................................................. 60
表 4-48 调试例外优先级表...................................................................................... 61
表 4-49 例外屏蔽表.................................................................................................. 62
表 4-50 Dseg 划分..................................................................................................... 63
表 4-51 Dmseg 的访问情况....................................................................................... 63
表 4-52 Drseg 的访问情况....................................................................................... 63
表 4-53 调试例外中断入口地址.............................................................................. 64
表 4-54 EJTAG 指令................................................................................................... 64
表 4-55 TAP 数据寄存器........................................................................................... 66
表 4-56 IDCODE 寄存器说明..................................................................................... 66
表 4-57 IMPCODE 寄存器说明................................................................................... 67
表 4-58 Psz 位的含义............................................................................................... 68
表 4-59 ECR 域描述................................................................................................... 69
表 4-60 Sample 寄存器说明..................................................................................... 70
表 18-18-1 四路控制器描述 ................................................................................... 166
表 18-18-2

控制寄存器描述 .................................................................................. 166

表 18-18-3

主计数器设置 ..................................................................................... 166

表 18-18-4

高脉冲计数器设置 ............................................................................. 166

表 18-18-5 低脉冲计数器设置 ............................................................................... 167
表 18-18-6

控制寄存器设置 ................................................................................. 167

表 24-1 1B 电源域.................................................................................................... 187

XI

龙芯 1B 处理器用户手册 表目录

表 24-2 1B 上电配置引脚汇总................................................................................ 187
表 24-3 推荐的工作条件 ......................................................................................... 187
表 24-4 绝对最大额定值 ......................................................................................... 188

XII

龙芯 1B 处理器用户手册

1 概述
龙芯 1B 芯片是基于 GS232 处理器核的片上系统,具有高性价比,可广泛应用于工业控
制、家庭网关、信息家电、医疗器械和安全应用等领域。1B 采用 SMIC0.13 微米工艺实现,
采用 Wire Bond BGA256 封装。

•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•

1B 芯片具有以下关键特性:
集成一个 GS232 双发射龙芯处理器核,指令和数据 L1 Cache 各 8KB
集成一路 LCD 控制器,最大分辨率可支持到 1920*1080@60Hz/16bit
集成 2 个 10M/100M/1000M 自适应 GMAC
集成 1 个 16/32 位 133MHz DDR2 控制器
集成 1 个 USB 2.0 接口,兼容 EHCI 和 OHCI
集成 1 个 8 位 NAND FLASH 控制器,最大支持 32GB
集成中断控制器,支持灵活的中断设置
集成 2 个 SPI 控制器,支持系统启动
集成 AC97 控制器
集成 1 个全功能串口、1 个四线串口和 10 个两线串口
集成 3 路 I2C 控制器,兼容 SMBUS
集成 2 个 CAN 总线控制器
集成 61 个 GPIO 端口
集成 1 个 RTC 接口
集成 4 个 PWM 控制器
集成看门狗电路

1.1 体系结构框图
1B 芯片内部顶层结构由 AXI XBAR 交叉开关互连,其中 GS232、DC、AXI_MUX 作为主设
备通过 3X3 交叉开关连接到系统; DC、AXI_MUX 和 DDR2 作为从设备通过 3X3 交叉开关连接
到系统。在 AXI_MUX 内部实现了多个 AHB 和 APB 模块到顶层 AXI 交叉开关的连接,其中
DMA_MUX、GMAC0、GMAC1、USB 被 AXI_MUX 选择作为主设备访问交叉开关;AXI_MUX(包括
confreg、SPI0、SPI1)、 AXI2APB、GMAC0、GMAC1、USB 等作为从设备被来自 AXI_MUX 的
主设备访问。在 AXI2APB 内部实现了系统对内部 APB 接口设备的访问,这些设备包括 Watch
Dog、RTC、PWM、I2C、CAN、NAND、UART 等。

1

龙芯 1B 处理器用户手册

图 1-1 1B 芯片结构图

1.2 芯片主要功能
1B 芯片支持以下功能:

1.2.1 GS232 CPU
龙芯 232 核是一款实现 MIPS32 兼容且支持 EJTAG 调试的双发射处理器,通过采用转移
预测、寄存器重命名、乱序发射、路预测的指令 CACHE、非阻塞的数据 CACHE、写合并收集
等技术来提高流水线的效率。
•
双发射五级流水、乱序发射、乱序执行
•
8KB 指令 Cache+8KB 数据 Cache,4 路组相连,指令 CACHE 支持路预测
•
6 项 BRQ、16 项的 QUEUE
•
动态转移预测、地址返回栈
•
32 项 JTLB,4 项 ITLB 、8 项 DTLB
•
两个定点 ALU 部件。
•
支持非阻塞的 Cache 访问技术,4 项 load 队列、2 项 store 队列、3 项 miss 队列,最
2

龙芯 1B 处理器用户手册

•
•
•
•
•

多容忍 5 条 store 指令 Cache 不命中和 4 条 load 指令 Cache 不命中。
支持 cached store 指令的写合并和 uncache 写加速技术
支持 cache lock 技术和预取指令
支持流水线暂停模式
支持向量中断,可配置支持快速中断响应,最多 8 个时钟周期进入中断处理程序
支持 EJTAG 调试

1.2.2 DDR2
•
•
•
•
•
•
•
•

32 位 DDR2 控制器
遵守 DDR2 DDR 的行业标准(JESD79-2B)
一共含有 18 位的地址总线(即:15 位的行列地址总线和 3 位的逻辑 Bank 总线)。
接口上命令、读写数据全流水操作
内存命令合并、排序提高整体带宽
配置寄存器读写端口,可以修改内存设备的基本参数
内建动态延迟补偿电路(DCC),用于数据的可靠发送和接收
支持 33-133MHZ 工作频率

1.2.3 LCD Controller
•
•
•
•
•
•
•

屏幕大小可达 1920*1080
硬件光标
伽玛校正
最高像素时钟 172MHz
支持线性显示缓冲
上电序列控制
支持 16 位/24 位 LCD

1.2.4 USB2.0
•
•
•
•

1 个独立的 USB2.0 的 HOST ports 及 PHY
兼容 USB1.1 和 USB2.0
内部 EHCI 控制和实现高速传输可达 480Mbps
内部 OHCI 控制和实现全速和低速传输 12Mbps 和 1.5Mbps

1.2.5 AC97
•
•
•
•

3

支持 16,18 和 20 位采样精度,支持可变速率
最高达 48KHz
2 频道立体声输出
支持麦克风输入

龙芯 1B 处理器用户手册

1.2.6 GMAC
•
•
•
•
•
•

两路 10/100/1000Mbps 自适应以太网控制器
双网卡均兼容 IEEE 802.3
对外部 PHY 实现 RGMII 和 MII 接口
半双工/全双工自适应
半双工时,支持碰撞检测与重发(CSMA/CD)协议
支持 CRC 校验码的自动生成与校验

1.2.7 SPI
•
•
•
•

支持 2 路 SPI 接口
支持系统启动
极性和相位可编程的串行时钟
可在等待模式下对 SPI 进行控制

1.2.8 UART
•
•
•
•
•
•
•

集成 1 个全功能串口、1 个四线串口和 10 个两线串口
在寄存器与功能上兼容 NS16550A
全双工异步数据接收/发送
可编程的数据格式
16 位可编程时钟计数器
支持接收超时检测
带仲裁的多中断系统

1.2.9 I2C
•
•
•
•
•
•
•
•
•
•
•

兼容 SMBUS(100Kbps)
与 PHILIPS I2C 标准相兼容
履行双向同步串行协议
只实现主设备操作
能够支持多主设备的总线
总线的时钟频率可编程
可以产生开始/停止/应答等操作
能够对总线的状态进行探测
支持低速和快速模式
支持 7 位寻址和 10 位寻址
支持时钟延伸和等待状态

1.2.10 PWM
•
•

4

提供 4 路可配置 PWM 输出,
数据宽度 32 位

龙芯 1B 处理器用户手册
•
•

定时器功能
计数器功能

1.2.11 CAN
•
•
•

支持 2 个独立 CAN 总线接口
每路 CAN 接口均支持 CAN2.0A/B 协议
支持 CAN 协议扩展

1.2.12 RTC
•
•
•

计时精确到 0.1 秒
可产生 3 个计时中断
支持定时开关机功能

1.2.13 GPIO
•
•

61 位 GPIO
支持位操作

1.2.14






NAND

支持最大单颗 NAND FLASH 为 32GB
共 4 个片选 CS
数据宽度 8bit
支持 SLC
支持页大小 2048Byte

1.2.15 INT controller
•
•
•
•

支持软件设置中断
支持电平与边沿触发
支持中断屏蔽与使能
支持固定中断优先级

1.2.16 Watchdog
•
•

16 比特计数器及初始化寄存器
低功耗模式暂停功能

1.2.17 功耗
•

5

典型工作状态 0.3-0.5W

龙芯 1B 处理器用户手册

1.2.18 其它
•

测试访问口控制器 JTAG

1.3 质量等级
龙芯 1B 芯片有工业级和商业级两种,其主要特征如下:
配置

商业级

工业级

工作温度

0℃~70℃

-40℃~85℃

是否筛选

—

√

是否质量一致性试验

—

√

质量一致性试验标准

—

GB 12750-2006
GB 4937-1995
GJB 548B-2005

龙芯 1B 芯片为验证是否符合国标以及其他标准的相关质量要求,依据国家标准,制定
了器件专用的详细规范,并依据详细规范,进行了鉴定检验试验。鉴定检验试验中包含器件
详细规范中规定的各种高温、高湿、老化寿命以及 ESD 等一系列可靠性试验。关键试验项
目见下表,其余所有试验项目详见器件的详细规范。
分组

试验项目

B5

a)

温度快速变化

b)

外部目检

c)

方法
GB/T 4937 第 III 篇 1.1
GB/T 4589.1

强加速稳态湿热

a

条件

LTPD(c=0)或样品
数(允许失效数)

10 次循环

4.3.1.1

GB/T 4937 第 III 篇 5C

130℃/85%RH, 24h

10

或 85℃/85%RH, 24h
d)
C2

C5

A2、A3 分组

电测试

静电放电敏感度(ESD)

ESDA/JEDEC JS-001-2012

2000V

a)温度快速变化

GB/T 4937 第 III 篇 1.1

500 次循环

GB/T 4589.1

b)外部目检

a

c)强加速稳态湿热

a

4.3.1.1

GB/T 4937 第 III 篇
5C(或 5B)

C6
C7

GB/T 4937 第 III 篇 8

24h

a)加速稳态湿热

GB/T 4937 第 III 篇 5B

85℃/85%RH,500h

电耐久性(寿命)

A2、A3 分组
附录 A

10

或 85℃/85%RH, 24h

盐雾

b)电测试

C8
a

130℃/85%RH,24h

18(0)

Ta=85℃,1000h

50
15
5

工业级按照 130℃标准试验,商业级按照 85℃标准试验。

龙芯 1B 芯片和多数半导体器件一样,其失效率符合浴盆曲线模型。龙芯 1B 工业级芯
片为了保证能够更长期、稳定、可靠地工作,并且能够适应更苛刻的环境温度要求,对芯
片进行了可靠性筛选,以剔除早期失效的芯片。这种可靠性筛选是 100%的试验,通过筛
选的为符合工业级要求的芯片。
龙芯 1B 筛选试验主要内容如下:
7

龙芯 1B 处理器用户手册
筛选项目

方法和条件(概要)

1、目检

标识清晰,无沾污,焊球无氧化,芯片完好

100%

2、稳定性烘培

125℃,24h

100%

3、温度快速变化

最高和最低储存温度下,10次循环

100%

4、编序列号

8

要求

100%

5、终点电测试

三温,记录所有测试数据

100%

6、外部目检

标识清晰,无沾污,焊球无氧化,芯片完好

100%

龙芯 1B 处理器用户手册

2 芯片引脚定义
2.1 1B 引脚分布图
1B 采用 BGA256 封装形式,封装尺寸入下图所示:

芯片的引脚 PAD 的排布列常用信号延迟如下表所示:
表 2- 1 芯片引脚 PAD 的排布列表

9

Location

Name

Delay(um)

K15

AC97_BIT_CLK

J16

AC97_DATA_I

J15

AC97_DATA_O

K14

AC97_RESET

K13

AC97_SYNC

T12

CAN0_RX

R12

CAN0_TX

P12

CAN1_RX

P13

CAN1_TX

B01

DDR2_A00

A01

DDR2_A01

D02

DDR2_A02

C02

DDR2_A03

B02

DDR2_A04

A02

DDR2_A05

D03

DDR2_A06

7630
8471
8426
7351
6592
9501
8338
7521
8717
12623
13928
9792
11318
11496
12195
9037

龙芯 1B 处理器用户手册

10

C03

DDR2_A07

B03

DDR2_A08

A03

DDR2_A09

D04

DDR2_A10

C04

DDR2_A11

B04

DDR2_A12

A04

DDR2_A13

D05

DDR2_A14

C07

DDR2_BA0

B07

DDR2_BA1

A07

DDR2_BA2

C08

DDR2_CASN

C05

DDR2_CKE0

A05

DDR2_CKN0

B05

DDR2_CKP0

H01

DDR2_DQ00

E01

DDR2_DQ01

J02

DDR2_DQ02

G02

DDR2_DQ03

F01

DDR2_DQ04

J01

DDR2_DQ05

C01

DDR2_DQ06

H02

DDR2_DQ07

G03

DDR2_DQ08

E02

DDR2_DQ09

H04

DDR2_DQ10

E03

DDR2_DQ11

E04

DDR2_DQ12

H03

DDR2_DQ13

F04

DDR2_DQ14

G04

DDR2_DQ15

B10

DDR2_DQ16

A12

DDR2_DQ17

A09

DDR2_DQ18

B11

DDR2_DQ19

B12

DDR2_DQ20

B09

DDR2_DQ21

B13

DDR2_DQ22

A10

DDR2_DQ23

D10

DDR2_DQ24

C12

DDR2_DQ25

C09

DDR2_DQ26

9723
10375
11434
8109
8373
9582
9438
6126
6741
7790
8917
6745
8537
9282
9209
10204
12521
8263
9832
11482
9568
13879
10212
8558
10758
6724
10387
10798
6836
6311
3884
8866
12093
9068
10432
10116
7961
10991
9302
6637
9230
6748

龙芯 1B 处理器用户手册

11

D13

DDR2_DQ27

C13

DDR2_DQ28

D09

DDR2_DQ29

D12

DDR2_DQ30

C10

DDR2_DQ31

D01

DDR2_DQM0

F03

DDR2_DQM1

A13

DDR2_DQM2

C11

DDR2_DQM3

G01

DDR2_DQS0

F02

DDR2_DQS1

A11

DDR2_DQS2

D11

DDR2_DQS3

D06

DDR2_GATEI0

D07

DDR2_GATEI1

C06

DDR2_GATEO0

B06

DDR2_GATEO1

A06

DDR2_ODT0

D08

DDR2_RASN

A08

DDR2_SCSN0

B08

DDR2_WEN

L16

EJTAG_TCK

L15

EJTAG_TDI

K16

EJTAG_TDO

L14

EJTAG_TMS

L13

EJTAG_TRST

N11

GMAC0_MDCK

N12

GMAC0_MDIO

R08

GMAC0_RX_CLK_I

N09

GMAC0_RX_CTL_I

P09

GMAC0_RX0

N10

GMAC0_RX1

P10

GMAC0_RX2

P11

GMAC0_RX3

T08

GMAC0_TX_CLK_I

R11

GMAC0_TX_CLK_O

T11

GMAC0_TX_CTL_O

R10

GMAC0_TX0

T10

GMAC0_TX1

R09

GMAC0_TX2

T09

GMAC0_TX3

M04

GMAC1_RX_CLK_I

9679
9341
7575
7419
6687
12838
8257
11310
6869
10939
8533
10187
7020
6628
3705
6888
8649
8994
5651
8745
7745
8933
7868
8685
7823
7524
6878
8206
6849
7076
6973
7360
9231
6844
8736
9410
7991
8973
9242
9905
10857
7499

龙芯 1B 处理器用户手册

12

D16

GMAC1_TX_CLK_I

C16

GMAC1_TX_CLK_O

C15

GMAC1_TX_CTL_O

G13

I2C_SCL

G14

I2C_SDA

T06

LCD_CLK

N05

LCD_DAT_B0

N04

LCD_DAT_B1

P03

LCD_DAT_B2

P04

LCD_DAT_B3

P05

LCD_DAT_B4

P01

LCD_DAT_G0

P02

LCD_DAT_G1

R01

LCD_DAT_G2

T01

LCD_DAT_G3

R02

LCD_DAT_G4

T02

LCD_DAT_G5

R03

LCD_DAT_R0

T03

LCD_DAT_R1

R04

LCD_DAT_R2

T04

LCD_DAT_R3

R05

LCD_DAT_R4

P06

LCD_EN

T05

LCD_HSYNC

R06

LCD_VSYNC

N13

NAND_ALE

M15

NAND_CE

N14

NAND_CLE

T16

NAND_D0

R16

NAND_D1

R15

NAND_D2

P14

NAND_D3

P15

NAND_D4

P16

NAND_D5

N16

NAND_D6

N15

NAND_D7

M13

NAND_RD

T15

NAND_RDY

M14

NAND_WR

B16

PLL_CPU_AVDD33

B15

PLL_CPU_AVSS33

A16

PLL_CPU_DVDD12

10743
11938
10929
9062
7886
9050
7837
9278
9723
9653
7609
11258
10460
13011
12938
11774
11960
10699
13006
9332
9489
8482
7889
9617
8085
9117
9198
8809
11717
11235
10371
9032
9769
10210
9839
8909
7573
10896
7961
17840
18831
12759

龙芯 1B 处理器用户手册

13

A15

PLL_CPU_DVSS12

R13

PWM0

T13

PWM1

T14

PWM2

R14

PWM3

A14

RTC_CLK_I

B14

RTC_CLK_O

E14

RTC_VDD33

F13

RTC_VDD33

C14

RTC_VR_CEXT

D14

RTC_VR_VOUT

E13

RTC_VSS33

F14

RTC_VSS33

H16

SPI0_CLK

H14

SPI0_CS0

J14

SPI0_CS1

J13

SPI0_CS2

H13

SPI0_CS3

G16

SPI0_MISO

H15

SPI0_MOSI

P08

SYS_RSTN

N08

TEST_CFG_MODEN

M16

TEST_JTAG_SEL

N01

UART0_CTS

L03

UART0_DCD

N03

UART0_DSR

M01

UART0_DTR

L04

UART0_RI

N02

UART0_RTS

M03

UART0_RX

M02

UART0_TX

D15

UART1_CTS

E15

UART1_RTS

G15

UART1_RX

F15

UART1_TX

K12

UART2_RX

K11

UART2_TX

J11

UART3_RX

J12

UART3_TX

H12

UART4_RX

H11

UART4_TX

G11

UART5_RX

12807
9034
9503
10205
9905
11584
10493
33449
12177
11997
23636
9620
7708
6530
6324
7239
9904
8645

9660
6806
8056
9219
6301
8689
7353
8201
10124
9692
7806
8614
10114
7963
8783
7119
7246
6701
9284

龙芯 1B 处理器用户手册

14

G12

UART5_TX

L07

USB_AVDD33

M06

USB_AVDD33

L06

USB_AVSS33

M07

USB_AVSS33

L05

USB_VDD1V2

M05

USB_VSS

N06

USB0_DM

N07

USB0_DP

P07

USB0_REXT

R07

USB0_XI

T07

USB0_XO

G05

VDD1V2

H06

VDD1V2

J03

VDD1V2

J05

VDD1V2

J07

VDD1V2

K02

VDD1V2

K04

VDD1V2

K06

VDD1V2

L01

VDD1V2

E07

VDD1V8

E09

VDD1V8

E11

VDD1V8

F06

VDD1V8

F08

VDD1V8

F10

VDD1V8

F12

VDD1V8

G07

VDD1V8

G09

VDD3V3

H08

VDD3V3

H10

VDD3V3

J09

VDD3V3

K08

VDD3V3

K10

VDD3V3

L09

VDD3V3

L11

VDD3V3

M08

VDD3V3

M10

VDD3V3

M12

VDD3V3

E05

VREF_0V9

E12

VREF_0V9

6569

龙芯 1B 处理器用户手册

15

E06

VSS

E08

VSS

E10

VSS

F05

VSS

F07

VSS

F09

VSS

F11

VSS

G06

VSS

G08

VSS

G10

VSS

H05

VSS

H07

VSS

H09

VSS

J04

VSS

J06

VSS

J08

VSS

J10

VSS

K01

VSS

K03

VSS

K05

VSS

K07

VSS

K09

VSS

L02

VSS

L08

VSS

L10

VSS

L12

VSS

M09

VSS

M11

VSS

E16

XTALI

F16

XTALO

10899
10414

2

DDR2_A05

DDR2_A04

DDR2_A03

DDR2_A02

DDR2_DQ09

DDR2_DQS1

DDR2_DQ03

DDR2_DQ07

DDR2_DQ02

VDD1V2

VSS

UART0_TX

UART0_RTS

LCD_DAT_G1

LCD_DAT_G4

LCD_DAT_G5

2

1

DDR2_A01

DDR2_A00

DDR2_DQ06

DDR2_DQM0

DDR2_DQ01

DDR2_DQ04

DDR2_DQS0

DDR2_DQ00

DDR2_DQ05

VSS

VDD1V2

UART0_DTR

UART0_CTS

LCD_DAT_G0

LCD_DAT_G2

LCD_DAT_G3

1

A

16

B

C

D

E

F

G

H

J

K

L

M

N

P

R

T

3

LCD_DAT_R1

LCD_DAT_R0

LCD_DAT_B2

UART0_DSR

UART0_RX

UART0_DCD

VSS

VDD1V2

DDR2_DQ13

DDR2_DQ08

DDR2_DQM1

DDR2_DQ11

DDR2_A06

DDR2_A07

DDR2_A08

DDR2_A09

3

4

LCD_DAT_R3

LCD_DAT_R2

LCD_DAT_B3

LCD_DAT_B1

GMAC1_RX_CLK_I

UART0_RI

VDD1V2

VSS

DDR2_DQ10

DDR2_DQ15

DDR2_DQ14

DDR2_DQ12

DDR2_A10

DDR2_A11

DDR2_A12

DDR2_A13

4

5

LCD_HSYNC

LCD_DAT_R4

LCD_DAT_B4

LCD_DAT_B0

USB_VSS

USB_VDD1V2

VSS

VDD1V2

VSS

VDD1V2

VSS

VREF_0V9

DDR2_A14

DDR2_CKE0

DDR2_CKP0

DDR2_CKN0

5

6

LCD_CLK

LCD_VSYNC

LCD_EN

USB0_DM

USB_AVDD33

USB_AVSS33

VDD1V2

VSS

VDD1V2

VSS

VDD1V8

VSS

DDR2_GATEI0

DDR2_GATEO0

DDR2_GATEO1

DDR2_ODT0

6

7

USB0_XO

USB0_XI

USB0_REXT

USB0_DP

USB_AVSS33

USB_AVDD33

VSS

VDD1V2

VSS

VDD1V8

VSS

VDD1V8

DDR2_GATEI1

DDR2_BA0

DDR2_BA1

DDR2_BA2

7

8

GMAC0_TX_CLK_I

GMAC0_RX_CLK_I

SYS_RSTN

TEST_CFG_MODEN

VDD3V3

VSS

VDD3V3

VSS

VDD3V3

VSS

VDD1V8

VSS

DDR2_RASN

DDR2_CASN

DDR2_WEN

DDR2_SCSN0

8

9

GMAC0_TX3

GMAC0_TX2

GMAC0_RX0

GMAC0_RX_CTL_I

VSS

VDD3V3

VSS

VDD3V3

VSS

VDD3V3

VSS

VDD1V8

DDR2_DQ29

DDR2_DQ26

DDR2_DQ21

DDR2_DQ18

9

10

GMAC0_TX1

GMAC0_TX0

GMAC0_RX2

GMAC0_RX1

VDD3V3

VSS

VDD3V3

VSS

VDD3V3

VSS

VDD1V8

VSS

DDR2_DQ24

DDR2_DQ31

DDR2_DQ16

DDR2_DQ23

10

11

GMAC0_TX_CTL_O

GMAC0_TX_CLK_O

GMAC0_RX3

GMAC0_MDCK

VSS

VDD3V3

UART2_TX

UART3_RX

UART4_TX

UART5_RX

VSS

VDD1V8

DDR2_DQS3

DDR2_DQM3

DDR2_DQ19

DDR2_DQS2

11

12

CAN0_RX

CAN0_TX

CAN1_RX

GMAC0_MDIO

VDD3V3

VSS

UART2_RX

UART3_TX

UART4_RX

UART5_TX

VDD1V8

VREF_0V9

DDR2_DQ30

DDR2_DQ25

DDR2_DQ20

DDR2_DQ17

12

13

PWM1

PWM0

CAN1_TX

NAND_ALE

NAND_RD

EJTAG_TRST

AC97_SYNC

SPI0_CS2

SPI0_CS3

I2C_SCL

RTC_VDD33

RTC_VSS33

DDR2_DQ27

DDR2_DQ28

DDR2_DQ22

DDR2_DQM2

13

14

PWM2

PWM3

NAND_D3

NAND_CLE

NAND_WR

EJTAG_TMS

AC97_RESET

SPI0_CS1

SPI0_CS0

I2C_SDA

RTC_VSS33

RTC_VDD33

RTC_VR_VOUT

RTC_VR_CEXT

RTC_CLK_O

RTC_CLK_I

14

15

NAND_RDY

NAND_D2

NAND_D4

NAND_D7

NAND_CE

EJTAG_TDI

AC97_BIT_CLK

AC97_DATA_O

SPI0_MOSI

UART1_RX

UART1_TX

UART1_RTS

UART1_CTS

GMAC1_TX_CTL_O

PLL_CPU_AVSS33

PLL_CPU_DVSS12

15

16

NAND_D0

NAND_D1

NAND_D5

NAND_D6

TEST_JTAG_SEL

EJTAG_TCK

EJTAG_TDO

AC97_DATA_I

SPI0_CLK

SPI0_MISO

XTALO

XTALI

GMAC1_TX_CLK_I

GMAC1_TX_CLK_O

PLL_CPU_AVDD33

PLL_CPU_DVDD12

16

龙芯 1B 处理器用户手册

2.2 封装顶视图

龙芯 1B 处理器用户手册

2.3 系统相关引脚定义(6)
表 2-1 系统时钟引脚定义
信号名称

No.

方向

上下拉

1
XTALI

I

2
3
4
5
6

XTALO
RTC_CKI
RTC_CKO
TEST_CFG_MODEN
SYS_RSTN

描述

外部无源晶体时钟输入;
外部有源晶振悬空连接
外部无源晶体时钟回送;
外部有源晶振输入

O
I
O
I
I

RTC 时钟晶体输入
RTC 时钟晶体回送
测试模块
系统复位

电压域
core
core
RTC
RTC
core
core

2.4 LCD 引脚定义(20)
表 2-2 LCD 引脚定义
No.

信号名称

方向

上下拉

描述

电压域

1

LCD_CLK

O

LCD 时钟

core

2

LCD_VSYNC

O

LCD 列同步

core

3

LCD_HSYNC

O

LCD 行同步

core

4

LCD_EN

O

LCD 可视使能信号

core

5

LCD_DAT_B0

O

LCD 蓝色数据信号 0

core

6

LCD_DAT_B1

O

LCD 蓝色数据信号 1

core

7

LCD_DAT_B2

O

LCD 蓝色数据信号 2

core

8

LCD_DAT_B3

O

LCD 蓝色数据信号 3

core

9

LCD_DAT_B4

O

LCD 蓝色数据信号 4

core

10

LCD_DAT_G0

O

LCD 绿色数据信号 0

core

11

LCD_DAT_G1

O

LCD 绿色数据信号 1

core

12

LCD_DAT_G2

O

LCD 绿色数据信号 2

core

13

LCD_DAT_G3

O

LCD 绿色数据信号 3

core

14

LCD_DAT_G4

O

LCD 绿色数据信号 4

core

15

LCD_DAT_G5

O

LCD 绿色数据信号 5

core

16

LCD_DAT_R0

O

LCD 红色数据信号 0

core

17

LCD_DAT_R1

O

LCD 红色数据信号 1

core

18

LCD_DAT_R2

O

LCD 红色数据信号 2

core

19

LCD_DAT_R3

O

LCD 红色数据信号 3

core

20

LCD_DAT_R4

O

LCD 红色数据信号 4

core

2.5 PLL 引脚定义(4)
表 2-3 PLL 引脚定义
No.

17

信号名称

方向

上下拉

描述

1

PLL_DVDD12

I

1.2 伏数字电源

2

PLL_DVSS12

I

1.2 伏数字地

电压域

龙芯 1B 处理器用户手册
3

PLL_AVDD33

I

3.3 伏模拟电源

4

PLL_AVSS33

I

3.3 伏模拟地

2.6 VR 引脚定义(6)
表 2-4 VR 引脚定义
No.

信号名称

方向

上下拉

描述

电压域

1

VR_VDDD-0

I

电源

VR_VDDD-0

2

VR_VDDA-0

I

电源

VR_VDDA-0

3

VR_VDDA-1

I

电源

VR_VDDA-1

4

VR_VDDD-1

I

电源

VR_VDDD-1

5

VR_VOUT

O

外接 10nf 电容

6

VR_TOCAP

O

外接 4.7uf 电容

2.7 DDR2 引脚定义(71)
表 2-5 DDR 引脚定义
No.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
18

信号名称
DDR2_DQ00
DDR2_DQ01
DDR2_DQ02
DDR2_DQ03
DDR2_DQ04
DDR2_DQ05
DDR2_DQ06
DDR2_DQ07
DDR2_DQ08
DDR2_DQ09
DDR2_DQ10
DDR2_DQ11
DDR2_DQ12
DDR2_DQ13
DDR2_DQ14
DDR2_DQ15
DDR2_DQ16
DDR2_DQ17
DDR2_DQ18
DDR2_DQ19
DDR2_DQ20
DDR2_DQ21
DDR2_DQ22
DDR2_DQ23
DDR2_DQ24
DDR2_DQ25
DDR2_DQ26
DDR2_DQ27
DDR2_DQ28
DDR2_DQ29
DDR2_DQ30
DDR2_DQ31

方
向
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B

上下拉

描述
外部存储数据总线第 0 位
外部存储数据总线第 1 位
外部存储数据总线第 2 位
外部存储数据总线第 3 位
外部存储数据总线第 4 位
外部存储数据总线第 5 位
外部存储数据总线第 6 位
外部存储数据总线第 7 位
外部存储数据总线第 8 位
外部存储数据总线第 9 位
外部存储数据总线第 10 位
外部存储数据总线第 11 位
外部存储数据总线第 12 位
外部存储数据总线第 13 位
外部存储数据总线第 14 位
外部存储数据总线第 15 位
外部存储数据总线第 16 位
外部存储数据总线第 17 位
外部存储数据总线第 18 位
外部存储数据总线第 19 位
外部存储数据总线第 20 位
外部存储数据总线第 21 位
外部存储数据总线第 22 位
外部存储数据总线第 23 位
外部存储数据总线第 24 位
外部存储数据总线第 25 位
外部存储数据总线第 26 位
外部存储数据总线第 27 位
外部存储数据总线第 28 位
外部存储数据总线第 29 位
外部存储数据总线第 30 位
外部存储数据总线第 31 位

电压域

龙芯 1B 处理器用户手册
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

DDR2_A00
DDR2_A01
DDR2_A02
DDR2_A03
DDR2_A04
DDR2_A05
DDR2_A06
DDR2_A07
DDR2_A08
DDR2_A09
DDR2_A10
DDR2_A11
DDR2_A12
DDR2_A13
DDR2_A14
DDR2_DQS0
DDR2_DQS1
DDR2_DQS2
DDR2_DQS3
DDR2_DQM0
DDR2_DQM1
DDR2_DQM2
DDR2_DQM3
DDR2_CKp0
DDR2_CKn0

O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
B
B
B
B
O
O
O
O
O
O

外部存储地址总线第 0 位
外部存储地址总线第 1 位
外部存储地址总线第 2 位
外部存储地址总线第 3 位
外部存储地址总线第 4 位
外部存储地址总线第 5 位
外部存储地址总线第 6 位
外部存储地址总线第 7 位
外部存储地址总线第 8 位
外部存储地址总线第 9 位
外部存储地址总线第 10 位
外部存储地址总线第 11 位
外部存储地址总线第 12 位
外部存储地址总线第 13 位
外部存储地址总线第 14 位
输入输出数据 strobe 信号
输入输出数据 strobe 信号
输入输出数据 strobe 信号
输入输出数据 strobe 信号
写数据屏蔽信号
写数据屏蔽信号
写数据屏蔽信号
写数据屏蔽信号
时钟信号
时钟信号

58

DDR2_CKE0

O

时钟有限信号

59

DDR2_ODT0

O

ODT 信号

60

DDR2_SCSn0

O

片选信号

61

DDR2_BA0

O

bank 选择信号

62

DDR2_BA1

O

bank 选择信号

63

DDR2_BA2

O

bank 选择信号

64

DDR2_RASn

O

行选择

65

DDR2_CASn

O

列选择

66

DDR2_WEn

O

写信号

67

DDR2_GATEI0

I

GATE 信号

68

DDR2_GATEI1

I

GATE 信号

69

DDR2_GATEO0

O

GATE 信号

70

DDR2_GATEO1

O

GATE 信号

71

VREF_0V9

I

0.9V 参考电压

2.8 USB 引脚定义(10)
表 2-6 USB 引脚定义
No.
1
2
3
4
5
6

19

信号名称
USB_AVDD33
USB_AVSS33
USB0_REXT
USB_VSS33
USB_VDD33
USB_DVDD

方向
I
I
I
I
I
I

上下拉

描述
3.3 伏模拟电源
模拟地
外部参考电阻 44.2ohm 对地
模拟地
3.3 伏模拟电源
1.2 伏数字电源

电压域

龙芯 1B 处理器用户手册
7
8
9
10
11

USB_DVSS
USB0_XI
USB0_XO

I
I
I

USB0_DP
USB0_DM

B
B

数字地
接地(或者接 12M 晶体)
外部 12Mhz 参考时钟输入
(或者接 12M 晶体)
USB 差分数据
USB 差分数据

2.9 EJTAG 引脚定义(6)
表 2-7 JTAG 引脚定义
No.
1
2
3
4
5
6

信号名称
EJTAG_TCK
EJTAG_TRST
EJTAG_TDI
EJTAG_TDO
EJTAG_TMS
TEST_JTAG_SEL

方向
I
I
I
O
I
I

上下拉
PU
PU
PU
PU

描述
TAP 时钟(内置上拉)
TAP 复位(内置上拉)
TAP 数据输入(内置上拉)
TAP 数据输出
TAP 工作模式(内置上拉)
JTAG/EJTAG 选择

电压域
core
core
core
core
core
core

2.10 GMAC0 引脚定义(15)
表 2-8 GMAC 引脚定义
No.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

信号名称
GMAC0_TCKI
GMAC0_TCKO
GMAC0_TX0
GMAC0_TX1
GMAC0_TX2
GMAC0_TX3
GMAC0_TCTL
GMAC0_RCKI
GMAC0_RX0
GMAC0_RX1
GMAC0_RX2
GMAC0_RX3
GMAC0_RCTL
GMAC0_MDC
GMAC0_MDIO

方
向
I
O
O
O
O
O
O
I
I
I
I
I
I
O
B

上下拉

描述
GMAC 传输时钟输入
GMAC 传输时钟输出
GMAC 传输数据输出 0
GMAC 传输数据输出 1
GMAC 传输数据输出 2
GMAC 传输数据输出 3
GMAC 传输控制
GMAC 接收时钟输入
GMAC 接收数据输入 0
GMAC 接收数据输入 1
GMAC 接收数据输入 2
GMAC 接收数据输入 3
GMAC 接受控制
读写 PHY 的时钟信号
读写 PHY 的数据信号

电压
域
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core

注:GMAC 引脚电压为 3.3V

2.11 GMAC1 引脚定义(4)
表 2-9 GMAC 引脚定义

1
2

GMAC1_TX_CLK_I

方
向
I

GMAC1_TX_CLK_O

O

GMAC1 传输时钟输出

电压
域
core
core

3

GMAC1_RX_CLK_I

I

GMAC1 接收时钟输入

core

4

GMAC1_TX_CTL_O

O

GMAC1 传输控制

core

No.

20

信号名称

上下拉

描述
GMAC1 传输时钟输入

龙芯 1B 处理器用户手册

2.12 AC97 引脚定义(5)
表 2-10 AC97 引脚定义
No.

信号名称

方向

上下拉

描述

电压域

1

AC97_BIT_CLK

I

AC97 时钟输入

core

2

AC97_DATA_I

I

AC97 数据输入

core

3

AC97_DATA_O

O

AC97 数据输出

core

4

AC97_SYNC

O

AC97 同步信号

core

5

AC97_RESET

O

AC97 复位信号

core

2.13 SPI 引脚定义(7)
表 2-11 SPI 引脚定义
信号名称
SPI0_CLK
SPI0_MISO
SPI0_MOSI

方向
O
I
O

SPI0_CS0

O

SPI0 选通信号 0

电压域
core
core
core
core

5

SPI0_CS1

O

SPI0 选通信号 1

core

6

SPI0_CS2

O

SPI0 选通信号 2

core

7

SPI0_CS3

O

SPI0 选通信号 3

core

No.
1
2
3
4

上下拉

描述
SPI0 时钟
SPI0 主入从出数据
SPI0 主出从入数据

2.14 UART 引脚定义(20)
表 2-12 UART 引脚定义
No.
1

信号名称
UART0_RX

方向

上下拉

频率

I

1MHz

描述
UART0 发送数据

电压域
core

UART0 接收数据

core

2

UART0_TX

O

1MHz

3

UART0_RTS

O

1MHz

UART0 请求发送

core

4

UART0_CTS

I

1MHz

UART0 允许发送

core

5

UART0_DSR

I

1MHz

UART0 设备准备好

core

6

UART0_DTR

O

1MHz

UART0 终端准备好

core

7

UART0_DCD

I

1MHz

UART0 载波检测

core

8

UART0_RI

I

1MHz

UART0 振铃提示

core

9

UART1_TX

O

1MHz

UART1 发送数据

core

10

UART1_RX

I

1MHz

UART1 接收数据

core

11

UART1_RTS

O

1MHz

UART1 请求发送

core

12

UART1_CTS

I

1MHz

UART1 允许发送

core

13

UART2_TX

O

1MHz

UART2 发送数据

core

14

UART2_RX

I

1MHz

UART2 接收数据

core

15

UART3_TX

O

1MHz

UART3 发送数据

core

16

UART3_RX

I

1MHz

UART3 接收数据

core

17

UART4_TX

O

1MHz

UART4 发送数据

core

21

龙芯 1B 处理器用户手册
18

UART4_RX

I

1MHz

UART4 接收数据

core

19

UART5_TX

O

1MHz

UART5 发送数据

core

20

UART5_RX

I

1MHz

UART5 接收数据

core

2.15 I2C 引脚定义(2)
表 2-13 I2C 引脚定义
信号名称
I2C_SCL
I2C_SDA

No.
1
2

方向
O
B

上下拉

描述
第一路 I2C 时钟
第一路 I2C 数据

电压域
core
core

2.16 CAN 引脚定义(4)
表 2-14 CAN 引脚定义
信号名称
CAN0_RX
CAN0_TX
CAN1_RX
CAN1_TX

No.
1
2
3
4

方向
I
O
I
O

上下拉

描述
CAN0 数据输入
CAN0 数据输出
CAN1 数据输入
CAN1 数据输出

电压域
core
core
core
core

2.17 NAND 引脚定义(14)
表 2-15 NAND 引脚定义
信号名称
1

NAND_CLE

O

NAND 读信号

2

NAND_ALE

O

NAND 写信号

电压
域
core
core

3

NAND_RD

O

NAND 命令锁存

core

4

NAND_WR

O

NAND 地址锁存

core

5

NAND_CE

O

NAND 片选信号

core

6

NAND_RDY

I

NAND 忙信号

core

7

NAND_D0

O

NAND 数据信号 0

core

8

NAND_D1

O

NAND 数据信号 1

core

9

NAND_D2

O

NAND 数据信号 2

core

10

NAND_D3

O

NAND 数据信号 3

core

11

NAND_D4

O

NAND 数据信号 4

core

12

NAND_D5

O

NAND 数据信号 5

core

13

NAND_D6

O

NAND 数据信号 6

core

14

NAND_D7

O

NAND 数据信号 7

core

No.

方向

上下拉

描述

2.18 PWM 引脚定义(4)
表 2-18 PWM 引脚定义
信号名称

方向

1

PWM0

O

PWM0 波形输出

电压域
core

2

PWM1

O

PWM1 波形输出

core

No.

22

上下拉

描述

龙芯 1B 处理器用户手册
3

PWM2

O

PWM2 波形输出

core

4

PWM3

O

PWM3 波形输出

core

2.19 电源/地引脚(58)
表 2-19 电源地引脚
No.
1
2
3
4
5
6

23

信号名称
VDD1V2
VDD1V8
VDD3V3
RTC_VDD33
VSS
RTC_VSS33

方向

描述
CORE 域
DDR2 电压域
PAD 电压域
RTC 电源
接地
RTC 地

电压值
1.2v
1.8v
3.3v
3.3v
0v
0v

电压域
CORE
DDR2
PAD
RTC
接地
RTC

数目
10
8
11
2
27
2

龙芯 1B 处理器用户手册

3 地址空间分配

本章给出 1B 芯片各模块的地址空间分配。

3.1 一级 AXI 交叉开关上模块的地址空间
表 3- 1 AXI 各模块地址分配
地址空间

模块

说明

0x0000,0000 – 0x0fff,ffff

DDR

256MB

0x1000,0000 – 0x1c19,ffff

RESERVED

0x1c20,0000 – 0x1c2f,ffff

DC Slave

1MB

0x1c30,0000 – 0x1eff,ffff

RESERVED

0x1f00,0000 – 0x1fff,ffff

AXI MUX Slave

16MB

0x2000,0000 – 0x7fff,ffff

RESERVED

3.2 AXI MUX 下各模块的地址空间
表 3-2 AXI MUX 各模块地址分配
地址空间

模块

说明

0xbf00,0000 – 0xbf7f,ffff

SPI0-memory

8MB

0xbf80,0000 – 0xbfbf,ffff

SPI1-memory

4MB

0xbfc0,0000 – 0xbfcf,ffff

SPI0

1MB

0xbfd0,0000 – 0xbfdf,ffff

CONFREG

1MB

0xbfe0,0000 – 0xbfe0,ffff

USB

64KB

0xbfe1,0000 – 0xbfe1,ffff

GMAC0

64KB

0xbfe2,0000 – 0xbfe2,ffff

GMAC1

64KB

0xbfe3,0000 – 0xbfe3,ffff

RESERVED

0xbfe4,0000 – 0xbfe7,ffff

APB-devices

256KB

0xbfe8,0000 – 0xbfeb,ffff

SPI0-IO

256KB

0xbfec,0000 – 0xbfef,ffff

SPI1-IO

256KB

0xbff0,0000 – 0xbfff,ffff

RESERVED

3.3 APB 各模块的地址空间分配
表 3-3 APB 各模块地址分配

24

地址空间

模块

说明

0xbfe40000-0xbfe43fff

UART0

16KB

0xbfe44000-0xbfe47fff

UART1

16KB

0xbfe48000-0xbfe4bfff

UART2

16KB

0xbfe4c000-0xbfe4ffff

UART3

16KB

龙芯 1B 处理器用户手册
0xbfe50000-0xbfe53fff

CAN0

16KB

0xbfe54000-0xbfe57fff

CAN1

16KB

0xbfe58000-0xbfe5bfff

I2C-0

16KB

0xbfe5c000-0xbfe5ffff

PWM

16KB

0xbfe60000-0xbfe63fff

25

RESERVED

0xbfe64000-0xbfe67fff

RTC

16KB

0xbfe68000-0xbfe6bfff

I2C-1

16KB

0xbfe6c000-0xbfe6ffff

UART4

16KB

0xbfe70000-0xbfe73fff

I2C-2

16KB

0xbfe74000-0xbfe77fff

AC97

16KB

0xbfe78000-0xbfe7bfff

NAND

16KB

0xbfe7c000-0xbfe7ffff

UART5

16KB

龙芯 1B 处理器用户手册

4 CPU
本章给出 1B 芯片内 CPU 的详细说明。GS232 核是一款实现 MIPS32 兼容且支持 DSP 扩
展和 EJTAG 调试的双发射处理器,通过采用转移预测、寄存器重命名、乱序发射、路预测
的指令 CACHE、非阻塞的数据 CACHE、写合并收集等技术来提高流水线的效率,形成了一款
具有突出的性能价格比及性能功耗比的 32 位嵌入式处理器 IP。
GS232 处理器 IP 具有如下主要特点:
 MIPS32 兼容的 32 位处理器,包含可配置的 DSP 部件和 64 位浮点部件(FPU)。
 高效的双发射+五级流水结构(取指、译码、发射、执行并写回、提交)
 支持寄存器重命名、动态调度、转移预测等乱序发射、乱序执行技术。其中包含 6
项的转移队列、16 项重命名队列,采用 Gshare 转移猜测,BHT 为 256 项。
 包含两个定点、一个浮点、一个访存四个功能部件。
 定点部件支持 DSP 扩展指令的运算。
 浮点部件支持全流水的 64 位浮点加法和浮点乘法运算,硬件实现浮点除法运算。
 专门的 SIMD 型多媒体加速指令。
 32 项全相联 JTLB,每项映射两页,页大小可变,并具有可执行位设置以防止缓冲
区溢出攻击。
 4 项的指令 TLB 和 8 项的数据 TLB,每项映射一页,页大小可变。
 分离的一级指令 Cache 和数据 Cache,可配置为 1 路/2 路/4 路组相联,每路大小各
为 4KB。
 支持非阻塞的 Cache 访问技术,4 项 load 队列、2 项 store 队列、3 项 miss 队列,
最多容忍 5 条 store 指令 Cache 不命中和 4 条 load 指令 Cache 不命中。
 支持 cached store 指令的写合并和 uncache 写加速技术
 支持 cache lock 技术和预取指令
 软 IP 级可配置:是否包含 DSP 指令支持、浮点部件、指令和数据 Cache 的大小
(4KB/8KB/16KB)、定点乘法规模(半规模/全规模/串行)等可配置以满足不同应用的
要求。
 标准的 EJTAG 调试标准,方便软硬件调试。
 标准的 32 位 AMBA AHB 接口。
 上述特点使得 GS232 处理器 IP 具有执行效率高,功耗和成本低的优势,可在面向
嵌入式的应用领域中得到广泛采用。

4.1 MIPS32 指令系统结构
MIPS 公司开发的 MIPS 体系结构(ISA)已经发展了 6 个版本,依次分别为 MIPS I,MIPS
II,MIPS III,MIPS IV,MIPS V 和 MIPS 32/64,版本之间向前兼容。目前最新的是 MIPS
32/64 体系结构的 Release2 版本,
其中,
MIPS32 体系结构基于 MIPSII 体系结构的指令集,
并补充了 MIPS III,IV 和 V 中的部分指令增强其生成代码和移动数据的效率;MIPS64 体
系结构基于 MIPS V 体系结构的指令集,兼容 MIPS 32 体系结构。
MIPS32 是 MIPS 公司为了统一 MIPS 指令系统的不同版本,在 MIPS II 的基础上进行扩
充,并对系统态的指令进行规范而定义的。MIPS32 指令系统的用户态指令融合了不同指令
系统的优点,系统态指令也更加规范。

26

龙芯 1B 处理器用户手册
GS232 处理器兼容 MIPS32 的 Release2 体系结构。MIPS32 主要包括 ISA(Instruction
Set Architecture)、PRA(Privileged Resource Architecture)、ASEs(Application
Specific Extensions)和 UDI(User Defined Instructions)四个部分,GS232 处理器实
现了 ISA、PRA,以及 DSP ASE。
本章从 CPU,DSP,FPU,PRA 四个方面描述 GS232 指令结构系统,并分别给出指令列表,
以及 GS232 实现的 CP0 寄存器的定义。GS232 与 MIPS32 Release1 兼容,具体的指令说明
以及寄存器描述可以参见 MIPS32 用户手册。

4.1.1 CPU 寄存器
MIPS32 体系结构定义了如下 CPU 寄存器:
(1)32 个 32 位的通用寄存器。GPRs(general purpose registers)。其中有两个被
赋予了特殊含义:R0,0 号通用寄存器,值永远为 0;R31,31 号通用寄存器,被 JAL,BLTZAL,
BLTZALL,BGEZAL,和 BGEZALL 指令隐式的用作目标寄存器,存放返回地址。
(2)一对用于保存乘法、除法和乘加操作的结果的特殊寄存器。HI 和 LO。HI 寄存器
用于存放乘或者除运算结果的高位;LO 寄存器用于存放乘或者除运算结果的低位。
(3)一个特殊的程序计数器(PC)。这个寄存器程序不可直接访问。

4.1.2 CPU 指令集
MIPS32 体系结构的定义把 CPU 指令集按照功能划分为以下几组:存取、计算、跳转分
支、协处理器和杂项指令。①Load 和 Store 访存指令在主存和通用寄存器之间移动数据。
访存指令都是立即数指令(I 型)
,因为该指令模式所支持的唯一访存模式就是基址寄存器
加上 16 位的对齐的偏移量。②Computational 计算型指令完成寄存器值的算术、逻辑、移
位、乘法和除法操作。计算型指令包含了寄存器指令格式(R 型,操作数和运算结果均保
存在寄存器中)和立即数指令格式(I 型,其中一个操作数为一个 16 位的立即数)
。③Jump
and Branch 跳转和分支指令改变程序的控制流。绝对地址跳转被称为“Jump(跳转)
”
(J
型或者 R 型),PC(指令计数器)相关的跳转指令被称为“Branch(分支)”
(I 型)。④
Coprocessor 协处理器指令完成协处理器内部的操作。协处理器的访存操作是 I 型指令。
在 MIPS32 定义了 0 号协处理器(系统处理器)和 1 号协处理器(浮点协处理器),用户可
以自定义 2 号协处理器的功能。⑤Special 特殊指令完成系统调用和断点操作。这些指令
通常是 R 型的。⑥Exception 异常指令引起跳转,根据异常号比较结果跳转到通用异常处
理向量。这些指令包括 R 型和 I 型指令格式。
GS232 IP 虽然与 MIPS32 Release2 版本兼容,从功能上实现了 MIPS32 体系结构规定
的所有 CPU 指令,但是有些指令在实现了有细微的并不影响兼容性的差别,以下值得编程
人员注意。
pref、prefx 指令。
表 4-1 到表 4-10 列出了 GS232IP 实现的 MIPS32 指令中的 CPU 指令。MIPS32 的浮点
和 CP0 协处理器指令在后面章节介绍。
表 4-1 CPU 指令集:访存指令

27

OpCode

Description

MIPS ISA

LB

取字节

I

LBU

取无符号字节

I

LH

取半字

I

龙芯 1B 处理器用户手册
OpCode

Description

MIPS ISA

LHU

取无符号半字

I

LW

取字

I

LWU

取无符号字

I

LWL

取字左部

I

LWR

取字右部

I

LL

取标志处地址

I

SB

存字节

I

SH

存半字

I

SW

存字

I

SWL

存字左部

I

SWR

存字右部

I

SC

满足条件下存

I

SYNC

同步

I

PREF

预取

MIPS32

表 4-2 CPU 指令集:算术指令 (ALU 立即数)
OpCode

Description

MIPS ISA

ADDI

加立即数

I

ADDIU

加无符号立即数

I

SLTI

小于立即数设置

I

SLTIU

无符号小于立即数设置

I

ANDI

与立即数

I

ORI

或立即数

I

XORI

异或立即数

I

LUI

取立即数到高位

I

表 4-3 CPU 指令集:算术指令 (2 操作数)
OpCode

Description

MIPS ISA

CLO

计算前导 0 的个数

MIPS32

CLZ

计算前导 1 的个数

MIPS32

表 4-4 CPU 指令集:算术指令(3 操作数, R-型)

28

OpCode

Description

MIPS ISA

ADD

加

I

ADDU

无符号加

I

SUB

减

I

SUBU

无符号减

I

龙芯 1B 处理器用户手册
SLT

小于设置

I

SLTU

无符号小于设置

I

AND

与

I

OR

或

I

XOR

异或

I

NOR

或非

I

表 4-5 CPU 指令集:乘法和除法指令
OpCode

Description

MIPS ISA

MADD

乘加

MIPS32

MADDU

无符号乘加

MIPS32

MSUB

乘减

MIPS32

MSUBU

无符号乘减

MIPS32

MUL

乘(结果放到 GPR)

MIPS32

MULT

乘(结果放到 HI,LO)

I

MULTU

无符号乘

I

DIV

除

I

DIVU

无符号除

I

MFHI

从 hi 寄存器取数到通用寄存器

I

MTHI

从通用寄存器存数到 hi 寄存器

I

MFLO

从 lo 寄存器取数到通用寄存器

I

MTLO

从通用寄存器存数到 lo 寄存器

I

表 4-6 CPU 指令集:跳转和分支指令
Opcode

Description

MIPS ISA

J

跳转

I

JAL

立即数调用子程序

I

JR

跳转到寄存器指向的指令

I

JALR

寄存器调用子程序

I

BEQ

相等则跳转

I

BNE

不等则跳转

I

BLEZ

小于等于 0 跳转

I

BGTZ

大于 0 跳转

I

BLTZ

小于 0 跳转

I

BGEZ

大于或等于 0 跳转

I

BLTZAL

小于 0 调用子程序

I

BGEZAL

大于或等于 0 调用子程序

I

29

龙芯 1B 处理器用户手册
Opcode

Description

MIPS ISA

BEQL

相等则 Likely 跳转

II

BNEL

不等则 Likely 跳转

II

BLEZL

小于或等于 0 则 Likely 跳转

II

BGTZL

大于 0 则 Likely 跳转

II

BLTZL

小于 0 则 Likely 跳转

II

BGEZL

大于或等于 0 则 Likely 跳转

II

BLTZALL

小于 0 则 Likely 调用子程序

II

BGEZALL

大于或等于 0 则 Likely 调用子程序

II

表 4-7 CPU 指令集:移位指令
OpCode

Description

MIPS ISA

SLL

逻辑左移

I

SRL

逻辑右移

I

SRA

算术右移

I

SLLV

可变的逻辑左移

I

SRLV

可变的逻辑右移

I

SRAV

可变的算术右移

I

表 4-8 CPU 指令集:特殊指令
OpCode

Description

MIPS ISA

SYSCALL

系统调用

I

BREAK

断点

I

MOVZ

等于 0 时移动

MIPS32

MOVN

不等于 0 时移动

MIPS32

MOVT

浮点真时移动

MIPS32

MOVF

浮点假时移动

MIPS32

表 4-9 CPU 指令集:异常指令

30

OpCode

Description

MIPS ISA

TGE

大于或等于陷入

II

TGEU

无符号数大于或等于陷入

II

TLT

小于陷入

II

TLTU

无符号数小于陷入

II

TEQ

等于陷入

II

TNE

不等陷入

II

TGEI

大于或等于立即数陷入

II

TGEIU

大于或等于无符号立即数陷入

II

龙芯 1B 处理器用户手册
TLTI

小于立即数陷入

II

TLTIU

小于无符号立即数陷入

II

TEQI

等于立即数陷入

II

TNEI

不等于立即数陷入

II

表 4-10 CPU 指令集:CP0 指令
OpCode

Description

MIPS ISA

MFC0

从 CP0 寄存器取

I

MTC0

往 CP0 寄存器写

I

TLBR

读索引的 TLB 项

III

TLBWI

写索引的 TLB 项

III

TLBWR

写随机的 TLB 项

III

TLBP

在 TLB 中搜索匹配项

III

CACHE

Cache 操作

III

ERET

异常返回

III

4.1.3 CP0 指令集
下面给出 GS232 定义的 CP0 指令:
表 4-11 GS232 的 CP0 指令
OpCode

Description

MIPS ISA

MFC0

从 CP0 寄存器取

MIPS32

MTC0

写 CP0 寄存器

MIPS32

ERET

异常返回

MIPS32

DERET

Debug 返回

EJTAG

SDBBP

软件中断

EJTAG

CACHE 指令
OpCode

31

Description

Target Cache

CACHE0

Index Invalidate

Instruction Cache

CACHE8

Index Store Tag

Instruction Cache

CACHE16

Hit Invalidate

Instruction Cache

CACHE28

Hit lock

Instruction Cache

CACHE1

Index WriteBack Invalidate

Data Cache

CACHE5

Index Load Tag

Data Cache

CACHE9

Index Store Tag

Data Cache

龙芯 1B 处理器用户手册

CACHE17

Hit Invalidate

Data Cache

CACHE21

Hit WriteBack Invalidate

Data Cache

Cache29

Hit lock

Data Cache

MIPS32 只对 CACHE 指令进行了必要的规范,其中有很多 CACHE 指令是推荐或可选的,
GS232IP 只实现了 CACHE 指令中 MIPS32 规定必须要实现的部分。具体可参见上表。

4.1.4 存储空间
GS232IP 虚拟地址和物理地址都是 32 位,即 SEGBITS 和 PABITS 均为 32 。GS232IP 的
实现可用地址空间分布如下表所示:
表 4-12 GS232IP 地址空间的分配
段名

虚拟地址范围

从不同模式下访问
用户模式

高级用户模式

核心模式

kseg3

0xFFFF FFFF-0xE000 0000

address error

address error

mapped

sseg

0xDFFF FFFF-0xC000 0000

address error

address error

mapped

0xBFFF FFFF-0xA000 0000

address error

address error

unmapped

Ksseg
kseg1

uncached
kseg0

0x9FFF FFFF-0x8000 0000

address

address error

unmapped

useg

0x7FFF FFFF-0x0000 0000

mapped

mapped

ERL=1 unmapped
ERL=0 mapped

suseg
kuseg

注:1,表中不包括 EJTAG 的 dseg 段 。
2,GS232IP 支持 4KB,16KB,64KB,256KB,1MB,4MB,16MB 大小的 TLB 页面
根据 MIPS32 的规范,GS232 的虚拟地址转换包括以下几种情况。①凡是 mapped 的段,都通过
访问 TLB 获得物理地址以及相应页的状态。②kseg0 段的物理地址为虚地址减去 0x80000000 得到,
该段是否 cached 根据 Config 寄存器的 K0 字段决定。③kseg1 的物理地址为虚地址减去 0xA0000000
得到,该段为 uncached 段。④当 ERL 为 1 时,最低 2G 空间 useg 的物理地址低 31 位直接从虚拟
地址得到,并成为 uncached 访问方式。否则的话,useg 为 mapped,cached 的访问模式。
访问 TLB 的虚地址由两部分组成,一是 EntryHi 寄存器的 ASID 域,二是由地址运算部件给出
的虚地址。该虚地址与 TLB 的每一项同时进行比较。如果有一个相符且有效,则从该项中抽取物
理页号与偏移量(虚地址的低位)组成物理地址。如果没有相符或虽然相符但无效,则发生相应例
外。
TLB 是一个全相联存储器,包括 32 项,提供 32 对奇/偶页面映像。页的大小为 4KB-16MB(以
4 的倍数递增)。TLB 的每一项共有 256 位。其主要内容如下表所示,其中 NE 为表示不可执行位,
是 GS232 中为了防止缓冲区溢出攻击对每页增设的.NE 位为 1 时表示该页不可执行。

MASK
32

龙芯 1B 处理器用户手册

VPN2

G

NE0

NE1

ASID

PFN0

C0

D0

V0

PFN1

C1

D1

V1

图 4-1 TLB 表项内容

由于 MIPS 的 TLB 每一项包括一个奇数页和一个偶数页,因此进行虚地址匹配时使用
VPN2,即虚地址的页号除以 2。MIPS 的页大小是可以变化的,由 TLB 中的 MASK 域决定。地
址匹配时要考虑这个因素。虚地址匹配时,R 域也应该匹配,以区分不同的段。此外,ASID
域也应该匹配,除非 G 域为 1。如果进行上述匹配后发现 TLB 中没有与虚地址匹配的 TLB
项,则产生 TLBLR(取数)或 TLBSR(存数)例外。如果匹配成功但相应的 TLB 有效位 V
为 0,则产生 TLBLI(取数)或 TLBSI(存数)例外。对于存数操作,如果匹配成功且有效
位为 1,但是 D 为 0,则产生 MOD 例外。

4.1.5 例外处理
龙芯 2 号 IP 的例外处理遵循 MIPS32 规范。下表给出了 GS232IP 实现的例外以及例外时的寄存
器修改。
表 4-13 例外编码及寄存器修改
Badvaddr

Context

Entry_hi

FCR_cause

cacheErr

DEPC

ErrorEPC

EPC

bebug_5:0

debug_DM

cause_excode

status_SR

status_NMI

status_BEV

status_ERL

status_EXL
reset

1

1

0

0

*

soft

1

0

0

1

*

NMI

1

0

1

0

*

cache

1

30

INT

1

0

*

*

*

*

MOD

1

1

*

*

*

*

TLBL

1

2

*

*

*

*

TLBS

1

3

*

*

ADEL

1

4

*

*

ADES

1

5

*

reset

*

*

error

33

龙芯 1B 处理器用户手册

IBE

1

6

*

DBE

1

7

*

SYS

1

8

*

BP

1

9

*

RI

1

10

*

CPU

1

11

*

OV

1

12

*

TRAP

1

13

*

FPE

1

15

*

*

DSS

1

1

*

DBP

1

2

*

DDBL

1

4

*

DDBS

1

8

*

DIB

1

16

*

DINT

1

32

*

下表给出了 GS232IP 的不同例外的例外入口地址。如表中所示龙芯
1 号 IP 支持向量中断。
表 4-14 例外入口地址
Exception

Statuts_BEV

Status_EXL

Cause_IV

EJTAG ProbEn

Reset, Soft reset, NMI

X

X

X

X

EJTAG Debug

X

X

X

0

0xBFC0 0480

EJTAG Debug

X

X

X

1

0xFF20 0200

TLB Refill

0

0

X

X

0x8000 0000

TLB Refill

0

1

X

X

0x8000 0180

TLB Refill

1

0

X

X

0xBFC0 0200

TLB Refill

1

1

X

X

0xBFC0 0380

Cache error

0

X

X

X

0xA000 0100

Cache error

1

X

X

X

0BFC0 0300

Interrupt

0

0

0

X

0x8000 0180

Interrupt

0

0

1

X

0x8000 0200

34

Vector
0xBFC0 0000

龙芯 1B 处理器用户手册

Interrupt

1

0

0

X

0xBFC0 0380

Interrupt

1

0

1

X

0xBFC0 0400

All others

0

X

X

X

0x8000 0180

All others

1

X

X

X

0xBFC0 0380

‘x’ denotes don’t care

4.1.6 CP0 寄存器
MIPS 定义了包括 CP0 在内的特权体系结构作为规范的一部分。为了适应所有的应用,
MIPS 提供了规范的子集,允许根据需要只实现那些必要的特征,同时与 MIPS 体系结构兼
容。GS232IP 实现了 MIPS32 Release1 特权体系结构中必须实现部分的全部特征,和可选
择实现的部分特征:如 DEBUG 寄存器,Performance Counter 寄存器等。
本小节描述 GS232IP 实现的 CP0 指令以及 CP0 的寄存器定义。CP0 寄存器用于控制处
理器的状态改变并报告处理器的当前状态。这些寄存器通过 MFC0 指令来读或 MTC0 指令来
写。
当处理器运行在核心模式时或状态寄存器(Status 寄存器)中的第 28 位(CU0)被设
置时,可以使用 CP0 指令。否则,执行 CP0 指令将产生“CP0 协处理器不可用例外”。
表 4-15 列出了 GS232IP 实现的所有 CP0 寄存器。
表 4-15 GS232IP 实现的 CP0 寄存器
寄存器号

寄存器名字

描述

0

Index

可写的寄存器,用于指定需要读/写的 TLB 表项

1

Random

用于 TLB 替换的伪随机计数器

2

EntryLo0

TLB 表项低半部分中对应于偶虚页的内容(主要是物理页号)

3

EntryLo1

TLB 表项低半部分中对应于奇虚页的内容(主要是物理页号)

4

Context

32 位寻址模式下指向内核的虚拟页转换表(PTE)

5

Page Mask

设置 TLB 页大小的掩码值

6

Wired

固定连线的 TLB 表项数目
(指不用于随机替换的低端 TLB 表项)

7

HWREna

读硬件寄存器时用到的 mask 位(R2)

8

BadVaddr

错误的虚地址

9

Count

计数器

10

EntryHi

TLB 表项的高半部分内容(虚页号和 ASID)

11

Compare

计数器比较

Status(select0)

处理器状态寄存器

IntCtl(select1)

控制扩展的中断功能(R2)

SRSCtl(select2)

控制对影子寄存器的操作(R2)

SRSMap(select3)

影子寄存器与中断向量的对应关系(R2)

13

Cause

最近一次例外的原因

14

EPC

例外程序计数器

12

35

龙芯 1B 处理器用户手册
寄存器号

寄存器名字

描述

PRID

处理器修订版本标识号

Ebase

保存异常当 BEV 为 0 时的向量入口的基址

Config0

配置寄存器(Cache 大小等)

Config1

配置寄存器

Config2

在没有二级 cache 的 R2 实现中,仅表示实现 Config3

Config3

配置寄存器 (R2)

Config6

配置分支预测的策略

17

LLAddr

链接读内存地址

18

WatchLo

虚地址空间访问陷阱地址

19

WatchHi

15

16

20
21

保留

22

保留

23

Debug

24

DEPC

EJTAG debug 例外程序计数器

25

Performance Counter

性能计数器的高半部分

26

保留

27

保留

28

TagLo

CACHE TAG 寄存器的低半部分

30

ErrorEPC

错误例外程序计数器

31

DESAVE

EJTAG debug 例外保存寄存器

29

Index 寄存器(0,select 0)
Index 寄存器是个 32 位可读/写的寄存器,其中最后六位的值用于索引 TLB 的表项。
寄存器的最高位表示 TLB 探测(TLBP)指令执行是否成功。
Index 寄存器的值指示 TLB 读(TLBR)和 TLB 索引写(TLBWI)指令操作的 TLB 表项。
图 4-2 表示 Index 寄存器的格式,表 4-16 描述了 Index 寄存器各域的含义。
31

30

6 5

P

0

Index

1

25

6

图 4-2 Index 寄存器
表 4-16 Index 寄存器各域描述
域

36

0

描述

P

探测失败。上一次 TLB 探测指令(TLBP)没有成功时置 1

Index

指示 TLB 读指令和 TLB 索引写指令操作的 TLB 表项的索引值

龙芯 1B 处理器用户手册
0

保留。必须按 0 写入,读时返回 0。

Random 寄存器(1,select1)
Random 寄存器是个只读寄存器,其中低六位索引 TLB 的表项。每执行完一条指令,
该寄存器值减 1。同时,寄存器值在一个上界和一个下界之间浮动,上下界具体是:
 下界等于保留给操作系统专用的 TLB 项数(即 Wired 寄存器的内容)。
 上界等于整个 TLB 的项数减 1(最大为 32-1)。
Random 寄存器指示将由 TLB 随机写指令操作的 TLB 项。从这个目的来说,无需读此寄
存器。但该寄存器是可读的,以验证处理器相应的操作是否正确。
为了简化测试,Random 寄存器在系统重起时置为上界。另外,当 Wired 寄存器被写
时,该寄存器也要置为上界。
图 4-3 表示 Random 寄存器的格式,而表 4-17 描述 Random 寄存器各域的含义。
31

6

5

0

0

Random

26

6

图 4-3 Random 寄存器
表 4-17 Random 寄存器各域
域

描述

Random

随机 TLB 索引值

0

保留。必须按 0 写入,读时返回 0。

EntryLo0 (2,select 0)以及 EntryLo1 (3, select 0)寄存器
EntryLo 寄存器包括两个相同格式的寄存器:
 EntryLo0 用于偶虚页
 EntryLo1 用于奇虚页
EntryLo0 和 EntryLo1 寄存器都是可读/写寄存器。当执行 TLB 读和写操作时,它们分
别包括 TLB 项中奇偶页的物理页号(PFN)。图 4-4 表示这些寄存器的格式。
31
0

30

29

6 5

NE

3

2

PFN

1
C

0
D

V

G

图 4-4 EntryLo0 和 EntryLo1 寄存器

EntryLo0 和 EntryLo1 寄存器的 PFN 域是 32 位物理地址中的高 28 位(39:12)。
表 4-18 EntryLo 寄存器域
域

描述

NE

不可执行位。1 表示不可执行,0 表示可执行。

PFN

页号,是物理地址的高位。

C

TLB 页的 Cache 一致性属性。

D

脏位。如果该位被设置,页面则标记为脏,也就是可写的。实际上这一位在软
件中作为防止数据被更改的写保护使用。

V

有效位。当该位被设置时,说明 TLB 表项是有效的,否则将产生一个 TLBL 或
TLBS 例外。

37

龙芯 1B 处理器用户手册
全局位。当 EntryLo0 和 EntryLo1 中的 G 位都被设置为 1 时,处理器将在 TLB

G

查找时忽略 ASID。
0

保留。必须按 0 写入,读时返回 0。

在每个 TLB 表项中只有一个全局位,在 TLB 写操作中根据 EntryLo0[0]和 EntryLo1[0]
的值写入。
Context (4, select 0)
Context 寄存器是一个读/写寄存器,它包含指向页表中某一项的指针。该页表是一
个操作系统数据结构,存储虚拟地址到物理地址的转换。
当 TLB 缺失时,CPU 将根据缺失转换从页表中加载 TLB。一般情况下,操作系统使用
Context 寄存器寻址页表中当前页的映射。Context 寄存器复制 BadVAddr 寄存器中的部分
信息,但是该信息被安排成一种利于软件 TLB 例外处理程序处理的形式。
图 4-5 显示了 Context 寄存器的格式;表 4-19 描述了上下文寄存器字段。

31

23

22

43

PTEBase

0

BadVPN2

41

0
19

4

图 4-5 Context 寄存器
表 4-19 Context 寄存器域
域

描述
当缺失时这一字段被硬件写。它包含最近不能进行有效转换的虚地址的虚页号

BadVPN2

(VPN)。
这一字段是操作系统使用的读/写字段。该字段写入的值允许操作系统将 Context

PTEBase

寄存器作为一个指向内存中当前页表的指针。
0

保留。必须按 0 写入,读时返回 0。

19 位的 BadVPN2 字段包含导致 TLB 缺失的虚地址的 31:13 位;第 12 位被排除是因为
一个单一的 TLB 项映射到一个奇偶页对。对于一个 4K 字节的页尺寸,这一格式可以直接寻
址 PTE 表项为 8 字节长且按对组织的页表。对于其它尺寸的页和 PTE,移动和屏蔽这个值
可以产生合适的地址。
PageMask 寄存器(5, select 0)
PageMask 寄存器是个可读写的寄存器,在读写 TLB 的过程使用;它包含一个比较掩码,
可为每个 TLB 表项设置不同的页大小,如表 4-20。该寄存器的格式如图 4-6。
TLB 读写操作使用该寄存器作为一个源或目的;当进行虚实地址转换时,TLB 中对应
于 PageMask 寄存器的相应位指示虚地址位 24:13 中哪些位用于比较。当 MASK 域的值不是
图 4-6 中的值时,TLB 的操作为未定义。0 域为保留,必须按 0 写入,读时返回 0。

31

29 28
0

13 12
Mask

7

0
12

图 4-6 PageMask 寄存器

38

0

13

龙芯 1B 处理器用户手册

表 4-20 不同页大小的掩码(Mask)值
页大小

位
28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

4Kbytes

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

16 Kbytes

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

64 Kbytes

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

256 Kbytes

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1 Mbytes

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

4 Mbytes

0

0

0

0

0

0

1

1

1

1

1

1

1

1

1

1

16M bytes

0

0

0

0

1

1

1

1

1

1

1

1

1

1

1

1

64M bytes

0

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

256Mbytes

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

Wired 寄存器(6, select 0)
Wired 寄存器是一个可读/写的寄存器,该寄存器的值指定了 TLB 中固定表项与随机
表项之间的界限,如图 4-7 所示。Wired 表项是固定的、不可替换的表项,这些表项的
内容不会被 TLB 写操作修改。而随机表项的内容可以被修改。

TLB
31

随机项范围

Wired 寄存器
固定项范围

0

这个值是随机的

图 4-7 Wired 寄存器界限

Wired 寄存器在系统复位时置 0。写该寄存器的同时,Random 寄存器值要置为上限值
(参阅前面的 Random 寄存器)。
图 4-8 表示 Wired 寄存器的格式;表 4-21 描述了寄存器的域。

39

龙芯 1B 处理器用户手册

31

6

5

0

0

Wired

26

6

图 4-8 Wired 寄存器
表 4-21 Wired 寄存器域
域

描述

Wired

TLB 固定表项边界

0

保留。必须按 0 写入,读时返回 0。

HWREna 寄存器(7, select0)
硬件寄存器读使能寄存器(HWREna)包含一位的掩码用来决定当使用 RDHWR 指令时,
对应的硬件寄存器是否可读。
图 4-9 显示了 HWREna 寄存器的格式,表 4-22 描述了 HWREna 寄存器各个域的意义。

31

30 29

Impl

43
0

0
Mask

图 4-9 HWREna 寄存器
表 4-22 HWREna 寄存器域
域
Impl

描述
保留域,必须写为 0,且读时返回 0

Mask

读硬件寄存器的掩码位,若为 1,则对应的硬件寄存器可读,否则不可读

0

保留。必须按 0 写入,读时返回 0。

BadVAddr 寄存器(8, select0)
错误虚地址寄存器(BadVAddr)是一个只读寄存器,它记录了最近一次导致 TLB 或寻
址错误例外的虚拟地址。除非发生软件复位,NMI 或 Cache 错误例外,BadVAddr 寄存器将
一直保持不变。否则这个寄存器就是未定义的。
图 4-10 显示了错误虚地址寄存器的格式。
32

0
Bad Virtual Address
64
图 4-10 BadVAddr 寄存器

Count 寄存器(9,select0)以及 Compare 寄存器(11)
Count 寄存器和 Compare 寄存器都是 32 位读写寄存器,他们的模式如所示。
Count 寄存器作为一个实时的定时器工作,每两个时钟周期增 1。
Compare 寄存器用来在特定的时刻生成一个中断,该寄存器被写入一个值,图 4-11
并且不断地与 Count 寄存器中的值比较。一旦这两个值相等,Cause 寄存器里的中断位
IP[7]被设置。当 Compare 寄存器被再次写时这个中断位才被重置。

40

龙芯 1B 处理器用户手册

图 4-11 Count 寄存器和 Compare 寄存器

EntryHi 寄存器(10)
EntryHi 寄存器用于 TLB 读写时存放 TLB 表项的高位。
EntryHi 寄存器可以被 TLB Probe, TLB Write Random, TLB Write Indexed, 和 TLB
Read Indexed 指令访问。
图 4-12 表示 EntryHi 寄存器的格式。表 4-23 表示 EntryHi 寄存器的域。
31

13

12

8

7

0

VPN2

0

ASID

49

5

8

图 4-12 EntryHi 寄存器
表 4-23 EntryHi 寄存器域
域

描述

VPN2

虚页号除 2(映射到双页);虚拟地址的高位。

ASID

地址空间标识域。一个 8 位的域;用于让多个进程共享 TLB;对于相同的
虚页号,每个进程都与其他进程有不同的映射。

0

保留。必须按 0 写入,读时返回 0。

VPN2 域包含 32 位虚拟地址的 31:13 位。
当一个 TLB Refill,TLB Invalid,或 TLB Modified 例外发生时,没有匹配 TLB 表项
的虚拟地址中虚拟页号(VPN2)和 ASID 将被加载到 EntryHi 寄存器。
Status 寄存器(12, select 0)
Status 寄存器(SR) 是一个读写寄存器,它包括操作模式,中断允许和处理器状态诊
断。下面列表描述了一些更重要的 Status 寄存器字段;图 4-13 显示了整个寄存器的格式,
包括域的描述。其中重要的域有:
 8 位的中断屏蔽(IM)域控制 8 个中断条件的使能。中断在被触发之前必须被使能,在
Status 寄存器的中断屏蔽域和 Cause 寄存器的中断待定域相应的位都应该被置位。更多的
信息,请参考 Cause 寄存器的中断待定(IP)域。
 4 位的协处理器可用性(CU)域控制 4 个可能的协处理器的可用性。不管 CU0 位如何
设置,在内核模式下 CP0 总是可用的。
41

龙芯 1B 处理器用户手册
31

2

28

26

25

24

23

22

21

20

0

0

RE

0

0

BEV

0

SR

0

1

1

1

1

1

1

1

1

4

8

7
CU

19
16

15

7

4

2

1

0

8

5

3

IM7-IM0

0

KSU

ERL

EXL

IE

3

2

1

1

1

(cu3:c
u0)
4

图 4-13 Status 寄存器

图 4-13 显示了 Status 寄存器的格式,表 4-24 描述了 Status 寄存器的域。
表 4-24 Status 寄存器域
域
CU

描述
控制 4 个协处理器单元的可用性。不管 CU0 位如何设置,在内核模式下 CP0 总是
可用的。
1- 可用
0- 不可用
CU 域的初值是 0011

0
BEV

保留。必须按 0 写入,读时返回 0。
控制例外向量的入口地址
0 – 正常
1 – 启动

SR
IM

1 表示有软复位例外发生
中断屏蔽:控制每一个外部、内部和软件中断的使能。如果中断被使能,将允许
它触发,同时 Cause 寄存器的中断 Pending 字段相应的位被置位。
0-禁止
1-允许

KSU

模式位
11 未定义
10 普通用户
01 超级用户
00 核心

ERL

错误级。当发生复位,软件复位,NMI 或 Cache 错误时处理器将重置此位。
0 正常
1 错误

EXL

例外级。当一个不是由复位,软件复位或 Cache 错误引发的例外产生时,处理器
将设置该位。

IE

中断使能。
0 禁用所有中断
1 使能所有中断

Status 寄存器模式和访问状态

42

龙芯 1B 处理器用户手册
下面描述 Status 寄存器中用于设置模式和访问状态的域:
中断使能:当符合以下条件时,中断被使能:
 IE = 1 且
 EXL = 0 且
 ERL = 0。
如果遇到这些条件,IM 位的设置允许中断。
操作模式:当处理器处于普通用户、内核和超级用户模式时需要设置下述位
域。

当 KSU = 102, EXL = 0 和 ERL = 0 时处理器处于普通用户态模式下。

当 KSU = 012, EXL = 0 和 ERL = 0 时处理器处于超级用户态模式下。

当 KSU = 002, or EXL = 1 或者 ERL = 1 时处理器处于内核态模式下。
内核地址空间访问: 当处理器处在内核模式时,可以访问内核地址空间。
 超级用户地址空间访问:当处理器处在内核模式或超级用户模式时,可以访问
超级用户地址空间。
 用户地址空间访问:处理器在这三种操作模式下都可以访问用户地址空间。
Status 寄存器复位
复位时,Status 寄存器的值是 0x00400004。
IntCtl 寄存器(12,select 1)
在 Rlease2 的版本中,IntCtl 寄存器用来控制扩展的中断特性。包括向量中断和外部
中断。图 4-14 列出了 IntCtl 寄存器的格式,表 4-25 描述了各个域的意义。
31

29 28
IPTI

26 25

10 9

IPPCI

0

54
VS

图 4-14 IntCtl 寄存器
表 4-25 IntCtl 寄存器域
域
IPTI

描述
对于向量中断而言,这个域表示时钟中断的中断号
Encodin

IP bit

Hardware
Interrupt Source

IPPCI

2

2

HW0

3

3

HW1

4

4

HW2

5

5

HW3

6

6

HW4

7

7

HW5

表示 Performance Counter 的中断号。
Encoding

IP bit

Hardware
Interrupt Source

43

2

2

HW0

3

3

HW1

0
0

龙芯 1B 处理器用户手册

VS

4

4

HW2

5

5

HW3

6

6

HW4

7

7

HW5

在实现向量中断的版本中,这个域表示中断向量之间偏移差
En oding

0

Spacing Between

Spacing Between

Vectors(hex)

Vectors(decimal)

0x00

0x000

0

0x01

0x020

32

0x02

0x40

64

0x04

0x80

128

0x08

0x100

256

0x10

0x200

512

保留。必须按 0 写入,读时返回 0。

SRSCtl 寄存器(12,select 2)
控制影子寄存器的读写。GS232 未实现影子寄存器。固所有域都写为 0。
31

30 29
0

26 25 22 21
HSS

0

18 17

EICSS

16 15
0

12 11
ESS

10 9
0

6 5
PSS

4 3
0

0
CSS

图 4-15SRSCtl 寄存器
表 4-26 SRSCtl 寄存器域
域

描述

HSS

表示实现的影子寄存器组数;若为 0 表示没有影子寄存器实现

EICSS

EIC 中断的影子寄存器组

ESS

异常的影子寄存器组

PSS

前一个影子寄存器组

CSS

当前影子寄存器组

0

保留。必须按 0 写入,读时返回 0。

SRSMap 寄存器(12,select 3)
用来反映影子寄存器与异常向量的对应关系。GS232 未实现影子寄存器。固所有域都
写为 0。
31

0

图 4-16 SRSMap 寄存器

Cause 寄存器(13,select 0)
32 位的可读写 Cause 寄存器描述了最近一个例外发生的原因。
图 4-17 显示了这一寄存器的域,表 4-27Cause 寄存器域描述了 Cause 寄存器的域。

44

龙芯 1B 处理器用户手册
一个 5 位例外码(ExcCode)指出了原因之一,如表 4-27 所示。
31

30 29 28 27
BD

TI

CE

26
DC

25 24 23
PCI

0

22

16 15

IV

8

0

IP7~IP0

7

6
0

2 1
Exc-

0
0

Code
1

1

2

12

8

1

5

2

图 4-17 Cause 寄存器
表 4-27Cause 寄存器域
域

描述

BD

指出最后采用的例外是否在分支延时槽中。
1-延时槽
0-正常

CE

当发生协处理器不可用例外时协处理器的单元编号。

DC

关掉 Count 寄存器。DC=1 时关掉 count 寄存器

PCI

Performance counter 中断,用来指示是否有待处理的 PC 中断

IV

指示中断向量是否用普通的异常向量(0 表示是,1 表示用特殊向量)

IP

指出等待的中断。该位将保持不变直到中断撤除。IP0~IP1 是软中断位,可由软
件设置与清除。
1-中断等待
0-没有中断

ExcCode

例外码域 (见表5-11)

0

保留。必须按 0 写入,读时返回 0。
表 4-28 Cause 寄存器的 ExcCode 域

例外代码

45

Mnemonic

描述

0

INT

中断

1

MOD

TLB 修改例外

2

TLBL

TLB 例外(读或者取指令)

3

TLBS

TLB 例外(存储)

4

ADEL

地址错误例外(读或者取指令)

5

ADES

地址错误例外(存储)

6

IBE

总线错误例外(取指令)

7

DBE

总线错误例外(数据引用:读或存储)

8

SYS

系统调用例外

9

BP

断点例外

10

RI

保留指令例外

11

CPU

协处理器不可用例外

12

OV

算术溢出例外

13

TR

陷阱例外

龙芯 1B 处理器用户手册
14

-

保留

15

FPE

浮点例外

16-22

-

保留

23

WATCH

WATCH 例外

24-30

-

保留

31

-

保留

Exception Program Counter 寄存器(14, select0)
例外程序计数器(Exception Program Counter,简称 EPC)是一个读/写寄存器,它
包括例外处理结束后的继续处理地址。
对于同步例外,EPC 寄存器的内容是下面之一:
 指令虚地址,这是导致例外的直接原因,或者
 之前的分支或者跳转指令(当指令在分支延时槽中,指令延时位在 Cause 寄存器
中被置位)的虚地址。
当 Status 寄存器中的 EXL 位被置 1 时,处理器不写 EPC 寄存器。
图 4-18 显示了 EPC 寄存器的格式。
31
0
EPC

图 4-18 EPC 寄存器

Processor Revision Identifier (PRID)寄存器(15)
PRId 寄存器是个 32 的只读寄存器,该寄存器包含了标定处理器和 CP0 版本的实现版
本和修订版本的信息。图 4-19 表示了该寄存器的格式;表 4-29 描述了该寄存器的域。
31

16 15

8 7

0
0

IMP

16

8

REV
8

图 4-19 Processor Revision Identifier 寄存器
表 4-29 PRId 寄存器域
域

描述

IMP

实现版本号

REV

修订版本号

0

保留。必须按 0 写入,读时返回 0。

PRID 寄存器的低位(7:0 位)可用作修订版本的号码,而高位(15:8)位可用作实
现版本的号码。龙芯 2F 实现版本号为 0x63,修订版本号为 0x02。
版本号码的表示格式为 Y.X,其中 Y(7:4 位)为主要版本号,而 X(3:0 位)为小
版本号。
版本号码可以区分一些处理器的版本,但不能保证处理器的任何改动要体现在 PRID

46

龙芯 1B 处理器用户手册
寄存器中,换句话说,不能保证版本号的改动必须体现处理器的修改。因为这个原因,寄
存器的值没有给出,而软件也不能依赖 PRID 寄存器中的版本号来标识处理器。
Config0 寄存器(16,select0)
Config 寄存器规定了 GS232 处理器中各种配置选择项;表 4-30 列出了这些选项。
由 Config 寄存器的位 31:3 所定义的一些配置选项,在复位时由硬件设置,而且作为
只读状态位包括在 Config 寄存器中,用于软件的访问。其他配置选项(Config 寄存器的
位 2:0)是可读/写的并且由软件所控制。在复位时这些域是没有定义的。
Config 寄存器的配置是受限的。
Config 寄存器在 Cache 被使用之前应该由软件来初始
化,并且,在做了任何改变后 Cache 应该重新初始化。
图 4-20 表示了 Config 寄存器的格式;表 4-30 Config 寄存器域描述了 Config 寄存
器的域。Config 寄存器的初值为 0x00030932。
Config 寄存器
31

30

25

M

16

15

0

BE

14

13
AT

12

10

9

AR

7

6

MT

4

3

0

2

VI

0
K0

图 4-20 Config 寄存器
表 4-30 Config 寄存器域
域
M
BE

描述
表示 config1 寄存器是否实现
1:大尾端
0:小尾端

AT

0:MIPS32 兼容
1:仅能访问32位地址的 MIPS64 兼容
2:MIPS64 兼容
3:保留

AR

0: release1
1:release2
2-7: 保留

MT

MMU 类型

VI

指令 cache 是否是虚 cache

K0

Kseg0 的 Cache 一致性算法。
7 - Uncached Accelerated
3 - Cachable
2 – Uncached

Config1 寄存器(16,select1)
Config1 寄存器辅助 Config0 寄存器规定了 GS232 处理器中其他各种配置选择项;其
中包括 Icache,Dcache 的各项配置参数,比如每路的组数,cache 行的大小,相关联数。
如果 cache 行大小为 0,则表示 cache 没有实现。
31

47

30

25 24 22 21 19 18

16 15 13 12

10 9

7

6

5

4

3

2

1

0

龙芯 1B 处理器用户手册
M

MMU

IS

IL

IA

DS

DL

DA

C2

0

PC

WR

CA

EP

FP

Size -1
图 4-21 Config 寄存器
表 4-31 Config 寄存器域
域

描述

M

用来指示是否实现了 config2 寄存器

MMU

TLB 表项大小减一

Size-1
IS

Icache 每路的组数

IL

Icache 每行的大小

IA

Icache 组相联数

DS

Dcache 每路的组数

DL

Dcache 每行的大小

DA

Dcache 组相联数

C2

Coprocessor2 是否实现

PC

Performance Counter 是否实现

WR

Watch 寄存器是否实现

CA

代码压缩是否实现

EP

EJTAG 是否实现

FP

浮点功能单元是否实现

0

保留域,必须写 0

Config2 寄存器(16,select2)
Config2 定义了二级缓存的参数,因为 GS232 没有实现二级缓存,固此仅用此寄存器
的最高位表示实现了 Config3 寄存器。
31

30

0

M

0
图 4-22 Config 寄存器
表 4-32 Config 寄存器域

域

描述

0

保留。必须按 0 写入,读时返回 0。

M

Config3 寄存器是否实现

Config3 寄存器(16,select3)

Config3 寄存器辅助 Config0 寄存器规定了 GS232 处理器中其他各种配置选
择项;
31

48

30

11 10

9 8

7

6

5

4

3

2

1

0

龙芯 1B 处理器用户手册
M

0

DSPP

0

0

VEIC

VInt

SP

0

MT

SM

TL

图 4-23 Config 寄存器
表 4-33 Config 寄存器域
域

描述

M

用来指示是否实现了 config2 寄存器

DSPP

DSP 是否实现

VEIC

是否实现了外部中断

VInt

是否实现了向量中断

SP

是否支持小物理页

MT

是否实现了 MTASE

SM

是否实现了 Smart ASE

TL

是否实现了 Trace 逻辑

Config6 寄存器(16,select6)
Config6 寄存器为 GS232 自己定义是用的控制寄存器,用来配置各种分支预测方式,
以及表示是否实现实时中断。
31

30

11 10

9 8

7

6

0
图 4-24 Config 寄存器
表 4-34 Config 寄存器域
域
0
Rti

描述
保留域
是否实现实时中断
分支预测方式,具体如下:

Br_config
编码

分支预测方式

3’b 00

Gshare 索引 bht

3’b001

Pc 索引的 bht

3’b010

总是跳转

3’b011

总是不跳

3’b100

向前跳转

3’b101

向后跳转

Load Linked Address (LLAddr)寄存器(17,select0)
可读/写寄存器
WatchLo 寄存器(18,select0)
49

5

4

3
Rti

2

0
Br_config

龙芯 1B 处理器用户手册
WatchLo 与 WatchHi 寄存器共同构成 Watch 例外接口。
WatchLo 是 32 位的寄存器,
包含位于虚地址空间一个双字的虚地址。如果被使能,任何读或写这个位置都将引发一个
Watch 例外。这个特性是为了调试使用的。只有在 Status 寄存器的 EXL 和 ERL 位都为 0
时才发生 Watch 例外。
图 4-25 描述 WatchLo 寄存器的格式,表 4-35 描述了 WatchLo 寄存器的域。
31

3

2

1

0

VADDR

I

R

W

29

1

1

1

图 4-25 WatchLo 寄存器
表 4-35 WatchLo 寄存器域
域

描述

VADDR

虚地址的 31:3 位

I

如果设成 1,则在取指时发生例外

R

如果设成 1,在 Load 时发生例外。

W

如果设成 1,在 Store 时发生例外。

0

保留。必须按 0 写入,读时返回 0。

WatchHi 寄存器(19,select0)
WatchHi 寄存器是 32 位的寄存器,包含与 WatchLo 中虚地址的其他信息,比如 ASID,
G 位,Mask 位。如果 G 位为 1,那么任何与 WatchLo 匹配的虚地址都将引发 Watch 例外。
如果 G 位为 0,那么只有当 WatchHi 寄存器中的 ASID 位与 EntryHi 寄存器中的 ASID 位匹
配,且虚地址与 WatchLo 匹配才能引发 Watch 例外。
图 4-26 描述 WatchHi 寄存器的格式,表 4-36 描述了 WatchHi 寄存器的域。
WatchHi 寄存器
31

30 29

0

24

G

0

23

16

15

ASID

12 11
0

3
MASK

2

0
0

图 4-26 WatchHi 寄存器
表 4-36 WatchHi 寄存器域
域
G

描述
如果 G 位为 1,那么任何与 WatchLo 匹配的虚地址都将引发 Watch 例外。如
果 G 位为 0,那么只有当 WatchHi 寄存器中的 ASID 位与 EntryHi 寄存器中的 ASID
位匹配,且虚地址与 WatchLo 匹配才能引发 Watch 例外

ASID

地址空间标识域

MASK

虚地址掩码

0

保留。必须按 0 写入,读时返回 0。

Performance Counter 寄存器(25)
GS232 处理器定义了两个性能计数器(Performance Counter),他们分别映射到 CP0
50

龙芯 1B 处理器用户手册
寄存器 25 号的 select 1 与 select 3 寄存器。对应的关联控制寄存器分别影射到 P0 寄存
器 25 号的 select 0 与 select 2 寄存器。每个计数器都是 32 位的读/写寄存器,并且在每
次关联控制域中可数事件发生时自增。每个计数器都可以独立对一种事件计数。

31

11

10

5

0

Event

4

3

2

1

0

IE

U

S

K

EXL

图 4-27 控制寄存器性能计数寄存器

31

0
Counter0
图 4-28 性能计数器寄存器

当计数器的首位(31 位)变成 1(计数器溢出)时,计数器将触发一个中断 IP[6],
关联控制域使能中断。在计数器溢出后无论中断是否被告知,计数都将继续。表 4-37 描
述 24 号寄存器控制域的格式。表 4-38 描述计数使能位的定义。表 4-39 描述计数器 0 和
计数器 1 各自的事件。
表 4-37 控制域格式
[10:5]

[4]

Event 1 Select

[3:0]

IP[6] Interrupt Enable

计数使能位(K/S/U/EXL)

表 4-38 计数使能位定义
计数使能位

Count Qualifier(CP0 Status 寄存器域)

K

KSU = 0 (内核模式), EXL = 0, ERL = 0

S

KSU = 1 (超级用户模式), EXL = 0, ERL = 0

U

KSU = 2 (普通用户模式), EXL = 0, ERL = 0

EXL

EXL = 1, ERL = 0

表 4-39 计数器 0/1 事件
事件

内部信号

描述

0000

Cycles

周期

0001

Brbus.valid

分支指令

0010

Jrcount

JR 指令

0011

Jr31count

JR 指令并且域 rs=31

0100

Imemread.valid&

一级 I-cache 缺失

Imemread_allow

51

0101

Rissuebus0.valid

Alu1 操作已发射

0110

Rissuebus2.valid

Mem 操作已发射

0111

Rissuebus3.valid

Falu1 操作已发射

1000

Brbus_bht

BHT 猜测指令

龙芯 1B 处理器用户手册
事件

内部信号

1001

描述

Mreadreq.valid&

从主存中读

Mreadreq_allow
1010

Fxqfull

固定发射队列满的次数

1011

Roqfull

重排队列满的次数

1100

Cp0qfull

CP0 队列满的次数

1101

Exbus.ex & Excode=34,35

Tlb 重填例外

1110

Exbus.ex &

例外

Excode=0
1111

Exbus.ex &

内部例外

Excode=63

TagLo(28)寄存器
TagLo 寄存器是 32 位读/写寄存器,用于保存一级/
二级 Cache 的标签和状态,使
用 CACHE 和 MTC0 指令往 Tag 寄存器写。
图 4-29 显示了这些寄存器用于一级 Cache(P-Cache)操作的格式。
表 4-40 Cache Tag 寄存器域列出了 TagLo 和 TagHi 寄存器中域的定义。
TagLo 寄存器
31

8

7

6

5

4

3

0

PTAG[23:0]

CS

SCSETI

0

24

2

2

4

图 4-29 TagLo 寄存器(P-Cache)

表 4-40 Cache Tag 寄存器域
域

描述

PTAG

指定物理地址的 31:12 位。

CS

指定 Cache 的状态。

SCSETI

对应 Cache 行在二级 Cache 的组号(二级 Cache 该域为 0)

0

保留。必须按 0 写入,读时返回 0。

ErrorEPC 寄存器(30)
除了用于 ECC 和奇偶错误例外外,
ErrorEPC 寄存器与 EPC 寄存器类似。它用于在复位、
软件复位、和不可屏蔽中断(NMI)例外时存储程序计数器。
ErrorEPC 是一个读写寄存器,它包括处理一个错误后指令重新开始执行的虚拟地址。
图 4-30 显示了 ErrorEPC 寄存器的格式。

31
0

52

龙芯 1B 处理器用户手册
ErrorEPC
64
图 4-30 ErrorEPC 寄存器

4.2 CP0 指令
表 4-41 列出了 GS232 处理器定义的 CP0 指令。
表 4-41 CP0 指令
指令

描述

CACHE

CACHE 操作

DMFC0

从 CP0 取双字

DMTC0

将双字送到 CP0

ERET

例外返回

MFC0

从 CP0 取数据

MTC0

将数据送到 CP0

TLBP

查询 TLB 项

TLBR

用索引读 TLB 表项

TLBWI

用索引填充 TLB 表项

TLBWR

随机填充 TLB 表项

相关
龙芯处理器能够处理硬件中的流水线相关,包括 CP0 相关和访存相关,因此 CP0 指令
并不需要 NOP 指令来校正指令序列。

4.3 EJTAG 设计
4.3.1 EJTAG 介绍
EJTAG 是 MIPS 公司制定的片上调试规范,它根据 IEEE1149.1 协议的基本构造和功能
扩展而来。EJTAG 在被调试系统的处理器内部嵌入额外的控制模块,当满足一定的触发条
件时进入一种特殊的调试模式。进入调试模式后,当前执行程序停止运行,处理器执行调
试异常处理程序。在异常处理程序中,被调试系统可以进行各种 EJTAG 操作,并可以通过
TAP 与调试主机进行通信。被调试系统执行 DERET 指令后从调试模式退出。被调试系统退
出调试模式后,从产生调试异常处继续执行指令。调试主机可以通过被调试系统外部特设
的通信接口(TDI, TDO, TMS,TCK)访问一些处理器内部资源如寄存器,存储器等。调试主
机通信端口与被调试系统调试通信接口通过一块简单的信号转换电路板即调试卡(probe)
进行连接。下图为 EJTAG 调试的连接示意图。

53

龙芯 1B 处理器用户手册

图 4-31 EJTAG 调试连接示意图

GS232IP 实现了 EJTAG3.1 的规范。主要提供了以下几个方面的功能:
调试例外和调试模式。为了能在处理器执行过程中观察处理器内部状态,EJTAG 规定
了若干调试例外。当调试例外发生的时候,处理器进入调试模式。在调试模式下可以没有
限制的访问协处理器,内存区域等,在调试模式下其他调试例外及外部中断等被忽略。例
外处理程序在调试模式下执行,可以由调试主机提供也可以由被调试系统自己提供。龙芯
2 号 IP 实现了八种调试例外,分别是:DSS(单步调试异常),DINT(外部调试中断)
,DDBL
(load 数据断点),DDBS(store 数据断点)
,DIB(指令断点)和 DBP(执行 SDBBP 指令例
外)
,DDBSImpr(精确带值比较的 store 数据断点),DDBLImpr(精确带值比较的 load 数据
断点)
。所有调试例外都是精确的,注意这里,DDBSImpr,DDBLImpr 与 EJTAG 规范规定的
意义不同。
板外的 EJTAG 内存.EJTAG 允许处理器在调试模式下能够从系统之外存取指令或者数
据。EJTAG 的这部分内存被映射到处理器的内存空间,从处理器看出去是被映射到 kseg3
段的虚拟地址。
调试断点指令。EJTAG 引入了一条新的断点指令 SDBBP,SDBBP 指令将处理器置于调试
状态,然后从 EJTAG 内存的相应地址取出其相关的处理代码。
硬件断点。EJTAG 同时定义了两种硬件断点。一种是指令断点,是处理器从特定的虚
拟地址取指的时候触发;另外一种是数据断点,当处理器从一个特定的虚拟地址存/取值的
时候触发。GS232IP 实现了精确硬件断点,同时支持 2 个指令断点和 8 个数据断点(??)
。
DDBSImpr,DDBLImpr 例外的实现:不实现非精确硬件断点例外,通过分析发现,目前
处理器的时间只有一种情况需要特殊处理才能避免发生非精确硬件断点例外,就是一个
load 操作不命中,同时硬件断点又需要值比较的时候,由于 nonblocking 的设计,后面如
果上来了 store 或 MTC0 指令,就不能保证精确了。而其它情况都能立刻从硬件断点部件返
回例外信号,中止该指令的操作,使其立刻返回操作队列。
GS232IP 中与 EJTAG 相关的硬件支持主要包括:调试控制寄存器(DCR)
、硬件断点寄
存器、支持 EJTAG 调试功能的处理器核扩展、EJTAG TAP 等部分。下面分几个部分分别详
细介绍。

4.3.2 调试控制寄存器(Debug Control Register)
调试控制寄存器(Debug Control Register,以下简称 DCR)提供 EJTAG 调试的一些
重要配置和状态信息。它的地址是 0XFFFF FFFF FF20 0000,也就是 drseg 段偏移量为 0
处。在 GS232IP 中,DCR 是 32 位的。
DCR 提供了非调试模式下的外部中断和 NMI 控制、未决的 NMI 信号指示、指令断点和
数据断点是否可用、PC 采样是否可用以及采样周期等主要功能。图 4-32 DCR 寄存器格式

54

龙芯 1B 处理器用户手册
描述了 DCR 的格式,表 4-42 DCR 寄存器域具体介绍了 DCR 中各个域。
31

29

30
0

28

17

16

15 10

9

8

6

Data

InstBr

0

PCS

PCR

Brk

k

5

4

3

2

1

0

0

IntE

NMIE

NMIpend

SRstE

18
ENM

0

图 4-32 DCR 寄存器格式
表 4-42 DCR 寄存器域
域名

所在位

ENM

29

描述
处理器在 Kernel 态和调试模式下的尾端属性:

读/写
只读

0:小尾端
1:大尾端
DataB

17

rk

是否实现了硬件数据断点:

只读

0:未实现硬件数据断点
1:实现了硬件数据断点
InstB

16

rk

是否实现了硬件指令断点:

只读

0:未实现硬件指令断点
1:实现硬件指令断点
PCS

9

是否实现了 PC 采样机制:

只读

0:未实现采样机制
1:实现了采样机制
PCR[2

8:6

:0]

PC 采样频率:PCR 的值 0 到 7 分别表示每 2 的 5 次方,2

可读

的 6 方,2 的 7 方,2 的 8 方,2 的 9 方,2 的 10,2 的 11 和 2

可写

的 12 次方拍进行一次采样。
IntE

4

是否允许非调试模式下的中断:

可读

0:不允许中断

可写

1:允许中断
NMIE

4

是否允许非调试模式下的 NMI 中断:

可读

0:不允许 NMI

可写

1:允许 NMI
NMIpe
nd

4

未决 NMI 指示位:
0:无未决 NMI
1:有未决 NMI

55

只读

ProbEn

龙芯 1B 处理器用户手册

Probe

0

同 ECR 寄存器 Proben 域:

n

只读

0:不允许访问 dmseg
1:允许访问 dmseg
0

31:30

必须写入 0;读出时返回 0。

只读

28:18
15:10
5:1

4.3.3 硬件断点
GS232IP 提供了 2 个硬件指令断点和 8 个硬件数据断点。在非调试上的模式下,一旦
断点条件被满足,根据相应断点控制寄存器的具体位置,发生硬件断点例外或设置断点标
志位。在 GS232IP 中,指令和数据断点例外都是精确例外,数据断点例外不进行值的比较。
图 4-33 是指令断点和数据断点的概况。表 4-43 是指令断点寄存器和数据断点寄存器在
drseg 中的偏移量。

PC

Debug 例外
硬件指令断点

断 点

ASID

TYPE
Debug 例外
硬件数据断点

ADDR

断点标志
ASID
BYTELANE
图 4-33 硬件指令、数据断点概况

需要特别指出的是,从断点例外返回会回到触发断点的指令。如果软件不在例外服务
程序中禁用相应的断点,会导致重复发生断点例外。
表 4-43 硬件断点寄存器
寄存器简称

寄存器名

在 drseg 中偏移量

数据断点寄存器偏移量

56

DBS

数据断点状态寄存器

0x2000

DBAn

数据断点地址寄存器 n

0x2100+0x100×n

龙芯 1B 处理器用户手册

DBMn

数据断点掩码寄存器 n

0x2108+0x100×n

DBASIDn

数据断点 ASID 寄存器 n

0x2110+0x100×n

DBCn

数据断点控制寄存器 n

0x2118+0x100×n

指令断点寄存器偏移量
寄存器代码

寄存器描述

在 drseg 中的地址

IBS

指令断点状态寄存器

0x1000

IBAn

指令断点地址寄存器 n

0x1100+0x100×n

IBMn

指令断点掩码寄存器 n

0x1108+0x100×n

IBASIDn

指令断点 ASID 寄存器 n

0x1110+0x100×n

IBCn

指令断点控制寄存器 n

0x1118+0x100×n

注: n 代表第 n 个断点相关的寄存器(指令断点 n 从 0 到 3,数据断点 n 从 0 到 7)。
图 4-34 描述了 IBS 的格式,表 4-44 具体介绍了 IBS 中的各个域。
31
0

30

29

ASIDsup

28

27

0

24

23

BCN

16
0

15
IBPTshare

14

0

BS[14:0]

图 4-34 IBS 寄存器格式
表 4-44 IBS 域描述
域

描

域名

所在位

ASIDsup

30

述

表示在指令断点中是否支持 ASID 的比较:

读/写

只读

0:不支持 ASID 比较
1:支持 ASID 比较
BCN

27:24

表示所实现的指令断点数:

只读

0:保留
1-15:指令断点数
BS[14:0]

14:0

断点标志位:BS[n]代表第 n 个指令断点匹配条件被满足

可读/

了。在 GS232IP 中只有 BS[3:0]有效,BS[14:4]必须全部

可写入 0

为 0.
0

31

必须写入 0;读出时返回 0。

只读

29:28
23:15

图 4-35 描述了 IBAn 的格式,每个 IBAn 的内容表示一个指令断点比较的虚地址。
57

龙芯 1B 处理器用户手册
图 4-36 描述了 IBMn 的格式,每个 IBMn 的内容表示一个指令断点比较的地址掩码,
IBMn 的每一位为“1”表示相应位不需要比较,为“0”表示相应位需要比较。
图 4-36 描述了 IBCn 的格式,表 4-45 具体介绍了 IBCn 中的各个域。
31

0
IBAn
图 4-35 IBAn 寄存器格式

31

0
IBMn
图 4-36 IBMn 寄存器格式

31

24

23

22

ASIDuse

3
0

2

1
TE

0
0

BE

图 4-37 IBCn 寄存器格式

表 4-45 IBCn 域描述
域

描

域名

所在位

ASIDuse

23

述

读/写

表示在指令断点 n 中是否使用 ASID 的比较:

可读

0:不使用 ASID 比较

可写

1:使用 ASID 比较
TE

2

表示指令断点 n 匹配时是否会设 IBS 中的 BS[n]位:

可读

0:不设 BS[n]

可写

1:设 BS[n]
BE

0

表示断点 n 的匹配是否引发断点例外:

可读/

0:不引发断点例外

可写

1:引发断点例外
0

31:24

必须写入 0;读出时返回 0。

只读

22:3
1

指令断点的匹配条件是:
IB_match = ( !IBCn_ASIDuse | | (ASID = = IBASIDn_ASID) ) && ( ( IBMn_IBM
|
~(PC ^ IBAn_IBA) = = ~0 ) )

58

龙芯 1B 处理器用户手册
需要指出的是:当 BE 位被置为 1 时,如果断点匹配上,即使 TE 位为 0,IBS 中的 BS[n]
位依然会被置为 1.因此在进入断点例外后,软件可以通过查询 BS 来判断是哪个断点引起
了例外。
图 4-38 描述了 DBS 格式,表 4-46 具体介绍了 DBS 中的各个域。
31
0

30

29

ASIDsup

28

NoSVmatch

27

24

NoLVmatch

23

15 14

BCN

0
0

BS[14:0]

图 4-38 DBS 寄存器格式
表 4-46 DBS 域描述
域

描

域名

所在位

ASIDsup

30

述

读/写

表示在指令断点是否支持 ASID 的比较:

只读

0:不支持 ASID 比较
1:支持 ASID 比较

NoSVmatch

29

表示是否在数据断点的存储操作进行值比较:

只读

0:即比较地址也比较值
1:只比较地址
NoLVmatch

28

表示是否在数据断点的 load 操作进行值比较:

只读

0:即比较地址也比较值
1:只比较地址
BCN

27:24

所实现的数据断点个数

只读

0:未实现数据断点
1-15:数据断点个数
BS[14:0]

14:0

断点标志位:BS[n]代表第 n 个数据断点匹配条件满

可读

足了。在 GS232IP 中只有 BS[7:0]有效,BS[14:8]

/可写 0

必须全部为 0
0

31

必须写为 0,并且读出为 0

只读

23:15

图 4-39 描述了 DBAn 的格式,每个 DBAn 的内容表示一个数据断点比较的虚地址。
图 4-40 描述了 DBMn 的格式,每个 DBMn 的内容表示一个数据断点比较的地址掩码,
DBMn 的每一位为“1”表示相应位不需要比较,为“0“表示相应位需要比较。
图 4-41 描述了 DBCn 的格式,表 4-47 具体介绍了 DBCn 中的各个域。
31
59

0

龙芯 1B 处理器用户手册
DBAn
图 4-39 DBAn 寄存器格式
31

0
DBMn
图 4-40 DBMn 寄存器格式

31

24

23

0

ASIDuse

22

21
0

14

13

12

BA[7::0]

NoSB

11

3

2

NoLB

1
0

0
TE

0

BE

图 4-41 DBCn 寄存器格式
表 4-47 DBCn 域描述
域

描

域名

所在位

ASIDuse

23

述

读写

表示数据断点 n 的匹配是否需要比较 ASID:

可读

0:不需要 ASID 比较

可写

1:需要 ASID 比较

BAI[7:0]

21:14

BAI 中每一位对应双字中的一个字节,如果 BAI 中的位被置为

可读

1,则相应的自己访问在匹配时被忽略:

可写

0:对该字节的访问可以引发匹配
1:对该字节的访问在匹配时被忽略,不引发匹配
BAI 不全为 0 是匹配成功的必要条件
NoSB

13

表示 store 操作是否引发匹配:

可读

0:store 操作可以引发匹配

可写

1:store 操作不可以引发匹配
NoLB

12

表示 load 操作是否引发匹配:

可读

0:load 操作可以引发匹配

可写

1:load 操作不可以引发匹配
TE

2

表示数据断点 n 的匹配时是否会设 IBS 中的 BS[n]位:

可读

0:不设 BS[n]

可写

1:设 BS[n]为 1
BE

0

表示数据断点 n 的匹配是否会引发断点例外:

可读/

0:不引发断点例外

可写

1:引发断点例外
0

60

31:24

必须写入 0;读出时返回 0。

只读

龙芯 1B 处理器用户手册

22
3
1

数据断点的匹配条件是:
DB_match = ( ( (TYPE = = load ) && !DBCn_NoLB ) | | ( (TYPE = =store )
&& !DBCn_NoSB ) ) && ( !DBCn_ASIDuse | | ( ASID = = DBASIDn_ASID ) )
&& ( ( DBMn_DBM | ~ ( ADDR ^ DBAn_DBA ) ) = = ~0 )
&& ( (~DBCn_BAI & BYTELANE ) !=0 )
需要指出的是:当 BE 位被置为 1 时,如果断点匹配上,即使 TE 位为 0,DBS 中的 BS[n]
位依然会被置为 1.因此在进入断点例外后,软件可以通过查询 BS 来判断是那个断点引发
了例外。

4.3.4 EJTAG 相关的处理器核扩展
(1)调试模式及其相关例外。调试模式只在发生调试例外的时候进入,执行 DERET
或处理器重置可以退出 Debug 模式。在调试模式下,可以像内核状态下存取处理器资源,
除此之外调试模式还提供了额外的资源以方便调试。
调试例外优先级如下表所示:
表 4-48 调试例外优先级表
优先级

例外名称

例外类型

最高

Reset

非调试

Soft reset
Debug Interrupt

调试

DDBLImpr/DDSBImpr
NMI

非调试

Interrupt
Debug Instruction Break

调试

Address error on instruction fetch

非调试

TLB refill on instruction fetch
TLB Invalid on instruction fetch
Cache Error on instruction fetch
Bus Error on instruction fetch

61

Debug Breakpoint (SDBBP)

调试

Other excution_based exceptions

非调试

Debug Data Break on Load/Store address match

调试

龙芯 1B 处理器用户手册

Address error on data access

非调试

TLB refill on data access
TLB Incvalid on data access
TLB modified on data access
Cache error on data access
Bus error on data access
最低

在调试状态下,只有部分例外可以继续发出,有些例外要被屏蔽,具体情况请见下表:
表 4-49 例外屏蔽表
优先级

调试模式下发生的事件

调试模式处理

最高

Reset

同非调试模式

Soft reset
Debug Interrupt

屏蔽

DDBLImpr/DDSBImpr
NMI
Interrupt
Debug Instruction Break
Address error on instruction fetch

重新进入调试模式

TLB refill on instruction fetch
TLB Invalid on instruction fetch
Cache Error on instruction fetch
Bus Error on instruction fetch
Debug Breakpoint (SDBBP)

如同执行 BREAK 重新
进入调试模式

Other excution_based exceptions

重新进入调试模式

Debug Data Break on Load/Store address match

屏蔽

Address error on data access

重新进入调试模式

TLB refill on data access
TLB Incvalid on data access
TLB modified on data access

62

龙芯 1B 处理器用户手册

Cache error on data access
最低

Bus error on data access

(2)EJTAG 相关指令扩展。为了支持 EJTAG 调试功能,处理器增加了两条指令,SDBBP
和 DERET。SDBBP 产生一个调试断点异常;DERET 的功能是从调试例外中返回。
(3)内存映射的与调试有关的段。由于调试的 dseg 段分为 dmseg(EJTAG 内存)段
和 dresg(EJTAG 寄存器)段。下表说明了段的划分和相关情况:
表 4-50 Dseg 划分
段名

字段名称

虚拟地址

Cache 属性

Dseg

dmseg

0xffff_ffff_ff20_0000 ~

Uncached

0xffff_ffff_ff2f_ffff
drseg

0xffff_ffff_ff30_0000 ~
0xffff_ffff_ff3f_ffff

下表列出了在调试模式下访问 0xffff_ffff_ff20_0000 到 0xffff_ffff_ff2f_ffff 的
情况:
表 4-51 Dmseg 的访问情况
Debug_NoDCR

交易类型

DCR_ProbEn

Debug_LSNM

1

x

不存在

0

Kernel 地址空间

0

Fetch

1

X

Dmseg

0

X

1

0

Dmseg

1

Kernel 地址空间

0

Kernel 地址空间

Load/Store

0

存取

1

下表列出了在调试模式下访问 0xffff_ffff_ff30_0000 到 0xffff_ffff_ff3f_ffff 的情
况:
表 4-52 Drseg 的访问情况
Debug_NoDCR

交易类型

Debug_LSNM

存取

1

X

0

Kernel 模式的地址空间

0

Fetch

x

未定义

Load/Store

0

Drseg

1

Kernel 模式的地址空间

63

龙芯 1B 处理器用户手册

另外下表列出了不同情况下的调试例外中断入口地址:
表 4-53 调试例外中断入口地址
ECR 寄存器中的 ProbTrap 位

调试例外中断入口地址

0

0xffff_ffff_bfc0_0480

1

0xffff_ffff_ff20_0200(dmseg)

4.3.5 TAP 接口
(1)EJTAG TAP 包含的主要功能包括以下几个方面。①进行设备的识别和操作 EJTAG
调试功能;②dmseg 内存段的模拟;③ 重启后立即进入重启的处理,从处理器外部取得启
动代码和数据;④ 从 Probe 得到调试中断请求。下图示表示了 TAP 包含的主要部分。

TCK

TMS
TAP 控制器
TDO

指令寄存器

TDI

选中的数据寄存器

TRST*

图 4-42 TAP 主要部分

TAP 由测试时钟(TCK)
、测试模式选择(TMS)
、测试数据输入(TDI)、测试数据输出
(TDO)和测试重置(TRST*,低有效)组成。TCK 和 TMS 用于控制 TAP 控制器的状态,从而
可以存取指令或者数据寄存器;通过 TDI 和 TDO 可以存取数据和指令寄存器;TRST*用于提
供异步重置信号。关于 TAP 的详细信息可以参考 IEEE Std 1149.1—1990 TAP 和边界扫描
架构标准,EJTAG 的 TAP 控制器部分与该标准保持兼容。
(2)指令寄存器及其指令。指令寄存器用于控制数据寄存器的选择和 EJTAGBOOT 标
志的设置和清除。指令寄存器长度为 5 位,下表包含了 EJTAG 覆盖的指令:
表 4-54 EJTAG 指令
编码

64

指令

功能

龙芯 1B 处理器用户手册

0x01

IDCODE

选中设备 ID 器

0x03

IMPCODE

选中实现标志寄存器

0x08

ADDRESS

选中地址寄存器

0x09

DATA

选中数据寄存器

0x0a

CONTROL

选中 EJTAG 控制寄存器

0x0b

ALL

选中地址、数据、和控制寄存器

0x0c

EJTAGBOOT

使处理器 reset 后执行调试例外

0x0d

NORMALBOOT

使处理器 reset 后执行 reset 处理代码

0x0e

FASTDATA

选择数据和 fastdata 寄存器

0x14

PCSAMPLE

选中 PC 采样寄存器

全1

BYPASS

选中旁路寄存器

其中指令 IDCODE、IMPCODE、ADDRESS、DATA、CONTROL 和 BYPASS 选中单个数据寄存器,
如上表所示。ALL、EJTAGBOOT、NORMALBOOT 和 FASTDATA 指令稍微特殊一些,我们在下面
进行描述。
ALL 指令
使用 ALL 指令 Address、Data 和 EJTAG 控制寄存器一次全部选中,如下图所示:
地址寄
存器

TDI

数据寄
存器

Fastdata 寄
存器

TDO

图 4-43 ALL 指令示意图

EJTAGBOOT 和 NORMALBOOT 指令
EJTAGBOOT 和 NORMALBOOT 指令用于控制处理器 reset 时,是否发生调试中断。
如果 EJTAGBOOT 标志位存在,reset 时发生调试中断引发调试中断异常,处理器从调试例
外异常处取值。同时,控制寄存中的 ProbTrap 位控制了调试例外入口的位置,可以通过
Probe 访问 dmseg 段,这样即使在正常的内存系统不能工作的情况下,也能启动处理器。
给出 EJTAGBOOT 或者 NORMALBOOT 指令的时候选中 Bypass 寄存器。EJTAG 控制寄存器
的 EjtagBrk、ProbEn、ProbTrap 位跟随内部的 EJTAGBOOT 位。
FASTDATA 指令
FASTDATA 指令选中数据和 Fastdata 寄存器,如下图所示:

TDI

数据寄存器

图 4-44

65

Fastdata 指令示意图

Fastdata 寄存器

TDO

龙芯 1B 处理器用户手册
(3)数据寄存器。下表总结了 TAP 的数据寄存器。
表 4-55 TAP 数据寄存器
使用该寄存器的指令

寄存器名称

功能

IDCODE

设备 ID 寄存器

验证设备

MPCODE

实现寄存器

验证可以通过 TAP 访问
的功能

DATA/ALL/FASTDATA

数据寄存器

处理器存取的数据

ADDRESS/ALL

地址寄存器

处理器存取的地址

CONTROL/ALL

EJTAG 控制寄存器

通过 TAP 访问的功能的
控制寄存器

BYPASS1/EJTAGBOOT/NORMALBOOT

BYPASS 寄存器

提供 TAP 的一位的移位
路径

FASTDATA

FASTDATA 寄存器

附着在前面的数据寄存
器上值上表示下一次
PrAcc 位的值

PCSAMPLE

PC 采样寄存器

由 PC 采样逻辑使用

下面对数据寄存器值的含义做详细的说明:
设备识别寄存器(IDCODE)
设备识别寄存器是一个 32 位的只读寄存器,用来指明实现 EJTAG 的设备。这个寄存器
也在 IEEE 1149. 1 标准中定义了。寄存器的格式和含义如下图和下表所示:
31

28 27

版本

12 11
部件编号

1

0

厂商 ID

1

图 4-45 IDCODE 寄存器格式
表 4-56 IDCODE 寄存器说明
所在位

描述

读/写

域名
版本

31:28

部件编号

27:12

指明指定设备的部件编号

只读

生产产商

11:1

指明指定设备的生产厂商编号

只读

1

0

● 实现寄存器(IMPCODE)
66

只读

龙芯 1B 处理器用户手册
实现寄存器是一个 32 位的只读寄存器,用来指明 EJTAG 实现了的功能。寄存器值的格
式和含义如下图和下表所示:
31

29

EJTAGver

28
R4k/R3k

27 25

24

23

22

21

0

DINTsup

0

ASIDsize

20 17
0

16
MIPS16e

15

14

13 1

0

NoDMA

0

0
MIPS
32/64

图 4-46 IMPCADE 寄存器示意图
表 4-57 IMPCODE 寄存器说明
域名

所在位

描述

读/写

EJTAGevr

31:29

4k/R3k

28

特权环境的版本,0 为 R4k 特权环境

只读

DINTsup

24

指明是否支持来自 probe 的 DINT

只读

0:不支持
1:支持
ASIDsize

22:21

指明 ASID 的大小

只读

0:为实现
1:6 位
2:8 位
MIPS16e

16

指明处理器是否支持 MIPS16e ASE

只读

0:不支持
1:支持
NoDMA

14

指明没有 EJTAG DMA 支持:

只读

0:不支持
1:支持
MIPS

0

32/64

指明是 32 位还是 64 位处理器:

只读

0:32 位
1:64 位

0

27:25
23
20:17
15
13:1

67

写忽略;读返回零

只读

龙芯 1B 处理器用户手册

● 数据寄存器(DATA)
可以读写的数据寄存器在处理器存取的过程用于操作码和数据的传输。读取该寄存器
的时候,只有当处理器阻塞在写操作上的时候,数据寄存器里面的值才有意义。当处理器
有阻塞的读操作的时候,写入数据寄存器里面的值才有效。
寄存器值的格式如下图所示:
31

0
数据寄存器
图 4-47 数据寄存器格式

数据寄存器里面的数据有效位由存取的数据大小、地址等共同决定。也就是由地址和
ECR 寄存器中的 Psz 位等决定,Psz 位的含义由下表决定:
表 4-58 Psz 位的含义
Psz

大小

地址
【2:0】

0

字节

小尾端
7

6

5

4

3

2

000
■

010

■

011

■

100
字节

■

101

■

110
111
1

半字

■
■

000
010

2

3
68

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■

■
■

■
■

100
110

0
■

001

0

1

■

■

字

000

5 字节

001

6 自节

010

7 字节

011

字

100

■

■

■

■

5 字节

101

■

■

■

■

■

6 自节

110

■

■

■

■

■

■

7 字节

111

■

■

■

■

■

■

■

3 字节

000

■

■

■

龙芯 1B 处理器用户手册

010
100

双字

■

■

110

■

■

■

111

■

■

■

保留

■

■

■

■

■

■

■

■

■

n. a.

● 地址寄存器(ADDRESS)
只读的地址寄存器提供处理器访问的地址,寄存器的长度为 48 位。
寄存器的格式如下图所示:
32

0
地址寄存器

图 4-48 地址寄存器格式

● EJTAG 控制寄存器(ECR)
32 位的 EJTAG 控制寄存器可以用来处理处理器 reset 和 soft reset 信号、Debug 模
式信号、处理器存取的开始、完成、大小,以及读写信号。除此之外 ECR 还控制:调试入
口地址、允许调试中断请求、允许实现无关的处理器和外设 reset.
寄存器值的格式和含义如下图和下表所示:
0

DM

0

EjtagBrk

0

ProbTrap

ProbEn

PrRst

0

PrAcc

PRnW

PerRst

Halt

Doze

VPED

0

Psz

Rocc

图 4-49 ECR 格式
表 4-59 ECR 域描述
域名

所在位

Rocc

31

描述
当处理器在重置后,Rocc 位保持为 1.调试主机通过 TAP 清掉

读/写
读/可写 0

此位,表示检测到处理器重置行为。
Psz

30:29

指明了当前处理器处理数据的大小

只读

VPED

23

在具有 MIPS MT ASE 的处理器上,该位表示 VPE 当前是否被禁

只读

用。
0:不支持 MT 或者支持,并且处于激活状态
1:禁用状态
Doze

22

0:未处于低电压模式

只读

1:处于低电压模式
Halt

69

21

0:内部系统总线运行中

只读

龙芯 1B 处理器用户手册

1:内部系统总线停止
PerRst

20

用于控制外围 reset

可读写

0:无外围 reser
1:存在外围 reset
PRnW

19

表示当前阻塞的处理器存取类型。

只读

0:处理器读,取值或者取数
1:处理器写
PrAcc

18

用于只是是否有一阻塞的处理器存取,并用来控制处理器存取

可读/可写

的完成。读的时候返回 0 表示没有等待的处理器存取;1 表示
存在等待的处理器存取。如果在有等待的处理器存取的情况
下,写入 0 表示处理器存取的完成。
PrRst

16

用于控制处理器 reset,该位不可用,只读

只读

ProbEn

15

用于控制 Probe 是否用来服务 dmseg 段的存取。

可读写

0:Probe 不服务
1:Probe 服务
ProbTrap

14

用于控制调试状态下的例外地址。
0:正常

可读写

0xffff_ffff_bfc0_0408

1:dmseg 0xffff_ffff_ff20_0000
EjtagBrk

DM

12

3

写入 1 的时候请求一个调试中断例外,当处理器进入调试状态

可读/可写

的时候硬件清掉该位

1

指示当前处理器是否在调试模式。

只读

0:非调试模式
1:调试模式
0

28:24,

返回 0

只读

17,
13,
11:4,
2:0

● Fastdata 寄存器
Fastdata 寄存器的宽度为 1 位。移进的 Fastdata 寄存器的值表示了存取操作是否已
经完成。Fastdata 寄存器只有 1 位,可读可写。
表 4-60 Sample 寄存器说明
70

龙芯 1B 处理器用户手册

域名

所在位

描述

读/写

TC

48:41

ASID

40:33

采样的 PC 的地址空间

只读

PC

32:1

PC 值

只读

New

0

表示该寄存器是否被读过

可读/写 0

● Bypass 寄存器
Bypass 寄存器提供一位的只读寄存器,提供通过 TAP 访问的最短移位路径。该寄存器
是 IEEE 1149. 1 的规定。

71

龙芯 1B 处理器用户手册

5 DDR2
龙芯 1B 集成了内存控制器,兼容 DDR2 SDRAM 标准(JESD79-2B)。龙芯 1B 提供
JESD79-2B 兼容的内存读写操作。

5.1 DDR2 SDRAM 控制器特性
龙芯 1B 通过一个片选信号和 18 位的地址总线(15 位行/列地址和 3 位逻辑 Bank 地址)
35
实现最大地址空间是 32G(2 )。
龙芯 1B 支持所有的与 JESD79-2B 兼容的内存颗粒。DDR2 控制器参数能被设置为支持
指定的内存芯片类型。芯片选择信号(CS_n)的最大数目是 1。行地址(RAS_n)和列地址
(CAS_n)的最大带宽分别是 15 和 14。还有 3 位的逻辑 bank 信号(BANK_n)。
CPU 内存的物理地址能被转换位行/列地址,见表 5-1。例如,1 个 CS_n 信号,8 个
banks,12 位行地址和 12 位列地址。
表 5-1 DDR2 SDRAM 行/列地址转换
34

30 29

18 17
RAS_n

15 14
BANK_n

3 2
CAS_n

0
Byte

内存控制器接收从处理器或外部设备发送的内存读写请求。无论是读还是写操作,内
存控制器都处在 slave 状态。
内存控制器中实现了动态页管理功能。对于内存的一次存取,不需软件设计者的干预,
控制器会在硬件电路上选择 Open Page/Close Page 策略。内存控制器特性包括:
 全流水的命令和数据读写;
 通过合并和重排序增加带宽;
 通过丰富的寄存器读写端口修改基本的参数;
 内置 Delay Compensation Circuit(DCC),用来可靠的发送/接收数据;
 1 位和 2 位错误检测,通过 ECC 进行 1 位的错误修正;
 频率:133MHz-333MHz;

5.2 DDR2 SDRAM 读协议
图 5-1 中显示 DDR2 SDRAM 读协议,命令(CMD)包括 RAS_n,CAS_n 和 WE_n。当一个
读请求发生时,RAS_n=1,CAS_n=0,WE_n=1。

72

龙芯 1B 处理器用户手册

图 5-1 DDR2 SDRAM 读协议, Cas Latency = 3, Read Latency = 3, Burst Length = 8

5.3 DDR2 SDRAM 写协议
在图 5-2 中显示 DDR2 SDRAM 写协议,命令(CMD)包括 RAS_n,CAS_n 和 WE_n。当写
请求发生时,RAS_n=1,CAS_n=0,WE_n=0。与读协议不同,DQM 用来识别需要被写的字
节数。DQM 和 DQS 是同步的。

图 5-2 DDR2 SDRAM 写协议,Cas Latency = 3, Write Latency = Read Latency -1 = 2, Burst Length =
4.

5.4 DDR2 SDRAM 参数设置顺序
为了在系统中支持不同的 DDR2 SDRAM 颗粒,DDR2 SDRAM 需要在加电复位后配置。
JESD79-2B 标准定义了详细的配置操作和过程。DDR2 在内存初始化前是不可用的,内存初
始化顺序为:
1. 系统复位期间,aresetn 信号设置为 0,所有的寄存器内容将清除为却省值;
2. 系统复位释放,aresetn 信号设置为 1;
73

龙芯 1B 处理器用户手册
3. 向配置寄存器地址发 32 位写指令,配置所有 29 个配置寄存器。此时如果写
CTRL_03,应将其中参数 START 设为 0。所有寄存器都必须正确配置才可以正常
工作。
4. 向配置寄存器 CTRL_03 中发 32 位写指令。此时应将参数 START 设为 1。结束后
内存控制器将自动对内存发起初始化指令。
在系统母板初始化后,DDR2 SDRAM 控制器在内存使用前需要配置内存类型。特别的是
需要将相应的配置参数写到对应于物理地址 0X0FFF FE00 的 29 个 64 位寄存器中。每个寄
存器会包括一个、多个或部分的参数。

5.5 DDR2 SDRAM 采样模式配置
在龙芯 1B 的 DDR2 SDRAM 控制器中,并通过延迟补偿电路(使用 DLL)来采样返回 DQS
的数据。因为内存控制器和 SDRAM 模块间的数据返回路径有延迟,所以必须引进一组控制
信号用来测量延迟。
DDR2_GATE_I[1:0] 和 DDR2_GATE_O[1:0]的控制信号用于延迟测量。在 PCB 设计中,
DDR2_GATE_I 和 DDR2_GATE_O 连接起来模拟 PCB 上的写延迟。这样,采样的精确性能够被
保证。

5.6 DDR2 SDRAM PAD 驱动配置
表 5-2 DDR2 SDRAM PAD 驱动控制
寄存器地址

位

PAD 控制位

对应被控制的 PAD

0xbfd010c8

[27:26]

DDR2_ssel[1:0]

DDR-CK/CONTRL/ADDR

[29:28]

DDR2_ssel[3:2]

DQ[31:0]

[31:30]

DDR2_ssel[5:4]

DQS[3:0]

[27:26]

DDR2_tsel[1:0]

DQ[31:0]

[29:28]

DDR2_tsel[3:2]

DQS[3:0]

[30]

DDR2_st[0]

All except CK

0xbfd010F8

5.7 DDR2 16 位工作模式配置
DDR2 支持 16 位数据宽度的外部接口,配置工作如下:
1) 初始化 DDR 控制器,使用与 32 位模式相同的参数;
2) DISABLE_DDR_CONFSPACE 位置 1,关闭 DDR 控制器配置空间;
3) DDR32TO16EN 位置 1,使能 DDR16 位模式;
4) DDR2 16 位数据宽度模式正常使用。
表 5-3 DDR2 SDRAM 16 位数据宽度配置

74

寄存器地址

位

配置描述

0xBFD0_0424

[20]

DISABLE_DDR_CONFSPACE

0xBFD0_0424

[16]

DDR32TO16EN

龙芯 1B 处理器用户手册

6 LCD
本章给出 1B 芯片内 LCD 控制器(Display Controller)的详细描述和配置。Display
Controller 作为一个整体的模块,该模块读取指针数据和图像数据,通过对这些数据进行
格式转换、颜色抖动、gamma 调整等步骤产生最终的数据输出,同时为两个显示处理单元
产生同步信号和数据使能信号,最后将最终处理后的图像数据和同步信号发往显示接口。

6.1 特性


支持格式转换



最大显示支持到 1920×1080@60Hz



同步信号可编程



Gamma 调整查找表



VBLANK 同步

6.1.1 数据格式
Display Controller 支持以下数据格式:
R4G4B4
-> 12 bits per pixel
R5G5B5
-> 15 bits per pixel
R5G6B5
-> 16 bits per pixel
R8G8B8
-> 24 bits per pixel

6.2 寄存器
寄存器列表:

75

寄存器名

配置地址

Frame Buffer configuration

{15’h92,5'h0}

Frame Buffer Address_0

{15’h93,5'h0}

Frame Buffer Address_1

{15’hAC,5’h0}

Frame Buffer Stride

{15’h94,5’h0}

Frame Buffer Origin

{15’h95,5’h0}

Display Ditheronfiguration

{15’h9B,5’h0}

Display Dither Table(low)

{15’h9C,5’h0}

Display Dither Table(high)

{15’h9D,5’h0}

Pane Configuration

{15’h9E,5’h0}

Panel Timing

{15’h9F,5’h0}

HDisplay

{15’hA0,5’h0}

龙芯 1B 处理器用户手册
Hsync

{15’hA1,5’h0}

VDisplay

{15’hA4,5’h0}

VSync

{15’hA5,5’h0}

Cursor Configuration

{16’h152,4’h0}

Cursor Address

{16’h153,4’h0}

Cursor Location

{16’h154,4’h0}

Cursor Background

{16’h155,4’h0}

Cursor Foreground

{16’h156,4’h0}

Gamma Index

{15’hA7,5'h0}

Gamma Data

{15’hA8,5'h0}

Frame Buffer

bit

描述

初始值

Reset

20

写 0 reset

0

Gamma enable

12

写 1 使能

0

Switch Panel

9

置 1 时,表示该显示单元的输出使用另外一个

0

Configuration

显示单元的输出,即如果对 0 号显示单元配置
该位时表示 0 号单元的输出和输出控制信号复
制于 1 号显示单元的输出,同理如果对 1 号显
示单元配置该位表示 1 号显示单元的输出和输
出控制信号复制于 0 号显示单元。
Output enable

8

写 1 使能输出,写 0 则不输出显示数据

0

Format

[2:0]

0

none

0

1

R4G4B4

2

R5G5B5

3

R5G6B5

4

R8G8B8

Frame buffer address_0

Bit

描述

初始值

Frame buffer address_0

[31:0]

内存中图像数据首地址

32’h0000_0000

Frame buffer address_1

Bit

描述

初始值

Frame buffer address_1

[31:0]

对于需要支持双 frame buffer 显示的情况,

32’h0000_0000

此时该寄存器可配置第二块 Frame Buffer 的
地址,DC 运行时第一帧先从 Frame Buffer_0
取数据,第二帧从 Frame Buffer_1 取数据,
第三帧再从 Frame Buffer_0 取数据,依此循
环。对于不需要双 frame buffer 的情况,可
将此 Frame Buffer Address_1 配置成和 Frame
Buffer_0 一样的地址即可

Frame buffer stride

Bit

描述

初始值

Frame buffer stride

[31:0]

显示屏一行的字节数

32’h0000_0000

76

龙芯 1B 处理器用户手册
Frame buffer origin

Bit

描述

初始值

Frame buffer origin

[31:0]

显示屏左侧原有字节数,一般配 0 即可

32’h0000_0000

Display Dither

Bit

描述

初始值

Enable

31

置 1 使能 dither 功能

0

RedSize

[19:16]

红色域宽度

4’b0000

GreeenSize

[11:8]

绿色域宽度

4’b0000

BlueSize

[3:0]

蓝色域宽度

4’b0000

Display Dither Table

Bit

描述

初始值

Display Dither Table

[63:0]

该寄存器有 64 位,而 Display Controller 的

64’h0000_0000

Configuration

寄存器都是 32 位宽,所以实际上该寄存器为
两个 32 位的寄存器。分为 Display Dither
Table(low)和 Display Dither Table(high)。
这两个寄存器以像素点的 X 和 Y 坐标为索引,
配置作为比较的数值。凡进入 Dtiher 处理模
块的图像数据都会在 Display Dither Talbe
寄存器中被相应的索引到一个比较值,若输入
数据的值的后四位大于该比较值则进行颜色
增强。
Display Dither Table

[31:0]

(low)
Y0_X0

[3:0]

坐标(0,0)处的比较值

4’b0000

Y0_X1

[7:4]

坐标(1,0)处的比较值

4’b0000

Y0_X2

[11:8]

坐标(2,0)处的比较值

4’b0000

Y0_X3

[15:12]

坐标(3,0)处的比较值

4’b0000

Y1_X0

[19:16]

坐标(0,1)处的比较值

4’b0000

Y1_X1

[23:20]

坐标(1,1)处的比较值

4’b0000

Y1_X2

[27:24]

坐标(2,1)处的比较值

4’b0000

Y1_X3

[31:28]

坐标(3,1)处的比较值

4’b0000

Display Dither Table

[31:0]

(high)
Y2_X0

[3:0]

坐标(0,2)处的比较值

4’b0000

Y2_X1

[7:4]

坐标(1,2)处的比较值

4’b0000

Y2_X2

[11:8]

坐标(2,2)处的比较值

4’b0000

Y2_X3

[15:12]

坐标(3,2)处的比较值

4’b0000

Y3_X0

[19:16]

坐标(0,3)处的比较值

4’b0000

Y3_X1

[23:20]

坐标(1,3)处的比较值

4’b0000

Y3_X2

[27:24]

坐标(2,3)处的比较值

4’b0000

Y3_X3

[31:28]

坐标(3,3)处的比较值

4’b0000

77

龙芯 1B 处理器用户手册
Panel configuration

Bit

描述

初始值

ClockPolarity

9

时钟极性,置 1 将时钟反向

0

Clock

8

时钟使能,置 1 使能时钟

1

DE_Polarity

1

数据使能极性,置 1 取反,一般设 0

0

DE

0

数据使能,置 1 使能数据输出

1

HDisplay

Bit

描述

初始值

Total

[27:16]

显示屏一行的总体像素数(包括非显示区)

12’b0

DisplayEnd

[11:0]

显示屏一行中显示区的像素数

12’b0

HSync

Bit

描述

初始值

Polarity

31

HSync 信号的极性,置 1 取反,一般设 0

0

Pulse

30

HSync 信号使能,置 1 只能 HSync 信号输出

1

End

[27:16]

HSync 信号结束的像素数

12’b0

Start

[11:0]

HSync 信号开始的像素数

12’b0

VDisplay

Bit

描述

初始值

Total

[26:16]

显示屏总体的行数(包括消隐区)

11’b0

DisplayEnd

[10:0]

显示屏中显示区的行数

11’b0

VSync

Bit

描述

初始值

Polarity

31

VSync 信号的极性,置 1 取反,一般设 0

0

Pulse

30

VSync 信号使能,置 1 只能 VSync 信号输出

1

End

[27:16]

VSync 信号结束的行数

12’b0

Start

[11:0]

VSync 信号开始的行数

12’b0

Cursor Configuration

Bit

描述

初始值

HotSpotX

[20:16]

指针的“焦点”(作用点)的横坐标(在指针

5’b0

32*32 的图案中的横坐标)
HotSpotY

[12:8]

指针的“焦点”(作用点)的纵坐标(在指针

5’b0

32*32 的图案中的横坐标)
Display

4

指示指针存在于哪个显示单元中,0 表示在 0

0

号显示单元中,1 表示指针在 1 号显示单元中
Format

[1:0]

0

disabled

1

masked

2

A8R8G8B8

2’b0

Cursor Address

Bit

描述

初始值

Cursor Address

[31:0]

指针数据在内存中的基地址

32’b0

Cursor Location

Bit

描述

初始值

Y

[26:16]

指针的焦点在整个显示区的纵坐标

11’b0

78

龙芯 1B 处理器用户手册
X

[10:0]

指针的焦点在整个显示区的横坐标

11’b0

Cursor Background

Bit

描述

初始值

Red

[23:16]

指针单色模式下背景色的红色域

8’b0

Green

[15:8]

指针单色模式下背景色的绿色域

8’b0

Blue

[7:0]

指针单色模式下背景色的蓝色域

8’b0

Cursor Foreground

Bit

描述

初始值

Red

[23:16]

指针单色模式下前景色的红色域

8’b0

Green

[15:8]

指针单色模式下前景色的绿色域

8’b0

Blue

[7:0]

指针单色模式下前景色的蓝色域

8’b0

Gamma Index

Bit

描述

初始值

Index

[7:0]

表示从 0-255 颜色值之间的哪一项开始进行

8’b0

Gamma 调整,一般设 0。只需配一次,此后该
值硬件会自增。

Gamma Data

Bit

描述

初始值

Red

[23:16]

Gamma 调整的红色域,将 Gamma Index 指示的

8’b0

值调整为当前域的值
Green

[15:8]

Gamma 调整的绿色域,将 Gamma Index 指示的

8’b0

值调整为当前域的值
Blue

[7:0]

Gamma 调整的蓝色域,将 Gamma Index 指示的

8’b0

值调整为当前域的值

1B 芯片 LCD 正常工作缺省是 16 位模式,
同时也支持 RGB444/555/565/888 位模式。
芯片外部只有 16 个 LCD 数据 PAD,如果需要复用连接外部 24 位数据线的 LCD,内部数
据的传输会变化。
当工作在 24 位模式,LCD_BLUE0/LCD_RED0 可以不使用(显示效果区别不明显,
可以节省一个两线 UART,下表最后一列粉色部分)
。
配置如下所示,
1B-PAD

79

RGB 444

RGB 555

RGB 565

RGB 888

LCD_DAT_B0

Nouse,USE as GPIO

LCD_BLUE0

LCD_BLUE0

LCD_BLUE3

LCD_DAT_B1

LCD_BLUE0

LCD_BLUE1

LCD_BLUE1

LCD_BLUE4

LCD_DAT_B2

LCD_BLUE1

LCD_BLUE2

LCD_BLUE2

LCD_BLUE5

LCD_DAT_B3

LCD_BLUE2

LCD_BLUE3

LCD_BLUE3

LCD_BLUE6

LCD_DAT_B4

LCD_BLUE3

LCD_BLUE4

LCD_BLUE4

LCD_BLUE7

LCD_DAT_G0

Nouse,USE as GPIO

LCD_GREEN0

LCD_GREEN2

LCD_DAT_G1

Nouse,USE as GPIO

LCD_GREEN0

LCD_GREEN1

LCD_GREEN3

LCD_DAT_G2

LCD_GREEN0

LCD_GREEN1

LCD_GREEN2

LCD_GREEN4

LCD_DAT_G3

LCD_GREEN1

LCD_GREEN2

LCD_GREEN3

LCD_GREEN5

LCD_DAT_G4

LCD_GREEN2

LCD_GREEN3

LCD_GREEN4

LCD_GREEN6

LCD_DAT_G5

LCD_GREEN3

LCD_GREEN4

LCD_GREEN5

LCD_GREEN7

LCD_DAT_R0

Nouse,USE as GPIO

LCD_RED0

LCD_RED0

LCD_RED3

LCD_DAT_R1

LCD_RED0

LCD_RED1

LCD_RED1

LCD_RED4

龙芯 1B 处理器用户手册

80

LCD_DAT_R2

LCD_RED1

LCD_RED2

LCD_RED2

LCD_RED5

LCD_DAT_R3

LCD_RED2

LCD_RED3

LCD_RED3

LCD_RED6

LCD_DAT_R4

LCD_RED3

LCD_RED4

LCD_RED4

LCD_RED7

URT0_RX

UART0 发送数据

LCD_BLUE0

URT0_TX

UART0 接收数据

LCD_RED0

URT0_RTS

UART0 请求发送

LCD_BLUE1

URT0_CTS

UART0 允许发送

LCD_BLUE2

URT0_DSR

UART0 数据设备准备好

LCD_GREEN0

URT0_DTR

UART0 数据终端准备好

LCD_GREEN1

URT0_DCD

UART0 载波检测

LCD_RED1

URT0_RI

UART0 振铃提示

LCD_RED2

龙芯 1B 处理器用户手册

7 GMAC0
7.1 配置成 MAC 的连接和复用方式
GMAC0 控制器可以通过配置成百兆模式(MII)或千兆模式(RGMII)。如果外部连接
百兆 PHY,需要复用 PWM0,PWM1 和 GMAC0_TX_CLK_O 三个 PAD,配置如下
表:
PAD

MAC 信号

配置位

复位值

PWM0

MAC_0_COL

GMA0_USE_PWM01

1’b0

PWM1

MAC_0_CRS

GMA0_USE_PWM01

1’b0

GMAC0_TX_CLK_O

MAC_0_RX_ERR

GMA0_USE_TX_CLK

1’b1

寄存器地址:0XBFD0_0424
配置位

Bit 位

描述

GMA0_USE_PWM01

0

1:百兆模式 MAC_COL/MAC_CRS 分别复用 PWM0/1
0:千兆模式

GMA0_USE_TX_CLK

2

1:Mii_0_RX_ERR 输入信号复用 GMAC0_TX_CLK_O
0:千兆模式

a)

百兆模式下,如果外部 PHY 不提供 RX_ERR 信号,GMAC0_TX_CLK_O 需接地,不能悬空;

b) 百兆模式下,如果外部 PHY 提供 RX_ERR 信号,GMAC0_TX_CLK_O 与 RX_ERR 连接。

7.2 DMA 寄存器描述
GMAC 寄存器包括 GMAC 寄存器部分和 DMA 寄存器部分。GMAC0 的 GMAC 寄存
器的起始地址是 0XBFE1_0000;GMAC0 的 DMA 寄存器的起始地址是 0XBFE1_1000。
下面分别介绍 DMA 寄存器和 GMAC 寄存器的意义。
参数名称

位

Register0 (Bus Mode Register)

缺省值

描述

Offset: 0x00

Reserved
31:27

0x0

保留,只读

保留
当此位为高,FB 位为低时,AXI master 在突发访问长度大于

MB: Mixed Burst
26

0x0

混合突发访问

时采用 FIX 访问模式。用户不用关心此位设置。

AAL:Address-Aligned
Beats

当此位和 FB 位同时为高时,AXI 接口的所有访问将对齐到起
25

0x0

始地址的 LS 位。如果 FB 位为 0,首次访问地址访问不对齐,
剩余的访问地址对齐。用户不用关心此位设置。

地址对齐节拍
8XPBL Mode

16 时采用 INCR 访问模式,当突发访问长度为 16 或者小于 16

24

0x0

此 位 为 高 时 , GMAC DMA 的 最 大 突 发 数 据 传 输 长 度 为
8,16,32,64,128 或者 256。最大突发长度取决于 PBL。用户不

81

龙芯 1B 处理器用户手册
是否使能 PBLX8 模式

用关心此位设置。

USP:Use Separate PBL
23

0x0

22:17

0x01

16

0x0

使用分离的 PBL 值
RPBL: RxDMA PBL
RxDMA 突发传输长度
FB: Fixed Burst
定长突发传输长度使能
PR:

Rx:Tx

priority

此位为高时,PBL 值只应用于 TxDMA。此位为低时,PBL 值应
用于 TxDMA 和 RxDMA。用户不用关心此位设置。
表 示 一 次 RxDMA 传 输 的 最 大 突 发 传 输 长 度 。 只 能 为
1,2,4,8,16 和 32,其它值无效。
指定 AXI Master 接口是否采用 FIX 突发传输模式。用户不用
关心此位设置。
在 DA 位为 0 时起作用。

ratio
15:14

0x0

13:8

0x1

7

0x0

RxDMA 与 TxDMA 优先级
比例

00:1:1
01:2:1
10:3:1
11:4:1

PBL:Programmable
Burst Length

用户不用关心此设置。

可编程突发传输长度
ATDS:Alternate
Descriptor size

此位为 1 时使用 32 字节大小的描述符

是否使用 32 字节

此位为 0 时使用 16 字节大小的描述符

大小描述符
DSL: Descriptor Skip
Length

6:2

0x00

1

0x0

设置 2 个描述符间的距离。但此值为 0 时,默认为 DMA 描述
符大小。

描述符间隔距离
DA: DMA Arbitration
scheme

0:在 RxDMA 和 TxDMA 间采用轮转仲裁机制

DMA

1: RxDMA 优先级高于 TxDMA 优先级。具体比值见 PR 值。

传输仲裁策略
SWR:Software Reset
0

0x1

软件复位

此位置高 DMA 控制器将复位 GMAC 内部寄存器和逻辑。当复位
结束时该位自动清零。

Register1 (Transmit Poll Demand Register)
TPD:

Transmit

Poll

Demand

Offset: 0x04

向此值写入任意值,发送 DMA 控制器将会读取寄存器 18 对应
31:0

0x0

的描述符。如果该描述符无效,DMA 传输将会停止。如果该描
述符有效,DMA 传输将会继续。

传输轮询使能

Register2 (Receive Poll Demand Register) Offset: 0x08
RPD:
Demand
82

Receive

Poll

31:0

0x0

向此值写入任意值,接收 DMA 控制器将会读取寄存器 18 对应
的描述符。如果该描述符无效,DMA 传输将会停止。如果该描

龙芯 1B 处理器用户手册
接收轮询使能

述符有效,DMA 传输将会继续。

Register3 (Receive Descriptor List Address Register) Offset: 0x0C
Start of Receive List
31:0

0x0

指向接收描述符首地址。

接收描述符起始地址
Register4 (Transmit Descriptor List Address Register)

Offset: 0x10

Start of Transmit List
31:0

0x0

指向发送描述符首地址

发送描述符起始地址
Register5 (Status Register)
Reserved
TTI:

Offset: 0x14

31:30

保留,只读

Time-Stamp

Trigger Interrupt

29

0x0

时间戳模块触发中断。只读。

28

0x0

电源管理模块触发中断。只读。

27

0x0

MMC 模块触发中断。只读。

26

0x0

GMAC 模块的 PCS 或者 RGMII 模块触发中断。只读。

时间戳触发中断
GPI:GMAC

PMT

Interrutp
电源管理模块触发中断
GMI:GMAC

MMC

Interrupt
MMC 模块触发中断
GLI:GMAC

Line

interface Interrupt
GMAC 模块线路触发中断

23:1’b1 TxDMA 数据传输过程中发生错误
1’b0 RxDMA 数据传输过程中发生错误
EB: Error Bits

24:1’b1 读传输错误
25:23

0x0

错误位

1’b0 写传输错误
25:1’b1 描述符访问错误
1’b0 数据缓存访问错误
3’b000:传输停止;复位或者停止命令发送
3’b001:正在进行;获取传输描述符

TS:Transmit
State
传输过程状态

Process
22:20

0x0

3’b010:正在进行;等待传输状态
3’b011: 正 在 进 行 ; 从 发 送 缓 存 读 取 数 据 并 发 送 到 传 输
FIFO(TxFIFO)
3’b100:写入时间戳状态

83

龙芯 1B 处理器用户手册
3’b101:保留
3’b110:挂起;传输描述符不可用或者传输缓存下溢。
3’b111:运行;关闭传输描述符。
3’b000:停止;复位或者接收到停止命令
3’b001:运行;获取接收描述符。
3’b010:保留;
RS:Receive

Process

State

3’b011:运行;等待接收包。
19:17

0x0
3’b100:暂停;接收描述符不可用。

接收过程状态

3’b101:运行;关闭接收描述符。
3’b110:时间戳写状态。
3’b111:运行;将包内容从接收缓存传输到系统内存。
NIS:Normal Interrutp
Summary

16

0x0

提示系统是否存在正常中断。

15

0x0

提示系统是否存在异常中断。

14

0x0

提示 DMA 控制器已经把包的第一个数据写入接收缓存

13

0x0

12:11

0x0

10

0x0

9

0x0

8

0x0

正常中断汇总
AIS:Abnormal
Interrutp Summary
异常中断汇总
ERI:Early

Receive

Interrutp
提前接收中断
FBI:Fatal Bus Error
Interrutp

提示总线错误,具体信息见[25:23]。当此位设置后 DMA 引擎
停止总线访问操作。

总线错误中断
Reserved
ETI:Early

保留

Transmit

Interrupt

提示需要传输的以太网帧已经完全传输到 MTL 模块中的传输
FIFO

提前发送中断
RWT:Receive Watchdog
Timeout

提示接收到一个大小超过 2048 字节的以太网帧。
(当巨帧使
能时,提示接收到大小超过 10240 字节的以太网帧)

接收看门狗超时
RPS:Receive
Stopped
接收过程停止

84

Process
指示接收过程停止

龙芯 1B 处理器用户手册
RU:Receive

Buffer

Unavailable

7

0x0

指示接收缓存不可用

6

0x0

5

0x0

指示帧发送过程中产生接收缓存下溢。

4

0x0

指示帧接收过程中接收缓存上溢。

3

0x0

2

0x0

提示传输列表中的下一个描述符不能被 DMA 控制器访问。

1

0x0

提示传输过程停止

0

0x0

提示帧传输完成并且第一个描述符的 31 位置位。

接收缓存不可用
RI:Receive Interrupt
接收中断

指示帧接收完成。帧接收的状态信息已经写入接收描述符。
接收处于运行状态。

UNF:Transmit
Underflow
传输缓存下溢
OVF:Receive Overflow
接收缓存上溢
TJT:Transmit

Jabber

Timeout
TU:Transmit

Buffer

Unavailable
传输缓存不可用
TPS:Transmit Process
Stopped
传输过程停止
TI:Transmit Interrutp
传输完成中断

Register6 (Operation Mode Register)

Offset: 0x18

Reserved
31:27

0x0

保留

26

0x0

此位为 1 时 GMAC 将不丢弃 checksum 错误的以太网帧。

25

0x0

24

0x0

保留
DT
关 闭 丢 弃

TCP/IP

Checksum 错误以太网帧
的功能
RSF:Receive Store and
Forward

此位为 1 时 MTL 模块只接收已经全部存储在接收 FIFO 中的以
太网帧。

接收存储转发
DFF:Disable Flushing
of Received Frames
关闭冲刷接收的以太网
帧的功能

85

此位为 1 时,接收 DMA 在接收描述符或者接收缓存不可用时
不冲刷任何以太网帧。

龙芯 1B 处理器用户手册

RFA[2]:MSB

of

Threshold

for

Activating

Flow

100:最大值减去 5KB
101:最大值减去 6KB
23

0x0

110:最大值减去 7KB

Control

111:保留

激活流控阈值

(注:最大值为 8KB)

RFD[2]:MSB

of

Threshold

for

Deactivating

Flow

100:最大值减去 5KB
101:最大值减去 6KB
22

0x0

110:最大值减去 7KB

Control

111:保留

关闭流控阈值

(注:最大值为 8KB)

TSF:Transmit

Store

and Forward

21

0x0

20

0x0

19:17

0x0

此位为 1 时,帧的发送只在帧的内容已经全部进入 MTL 的传
输 FIFO 中。

发送存储转发
FTF:Flush

Transmit

FIFO

此位为 1 时,传输控制逻辑复位为默认值,并且会导致发送
FIFO 里面的数据全部丢失。

冲刷传输 FIFO
Reserved

保留
当帧大小超过此值时 MTL 将会传输该帧。
000: 64 字节
001: 128 字节
010: 192 字节

TTC:Transmit
Threshold Control

16:14

0x0

传输阈值控制

011: 256 字节
100: 40 字节
101: 32 字节
110: 24 字节
111: 16 字节

ST:Start/Stop
Transmission Command

此位为 1,传输进入运行状态。
13

0x0
此位为 0,传输进入停止状态。

开始/停止传输命令
RFD:Threshold

for

deactivating

flow

control
关闭流控阈值

86

00: 最大值减去 1KB
01: 最大值减去 2KB
12:11

0x0
10: 最大值减去 3KB
11: 最大值减去 4KB

龙芯 1B 处理器用户手册
(最大值为 8KB)
00: 最大值减去 1KB
RFA:Threshold

for

Activating

01: 最大值减去 2KB

flow
10:9

control

0x0

10: 最大值减去 3KB
11: 最大值减去 4KB

激活流控阈值

(最大值为 8KB)
EFC:Enable

HW

flow

control

8

0x0

7

0x0

6

0x0

5

0x0

此位为 1 时,基于接收 FIFO 利用率的硬件流控电路生效。

使能硬件流控
FEF:Forward

Error

Frames

此位为 1 时,接收错误帧(错误帧包括:CRC 错误,冲突错误,
巨帧,看门狗超时,溢出等)

传输错误帧
FUF:Forward
Undersized

Good

Frames

此位为 1 时,接收 FIFO 将会接收没有错误但小于 64 字节的
以太网帧。

接收无错误的小帧
Reserved

保留
MTL 传输接收 FIFO 中帧内容已经超过此项设置大小。
00: 64 字节

RTC:Receive Threshold
Control

4:3

0x0

接收阈值控制

01:32 字节
10: 96 字节
11: 128 字节

OSF:Operate on Second
Frame
2

0x0

1

0x0

是否操作第二个以太网

此位为高时,DMA 在第一个以太网帧的状态尚未写回时即可以
开始处理第二个以太网帧。

帧
SR:Start/Stop Receive

此位设置为高时,接收进入运行状态。

开始/停止接收

此位设置为低时,接收进入停止状态。

Reserved
0

0x0

保留

保留
Register7 (Interrupt Enable Register)

Offset: 0x1C

Reserved
31:17
保留

87

0x0

保留

龙芯 1B 处理器用户手册
NIE:Normal Interrupt
Summary Enable

此位为 1 时:正常中断使能
16

0x0
此位为 0 时:正常中断不使能

正常中断汇总使能
AIE:Abnormal
Interrupt

Summary

此位为 1 时:非正常中断使能。
15

Enable

0x0
此位为 0 时:非正常中断不使能。

非正常中断汇总使能
ERE : Early Receive
Interrupt Enable

14

0x0

此位为高时:早期接收中断使能

13

0x0

此位为高时:总线致命错误中断使能。

12:11

0x0

保留

10

0x0

此位为高时:使能早期传输中断

9

0x0

此位为高时:使能接收看门狗超时中断

8

0x0

此位为高时:使能接收停止中断。

7

0x0

此位为高时:使能接收缓冲区不可用中断。

6

0x0

此位为高时:使能接收完成中断

5

0x0

此位为高时:使能传输 FIFO 下溢中断

早期接收中断使能
FBE:Fatal Bus Error
Enable
总线致命错误中断使能
Reserved
保留
ETE:Early

Transmit

Interrupt Enable
早期传输中断使能
RWE:Receive Watchdog
Timeout Enable
接收看门狗超时中断使
能
RSE:Receive

Stopped

Enable
接收停止中断使能
RUE:Receive

Buffer

Unavailable Enable
接收缓冲区不可用中断
使能
RIE:Receive Interrupt
Enable
接收中断使能
UNE:Underflow
Interrupt Enable

88

龙芯 1B 处理器用户手册
传输 FIFO 下溢中断使能
OVE:Overflow
Interrupt Enable

4

0x0

此位为高时:使能接收 FIFO 上溢中断。

3

0x0

此位为高时:使能 Jabber 超时中断。

2

0x0

此位为高时:使能传输缓存不可用中断。

1

0x0

此位为高时:使能传输停止中断。

0

0x0

此位为高时:使能传输完成中断。

接收 FIFO 上溢中断使能
TJE:Transmit

Jabber

Timeout Enable
传输 Jabber 超时中断使
能
TUE:Transmit

Buffer

Unavailable Enable
传输缓存不可用中断使
能
TSE:Transmit Stopped
Enable
传输停止中断使能
TIE:Transmit
Interrupt Enable
传输完成中断使能
Register8 (Missed Frame and Buffer Overflow Counter Register) Offset: 0x20
Reserved
31:29

0x0

保留

28

0x0

FIFO 溢出指示位

27:17

0x0

指示应用程序丢失帧的个数

16

0x0

提示丢失帧个数已经超过计数的最大值。

15:0

0x0

指示因为主机接收缓存不可用导致帧丢失个数的计数。

保留
Overflow bit for FIFO
Overflow Counter
FIFO 溢出指示位
Indicates the number
of frames missed by
the application
应用程序丢失的帧个数
Overflow

bit

for

Missed Frame Counter
丢失帧个数溢出指示
Indicates the number
of frames missed by
the controller due to
the
89

Host

Receive

龙芯 1B 处理器用户手册
Buffer

being

unavailable
因为主机接收缓存不可
用导致帧丢失的个数
Register18 (Current Host Transmit Descriptor Register) Offset: 0x48
Host

Transmit

Descriptor

Address

Pointer

31:0

0x0

只读

当前发送描述符主机地
址指针
Register19 (Current Host Receive Descriptor Register) Offset: 0x4C
Host

Receive

Descriptor

Address

Pointer

31:0

0x0

只读

当前接收描述符主机地
址指针
Register20 (Current Host Transmit Buffer Address Register) Offset: 0x50
Host Transmit Buffer
Address Pointer
31:0

0x0

只读

当前传输缓冲区主机地
址指针
Register21 (Current Host Receive Buffer Address Register) Offset: 0x54
Host Receive Buffer
Address Pointer
31:0

0x0

只读

当前接收缓冲区主机地
址指针

7.3 GMAC 控制器寄存器描述
参数名称

位

缺省值

范围

描述

Register0 (MAC Configuration Register) Offset: 0x0000
Reserved
31:26

0x0

保留

24

0x0

此位为高时,将会把双工模式,链路速度,链路以及链路连

保留
TC:

90

Transmit

龙芯 1B 处理器用户手册
Configuration

in

接/断开等信息通过 RGMII 接口传输给 PHY。

RGMII
使能 RGMII 链路信息传
输
WD: Watchdog Disable

此位为高时,GMAC 将关闭接收端的看门狗定时器,可以接收

23

0x0

22

0x0

21

0x0

此位为高时,GMAC 使能传输过程中的帧突发传输模式。

20

0x0

此位为高时,GMAC 使能巨帧(最大 9018 字节)的接收。

关闭看门狗
JD: Jabber Disable
关闭 Jabber 定时器

最大 16384 字节的以太网帧。
此位为高时,GMAC 关闭发送过程中的 Jabber 定时器,可以发
送最大 16384 字节的以太网帧。

BE: Frame Burst Enable
帧突发传输使能
JE: Jumbo Frame Enable
巨帧使能
设置传输过程中的最小帧间距。
000: 96 位时间
IFG: Inter-Frame Gap

001: 88 位时间
19:17

0x0

最小帧间距

010: 80 位时间
….
111: 40 位时间

DCRS: Disable Carrier
Sense

During

Transmission

16

0x0

15

0x0

此位为高时,MAC 忽略半双工模式下 CRS 信号的检测。

传输过程中关闭载波冲
突检测
PS: Port Select

0: GMII (1000Mbps)

端口选择

1: MII

FES: Speed

(10/100Mbps)

0: 10Mbps
14

0x0

快速以太网速度提示

1: 100Mbps

DO: Disable Receive
Own
13

0x0

12

0x0

关闭接收自己发出的以

此位为高时,GMAC 不接收半双工模式下 gmii_txen_o 有效的
以太网帧。

太网帧
LM: Loopback Mode
使能环回模式

91

此位为高时,GMII/MII 工作在环回模式下。

龙芯 1B 处理器用户手册
DM: Duplex Mode
11

0x0

10

0x0

9

0x0

8

0x0

使能全双工模式
IPC: Checksum Offload
校验和卸载使能
DR: Disable Retry
关闭重传
LUD: Link Up/Down

以同时发送和接收以太网帧。
此 位 为 高 时 , GMAC 硬 件 计 算 接 收 到 以 太 网 帧 的 负 载
(payload)
。还检查 IPV4 头的校验和是否正确。
此位为高时,GMAC 在遇到冲突时不重传发送冲突的以太网帧,
而只报告冲突错误。
0:链路断开

链路连接/链路断开
ACS:

此位为高时,GMAC 工作在全双工模式下,在全双工模式下可

1:链路连接

Automatic

Pad/CRC Stripping
7

0x0

此位为 1 时,GMAC 中去除接收到的以太网帧的 Pad 和 FCS。

以太网帧 Pad/CRC 自动
去除
回退限制决定基于 slot 的延迟时间。
00: k=min(n,10)
BL: Back-Off Limit
6:5

0x0

01: k=min(n,8)

回退限制
10: k=min(n,4)
11: k=min(n,1)
DC: Deferral Check
4

0x0

此位为 1 时,使能 deferral 检测功能。

3

0x0

此位为 1 时,使能 GMAC 传输功能。

2

0x0

此位为 1 时,使能 GMAC 接收功能。

1:0

0x0

保留。

Deferral 检查
TE:

Transmitter

Enable
传输使能
RE: Receiver Enable
接收使能
Reserved

Register1 (MAC Frame Filter)

Offset: 0x0004

RA: Receive All
31

0x0

30:11

0x0

接收全部

此位为 1 时,GMAC 接收模块把接收到的所有帧都发给应用程
序,忽略源地址/目标地址过滤机制。

Reserved
保留

保留
HPF: Hash or Perfect
Filter
哈希或者完全过滤

92

此位为 1 时,在哈希/完全过滤机制中匹配的以太网帧发送给
10

0x0

应用。
此位为 0 时,只有在哈希过滤机制中匹配的以太网帧才发送

龙芯 1B 处理器用户手册
给应用。
GMAC core 比较比较接收到以太网帧的源地址域和在 SA 寄存
器中的值,如果匹配,接收状态寄存器中的 SAMatch 位设置

SAF: Source Address
Filter Enable

为高。如果此位为 1,源地址匹配失败,GMAC core 将丢弃该
9

0x0

源地址过滤使能

以太网帧。
如果此位为 0,不管源地址匹配结果 GMAC core 都接收此帧,
而匹配结果写入接收状态寄存器。

SAIF:

SA

此位为 1 时,和 SA 寄存器中源地址匹配的以太网帧将会标记

Inverse

Filtering

为源地址匹配失败。
8

0x0
此位为 0 时,和 SA 寄存器中源地址不匹配的以太网帧将会标

源地址反转过滤

记为源地址匹配失败。
00: GMAC 过滤所有控制帧

PCF:

Pass

Control

Frames

01: GMAC 接收除了 pause 帧以外的所有控制帧。
7:6

0x0
10: GMAC 接收所有控制帧。

接收控制帧

11: GMAC 根据地址过滤情况接收控制帧
DBF:

Disable

Broadcast Frames

此位为 1 时,过滤所有接收的广播帧。
5

0x0
此位为 0 时,接收所有广播帧。

关闭广播帧
PM: Pass All Multicast

此位为 1 时,接收所有多播帧。
4

0x0

接收所有多播帧
DAIF:

DA

此位为 0 时,过滤所有多播帧。

Inverse

Filtering

此位为 1 时,对单播和多播帧进行反向目标地址匹配。
3

0x0
此位为 0 时,对单播和多播帧进行正常目标地址匹配。

目标地址反转过滤
HMC: Hash Multicast
2

0x0

1

0x0

0

0x0

哈希多播过滤
HUC: Hash Unicast
哈希单播过滤

此位为 1 时,对接收到的多播帧根据哈希表的内容进行目标
地址过滤。
此位为 1 时,对接收到的单播帧根据哈希表的内容进行目标
地址过滤。

PR: Promiscuous Mode
接收所有以太网帧。

混杂模式
Register2 (Hash Table High Register) Offset: 0x0008
HTH: Hash Table High
31:0

0x0

哈希表的高 32 位。

哈希表高位
Register3 (Hash Table Low Register)
HTL: Hash Table Low
93

31:0

0x0

Offset: 0x000C
哈希表的低 32 位。

龙芯 1B 处理器用户手册
哈希表低位
Register4 (GMII Address Register)

Offset: 0x0010

Reserved
31:16

0x0

保留

15:11

0x0

此域选择需要访问 32 个 PHY 中的哪个。

需要访问的 PHY 设备中 10:6

0x0

此域选择需要访问的的 PHY 的哪个 GMII 配置寄存器。

0x0

保留

保留
PA:

Physical

Layer

Address
PHY 地址
GR: GMII Register

的寄存器
Reserved
5
保留
此域决定 MDC 时钟是 clk_csr_i 时钟频率比例。
0000 clk_csr_i/42
0001 clk_csr_i/62
CR: CSR Clock Range

0010 clk_csr_i/16
4:2

0x0

CSR 时钟范围

0011 clk_csr_i/26
0100 clk_csr_i/102
0101 clk_csr_i/124
0110, 0111 Reserved

GW: GMII Write

此位为 1 时,通过 GMII 数据寄存器对 PHY 进行写操作
1

0x0

GMII 写

此位为 0 时,通过 GMII 数据寄存器对 PHY 进行读操作。
对寄存器 4 和寄存器 5 写之前,此位应为 0。在写寄存器 4 之

GB: GMII Busy
0

0x0

GMII 忙

前此位必须先置 0。在访问 PHY 的寄存器时,应用程序需要将
此位设置为 1,表示 GMII 接口上有写或者读操作正在进行。

Register5 (GMII Data Register) Offset: 0x0014
Reserved
31:16

0x0

15:0

0x0

保留

保留
GD: GMII Data
GMII 数据
Register6 (Flow Control Register)

此域保存了对 PHY 进行管理读访问操作的 16 位数据,或者对
PHY 进行管理写访问的 16 位数据。

Offset: 0x0018

PT: Pause Time
31:16
暂停时间

94

0x0

此域保存了需要填入传输控制帧中的暂停时间域。

龙芯 1B 处理器用户手册
Reserved
15:8

0x0

保留

7

0x0

此位为 1 时,禁止自动零时间片的暂停控制帧的产生。

6

0x0

保留

保留
DZPQ:

Disable

Zero-Quanta Pause
禁止零时间片暂停帧
Reserved
保留

此域用于设置暂停时间的阈值。
00: 暂停时间减少 4 个时间槽
PLT:

Pause

Low

Threshold

01: 暂停时间减少 28 个时间槽
5:4

0x0

暂停帧的低阈值

10: 暂停时间减少 144 个时间槽
11: 暂停时间减少 256 个时间槽
(一个时间槽为在 GMII/MII 接口上传输 512 比特或者 64 字
节的时间)

UP:

Unicast

Pause

Frame Detect

3

0x0

2

0x0

1

0x0

此位为 1 时,GMAC 将会根据 MAC 地址 0 指定的本站单播地址
来探测暂停帧。

单播的暂停帧探测
RFE:

Receive

Flow

Control Enable

此位为 1 时,GMAC 将会解析接收到的暂停帧,并且按照暂停
帧指定的时间暂停帧的发送。

接收流控使能
TEF:

Transmit

Flow

Control Enable

在全双工模式下,此位为 1 时,GMAC 使能暂停帧的发送。
在半双工模式下,此位为 1 时,GMAC 使能反压操作。

发送流控使能
FCB/BPA: Flow Control
Busy/Backpressure
0

Activate

0x0

此位为 1 时,在全双工模式下发起暂停控制帧的发送或在半
双工模式下启动反压操作。

流控忙/反压激活
Register7 (VLAN Tag Register)

Offset: 0x001C

Reserved
31:17

0x0

16

0x0

保留

保留
ETV:

Enable

12-Bit

VLAN Tag Comparison
使能 12 位 VLAN Tag 比
较

95

此位为 1 时,使用 12 位 VLAN Tag 而不是使用 16 位 VLAN Tag
用于以太网帧比较和过滤。

龙芯 1B 处理器用户手册
VL:

VLAN

Tag

Identifier

for
15:0

Receive Frames

0x0

此域保存 802.1Q 格式的 VLAN Tag,用于比较接收到的以太网
帧的位于第 15 和第 16 个字节的 VLAN Tag。

帧接收的 VLAN Tag 标识
Register8 (Version Register)

Offset: 0x0020

Reserved
15:8

0x0

保留

7:0

0x0

0X35

保留
Version
版本号
Register14 (Interrupt Status Register) Offset: 0x0038
Reserved
15:8

0x0

保留

7

0x0

MMC 校验和卸载寄存器产生任何中断产生时,此位设置为 1。

6

0x0

MMC 传输中断寄存器产生任何中断时,此位设置为 1。

5

0x0

MMC 接收中断寄存器产生任何中断时,此位设置为 1。

4

0x0

7:5 的任何位为高时,此位设置为 1。

3

0x0

2

0x0

RGMII PHY 接口自动协商完成时,此位设置为 1。

1

0x0

RGMII PHY 接口的链路状态发生任何变化时,此位设置为 1。

0

0x0

RGMII 接口的链路状态发生任何变化时,此位设置为 1。

保留
MMC Receive Checksum
Offload

Interrupt

Status
MMC 接收校验和卸载状
态中断
MMC

Transmit

Interrupt Status
MMC 传输中断
MMC Receive Interrupt
Status
MMC 接收中断状态
MMC Interrupt Status
MMC 中断状态
PMT Interrupt Status
电源管理中断状态

在 Power Down 状态下,收到 magic 帧或在 Wake-on-LAN 帧时,
此位设置为 1。

PCS Auto-Negotiation
Complete
PCS 自动协商完成
PCS

Link

Status

Changed
PCS 链路状态变化
RGMII
96

Interrupt

龙芯 1B 处理器用户手册
Status
RGMII 中断状态
Register15 (Interrupt Mask Register) Offset: 0x003C
Reserved
15:10

0x0

保留

9

0x0

此位为 1 时,禁止时间戳发生的中断

8:4

0x0

保留

3

0x0

此位为 1 时,禁止电源管理引起的中断。

2

0x0

此位为 1 时,禁止 PCS 自动协商完成中断。

1

0x0

此位为 1 时,禁止由于 PCS 链路状态变化引起的中断。

0

0x0

此位为 1 时,禁止 RGMII 引起的中断。

保留
Time Stamp Interrupt
Mask
时间戳中断使能
Reserved
保留
PMT Interrupt Mask
电源管理中断使能
PCS

AN

Completion

Interrupt Mask
PCS 自动协商完成中断
使能
PCS

Link

Status

Interrupt Mask
PCS 链路状态中断使能
RGMII Interrupt Mask
RGMII 中断使能

Register16 (MAC Address0 High Register)

Offset: 0x0040

MO: Always 1
31

0x0

保留

30:16

0x0

保留

15:0

0x0

存放用于接收地址过滤和传输流控帧的 MAC 地址。

保留
Reserved
保留
MAC Address0[47:32]
MAC 地址高 16 位
Register17 (MAC Address0 Low Register) Offset: 0x0044
MAC Address0[31:0]
31:0

0x0

存放用于接收地址过滤和传输流控帧的 MAC 地址。

MAC 地址低 32 位
Register18 (MAC Address1 High Register)
AE: Address Enable

97

31

0x0

Offset: 0x0048
此位为 1 时,地址过滤模块使用第 2 个 MAC 地址用于完全地

龙芯 1B 处理器用户手册
地址使能

址过滤。此位为 0 时,地址过滤模块不使用第 2 个 MAC 地址
用于地址过滤。

SA: Source Address

此位为 1 时,MAC 地址 1 用于比较接收帧的源 MAC 地址。
30

0x0

源 MAC 地址

此位为 0 时,MAC 地址 1 用于比较接收帧的目标 MAC 地址。

MBC: Mask Byte Control
29:24

0x0

23:16

0x0

掩模字节控制

此域用于比较每个 MAC 地址的字节掩模控制位。比如第 29 位
用于掩码寄存器 18 的[15:8]这个字节。

Reserved
保留。

保留
MAC Address1[47:32]
第 2 个 MAC 地址的高 16 15:0

0xFFFF

位
Register19 (MAC Address1 Low Register) Offset: 0x004C
MAC Address1[31:0]
第 2 个 MAC 地址的低 32 31:0

0x0

位
Register48 (AN Control Register) Offset: 0x00C0
Reserved
31:19

0x0

保留

18

0x0

保留

17

0x0

此位为 1 时,PHY 将其锁相环锁定到 125MHz 的参考时钟。

16

0x0

此位为 1 时,使能 PHY 的停顿探测和字重同步。

15

0x0

保留

14

0x0

此位为 1 时,使能 PHY 进入环回模式。

13

0x0

保留

12

0x0

此位为 1 时,GMAC 将会和链路对方进行自动协商。

保留
SGMII RAL Control
保留
LR: Lock to Reference
锁定到参考时钟
ECD:

Enable

Comma

Detect
使能停顿探测
Reserved
保留
ELE:

External

Loopback Enable
外部环回使能
Reserved
保留
ANE: Auto-Negotiation

98

龙芯 1B 处理器用户手册
Enable
自动协商使能
Reserved
11:10

0x0

保留

9

0x0

此位为 1 时,重新进行自动协商。

8:0

0x0

保留

保留
RAN:

Restart

Auto-Negotiation
重新进行自动协商
Reserved
保留

Register49 (AN Status Register)

Offset: 0x00C4

Reserved
31:9

0x0

保留

8

0x0

只读,因为 GMAC 支持扩展状态信息。

7:6

0x0

保留

5

0x0

只读,指示自动协商完成。

4

0x0

保留

3

0x0

只读,因为 GMAC 支持自动协商。

2

0x0

保留
ES: Extended Status
扩展状态
Reserved
保留
ANC: Auto-Negotiation
Complete
自动协商完成
Reserved
保留
ANA: Auto-Negotiation
Ability
自动协商能力
LS: Link Status

此位为 1 时,指示链路连接上。

链路状态

此位为 0 时,指示链接未连接。

Reserved
1:0

0x0

保留。

保留
Register50 (Auto-Negotiation Advertisement Register) Offset: 0x00C8
Reserved
31:16

0x0

保留

15

0x0

只读为 0,因为 GMAC 不支持下一页面。

保留
NP: Next Page Support
下一页面支持

99

龙芯 1B 处理器用户手册
Reserved
14

0x0

保留

13:12

0x0

11:9

0x0

保留

8:7

0x0

见 IEEE 802.3z 第 37.2.1.4 小节

6

0x0

此位为 1 时,指示 GMAC 支持半双工。

5

0x0

此位为 1 时,指示 GMAC 支持全双工。

4:0

0x0

保留

保留
RFE:

Remote

Fault

Encoding

此 2 位指示链路对端发生错误,具体编码将 IEEE 802.3z 第
37.2.1.5 小节。

远端错误编码
Reserved
保留
PSE: Pause Encoding
Pause 位编码
HD: Half-Duplex
半双工
FD: Full-Duplex
全双工
Reserved
保留
Register51 (Auto-Negotiation Link Partner Ability Register) Offset: 0x00CC
Reserved
31:16

0x0

15

0x0

保留

保留
NP: Next Page Support

此位为 1 时,指示有更多下一页面信息可用

下一页面支持

此位为 0 时,指示下一页面交换不可用。

ACK: Acknowledge
14

0x0

指示在自动协商中,链路对端成功接收到 GMAC 的基本页面。

13:12

0x0

见 IEEE 802.3z 第 37.2.1.5 小节。

11:9

0x0

保留

8:7

0x0

见 IEEE 802.3z 第 37.2.14 小节。

6

0x0

指示对端可以运行在半双工模式。

5

0x0

指示对端可以运行在全双工模式。

确认
RFE:

Remote

Fault

Encoding
远端错误编码
Reserved
保留
PSE: Pause Encoding
对端 pause 状态编码
HD: Half-Duplex
半双工
FD: Full-Duplex
全双工
100

龙芯 1B 处理器用户手册
Reserved
4:0

0x0

保留

保留
Register52 (Auto-Negotiation Expansion Register) Offset: 0x00D0
Reserved
31:3

0x0

保留

2

0x0

只读为 0,因为 GMAC 不支持下一页面。

1

0x0

此位为 1 时,指示 GMAC 接收到新页面。

0

0x0

保留

保留
NPA: Next Page Ability
下一页面能力
NPR: New Page Received
接收到新页面
Reserved
保留
Register54 (SGMII/RGMII Status Register) Offset: 0x00D8
Reserved
31:4

0x0

3

0x0

保留

保留
Link Status

此位为 1 时,指示链路连接上。

链路状态

此位为 0 时,指示链路未连接上。
指示链路当前速度

Link Speed

00: 2.5MHz
2:1

0x0

链路速度

01: 25MHz
10: 125MHz

Link Mode

0: 半双工
0

0x0

链路模式

1: 全双工

7.4 DMA 描述符
DMA 描述符是 GMAC 驱动和硬件的交互接口,记录了数据包的内存地址和传输状态。在
此分别定义了发送描述符(Tx Desciptor)和接收描述符(Rx Descriptor)两种数据结构。两
种描述符可以自由选择分别以环式(ring mode)或者链式(chain mode)相连,以供 GMAC 使
用。

7.4.1 DMA 描述符的基本格式
每一个 DMA 描述符包含两个数据 buffer、两个字节计数 buffer 和两个指向数据 buffer
地址的指针。需要注意的是描述符的地址必须保证按照所连接的系统总线位宽对齐,同时
保证与系统字节序相同(默认小尾端)。

101

龙芯 1B 处理器用户手册

图1

DMA 描述符的基本格式(小尾端 32 位总线)

图2

DMA 描述符的基本格式(小尾端 64 位总线)

7.4.2 DMA 接收描述符
GMAC 子系统在工作模式下需要至少两个接收描述符才能够正常的接收一个网络数据
包。
其内部的接收模块在处理一个网络数据包时,总是在同时尝试获取下一个接收描述符。
每一个网络数据包被称为一个帧(frame)。

图 3 DMA 接收描述符的基本格式(小尾端 32 位总线)

102

龙芯 1B 处理器用户手册

7.4.3 RDES0
RDES0 包括了当前接收帧状态、
长度以及该描述符的所有情况(主机或 DMA 拥有)。
RDES0
的具体细节参见下表。
RDES0

位
OWN
31
所有模式

AFM: Destination
Address Filter Fai

该位为 1 时表示描述符当前属于 DMA 控制,0 表示属于主机控制。当
DMA 模块完成一次传输时,会将该位主动清 0

当该位为 1 时,表示当前数据帧目标地址不符合 GMAC 内部
30
的帧目标地址过滤器

目标地址过滤错误 l
FR: Frame length
29:16

表示接收当前帧的长度,当 ES 位为 0 时有效

帧长度
指示当前帧是否出错,其值为 RDES[0]、RDES[1]、RDES[3]、

ES: Error Summary
15
总体错误信息

的结果

DE: Descriptor Error
14
描述符错误
SAF: Source Address
Filter Fail

RDES[4]、RDES[6]、RDES[7、RDES[11]、RDES[14]各位作或运算(OR)

当该位为 1 时表示,当前描述符所指向的 buffer 与帧不相符或者 OWN
为 0(主机控制)

当该位为 1 时,表示当前数据帧的源地址不符合 GMAC 内部
13
的帧源地址过滤器

源地址过滤错误
LE: Length Error
12
长度错误

当该位为 1 时,表示当前接收帧长度与默认长度不符。当 Frame Type
位为 1 且 CRC Error 位为 0 时有效

OE: Over Flow Error
11

当该位为 1 时,表示接收该帧时 GMAC 内部 RxFIFO 溢出

10

当该位为 1 时,表示该帧的类型为 VLAN

溢出错误
VLAN: VLAN Tag
VLAN 标志
FS: First Desciptor
9
第一个描述符
LS: Last Desciptor
8
最后一个描述符
IPC Checksum
Error/Giant Frame
校验错误/超长帧
103

当该位为 1 时,表示当前描述符所指向的 buffer 为当前接收帧的第一
个保存 buffer
当该位为 1 时,表示当前描述符所指向的 buffer 为当前接收帧的最后
一个保存 buffer
当该位为 1 时,如果 IPC 校验功能启用则表示当前帧的 IPv4

7

头校验值与帧内部校验域的值不相符。如果未启用则表示当前帧为一
个超长帧(长度大于 1518 字节)

龙芯 1B 处理器用户手册
LC: late collision

当该位为 1 时,表示在半双工模式下,当前帧接收时发生了
6

后期冲突

一个后期冲突

FT: Frame Type

当该位为 1 时,表示当前帧为一个以太网格式帧,为 0 时表
5

帧类型

示当前帧为一个 IEEE802.3 格式帧
当该位为 1 时,表示当前时钟值超过了接收模块看门狗电路

RWT: Receive Watchdog

4

Timeout

时钟的值,既接收帧超时

RE: Receive Error

当该位为 1 时,表示接收当前帧时内部模块出错。内部信号
3

接收错误

rxer 置 1 且 rxdv 置 1
当该位为 1 时,表示接收帧长度不是整数,即总长度为奇数

DE: Dribble bit Error
2

位,该位只有在 mii 模式下有效

奇数位错误

CE: CRC Error
1
接收 CRC 校验错误

当该位为 1 时,表示接收当前帧时内部 CRC 校验出错。该位只有在 last
descriptor(RDES0[8])为 1 时有效

RX MAC:

当该位为 1 时,表示接收当前帧时内部 RX MAC 寄存器组 1-15 中存在

Checksum/payload

一个匹配当前帧目的地址。为 0 时表示 RX MAC 寄存器组 0 匹配接受帧

Checksum Error

0

目的地址。如果 Full Checksum Offload Engine 启用时,为 1 表示该
帧 TCP/UDP/ICMP 校验错误。该位为 1 时也可能表示当前帧实际接受长

接受校验/负载校验错

度与帧内部记载长度不相符。

误

7.4.4 RDES
RDES1 记录了描述符所指向的 buffer 大小,以及描述符的组织格式(环形或链型)
RDES1

位

Disable Intr in
Completion

该位为 1 时表示该帧接收完成后将不会置起 STATUS 寄存器
31
中 RI 位(CSR5[6])
,这将会使得主机无法检测到该中断

禁止完成后发中断
Reserved
30:26
保留
RER: Receive End of
Ring

该位为 1 时表示该描述符为环型描述符链表的最后一个,下
25
一个描述符的地址为接收描述符链的基址

环型描述符结尾
RCH: Second Address
Chained
第二个 buffer 地址指向
104

24

该位为 1 时表示描述符中的第二个 buffer 地址指向的是下一个描述符
的地址,为 0 时表示该地址指向第二个 buffer 地址

龙芯 1B 处理器用户手册
下个链式描述符

当该位为 1 时,RDES1[21-11]的值将没有意义,RDES1[25]
比 RDES1[24]具有更高优先级(代表环型而不是链型)

Reserved
23:22
保留
RBS2: Receive Buffer

该域表示数据 buffer2 的大小。根据系统总线的宽度 32/64/128,

Size 2

21:11

接收 buffer2 大小

Buffer2 的大小应该为 4/8/16 的整数倍。如果不
满足则会导致未知的结果。该域在 RDES1[24]为 0 时有效
该域表示数据 buffer1 的大小。根据系统总线的宽度 32/64/128,

RBS2: Receive Buffer

Buffer1 的大小应该为 4/8/16 的整数倍。如果不

Size 1

10:0
满足则会导致未知的结果。该域一直有效。如果该域值为 0,DMA 则会

接收 buffer1 大小

自动访问 buffer2 或者下一个接收描述符

7.4.5 RDES2
该域记录了数据接收 buffer1 的地址。
RDES2

位

Buffer1 Address

该域记录了数据接收 buffer1 的 32 位物理地址。该物理地址没有默认

Pointer

31:0

的对齐要求。当 GMAC DMA 内部实现了总线数据 32/64/128 位对齐,则
该地址的低 2/3/4 位会被忽略

接收 buffer1 地址

7.4.6 RDES3
该域记录了数据接收 buffer2 的地址。
RDES3

位
该域记录了数据接收 buffer2 的 32 位物理地址。该物理地址没有默认

Buffer2 Address
Pointer
接收 buffer2 地址

105

31:0

的对齐要求。当 GMAC DMA 内部实现了总线数据 32/64/128 位对齐,则
该地址的低 2/3/4 位会被忽略. 如果描述符是以链式连接,则该域记
录的是下一个描述符的地址

龙芯 1B 处理器用户手册

7.4.7 DMA 发送描述符
发送描述符与接收描述符的格式基本相同。每个描述符的地址需要按照总线宽度
(32/64/126 位)对齐。

图 4 DMA 发送描述符的基本格式(小尾端 32 位总线)

7.4.8 TDES0
TDES0 包含了发送帧的状态和发送描述符的所属信息。
TDES0

位
OWN
31
所属模式

该位为 1 时表示描述符当前属于 DMA 控制,0 表示属于主机控制。当
DMA 模块完成一次传输时,会将该位主动清 0

Reserved
30:18
保留
TTSS: Tx Time Stamp
Status

17

当 IEEE1588 功能启用时,该位为 1 表示 TDES2 和 TDES3 中保存了该发
送帧的时间戳信息。否则该位保留

发送时间戳状态
IHE: IP Header Error
16
IP 头错误

15
总体错误信息

106

该域做任何修改
指示当前帧是否出错,其值为 TDES[1]、TDES[2]、TDES[8]、

ES: Error Summary

JT: Jabber Timeout

该位为 1 时表示内部校验模块发现该发送帧的 IP 头出错,并且不会对

TDES[9]、TDES[10]、TDES[11]、TDES[13]、TDES[14]各位作或运算(OR)
的结果

14

该位为 1 时表示 GMAC 发送模块遇到了 Jabber 超时

龙芯 1B 处理器用户手册
Jabber 超时
FF: Frame Flushed
13
帧刷新

该位为 1 时表示软件发出了一个刷新命令导致 DMA/MTL 将其内部的帧
刷新掉

PCE: Payload Checksum
Error

12

该位为 1 时表示内部负载校验模块再向发送帧中插入校验数据时出错。
当负载校验模块启用时,该位有效

负载校验错误
LC: Loss of Carrier
11
载波丢失

该位为 1 时表示在发送该帧过程中载波丢失(gmii_crs 信号多个周期未
置起)

NC: No Carrier
10

该位为 1 时表示在发送过程中,PHY 的载波信号一直未置起

载波无效
LC: Late Collision

当该位为 1 时表示在半双工模式下,当前帧接收时发生了
9

后期冲突

一个后期冲突

EC: Excessive
Collison

8

当该位为 1 时表示在发送当前帧的时候连续出现了 16 次冲突

7

该位为 1 时表示当前发送帧为一个 VLAN 帧

连续冲突
VF: VLAN Frame
VLAN 帧
CC: Collsion Count
6:3

该域表示当前帧在成功发送之前所遇到冲突次数的总数

冲突计数
ED: Excessive
Deferral

2

该位为 1 时表示当前帧传输结束

连续 Deferral
UF: Underflow Error
1
溢出错误

该位为 1 时表示当前帧传输时发生了溢出错误,即数据传输 buffer 过
小或不可用

DB: Defered Bit
0

该位为 1 时表示此次发送被延迟,只有在半双工模式下有效

帧刷新

7.4.9 TDES1
TDES1 包含了 buffer 大小以及其他一些控制描述符环型/链型连接的控制和状态位。
TDES1

位

IC: Interrption on
Complete

107

该位为 1 时表示该帧接发送完成后将会置起 STATUS 寄存器
31
中 TI 位(CSR5[0])

龙芯 1B 处理器用户手册
完成时中断
LS: Last Segment
30
最后段
FS: First Segment
29
第一段

该位为 1 时表示当前 buffer 包含的是一帧数据的最后一段(如果帧分
为多个段)
该位为 1 时表示当前 buffer 包含的是一帧数据的第一段(如果帧分为
多个段)
该域控制内部模块是否在发送帧中填充校验数据。
值:2’b00: 不填充校验数据

CIC: Checksum
Insertion Control

2’b01: 填充 IPV4 头校验数据

28:27

2’b10: 在 伪 头 数 据 (pseudo-header) 存 在 的 情 况 下 , 填 充

校验数据填充控制

TCP/UDP/ICMP 全校验数据
2’b11: 总是填充 TCP/UDP/ICMP 的全校验数据
DC: Disable CRC
26

该位为 1 时 GMAC 硬件不在每个发送帧的结尾添加 CRC 校验数据

禁止 CRC 校验
TER: Transmit End of
Ring

该位为 1 时表示该描述符为环型描述符链表的最后一个,下
25
一个描述符的地址为发送描述符链的基址

环形描述符结尾

该位为 1 时表示描述符中的第二个 buffer 地址指向的是下一个描述符

TCH: Second Address

的地址,为 0 时表示该地址指向第二个 buffer 地址

Chained
24
第二个 buffer 地址指向
下个链式描述符

当该位为 1 时,TDES1[21-11]的值将没有意义,TDES1[25]
比 TDES1[24]具有更高优先级(代表环型而不是链型)

DP: Dissable Pading
23
禁止填充

该位为 1 时表示 GMAC 将不会对长度小于 64 字节的数据包进行空数据
填充

TTSE: Transmit Time
Stamp Enable

22

该位为 1 时表示将启用内部模块计算 IEEE1588 硬件时间戳计算,在
TDES1[29]为 1 时有效

启用发送时间戳
TBS2: Transmit Buffer
Size 2

21:11

该域表示数据 buffer2 的大小。当 TDES1[24]为 1 时,该域无效

发送 buffer2 大小
TBS1: Transmit Buffer
Size 1
发送 buffer1 大小

108

10:0

该域表示数据 buffer1 的大小。该域一直有效。如果该域值为 0,DMA
则会自动访问 buffer2 或者下一个接收描述符

龙芯 1B 处理器用户手册

7.4.10TDES2
该域记录了数据发送 buffer1 的地址。
位

TDES2
Buffer1 Address

该域记录了数据接收 buffer1 的 32 位物理地址。该物理地址没有默认

Pointer

31:0

的对齐要求。当 GMAC DMA 内部实现了总线数据 32/64/128 位对齐,
则该地址的低 2/3/4 位会被忽略

发送 buffer1 地址

7.4.11TDES3
该域记录了数据发送 buffer2 的地址。
位

TDES3

该域记录了数据接收 buffer2 的 32 位物理地址。该物理地址没有默认

Buffer2 Address
Pointer
发送 buffer2 地址

109

的对齐要求。当 GMAC DMA 内部实现了总线数据 32/64/128 位对齐,
31:0

则该地址的低 2/3/4 位会被忽略。如果描述符是以链式连接,则该域记
录的是下一个描述符的地址

龙芯 1B 处理器用户手册

7.5 软件编程向导(Software Programming

Guide):

DMA 初始化:
1. 软件重置(reset)GMAC
2. 等待重置完成(查询 DMA reg0[0])
3. 对 DMA reg0 的以下域进行编程
a. MIX-BURST 和 AAL(DMA reg0[26]、[25])
b. Fixed-burst 或者 undefined-burst(DMA reg0[16])
c. Burst-length 和 Burst-mode
d. Descriptor Length(只有当环形格式时有效)
e. Tx 和 Rx 仲裁调度
4. 对 AXI Bus Mode Reg 进行编程
a. 如果选择了 Fixed-burst,则需要在该寄存器内设置最大 burst length
5. 分别创建发送、接收描述符链,可以分别选择环形模式或者链型模式进行连接,并将
接收描述符的 OWN 位设为 1(DMA 拥有)
6. 在软件启用 DMA 描述符之前,必须保证至少发送/接收描述符链中有三个描述符
7. 将发送、接收描述符链表的首地址写入 DMA reg3、4
8. 对 DMA reg6(DMA mode operation)中的以下位进行配置
a. 接收/发送的 Store and Forward
b. 接收/发送的阈值因子(Threshold Control)
c. 启用流控制(hardware flow control enable)
d. 错误帧和未识别的正确帧略过(forwarding enable)
e. OSF 模式
9. 向 DMA reg6(Status reg)写 1.清除所有中断请求
10. 向 DMA reg7(interrupt enable reg)写 1,启用所有中断
11. 向 DMA reg6[1]、[13]中写 1,启用发送和接收 DMA
MAC 初始化:
1. 正确配置配套 PHY 芯片
2. 对 GMAC reg4(GMII Address Register)进行正确配置,使其能够正常访问 PHY 相关
寄存器
3. 读取 GMAC reg5(GMII Data Register)获取当前 PHY 的链接(link)、速度(speed)、模
式(双工)等信息
4. 配置 MAC 地址
5. 如果启用了 hash filtering,则需要对 hash filtering 进行配置
6. 对 GMAC reg1(Mac Frame filter)以下域进行配置,来进行帧过滤
a. 接收所有
b. 混杂模式(promiscuous mode)
c. 哈希或完美过滤(hash or perfect filter)
d. 组播、多播过滤设置等等
7. 对 GMAC reg6(Flow control register)以下域进行配置
a. 暂停时间和其他暂停控制位
b. 接收和发送流控制位
c. 流控制忙/后压力启用

110

龙芯 1B 处理器用户手册
8. 对中断掩码寄存器(Mac reg15)进行配置
9. 基于之前得到的线路信息(link,speed,mode)对 GMAC reg0 进行正确的配置
10. 设置 GMAC reg0[2]、[3]来启用 GMAC 中的发送、接收模块
发送和接收的一般过程:
1. 检测到发送或接收中断后,查寻相应描述符来判断其是否属于主机,并读取描述符中
的数据
2. 完成对描述符中数据的读取后,将描述符各位清 0 并设置其 OWN 位,使其继续发送/
接收数据
3. 如果当前发送或接收描述符不属于 DMA(OWN=0),则 DMA 模块会进入挂起状态。当
有数据需要被发送或接收时,向 DMA Tx/Rx POLL 寄存器写 1 重新使能 DMA 模块。
需要注意的是接收描述符在空闲时应该总是属于 DMA(OWN=1)
发送和接收描述符及对应 buffer 地址的实时信息可以通过查寻 DMA reg18、19、20、21
获得

111

龙芯 1B 处理器用户手册

8 GMAC1
8.1 配置成 MAC 的连接和复用方式
GMAC1 控制器可以通过配置成百兆模式(MII)或千兆模式(RGMII)。如果外部连接
百兆 PHY,需要复用 PWM2,PWM3 和 GMAC1_TX_CLK_O 三个 PAD,配置如下
表:
PAD

MAC 信号

配置位

复位值

PWM2

MAC_1_COL

GMA1_USE_PWM23

1’b0

PWM3

MAC_1_CRS

GMA1_USE_PWM23

1’b0

GMAC1_TX_CLK_O

MAC_1_RX_ERR

GMA1_USE_TX_CLK

1’b1

寄存器地址:0XBFD0_0424
配置位

Bit 位

描述

GMA1_USE_PWM23

1

1:百兆模式 MAC_COL/MAC_CRS 分别复用 PWM2/3
0:千兆模式

GMA1_USE_TX_CLK

3

1:MII_1_RX_ERR 输入信号复用 GMAC1_TX_CLK_O
0:千兆模式

c)

百兆模式下,如果外部 PHY 不提供 RX_ERR 信号,GMAC1_TX_CLK_O 需接地,不能悬空;

d)

百兆模式下,如果外部 PHY 提供 RX_ERR 信号,GMAC1_TX_CLK_O 与 RX_ERR 连接。

8.2 GMAC1 外部信号复用和配置
在 1B 芯片里,GMAC1 的大多数信号时通过复用来实现队外部的链接。
PAD

方向

描述

复用

GMAC1_MDCK

O

GMAC1 读写 PHY 的时钟信号

UART0_DCD

GMAC1_MDIO

I/O

GMAC1 读写 PHY 的数据信号

UART0_RI

GMAC1_RX_CTL

I

GMAC1 接收数据控制信号

UART0_RX

GMAC1_RX0

I

GMAC1 接收数据输入 0

UART0_TX

GMAC1_RX1

I

GMAC1 接收数据输入 1

UART0_RTS

GMAC1_RX2

I

GMAC1 接收数据输入 2

UART0_CTS

GMAC1_RX3

I

GMAC1 接收数据输入 3

UART0_DSR

GMAC1_TX0

O

GMAC1 传输数据输出 0

UART1_RX

GMAC1_TX1

O

GMAC1 传输数据输出 1

UART1_TX

GMAC1_TX2

O

GMAC1 传输数据输出 2

UART1_RTS

GMAC1_TX3

O

GMAC1 传输数据输出 3

UART1_CTS

GMAC1_TX_CLK_I

I

GMAC1 传输时钟输入

GMAC1_TX_CLK_O

O

GMAC1 传输时钟输出

GMAC1_RX_CLK_I

I

GMAC1 接收时钟输入

GMAC1_TX_CTL_O

O

GMAC1 输出数据控制信号

无复用

从上表可以看出,
GMAC1 的多数 PAD 通过复用 UART0 和 UART1 的信号实现。
112

龙芯 1B 处理器用户手册
这些复用的控制和配置如下:
GMAC1 复用 UART0 部分控制信号:GMAC1_USE_UART0;
GMAC1 复用 UART1 部分控制信号:GMAC1_USE_UART1;
参数名称

BIT 位

缺省值

描述

GPIO_MUX 基地址:0XBFD0_0420
GMAC1_USE_UART0

3

0

UART0 的信号用来复用给 GMAC1 使用

GMAC1_USE_UART1

4

0

UART1 的信号用来复用给 GMAC1 使用

8.3 寄存器描述
GMAC 寄存器包括 GMAC 寄存器部分和 DMA 寄存器部分。GMAC1 的 GMAC 寄存
器的起始地址是 0XBFE2_0000;GMAC1 的 DMA 寄存器的起始地址是 0XBFE2_1000。
DMA 寄存器和 GMAC 寄存器的具体意义请参照第 7 章。

113

龙芯 1B 处理器用户手册

9 USB HOST
9.1 总体概述
1B 的 USB 主机端口特性如下:
—兼容 USB Rev 1.1 、USB Rev 2.0 协议
—兼容 OHCI Rev 1.0 、EHCI Rev 1.0 协议
—支持 LS(Low Speed)、FS(Full Speed)和 HS(High Speed)的 USB 设备
GPIO_MUX_CTRL1[31](基地址 0XBFD0_0424)是 USB 复位使能信号,USB 工作前需要
写1
USB 主机控制器模块图如图 9-1、图 9-2 所示:

图 9-1

114

USB 主机控制器模块图

龙芯 1B 处理器用户手册

图 9-2

USB 主机控制器细节模块图(带 EHCI 控制器细节)

9.2 USB 主机控制器寄存器
9.2.1 EHCI 相关寄存器
EHCI 的相关寄存器包括 Capability 寄存器、Operational 寄存器和,EHCI 实现相关
寄存器。1B 的 USB 主机控制器兼容 EHCI Rev 1.0 协议,Capability 寄存器和 Operational
寄存器的详细信息参照 Enhanced Host Controller Interface Rev 1.0 Specification。

9.2.2 Capability 寄存器
名称

地址

宽度

访问

说明

HCCAPBASE

0xbfe00000

32

RO

默认值为 32’h01000010

HCSPARAMS

0xbfe00004

32

RO

默认值为 32’h00001116

HCCPARAMS

0xbfe00008

32

RO

默认值为 32’h0000A010

(注:USBBase 固定为 EHCI slave 的起始地址 0xbfe00000)

115

龙芯 1B 处理器用户手册

9.2.3 Operational 寄存器
名称

地址

宽度

访问

USBCMD

0xbfe00010

32

USBSTS

0xbfe00014

32

USBINTR

0xbfe00018

32

R/W

FRINDEX

0xbfe0001c

32

R/W

CTRLDSSEGMENT

0xbfe00020

32

R/W

PERIODICLISTBASE

0xbfe00024

32

R/W

ASYNCLISTADDR

0xbfe00028

32

R/W

CONFIGFLAG

0xbfe00050

32

R/W

PORTSC 1

0xbfe00054

32

PORTSC 2

0xbfe00058

32

R/W 、
RO

说明
USB 主机控制器的命令寄存器

R/W 、

USB 主机控制器的状态寄存

RO

器
USB 主机控制器的中断设置寄
存器
USB 主机控制器的帧索引寄
存器
存放 EHCI 控制数据结构的地
址
存放周期数据帧表的起始地址
存放下一个要被执行的异步队

R/W 、
RO
R/W 、
RO

列的起始地址
配置模式寄存器
端口 1 状态和控制寄存器

端口 2 状态和控制寄存器

(注:USBOPBase 固定为 EHCI slave 的起始地址+ `h10)

9.2.4 EHCI 实现相关寄存器
EHCI 实现相关寄存器的详细描述如下。
名称

地址

宽
度

访问

说明

INSNREG00

0xbfe00090

32

R/W

帧的长度配置寄存器

INSNREG01

0xbfe00094

32

R/W

数据包缓冲区 OUT/IN 阈值寄存器

INSNREG02

0xbfe00098

32

RO

数据包缓冲深度寄存器

INSNREG03

0xbfe0009c

32

RO ,R/W

参照寄存器详细描述

INSNREG04

0xbfe000a0

32

R/W

用于 Debug

INSNREG05

0xbfe000a4

32

RO, R/W

UTMI 配置(默认配置),控制和状
态寄存器

INSNREG06

0xbfe000a8

32

RO

AHB 错误状态寄存器

INSNREG07

0xbfe000ac

32

RO

AHB Master 错误地址寄存器

INSNREG08

0xbfe000b0

32

RO

HSIC 使能寄存器

116

龙芯 1B 处理器用户手册

INSNREG00 寄存器(disable)
INSNREG01 寄存器
位域

访问

复位值

说明

31:16

R/W

16’h0020

OUT 阈值(单位是 4 bytes),一旦从系统内存中取出的数据
量达到 OUT 阈值,就开始 USB 传输,最小为 16bytes

15:0

R/W

16’h0020

IN 阈值(单位是 4 bytes),一旦 Packet Buffer 里的数据量
达到 IN 阈值,就开始向内存传输,最小为 16bytes

INSNREG02 寄存器
位域

访问

复位值

说明

31:12

Reserved

20’h0

保留

11:0

RO

12’h0020

数据包缓冲深度(单位是 4 bytes)

INSNREG03 寄存器
位域

访问

复位值

说明

31:13

Reserved

19’h0

保留

12:10

RO

3’h0

这个字段指定 phy_clks 的额外延时,这个延时被添加到“Tx-Tx
turnaround Delay”中。

9

RO

1’h0

置 1:将迫使主机控制器在一帧的每一微帧中获取周期数据帧表,
置 0:主机控制器在一帧的微帧 0 中获取周期数据帧表

8:1

R/W

8’h0

时间可容忍偏移,这个字段用来指明为了容忍计算可用时间而要附加的
字节数。计算可用时间为以后的传输弹性增加的,用户程序默认不需要
修改这个字段。

0

RO

1’h0

Break Memory Transaction 模式
置 1:使能此功能
置 0:禁止此功能

INSNRE04 寄存器(仅用于调试,软件不必更改此寄存器)
位域

访问

复位值

说明

31:6

Reserved

26’h0

保留

5

R/W

1’h0

置 1:禁止 automatic 功能,即当软件清除 Run/Stop 位时,USB 主机
控制器会把挂起(Suspend)的端口唤醒
置 0:启用 automatic 功能,当 reset Run/Stop 位时,Suspend 信号会置
为1

4

R/W

1’h0

置 1:禁止 NAK reload 修复
置 0:启用 NAK reload 修复

3

117

Reserved

1’h0

保留

龙芯 1B 处理器用户手册
2

R/W

1’h0

置 1:缩短端口枚举(enumeration)时间(仿真)

1

R/W

1’h0

置 1: HCCPARAMS 寄存器的第 17、15:4、2:0 位均可写

0

R/W

1’h0

置 1: HCSPARAMS 寄存器可写

INSNRE05 寄存器
位域

访问

复位值

说明

31:18

Reserved

14’h0

保留

17

RO

1’h0

置 1:表示对这个寄存器进行了一个写操作,硬件正在执行
置 0:表示硬件已经执行完操作

16:13

R/W

5’h0

端口号

12

R/W

4’h1

VControlLoadM
置 1:NOP
置 0:Load

11:8

R/W

4’h0

VControl

7:0

RO

4’h0

VStatus

INSNREG06 寄存器
位域

访问

复位值

说明

31

R/W

1’h0

一旦 AHB 出错即被捕获并置 1,写 0 清除该字段

30:12

Reserved

19’h0

保留

11:9

RO

3’h0

AHB 出错时控制段 HBURST 的值

8:4

RO

5’h0

AHB 出错的 burst 的预计节拍数

3:0

RO

4’h0

在当前 burst 下,AHB 出错前完成的节拍数

INSNREG07 寄存器
位域

访问

复位值

说明

31:0

RO

32’h0

AHB 出错时控制段的地址

INSNREG08 寄存器

118

位域

访问

复位值

说明

31:0

RO

1’b0

HSIC 使能

龙芯 1B 处理器用户手册

9.3 OHCI 相关寄存器
OHCI 的相关寄存器包括 Operational 寄存器和 OHCI 实现相关寄存器。1B 的 USB 主
机控制器兼容 OHCI Rev 1.0 协议,Operational 寄存器的详细信息参照 Open Host Controller
Interface Rev 1.0 Specification。

9.3.1 Operational 寄存器
名称

地址

宽度

访问

说明

HcRevision

0xbfe08000

32

-

HcControl

0xbfe08004

32

-

HcCommonStatus

0xbfe08008

32

-

HcInterruptStatus

0xbfe0800C

32

-

HcInterruptEnable

0xbfe08010

32

-

HcInterruptDisable

0xbfe08014

32

--

HcHCCA

0xbfe08018

32

-

HcPeriodCuttentED

0xbfe0801C

32

-

HcControlHeadED

0xbfe08020

32

–

HcControlCurrentED

0xbfe08024

32

–

HcBulkHeadED

0xbfe08028

32

–

HcBulkCurrentED

0xbfe0802C

32

–

HcDoneHead

0xbfe08030

32

–

HcRmInterval

0xbfe08034

32

–

HcFmRemaining

0xbfe08038

32

–

HcFmNumber

0xbfe0803C

32

–

HcPeriodicStart

0xbfe08040

32

–

HcLSThreshold

0xbfe08044

32

–

HcRhDescriptorA

0xbfe08048

32

–

HcRhDescriptorB

0xbfe0804C

32

–

HcRhStatus

0xbfe08050

32

–

HcRhPortStatus1

0xbfe08054

32

–

HcRhPortStatus2

0xbfe08058

32

–

控制和状态

内存指针

帧计数器

根集线器

9.3.2 OHCI 实现相关寄存器
除了标准的 OHCI 操作寄存器,还实现了两个额外寄存器
(寄存器偏移 0x98 和 0x9C)
用来报告 AHB 的错误状态。
119

龙芯 1B 处理器用户手册
名称

地址

宽度

访问

说明

INSNREG06

0xbfe08098

32

RO

AHB 错误状态寄存器

INSNREG07

0xbfe0809c

32

RO

AHB Master 错误地址寄存器

INSNREG06 寄存器
位域

访问

复位值

说明

31

R/W

1’h0

一旦 AHB 出错即被捕获并置 1, 写 0 清除该字段

30:12

RO

19’h0

保留

11:9

RO

3’h0

AHB 出错时控制段 HBURST 的值

8:4

RO

5’h0

AHB 出错的 burst 的预计节拍数

3:0

RO

4’h0

在当前 burst 下,AHB 出错前完成的节拍数

INSNREG07 寄存器
位域

访问

复位值

说明

31:0

RO

32’h0

AHB 出错时控制段的地址

9.4 USB 主机控制器时序
本节介绍 USB 2.0 控制器 通过 UTMI 传输和接收 USB 差分信号的时序。

9.4.1 数据接收时序
如图 9-3、图 9-4 所示,随着一个 SYNC 序列到来,rx_active 置 1 标志着数据接收的
开始。
rx_valid 和 rx_validh 置 1 标志着通过 UTMI 并行接收端口的 16 bit 数据已经准备好,
在传输完最后一个包后,rx_valid 和 rx_validh 置 0。

120

龙芯 1B 处理器用户手册

图 9-3 接收时序图(16 bit UTMI 接口,偶数个数据)

图 9-4 接收时序图(16 bit UTMI 接口,奇数个数据)

9.4.2 数据传输时序
如图 12-5、图 9-6 所示,tx_valid 和 tx_validh 在 SYNC 序列开始之前置 1,tx_ready
置 1 标志着数据可以被传输至 UTMI 并行发送端口,在传输完最后一个包后,tx_valid 和
tx_validh 置 0。

121

龙芯 1B 处理器用户手册

图 9-5 传输时序图(16 bit UTMI 接口,偶数个数据)

图 9-6 传输时序图(16bit UTMI 接口,奇数个数据)

122

龙芯 1B 处理器用户手册

10 SPI0
串行外围设备接口 SPI 总线技术是 Motorola 公司推出的多种微处理器、微控制器以及
外围设备之间的一种全双工、同步、串行数据接口标准。

10.1 SPI 控制器结构
1B 集成的 SPI 控制器仅可作为主控端,所连接的是从设备。其结构如下图所示,由一
个 SPI 主控制器和 SPI Flash 读引擎组成。对于软件而言,SPI 控制器除了有若干 IO 寄存
器外还有一段映射到 SPI Flash 的只读 memory 空间。如果将这段 memory 空间分配在
0xbfc00000,复位后不需要软件干预就可以直接访问,从而支持处理器从 SPI Flash 启动。
SPI0 的 IO 寄存器的基地址 0xbfe80000,外部存储地址空间是 0xbf00,0000–0xbf7f,ffff
共 8MB。
本模块结构如下图所示,由 AXI 接口、简单的 SPI 主控制器、SPI Flash 读引擎和总线
选择模块组成。根据访问的地址和类型,AXI 上的合法请求转发到 SPI 主控制器或者 SPI
Flash 读引擎中(非法请求被丢弃)。

SPI主控制器
SPI
总线
选择

AXI接口
SPI Flash读引擎

下图是 SPI 主控制器的结构,系统寄存器包括控制寄存器,状态寄存器和外部寄存器,分
频器生成 SPI 总线工作的时钟信号,由于数据读、写缓冲器(FIFO)允许 SPI 同时进行串
行发送和接收数据。

123

龙芯 1B 处理器用户手册

图 10-1

SPI 主控制器结构

10.2 SPI 控制器寄存器
10.2.1 控制寄存器(SPCR)
中文名:
寄存器位宽:
偏移量:
复位值:

控制寄存器
[7:0]
0x00
0x10

位域

位域名称

位宽

访问

描述

7

Spie

1

RW

中断输出使能信号 高有效

6

spe

1

RW

系统工作使能信号高有效

5

Reserved

1

RW

保留

4

mstr

1

RW

master 模式选择位,此位一直保持 1

3

cpol

1

RW

时钟极性位

2

cpha

1

RW

时钟相位位 1 则相位相反,为 0 则相同

1:0

spr

2

RW

sclk_o 分频设定,需要与 sper 的 spre 一起使用

10.2.2 状态寄存器(SPSR)
中文名:
寄存器位宽:
偏移量:
复位值:

状态寄存器
[7:0]
0x01
0x05

位域

位域名称

位宽

访问

描述

7

spif

1

RW

中断标志位 1 表示有中断申请,写 1 则清零

6

wcol

1

RW

5:4

Reserved

2

RW

写寄存器溢出标志位 为 1 表示已经溢出,写 1 则
清零
保留

124

龙芯 1B 处理器用户手册
3

wffull

1

RW

写寄存器满标志 1 表示已经满

2

wfempty

1

RW

写寄存器空标志 1 表示空

1

rffull

1

RW

读寄存器满标志 1 表示已经满

0

rfempty

1

RW

读寄存器空标志 1 表示空

10.2.3 数据寄存器(TxFIFO/RxFIFO)
中文名:
寄存器位宽:
偏移量:
复位值:

数据传输寄存器
[7:0]
0x02
0x00

位域

位域名称

位宽

访问

描述

7:0

Tx FIFO

8

W

数据传输寄存器

10.2.4 外部寄存器(SPER)
中文名:
寄存器位宽:
偏移量:
复位值:

外部寄存器
[7:0]
0x03
0x00

位域

位域名称

位宽

访问

描述

7:6

icnt

2

RW

在传输完多少个字节后送出中断申请信号
00 – 1 字节

01 - 2 字节

10 - 3 字节

11 - 3 字节

5:3

Reserved

3

RW

保留

2

mode

1

RW

spi 接口模式控制
0: 采样与发送时机同时
1: 采样与发送时机错开半周期

1:0

spre

2

RW

与 Spr 一起设定分频的比率

分频系数(分频的源时钟频率是 DDR_CLK 的一半,参考第 22 章):
spre
spr
分频系数

00
00
2

00
01
4

00
10
16

00
11
32

01
00
8

01
01
64

01
10
128

01
11
256

10
00
512

10
01
1024

10
10
2048

10
11
4096

10.2.5 参数控制寄存器(SFC_PARAM)
中文名:
寄存器位宽:
偏移量:
复位值:

SPI Flash 参数控制寄存器
[7:0]
0x04
0x21

位域

位域名称

位宽

访问

描述

7:4

clk_div

4

RW

3

dual_io

1

RW

时钟分频数选择(分频系数与{spre,spr}组合相
同)
使用双 I/O 模式,优先级高于快速读模式

2

fast_read

1

RW

使用快速读模式

1

burst_en

1

RW

spi flash 支持连续地址读模式

125

龙芯 1B 处理器用户手册
0

memory_en

1

RW

spi flash 读使能,无效时 csn[0]可由软件控制。

10.2.6 片选控制寄存器(SFC_SOFTCS)
中文名:
寄存器位宽:
偏移量:
复位值:

SPI Flash 片选控制寄存器
[7:0]
0x05
0x00

位域

位域名称

位宽

访问

描述

7:4

csn

4

RW

csn 引脚输出值

3:0

csen

4

RW

为 1 时对应位的 cs 线由 7:4 位控制

10.2.7 时序控制寄存器(SFC_TIMING)
中文名:
寄存器位宽:
偏移量:
复位值:

SPI Flash 时序控制寄存器
[7:0]
0x06
0x03

位域

位域名称

位宽

访问

描述

7:2

Reserved

6

RW

保留

1:0

tCSH

2

RW

SPI Flash 的片选信号最短无效时间,以分频后
时钟周期 T 计算
00: 1T
01: 2T
10: 4T
11: 8T

10.3 接口时序
SPI 主控制器外部接口时序图
如图 10-2 所示,SPI 主控制器发送数据时,数据提前半拍放在 MOSI 引线上,接
着从设备端用时钟边沿锁存数据。根据时钟极性(CPOL)和时钟相位(CPHA)的设定,
有 4 种可能的时序关系。

126

龙芯 1B 处理器用户手册
图 10-2 SPI 主控制器时序图

SPI Flash 访问时序图


标准读模式



快速读模式



双 I/O 模式

127

龙芯 1B 处理器用户手册

在所有模式下,若没有使能连续地址读,则 CS 将在传输完一个字节数据后拉高。

10.4 SPI Flash 控制器使用指南
SPI 主控制器的读写操作
1. 模块初始化


停止 SPI 控制器工作,对控制寄存器 spcr 的 spe 位写 0



重置状态寄存器 spsr,对寄存器写入 8'b1100_0000



设置外部寄存器 sper,包括中断申请条件 sper[7:6]和分频系数 sper[1:0],具体参
考寄存器说明



配置 SPI 时序,包括 spcr 的 cpol、cpha 和 sper 的 mode 位。mode 为 1 时是标
准 SPI 实现,为 0 时为兼容模式。



配置中断使能,spcr 的 spie 位



启动 SPI 控制器,对控制寄存器 spcr 的 spe 位写 1

2. 模块的发送/传输操作


往数据传输寄存器写入数据



传输完成后从数据传输寄存器读出数据。由于发送和接收同时进行,即使 SPI 从
设备没有发送有效数据也必须进行读出操作。

3. 中断处理


接收到中断申请



读状态寄存器 spsr 的值,若 spsr[2]为 1 则表示数据发送完成,若 spsr[0]为 1 则表
示已经接收数据



读或写数据传输寄存器



往状态寄存器 spsr 的 spif 位写 1,清除控制器的中断申请

硬件 SPI Flash 读
1. 初始化
 将 SFC_PARAM 的 memory_en 位写 1。当 SPI 被选为启动设备时此位复位为
128

龙芯 1B 处理器用户手册
1。
 设置读参数(时钟分频、连续地址读、快速读、双 I/O、tCSH 等)。这些参数
复位值均为最保守的值。
2. 更改参数
如果所使用的 SPI Flash 支持更高的频率或者提供增强功能,修改相应参数可以
大大加快 Flash 的访问速度。参数的修改不需要关闭 SPI Flash 读使能(memory_en)。具
体参考寄存器说明。

混合访问 SPI Flash 和 SPI 主控制器
1. 对 SPI Flash 进行读以外的访问
将 SPI Flash 读使能关闭后,软件就可直接控制 csn[0],并通过 SPI 主控制器访问
SPI 总线。这意味着在进行此操作时,不能从 SPI Flash 中取指。
除了读以外,SPI Flash 还实现了很多命令(如擦除、写入),具体参见相关 Flash
的文档。

129

龙芯 1B 处理器用户手册

11 SPI1
串行外围设备接口 SPI 总线技术是 Motorola 公司推出的多种微处理器、微控制器以及
外围设备之间的一种全双工、同步、串行数据接口标准。

11.1 SPI 主控制器结构
SPI1 和 SPI0 的实现一样,系统启动地址不会映射到 SPI1 控制器,所以 SPI1 不支持
系统启动。SPI1 的外部存储地址空间是 0xbf80,0000–0xbfbf,ffff 共 4MB。所有结构和配
置相关请参考第 10 章信息。

130

龙芯 1B 处理器用户手册

12 Conf and Interrupt
12.1 配置和中断控制器总体描述
1B 芯片内置简单、灵活的中断控制器。1B 芯片的中断控制器除了管理 GPIO 输入的
中断信号外,中断控制器还处理内部事件引起的中断。所有的中断寄存器的位域安排相同,
一个中断源对应其中一位。中断控制器共四个中断输出连接 CPU 模块,分别对应 INT0,
INT1, INT2, INT3。芯片支持 64 个内部中断和 64 个 GPIO 的中断;其中 INT0 和 INT1 分
别对应于 64 个内部中断的前后 32 位,INT2 和 INT3 对应于 62 个外部 GPIO 中断。具体如
下表所示:
INT0

INT1

INT2

INT3

31

保留

保留

保留

保留

30

UART5

保留

GPIO30

保留

29

UART4

保留

GPIO29

GPIO61

28

TOY_TICK

保留

GPIO28

GPIO60

27

RTC_TICK

保留

GPIO27

GPIO59

26

TOY_INT2

保留

GPIO26

GPIO58

25

TOY_INT1

保留

GPIO25

GPIO57

24

TOY_INT0

保留

GPIO24

GPIO56

23

RTC_INT2

保留

GPIO23

GPIO55

22

RTC_INT1

保留

GPIO22

GPIO54

21

RTC_INT0

保留

GPIO21

GPIO53

20

PWM3

保留

GPIO20

GPIO52

19

PWM2

保留

GPIO19

GPIO51

18

PWM1

保留

GPIO18

GPIO50

17

PWM0

保留

GPIO17

GPIO49

16

保留

保留

GPIO16

GPIO48

15

DMA2

保留

GPIO15

GPIO47

14

DMA1

保留

GPIO14

GPIO46

13

DMA0

保留

GPIO13

GPIO45

12

保留

保留

GPIO12

GPIO44

11

保留

保留

GPIO11

GPIO43

10

AC97

保留

GPIO10

GPIO42

9

SPI1

保留

GPIO09

GPIO41

8

SPI0

保留

GPIO08

GPIO40

7

CAN1

保留

GPIO07

GPIO39

6

CAN0

保留

GPIO06

GPIO38

5

UART3

保留

GPIO05

GPIO37

4

UART2

保留

GPIO04

GPIO36

3

UART1

Gmac1

GPIO03

GPIO35

2

URAT0

Gmac0

GPIO02

GPIO34

1

保留

Ohci

GPIO01

GPIO33

131

龙芯 1B 处理器用户手册
保留

0

Ehci

GPIO00

GPIO32

1B 互联基于 XBAR,XBAR 对各主设备的窗口进行配置,每个主设备配置 8 各窗口,
每个窗口的寄存器包括 BASE,MASK,MMAP 组成。

12.2 中断控制器寄存器描述
中断的使用首先要设置中断使能寄存器中相应的位来使能该中断,系统复位时默认
不使能中断。然后设置中断触发类型寄存器、中断极性控制寄存器和中断输出控制寄存器
相应的属性。最后当发生中断时,通过中断状态寄存器查看相应的中断源。
中断触发方式分为电平触发与边沿触发两种,电平触发方式时,中断控制器内部不
寄存外部中断,此时对中断处理的响应完成后只需要清除对应设备上的中断就可以清除对
CPU 的相应中断。例如,上行网口向 CPU 发出接收包中断,网络驱动处理中断后,只要
清除上行网口内部的中断寄存器中的中断状态,就可以清除 CPU 中断控制器的中断状态,
而不需要通过对应的 INT_CLR 对 CPU 进行清中断。但是在边沿触发的方式下,中断控制
器会寄存外部中断,此时软件处理中断时,需要通过写对应的 INT_CLR,清除 CPU 中断
控制器内部的对应中断状态。另外,在边沿触发的情况下,用户可以通过写 INT_SET 位
强置中断控制器的对应中断状态。
偏移地址
0xbfd01040
0xbfd01044
0xbfd01048
0xbfd0104c
0xbfd01050
0xbfd01054
0xbfd01058
0xbfd0105c
0xbfd01060
0xbfd01064
0xbfd01068
0xbfd0106c
0xbfd01070
0xbfd01074
0xbfd01078
0xbfd0107c
0xbfd01080
0xbfd01084
0xbfd01088
0xbfd0108c
0xbfd01090
0xbfd01094
0xbfd01098
0xbfd0109c
0xbfd010c0
0xbfd010c4
0xbfd010d0
0xbfd010d4
0xbfd010e0
0xbfd010e4
0xbfd010f0
0xbfd010f4
0xbfd01160

132

位
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32
32

寄存器
INTISR0
INTIEN0
INTSET0
INTCLR0
INTPOL0
INTEDGE0
INTISR1
INTIEN1
INTSET1
INTCLR1
INTPOL1
INTEDGE1
INTISR2
INTIEN2
INTSET2
INTCLR2
INTPOL2
INTEDGE2
INTISR3
INTIEN3
INTSET3
INTCLR3
INTPOL3
INTEDGE3
GPIOCFG0
GPIOCFG1
GPIOOE0
GPIOOE1
GPIOIN0
GPIOIN1
GPIOOUT0
GPIOOUT1
ORDER_REG_ADDR

描述
中断控制状态寄存器 0
中断控制使能寄存器 0
中断置位寄存器 0
中断清空寄存器 0
高电平触发中断使能寄存器 0
边沿触发中断使能寄存器 0
中断控制状态寄存器 1
中断控制使能寄存器 1
中断置位寄存器 1
中断清空寄存器 1
高电平触发中断使能寄存器 1
边沿触发中断使能寄存器 1
中断控制状态寄存器 2
中断控制使能寄存器 2
中断置位寄存器 2
中断清空寄存器 2
高电平触发中断使能寄存器 2
边沿触发中断使能寄存器 2
中断控制状态寄存器 3
中断控制使能寄存器 3
中断置位寄存器 3
中断清空寄存器 3
高电平触发中断使能寄存器 3
边沿触发中断使能寄存器 3
GPIO 配置寄存器 0
GPIO 配置寄存器 1
GPIO 配置寄存器输人使能 0
GPIO 配置寄存器输入使能 1
GPIO 配置寄存器输入寄存器 0
GPIO 配置寄存器输入寄存器 1
GPIO 配置寄存器输出寄存器 0
GPIO 配置寄存器输出寄存器 1
DMA 模块控制寄存器位

读写特性
RO
R/W
R/W
R/W
R/W
R/W
RO
R/W
R/W
R/W
R/W
R/W
RO
R/W
R/W
R/W
R/W
R/W
RO
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W

龙芯 1B 处理器用户手册
XBAR 上各主设备地址窗口的配置如下表所示:
偏移地址
0xbfd00000
0xbfd00008
0xbfd00010
0xbfd00018
0xbfd00020
0xbfd00028
0xbfd00030
0xbfd00038
0xbfd00040
0xbfd00048
0xbfd00050
0xbfd00058
0xbfd00060
0xbfd00068
0xbfd00070
0xbfd00078
0xbfd00080
0xbfd00088
0xbfd00090
0xbfd00098
0xbfd000a0
0xbfd000a8
0xbfd000b0
0xbfd000b8

133

位
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64
64

寄存器
CPU_WIN0_BASE
CPU_WIN1_BASE
CPU_WIN2_BASE
CPU_WIN3_BASE
CPU_WIN4_BASE
CPU_WIN5_BASE
CPU_WIN6_BASE
CPU_WIN7_BASE
CPU_WIN0_MASK
CPU_WIN1_MASK
CPU_WIN2_MASK
CPU_WIN3_MASK
CPU_WIN4_MASK
CPU_WIN5_MASK
CPU_WIN6_MASK
CPU_WIN7_MASK
CPU_WIN0_MMAP
CPU_WIN1_MMAP
CPU_WIN2_MMAP
CPU_WIN3_MMAP
CPU_WIN4_MMAP
CPU_WIN5_MMAP
CPU_WIN6_MMAP
CPU_WIN7_MMAP

描述
Cpu 配置窗口 0 基地址
Cpu 配置窗口 1 基地址
Cpu 配置窗口 2 基地址
Cpu 配置窗口 3 基地址
Cpu 配置窗口 4 基地址
Cpu 配置窗口 5 基地址
Cpu 配置窗口 6 基地址
Cpu 配置窗口 7 基地址
Cpu 配置窗口 0 掩码地址
Cpu 配置窗口 1 掩码地址
Cpu 配置窗口 2 掩码地址
Cpu 配置窗口 3 掩码地址
Cpu 配置窗口 4 掩码地址
Cpu 配置窗口 5 掩码地址
Cpu 配置窗口 6 掩码地址
Cpu 配置窗口 7 掩码地址
Cpu 配置窗口 0 映射地址
Cpu 配置窗口 1 映射地址
Cpu 配置窗口 2 映射地址
Cpu 配置窗口 3 映射地址
Cpu 配置窗口 4 映射地址
Cpu 配置窗口 5 映射地址
Cpu 配置窗口 6 映射地址
Cpu 配置窗口 7 映射地址

读写特性
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W

龙芯 1B 处理器用户手册

13 DMA
13.1 DMA 控制器结构描述
DMA 来进行 DDR2 与设备间数据搬移工作,提高系统数据传输的效率。本章介绍的 DMA
是专用 DMA,DMA 共有三路,分别对应 NAND、AC97 播放、AC97 录音的数据传输。
DMA 传送数据的过程由三个阶段组成:
a) 传送前的预处理:由 CPU 完成以下步骤:配置 DMA 描述符相关的寄存器。
b) 数据传送:在 DMA 控制器的控制下自动完成。
c) 传送结束处理:发送中断请求。
本 DMA 控制器限定为以字为单位的数据搬运。根据 DMA 的定义,设计了下个描述符地
址寄存器、源地址寄存器、目的地址寄存器、传送字数计数器、传送步长间隔、传送循环
次数、DMA 控制逻辑等必备寄存器。DMA 的缓存大小为 128Byte(32x4Byte),以字为单位
读写。
CPU 通过配置 DMA 寄存器,将来自于 DDR2 或设备的数据保存在缓存中,将缓存中的
数据写入要对应的内存或设备中去,最后发送 DMA 传输结束信号。在 DMA 传输过程中,CPU
可以随时监听 DMA 的工作状态。

13.2 DMA 控制器与 APB 设备的交互
在 1B 中,使用 DMA 的 APB 设备包括 NAND,AC97, 每个设备都有单独的 DMA 控制器。
AC97 的 写 通 道 是 双 通 道 , 且 AC97 写 使 能 的 判 断 条 件 的 DMA_DADDR[31]=1 ,
DMA_DADDR[29:28]域为 AC97 写模式选择域,判断 AC97 写操作是字节、半字或者字操作,
与 AC97 的写模式配置一致。所以,如果是写 AC97 的写操作,需要在配置 DMA 描述符时,
将 DAM_DADDR[31]配置为 1,将 DMA_DADDR[29:28]配置为需要的 AC97 写模式。

13.3 DMA 控制器
13.3.1 ORDER_ADDR_IN
中文名:
寄存器位宽:
地址:
复位值:
位域

134

该寄存器广播到三路 DMA,被选中的 DMA 根据寄存器的配置开始工作
[31:0]
0xbfd01160
0x00000000

位域名称

位宽

访问

描述

龙芯 1B 处理器用户手册
31:6

Ask_addr

26

R/W

被选中 DMA 第一个描述符地址的高 26 位,低 6
位为 0;相当于 26 为的 Ask_addr 左移 6 位。

5

保留

1

4

dma_stop

1

R/W

用户请求停止 DMA 操作;
完成当前数据读写操作后,停止操作
可以开始读描述符链的第一个 DMA 描述符;

3

dma_start

1

R/W

当第一个描述符相关的寄存器读回后,该位清
零
用户请求将当前 DMA 操作的相关信息写回到
指定的内存地址;

2

Ask_valid

1

R/W

当用户写回 DMA 操作相关信息后,该位清
零。
2’b00 nand flash

1:0

Dev_num

2

R

2’b01 AC97 read device
2’b10 AC97 write device

说明:
第一个描述符的地址在 ORDER_ADDR_IN 寄存器中,该寄存器由 CPU 来配置,也
就是 Ask_addr 左移 6 位后组成了所有描述符寄存器的基地址。
每次 DMA 操作,DMA_ORDER_ADDR 寄存器存放的下个描述符的地址和有效位。
如果 ask_valid=1,表示 CPU 要侦听 DMA 操作,此时要将 DMA 控制器寄存器的值
写回到 ask_addr 指向的内存中。
如果 dma_start=1,表示开始 DMA 操作,DMA 先从 ask_addr 指向的内存地址读描
述符,然后根据描述符的信息开始执行 DMA 操作。

13.3.2 DMA_ORDER_ADDR
中文名:
寄存器位宽:
基地址:
偏移地址:
复位值:

下一个描述符地址寄存器
[31:0]
Ask_addr<<6

0x0
0x00000000

位域

位域名称

位宽

访问

描述

31:1

dma_order_addr

31

R/W

存储器内部下一个描述符地址寄存器

0

Dma_order_en

1

R/W

描述符是否有效信号

说明:存储下一个 DMA 描述符的地址,dma_order_en 是下个 DMA 描述符的使能位,如
果该位为 1 表示下个描述符有效,该位为 0 表示下个描述符无效,不执行操作,地址 16
字节对齐。在配置 DMA 描述符时,该寄存器存放的是下个描述符的地址,执行完该次
DMA 操作后,通过判断 dma_order_en 信号确定是否开始下次 DMA 操作。

13.3.3 DMA_SADDR
中文名:
寄存器位宽:
基地址:
偏移地址:
135

内存地址寄存器
[31:0]
Ask_addr<<6

0x4

龙芯 1B 处理器用户手册
复位值:

0x00000000

位域

位域名称

位宽

访问

描述

31:0

dma_saddr

32

R/W

DMA 操作的内存地址

说明:DMA 操作分为:从内存中读数据,保存在 DMA 控制器的缓存中,由 APB 发请求
来访问 DMA 缓存中的数据,该寄存器指定了读 ddr2 的地址;从 APB 设备读数据保存在
DMA 缓存中,当 DMA 缓存中的字超过一定数目,就往内存中写,该寄存器指定了写内存
的地址。

13.3.4 DMA_DADDR
中文名:
寄存器位宽:
基地址:
偏移地址:
复位值:
位域

设备地址寄存器
[31:0]
Ask_addr<<6

0x8
0x00000000
位宽

访问

描述

31

1

R/W

AC97 写使能,
“1”表示是写操作

30

1

R/W

0:mono 1: 2 stero

29:28

2

R/W

AC97 写模式,0: 1byte,1: 2byte,2: 4byte

32

R/W

DMA 操作的 APB 设备地址

27:0

位域名称

dma_daddr

说明:从内存中读数据,保存在 DMA 控制器的缓存中,由 APB 发请求来访问 DMA 缓存
中的数据,该寄存器指定了写 APB 设备的地址;从 APB 设备读数据保存在 DMA 缓存中,
当 DMA 缓存中的字超过一定数目,就往内存中写,该寄存器指定了读 APB 设备的地址。

13.3.5 DMA_LENGTH
中文名:
寄存器位宽:
基地址:
偏移地址:
复位值:

长度寄存器
[31:0]
Ask_addr<<6

0xc
0x00000000

位域

位域名称

位宽

访问

描述

31:0

dma_length

32

R/W

传输数据长度寄存器

说明:代表一块被搬运内容的长度,单位是字。当搬运完 length 长度的字之后,开始下个
step 即下一个循环。开始新的循环,则再次搬运 length 长度的数据。当 step 变为 1,单
个 DMA 描述符操作结束,开始读下个描述符。

13.3.6 DMA_STEP_LENGTH
中文名:
寄存器位宽:
基地址:
偏移地址:
复位值:
136

间隔长度寄存器
[31:0]
Ask_addr<<6

0x10
0x00000000

龙芯 1B 处理器用户手册
位域

位域名称

位宽

访问

描述

31:0

dma_step_length

32

R/W

数据传输间隔长度寄存器

说明:间隔长度说明两块被搬运内存数据块之间的长度,前一个 step 的结束地址与后一
个 step 的开始地址之间的间隔。

13.3.7 DMA_STEP_TIMES
中文名:
寄存器位宽:
基地址:
偏移地址:
复位值:

循环次数寄存器
[31:0]
Ask_addr<<6

0x14
0x00000000

位域

位域名称

位宽

访问

描述

31:0

dma_step_times

32

R/W

数据传输循环次数寄存器

说明:循环次数说明在一次 DMA 操作中需要搬运的块的数目。如果只想搬运一个连续的
数据块,循环次数寄存器的值可以赋值为 1。

13.3.8 DMA_CMD
中文名:
控制寄存器
寄存器位宽: [31:0]
基地址:
Ask_addr<<6
偏移地址: 0x18
复位值: 0x00000000
位域

位域名称

位宽

访问

描述

14:13

Dma_cmd

2

R/W

源、目的地址生成方式

12

dma_r_w

1

R/W

DMA 操作类型,“1”为读 ddr2 写设备,“0”为
读设备写 ddr2

11:8

dma_write_state

4

R/W

DMA 写数据状态

7:4

dma_read_state

4

R/W

DMA 读数据状态

3

dma_trans_over

1

R/W

DMA 执行完被配置的所有描述符操作

2

dma_single_trans_over

1

R/W

DMA 执行完一次描述符操作

1

dma_int

1

R/W

DMA 中断信号

0

dma_int_mask

1

R/W

DMA 中断是否被屏蔽掉

位域

位域名称

位宽

访问

描述

说 明 : dma_single_trans_over=1 指 一 次 DMA 操 作 执 行 结 束 , 此 时 length=0 且
step_times=1,开始取下个 DMA 操作的描述符。下个 DMA 操作的描述符地址保存在
DMA_ORDER_ADDR 寄存器中,如果 DMA_ORDER_ADDR 寄存器中 dma_order_en=0,
则 dma_trans_over=1 , 整 个 dma 操 作 结 束 , 没 有 新 的 描 述 符 要 读 ; 如 果
dma_order_en=1,则 dma_trans_over 置为 0,开始读下个 dma 描述符。dma_int 为
DMA 的中断,如果没有中断屏蔽,在一次配置的 DMA 操作结束后发生中断。CPU 处理
完中断后可以直接将其置低,也可以等到 DMA 进行下次传输时自动置低。dma_int_mask
为 对 应 dma_int 的 中 断 屏 蔽 。 dma_read_state 说 明 了 DMA 当 前 的 读 状 态 。

137

龙芯 1B 处理器用户手册
dma_write_state 说明了 DMA 当前的写状态。
DMA 写状态(WRITE_STATE[3:0])描述,DMA 包括以下几个写状态:
Write_state

【3:0】

描述

Write_idle

4’h0

写状态正处于空闲状态

W_ddr_wait

4’h1

Dma 判断需要执行读设备写内存操作,并发起写内存请求,但是内存
还没准备好响应请求,因此 dma 一直在等待内存的响应

Write_ddr

4’h2

内存接收了 dma 写请求,但是还没有执行完写操作

Write_ddr_end

4’h3

内存接收了 dma 写请求,并完成写操作,此时 dma 处于写内存操作完
成状态

Write_dma_wait

4’h4

Dma 发出将 dma 状态寄存器写回内存的请求,等待内存接收请求

Write_dma

4’h5

内存接收写 dma 状态请求,但是操作还未完成

Write_dma_end

4’h6

内存完成写 dma 状态操作

Write_step_end

4’h7

Dma 完成一次 length 长度的操作(也就是说完成一个 step)

DMA 读状态(READ_STATE[3:0])描述,DMA 包括以下几个读状态:
Read_state

【3:0】

描述

Read_idle

4’h0

读状态正处于空闲状态

Read_ready

4’h1

接收到开始 dma 操作的 start 信号后,进入准备好状态,开始读描述符

Get_order

4’h2

向内存发出读描述符请求,等待内存应答

Read_order

4’h3

内存接收读描述符请求,正在执行读操作

Finish_order_end

4’h4

内存读完 dma 描述符

R_ddr_wait

4’h5

Dma 向内存发出读数据请求,等待内存应答

Read_ddr

4’h6

内存接收 dma 读数据请求,正在执行读数据操作

Read_ddr_end

4’h7

内存完成 dma 的一次读数据请求

Read_dev

4’h8

Dma 进入读设备状态

Read_dev_end

4’h9

设备返回读数据,结束此次读设备请求

Read_step_end

4’ha

结束一次 step 操作,step times 减 1

138

龙芯 1B 处理器用户手册

14 UART
1B集成了 12 个UART核,通过APB总线与总线桥通信。UART控制器提供与MODEM
或其他外部设备串行通信的功能,例如与另外一台计算机,以RS232 为标准使用串行线路
进行通信。 该控制器在设计上能很好地兼容国际工业标准半导体设备 16550A。

14.1 UART 控制器结构
UART 控制器有发送和接收模块(Transmitter and Receiver)、MODEM 模块、中断仲
裁模块(Interrupt Arbitrator)、访问寄存器模块(Register Access Control),这些模块之间
的关系见下图所示。主要模块功能及特征描述如下:
4

发送和接收模块:负责处理数据帧的发送和接收。发送模块是将 FIFO 发送队列中的
数据按照设定的格式把并行数据转换为串行数据帧,并通过发送端口送出去。接收模
块则监视接收端信号,一旦出现有效开始位,就进行接收,并实现将接收到的异步串
行数据帧转换为并行数据,存入 FIFO 接收队列中,同时检查数据帧格式是否有错。
UART 的帧结构是通过行控制寄存器(LCR)设置的,发送和接收器的状态被保存在
行状态寄存器(LSR)中

4

MODEM 模块:MODEM 控制寄存器(MCR)控制输出信号 DTR 和 RTS 的状态。
MODEM 控制模块监视输入信号 DCD,CTS,DSR 和 RI 的线路状态,并将这些信号的状
态记录在 MODEM 状态寄存器(MSR)的相对应位中。

4

中断仲裁模块:当任何一种中断条件被满足,并且在中断使能寄存器(IER)中相应
位置 1,那么 UART 的中断请求信号 UAT_INT 被置为有效状态。为了减少和外部软
件的交互,UART 把中断分为四个级别,并且在中断标识寄存器(IIR)中标识这些中
断。四个级别的中断按优先级级别由高到低的排列顺序为,接收线路状态中断;接收
数据准备好中断;传送拥有寄存器为空中断;MODEM 状态中断。

4

访问寄存器模块:当 UART 模块被选中时,CPU 可通过读或写操作访问被地址线选
中的寄存器。

139

龙芯 1B 处理器用户手册

图 14-1 UART 控制器结构

14.2 UART 控制器寄存器
1B 内共 12 个并行工作的 UART 接口,其功能寄存器完全一样,只是访问基址不一
样。
UART0 寄存器物理地址基址为 0xbfE40000。
UART0_1 寄存器物理地址基址为 0xbfE41000。
UART0_2 寄存器物理地址基址为 0xbfE42000。
UART0_3 寄存器物理地址基址为 0xbfE43000。
UART1 寄存器物理地址基址为 0xbfE44000。
UART1_1 寄存器物理地址基址为 0xbfE45000。
UART1_2 寄存器物理地址基址为 0xbfE46000。
UART1_3 寄存器物理地址基址为 0xbfE47000。
UART2 寄存器物理地址基址为 0xbfE48000。
UART3 寄存器物理地址基址为 0xbfE4c000。
UART4 寄存器物理地址基址为 0xbfE6c000。
UART5 寄存器物理地址基址为 0xbfE7c000。
UART0 和 UART1 都实现了一分四功能,
UART0 有 8 个 PAD;UART1 只有 4 个 PAD,
同时利用 CAN0 和 CAN1 的 4 个 PAD。所以在 CAN0/CAN1 不用的时候,1B 最多可以提
供出来 12 个两线 UART。
0XBFE7_8038:uart_split
位域

位域名称

访问

描述

1

Uart1_split

R/W

UART1 被分成四个独立两线 UART

0

Uart0_split

R/W

UART0 被分成四个独立两线 UART

0XBFD0_0424: uart1_use_can

140

5

UART1_3_USE_CAN1

UART1_3 利用 CAN1 实现

4

UART1_2_USE_CAN0

UART1_2 利用 CAN0 实现

龙芯 1B 处理器用户手册

14.2.1 数据寄存器(DAT)
中文名:
寄存器位宽:
偏移量:
复位值:

数据传输寄存器
[7:0]
0x00
0x00

位域

位域名称

位宽

访问

描述

7:0

Tx FIFO

8

W

数据传输寄存器

14.2.2 中断使能寄存器(IER)
中文名:
寄存器位宽:
偏移量:
复位值:

中断使能寄存器
[7:0]
0x01
0x00

位域

位域名称

位宽

访问

描述

7:4

Reserved

4

RW

保留

3

IME

1

RW

Modem 状态中断使能

2

ILE

1

RW

1

ITxE

1

RW

0

IRxE

1

RW

接收器线路状态中断使能 ‘0’ – 关闭
‘1’ –
打开
传输保存寄存器为空中断使能 ‘0’ – 关闭 ‘1’ –
打开
接收有效数据中断使能 ‘0’ – 关闭 ‘1’ – 打开

‘0’ – 关闭

‘1’ – 打开

14.2.3 中断标识寄存器(IIR)
中文名:
寄存器位宽:
偏移量:
复位值:

中断源寄存器
[7:0]
0x02
0xc1

位域

位域名称

位宽

访问

描述

7:4

Reserved

4

R

保留

3:1

II

3

R

中断源表示位,详见下表

0

INTp

1

R

中断表示位

中断控制功能表
Bit 3

Bit 2

Bit 1

优先级

st

接收线路状态

2

nd

0

2

nd

接收到有效数
据
接收超时

1

3

0

1

1

1

0

1

0

1

1

0

0

141

中断类型

rd

传输保存寄存

中断源

奇偶、溢出或帧错
误,或打断中断
FIFO 的字符个数达到
trigger 的水平
在 FIFO 至少有一个字
符,但在 4 个字符时
间内没有任何操作,
包括读和写操作
传输保存寄存器为空

中断复位控制

读 LSR
FIFO 的字符个数低于
trigger 的值
读接收 FIFO

写数据到 THR 或者多

龙芯 1B 处理器用户手册

0

0

0

4

器为空
Modem 状态

th

CTS, DSR,
DCD.

RI

or

IIR
读 MSR

14.2.4 FIFO 控制寄存器(FCR)
中文名:
寄存器位宽:
偏移量:
复位值:

FIFO 控制寄存器,FIFO 深度 16
[7:0]
0x02
0xc0

位域

位域名称

位宽

访问

7:6

TL

2

W

描述

5:3

Reserved

3

W

保留

2

Txset

1

W

‘1’ 清除发送 FIFO 的内容,复位其逻辑

1

Rxset

1

W

‘1’ 清除接收 FIFO 的内容,复位其逻辑

0

Reserved

1

W

保留

接收 FIFO 提出中断申请的 trigger 值
字节
‘01’ – 4 字节

‘00’ – 1

‘10’ – 8 字节 ‘11’ – 14 字节

14.2.5 线路控制寄存器(LCR)
中文名:
寄存器位宽:
偏移量:
复位值:

线路控制寄存器
[7:0]
0x03
0x03

位域

位域名称

位宽

访问

描述

7

dlab

1

RW

分频锁存器访问位
‘1’ – 访问操作分频锁存器
‘0’ – 访问操作正常寄存器

6

bcb

1

RW

打断控制位
‘1’ – 此时串口的输出被置为 0(打断状态).
‘0’ – 正常操作

5

spb

1

RW

指定奇偶校验位
‘0’ – 不用指定奇偶校验位
‘1’ – 如果 LCR[4]位是 1 则传输和检查奇偶校验
位为 0。如果 LCR[4]位是 0 则传输和检查奇偶校
验位为 1。

4

eps

1

RW

奇偶校验位选择
‘0’ – 在每个字符中有奇数个 1(包括数据和奇
偶校验位)
‘1’ –在每个字符中有偶数个 1

3

pe

1

RW

奇偶校验位使能
‘0’ – 没有奇偶校验位
‘1’ – 在输出时生成奇偶校验位,输入则判断奇
偶校验位

2

sb

1

RW

定义生成停止位的位数
‘0’ – 1 个停止位

142

龙芯 1B 处理器用户手册
‘1’ – 在 5 位字符长度时是 1.5 个停止位,其他
长度是 2 个停止位
1:0

bec

2

RW

设定每个字符的位数
‘00’ – 5 位

‘01’ – 6 位

‘10’ – 7 位

‘11’ – 8 位

14.2.6 MODEM 控制寄存器(MCR)
Modem 控制寄存器

中文名:
寄存器位宽:
偏移量:
复位值:

[7:0]
0x04
0x00

位域

位域名称

位宽

访问

描述

7:5

Reserved

3

W

保留

4

Loop

1

W

回环模式控制位
‘0’ – 正常操作
‘1’ –回环模式。在在回环模式中,TXD 输出一
直为 1,输出移位寄存器直接连到输入移位寄
存器中。其他连接如下。
DTR 

DSR

RTS  CTS
Out1  RI
Out2  DCD
3

OUT2

1

W

在回环模式中连到 DCD 输入

2

OUT1

1

W

在回环模式中连到 RI 输入

1

RTSC

1

W

RTS 信号控制位

0

DTRC

1

W

DTR 信号控制位

14.2.7 线路状态寄存器(LSR)
中文名:
寄存器位宽:
偏移量:
复位值:

线路状态寄存器
[7:0]
0x05
0x00

位域

位域名称

位宽

访问

描述

7

ERROR

1

R

错误表示位
‘1’ – 至少有奇偶校验位错误,帧错误或打断中
断的一个。
‘0’ – 没有错误

6

TE

1

R

传输为空表示位
‘1’ – 传输 FIFO 和传输移位寄存器都为空。给
传输 FIFO 写数据时清零
‘0’ – 有数据

5

TFE

1

R

传输 FIFO 位空表示位
‘1’ – 当前传输 FIFO 为空,给传输 FIFO 写数据
时清零

143

龙芯 1B 处理器用户手册
位域

位域名称

位宽

访问

描述
‘0’ – 有数据

4

BI

1

打断中断表示位

R

‘1’ –接收到 起始位+数据+奇偶位+停止位都
是 0,即有打断中断
‘0’ – 没有打断
3

FE

1

帧错误表示位

R

‘1’ – 接收的数据没有停止位
‘0’ – 没有错误
2

PE

1

奇偶校验位错误表示位

R

‘1’ – 当前接收数据有奇偶错误
‘0’ – 没有奇偶错误
1

OE

1

数据溢出表示位

R

‘1’ – 有数据溢出
‘0’ – 无溢出
0

DR

1

接收数据有效表示位

R

‘0’ – 在 FIFO 中无数据
‘1’ – 在 FIFO 中有数据

对这个寄存器进行读操作时,LSR[4:1]和 LSR[7]被清零,LSR[6:5]在给传输 FIFO 写
数据时清零,LSR[0]则对接收 FIFO 进行判断。

14.2.8 MODEM 状态寄存器 (MSR)
中文名:
寄存器位宽:
偏移量:
复位值:

Modem 状态寄存器
[7:0]
0x06
0x00

位域

位域名称

位宽

访问

描述

7

CDCD

1

R

DCD 输入值的反,或者在回环模式中连到 Out2

6

CRI

1

R

RI 输入值的反,或者在回环模式中连到 OUT1

5

CDSR

1

R

DSR 输入值的反,或者在回环模式中连到 DTR

4

CCTS

1

R

CTS 输入值的反,或者在回环模式中连到 RTS

3

DDCD

1

R

DDCD 指示位

2

TERI

1

R

RI 边沿检测。RI 状态从低到高变化

1

DDSR

1

R

DDSR 指示位

0

DCTS

1

R

DCTS 指示位

14.2.9 分频锁存器
中文名:
寄存器位宽:
偏移量:
复位值:
位域
7:0

分频锁存器 1
[7:0]
0x00
0x00

位域名称
LSB

中文名:
分频锁存器 2
寄存器位宽: [7:0]
144

位宽
8

访问
RW

描述
存放分频锁存器的低 8 位

龙芯 1B 处理器用户手册
偏移量:
复位值:
位域
7:0

0x01
0x00
位域名称
MSB

位宽
8

访问
RW

描述
存放分频锁存器的高 8 位

模块中被分频时钟 clock_a 的频率是 DDR_clk 频率的的一半
(DDR_clk 配置见 22 章)
;
假设分频锁存器的值为 prescale,波特率为 clock_baud(波特率根据用户需要和外部 UART
连接特性确定),则应满足如下关系:
Prcescale =

clock_a/(16*clock_baud)

或者 Prcescale = DDR_clk/(32*clock_baud)

145

龙芯 1B 处理器用户手册

15 CAN
15.1 概述
1B集成了两路CAN接口控制器。CAN 总线是由发送数据线TX和接收数据线RX构成
的串行总线,可发送和接收数据。器件与器件之间进行双向传送,最高传送速率 1Mbps。
本芯片集成了两个 CAN 总线控制器,引脚复用 GPIO[41:38],对应关系如下表。
CAN0_RX
CAN0_TX
CAN1_RX
CAN1_TX

GPIO38
GPIO39
GPIO40
GPIO41

两个 CAN 总线控制器的中断连接到中断控制的第一组寄存器中,其中 can0 的中断
对应 bit6,can1 的中断对应 bit7。参考第 12 章的说明。
CAN0 总线控制器的寄存器基地址为 0xbfe50000 开始的 16KB;
CAN1 总线控制器的寄存器基地址为 0xbfe54000 开始的 16KB

15.2 CAN 控制器结构
下图为 CAN主控制器的结构,主要模块有APB总线接口、位流处理单元、位时序逻辑、
错误管理逻辑、接收滤波和数据缓存区。
1. APB总线接口:接收APB总线的指令和返回数据。
2. 位流处理单元:实现对发送缓存器、接收FIFO和CAN总线之间数据流的控制,同
时还执行错误检测、总线仲裁、数据填充和错误处理等功能。
3. 位时序逻辑:监视串口的CAN 总线和处理与总线有关的位时序。还提供了可编
程的时间段来补偿传播延迟时间、相位转换(例如由于振荡漂移)和定义采样点
和一位时间内的采样次数。
4. 错误管理逻辑:判断传输的CRC错误并对错误计数。
5. 接收滤波:把接收的识别码的内容相比较以决定是否接收信息
6. 数据缓存区:接收缓冲器是验收滤波器和CPU 之间的接口,用来储存从CAN
总线上接收和接收的信息。接收缓冲器(13 个字节)作为接收FIFO(长 64 字
节)的一个窗口可被CPU 访问

146

龙芯 1B 处理器用户手册

图 15-1

CAN 主控制器结构

本模块包括两个功能完全相同,能够同时工作的 CAN 模块;他们寄存器完全一样,
所不同的是他们的物理地址基址。他们的地址基址分别为 :
CAN #0 的物理地址基址为 0xbf004400;
CAN #1 的物理地址基址为 0xbf004300。
该控制器支持两种工作模式,即标准模式和扩展模式。工作模式通过命令寄存器中的
CAN 模式位来选择。复位默认是标准模式。

15.3 标准模式
15.3.1标准模式地址表
地址区包括控制段和信息缓冲区,控制段在初始化载入是可被编程来配置通讯参数
的,应发送的信息会被写入发送缓冲器,成功接收信息后,微控制器从接收缓冲器中读取
接收的信息,然后释放空间以做下一步应用。
初始载入后,寄存器的验收代码,验收屏蔽,总线定时寄存器 0 和 1 以及输出控制
就不能改变了。只有控制寄存器的复位位被置高时,才可以访问这些寄存器。在复位模式
和工作模式两种不同的模式中,访问寄存器是不同的。当硬件复位或控制器掉线,状态寄
存器的总线状态位时会自动进入复位模式。工作模式是通过置位控制寄存器的复位请求位
激活的。
工作模式
CAN 地址

段

写

读

写

控制

控制

控制

控制

1

FF

命令

FF

命令

2

状态

-

状态

-

3

FF

-

中断

-

FF

-

验收代码

验收代码

0

4
147

复位模式

读

控制

龙芯 1B 处理器用户手册
5

FF

-

验收屏蔽

验收屏蔽

6

FF

-

总线定时 0

总线定时 0

7

FF

-

总线定时 1

总线定时 1

8

保留

保留

保留

保留

9

保留

保留

保留

保留

10

ID(10-3)

ID(10-3)

FF

-

11

ID(2-0),
RTR,DLC

ID(2-0),
RTR,DLC

FF

-

12

数据字节 1

数据字节 1

FF

-

13

数据字节 2

数据字节 2

FF

-

14

数据字节 3

数据字节 3

FF

-

15

数据字节 4

数据字节 4

FF

-

16

数据字节 5

数据字节 5

FF

-

17

数据字节 6

数据字节 6

FF

-

18

数据字节 7

数据字节 7

FF

-

数据字节 8

数据字节 8

FF

-

20

ID(10-3)

ID(10-3)

FF

-

21

ID(2-0),
RTR,DLC

ID(2-0),
RTR,DLC

FF

-

22

数据字节 1

数据字节 1

FF

-

23

数据字节 2

数据字节 2

FF

-

24

数据字节 3

数据字节 3

FF

-

25

数据字节 4

数据字节 4

FF

-

26

数据字节 5

数据字节 5

FF

-

27

数据字节 6

数据字节 6

FF

-

数据字节 7

数据字节 7

FF

-

数据字节 8

数据字节 8

FF

-

发送缓冲器

19

28
29

接收缓冲器

15.3.2控制寄存器(CR)
中文名:
寄存器位宽:
偏移量:
复位值:

控制寄存器
[7:0]
0x00
0x01

读此位的值总是逻辑 1。在硬启动或总线状态位设置为 1(总线关闭)时,复位请求
位被置为 1。如果这些位被软件访问,其值将发生变化而且会影响内部时钟的下一个上升
沿,在外部复位期间微控制器不能把复位请求位置为 0。如果把复位请求位设为 0,微控
制器就必须检查这一位以保证外部复位引脚不保持为低。复位请求位的变化是同内部分频
时钟同步的。读复位请求位能够反映出这种同步状态。
复位请求位被设为 0 后控制器将会等待
a) 一个总线空闲信号(11 个弱势位),如果前一次复位请求是硬件复位或CPU 初始复
位。
b) 128 个总线空闲,如果前一次复位请求是CAN控制器在重新进入总线开启模式前初始
化总线造成的。
位域

位域名称

位宽

访问

描述

7:5

Reserve

3

-

保留

4

OIE

1

RW

溢出中断使能

148

龙芯 1B 处理器用户手册
3

EIE

1

RW

错误中断使能

2

TIE

1

RW

发送中断使能

1

RIE

1

RW

接收中断使能

0

RR

1

RW

复位请求

15.3.3 命令寄存器(CMR)
中文名:
寄存器位宽:
偏移量:
复位值:

命令寄存器
[7:0]
0x01
0x00

命令寄存器对微控制器来说是只写存储器如果去读这个地址返回值是 1111 1111
位域

位域名称

位宽

访问

描述

7

EFF

1

W

6:5

Reserve

2

-

保留

4

GTS

1

W

睡眠

3

CDO

1

W

清除数据溢出

2

RRB

1

W

释放接收缓冲器

1

AT

1

W

中止发送

0

TR

1

W

发送请求

扩展模式

15.3.4 状态寄存器(SR)
中文名:
寄存器位宽:
偏移量:
复位值:

状态寄存器
[7:0]
0x02
0x00

位域

位域名称

位宽

访问

描述

7

BS

1

R

总线状态

6

ES

1

R

出错状态

5

TS

1

R

发送状态

4

RS

1

R

接收状态

3

TCS

1

R

发送完毕状态

2

TBS

1

R

发送缓存器状态

1

DOS

1

R

数据溢出状态

0

RBS

1

R

接收缓存器状态

15.3.5 中断寄存器(IR)
中文名:
寄存器位宽:
偏移量:
复位值:

中断寄存器
[7:0]
0x03
0x00

位域

位域名称

位宽

访问

描述

7:5

Reserved

1

R

保留

4

WUI

1

R

唤醒中断

3

DOI

1

R

数据溢出中断

149

龙芯 1B 处理器用户手册
2

EI

1

R

错误中断

1

TI

1

R

发送中断

0

RI

1

R

接收中断

15.3.6 验收代码寄存器(ACR)
中文名:
寄存器位宽:
偏移量:
复位值:

验收代码寄存器
[7:0]
0x04
0x00

在复位情况下,该寄存器是可以读写的。
位域

位域名称

位宽

访问

描述

7:0

AC

8

RW

ID 验收代码

15.3.7 验收屏蔽寄存器(AMR)
中文名:
寄存器位宽:
偏移量:
复位值:

验收屏蔽寄存器
[7:0]
0x05
0x00

验收代码位 AC 和信息识别码的高 8 位 ID.10-ID.3 相等且与验收屏蔽位 AM 的相应
位相或为 1 时数据可以接收。在复位情况下,该寄存器是可以读写的。
位域

位域名称

位宽

访问

描述

7:0

AM

8

RW

ID 屏蔽位

15.3.8 发送缓冲区列表
缓冲器是用来存储微控制器要 CAN 控制器发送的信息,它被分为描述符区和数据区。
发送缓冲器的读/写只能由微控制器在工作模式下完成,在复位模式下读出的值总是 FF。
地址

区

名称

数据位

10

识别码字节 1

ID(10-3)

11

识别码字节 2

ID(2-0), RTR,DLC

12

TX 数据 1

TX 数据 1

13

TX 数据 2

TX 数据 2

14

TX 数据 3

TX 数据 3

15

TX 数据 4

TX 数据 4

16

TX 数据 5

TX 数据 5

17

TX 数据 6

TX 数据 6

TX 数据 7

TX 数据 7

TX 数据 8

TX 数据 8

18
19

发送缓冲器

15.3.9 接收缓冲区列表
接收缓冲区的配置和发送缓冲区的一样,只是地址变为 20-29。

150

龙芯 1B 处理器用户手册

15.4 扩展模式
15.4.1 扩展模式地址表
工作模式
CAN 地址
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

读
控制
0
状态
中断
中断使能
-
总线定时 0
总线定时 1
保留
保留
保留
仲裁丢失捕捉
错误代码捕捉
错误警报限制
RX 错误计数器
TX 错误计数器
RX 帧信息
RX 识别码 1
RX 识别码 2
RX 识别码 3
RX 识别码 4
RX 数据 1
RX 数据 2
RX 数据 3
RX 数据 4
RX 数据 5
RX 数据 6
RX 数据 7
RX 数据 8
RX 信息计数器

复位模式
写
控制
命令
-
-
中断使能
-
-
-
保留
保留
保留
-
-
-
-
-
TX 帧信息
TX 识别码 1
TX 识别码 2
TX 识别码 3
TX 识别码 4
TX 数据 1
TX 数据 2
TX 数据 3
TX 数据 4
TX 数据 5
TX 数据 6
TX 数据 7
TX 数据 8
-

读
控制
0
状态
中断
中断使能
验收屏蔽
总线定时 0
总线定时 1
保留
保留
保留
仲裁丢失捕捉
错误代码捕捉
错误警报限制
RX 错误计数器
TX 错误计数器
验收代码 0
验收代码 1
验收代码 2
验收代码 3
验收屏蔽 0
验收屏蔽 1
验收屏蔽 2
验收屏蔽 3
-
-
-
-
-
RX 信息计数器

写
控制
命令
-
-
中断使能
验收屏蔽
总线定时 0
总线定时 1
保留
保留
保留
-
-
-
-
-
验收代码 0
验收代码 1
验收代码 2
验收代码 3
验收屏蔽 0
验收屏蔽 1
验收屏蔽 2
验收屏蔽 3
-
-
-
-
-
-

15.4.2 模式寄存器(MOD)
中文名:
寄存器位宽:
偏移量:
复位值:

模式寄存器
[7:0]
0x00
0x01

读此位的值总是逻辑 1。在硬启动或总线状态位设置为 1(总线关闭)时,复位请求位
被置为 1。如果这些位被软件访问,其值将发生变化而且会影响内部时钟的下一个上升沿,
在外部复位期间微控制器不能把复位请求位置为 0。如果把复位请求位设为 0,微控制器
就必须检查这一位以保证外部复位引脚不保持为低。复位请求位的变化是同内部分频时钟
同步的。读复位请求位能够反映出这种同步状态。
151

龙芯 1B 处理器用户手册
复位请求位被设为 0 后控制器将会等待
a) 一个总线空闲信号(11 个弱势位),如果前一次复位请求是硬件复位或CPU 初始复位。
b) 128 个总线空闲,如果前一次复位请求是CAN控制器在重新进入总线开启模式前初始化
总线造成的。
位域

位域名称

位宽

访问

描述

7:5

Reserve

3

-

保留

4

SM

1

RW

睡眠模式

3

AFM

1

RW

单/双滤波模式

2

STM

1

RW

正常工作模式

1

LOM

1

RW

只听模式

0

RM

1

RW

复位模式

15.4.3 命令寄存器(CMR)
中文名:
寄存器位宽:
偏移量:
复位值:

命令寄存器
[7:0]
0x01
0x00

命令寄存器对微控制器来说是只写存储器如果去读这个地址返回值是 1111 1111
位域

位域名称

位宽

访问

描述

7

EFF

1

W

6:5

Reserve

2

-

保留

4

SRR

1

W

自接收请求

3

CDO

1

W

清除数据溢出

2

RRB

1

W

释放接收缓冲器

1

AT

1

W

中止发送

0

TR

1

W

发送请求

扩展模式

15.4.4 状态寄存器(SR)
中文名:
寄存器位宽:
偏移量:
复位值:

状态寄存器
[7:0]
0x02
0x00

位域

位域名称

位宽

访问

描述

7

BS

1

R

总线状态

6

ES

1

R

出错状态

5

TS

1

R

发送状态

4

RS

1

R

接收状态

3

TCS

1

R

发送完毕状态

2

TBS

1

R

发送缓存器状态

1

DOS

1

R

数据溢出状态

0

RBS

1

R

接收缓存器状态

15.4.5 中断寄存器(IR)
中文名:

152

中断寄存器

龙芯 1B 处理器用户手册
寄存器位宽: [7:0]
偏移量:
0x03
复位值:
0x00
位域

位域名称

位宽

访问

描述

7

BEI

1

R

总线错误中断

6

ALI

1

R

仲裁丢失中断

5

EPI

1

R

错误消极中断

4

WUI

1

R

唤醒中断

3

DOI

1

R

数据溢出中断

2

EI

1

R

错误中断

1

TI

1

R

发送中断

0

RI

1

R

接收中断

15.4.6 中断使能寄存器(IER)
中文名:
寄存器位宽:
偏移量:
复位值:

中断使能寄存器
[7:0]
0x04
0x00

位域

位域名称

位宽

访问

描述

7

BEIE

1

RW

总线错误中断使能

6

ALIE

1

RW

仲裁丢失中断使能

5

EPIE

1

RW

错误消极中断使能

4

WUIE

1

RW

唤醒中断使能

3

DOIE

1

RW

数据溢出中断使能

2

EIE

1

RW

错误中断使能

1

TIE

1

RW

发送中断使能

0

RIE

1

RW

接收中断使能

15.4.7 仲裁丢失捕捉寄存器(IER)
中文名:
寄存器位宽:
偏移量:
复位值:

仲裁丢失捕捉寄存器
[7:0]
0xB
0x00

位域

位域名称

位宽

访问

描述

7:5

-

3

R

保留

4

BITNO4

1

R

第四位

3

BITNO3

1

R

第三位

2

BITNO2

1

R

第二位

1

BITNO1

1

R

第一位

0

BITNO0

1

R

第零位

153

龙芯 1B 处理器用户手册

15.4.8错误警报限制寄存器(EMLR)
中文名:
寄存器位宽:
偏移量:
复位值:

错误警报限制寄存器
[7:0]
0xD
0x60

位域

位域名称

位宽

访问

描述

7:0

EML

8

RW

错误警报阀值

154

龙芯 1B 处理器用户手册

15.4.9 RX 错误计数寄存器(RXERR)
中文名:
寄存器位宽:
偏移量:
复位值:

RX 错误计数寄存器
[7:0]
0xE
0x60

位域

位域名称

位宽

访问

描述

7:0

RXERR

8

R

接收错误计数

15.4.10 TX 错误计数寄存器(TXERR)
中文名:
寄存器位宽:
偏移量:
复位值:

TX 错误计数寄存器
[7:0]
0xF
0x60

位域

位域名称

位宽

访问

描述

7:0

TXERR

8

R

发送错误计数

15.4.11

验收滤波器

在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等
时,CAN 控制器才允许将已接收信息存入 RXFIFO。验收滤波器由验收代码寄存器和验
收屏蔽寄存器定义。在模式寄存器中选择单滤波器模式或者双滤波器模式。具体的配置可
以参考 SJA1000 的用户手册。

15.4.12

RX 信息计数寄存器(RMCR)

中文名:
寄存器位宽:
偏移量:
复位值:

RX 信息计数寄存器
[7:0]
0x1D
0x00

位域

位域名称

位宽

访问

描述

7:0

RMCR

8

R

接收的数据帧计数器

15.5 公共寄存器
1bit time = internal_clock_time * ( ( BRP + 1) * 2) *( 1+ ( TESG2 + 1 ) + ( TESG1 + 1))

15.5.1 总线定时寄存器 0(BTR0)
中文名:
寄存器位宽:
偏移量:
复位值:

总线定时寄存器
[7:0]
0x06
0x00

注:在复位模式是可以读写的,工作模式是只读的

155

龙芯 1B 处理器用户手册
位域

位域名称

位宽

访问

描述

7:6

SJW

8

RW

同步跳转宽度

5:0

BRP

8

RW

波特率分频系数

15.5.2 总线定时寄存器 1(BTR1)
中文名:
寄存器位宽:
偏移量:
复位值:

总线定时寄存器 1
[7:0]
0x07
0x00

位域

位域名称

位宽

访问

7

SAM

1

RW

描述
为 1 时三次采样,否则是一次采用

6:4

TESG2

3

RW

一个 bit 中的时间段 2 的计数值

3:0

TSEG1

4

RW

一个 bit 中的时间段 1 的计数值

15.5.3 输出控制寄存器(OCR)
中文名:
寄存器位宽:
偏移量:
复位值:

输出控制寄存器
[7:0]
0x08
0x00

位域

位域名称

位宽

访问

7:0

OCR

8

RW

156

描述
保留

龙芯 1B 处理器用户手册

16 AC97
16.1 AC97 结构描述
在系统里一个 AC97 应用系统如图 16-1 所示。在一个片上系统中,与 AC97 控制器
相连的有 3 部分:一是外设总线,接收来自微处理器的控制信息以及配置信息;二是
AC97 Codec,多媒体数字信号编解码器,该解码器对 PCM 信号进行调制,输出人耳接受
的模拟声音或者把真实的声音转换为 PCM 信号,转换通过 D/A 转换器实现;三是 DMA
引擎,通过 DMA 的方式写或读 AC97 控制器内部的 FIFO,实现 PCM 音频数据的不间断
操作。DMA 是通过微处理器配置的,从处理器设定的内存区域搬运数据给 FIFO 或者把
FIFO 的数据搬运到设定的内存区域。

图 16-1

AC97 应用系统

16.2 AC97 控制器寄存器
本模块寄存器物理地址基址为 0xBFE74000。
寄存器名
CSR
OCC0
OCC1
OCC2
ICC
CODEC_ID
CRAC
OC0
OC1
OC2
OC3

157

宽度
2
24
24
24
24
32
32
20
20
20
20

偏移量
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x20
0x24
0x28
0x2c

描述
配置状态寄存器
输出通道配置寄存器 0
保留
保留
输入通道配置寄存器
Codec ID 寄存器
Codec 寄存器访问命令
输出声道 0
输出声道 1
保留
保留

龙芯 1B 处理器用户手册
寄存器名
OC4
OC5
OC6
OC7
OC8
IC0
IC1
IC2
INTRAW
INTM
INTS

宽度
20
20
20
20
20
20
20
20
32
32
32

偏移量
0x30
0x34
0x38
0x3c
0x40
0x44
0x48
0x4c
0x54
0x58
0x5c

描述
保留
保留
保留
保留
保留
保留
保留
输入声道 2
中断状态寄存器
中断掩膜
保留

16.2.1 CSR 寄存器
中文名:
寄存器位宽:
偏移量:
复位值:
位域
31:2
1

配置状态寄存器
[31:0]
0x00
0x00000000

位域名称
Reserved
RESUME

位宽
30
1

访问
RO
R/W

描述
保留
挂起,读此位返回现在 AC97 子系统的状态
1:AC97 子系统挂起
0:正常工作状态
在挂起状态下,写入 1 到该位,将会开始恢复
操作。

0

RST_FORCE

1

W

AC97 冷启动
写入 1 会导致 AC97 Codec 冷启动

16.2.2 OCC 寄存器
中文名:
寄存器位宽:
偏移量:
复位值:

输出通道配置寄存器
[31:0]
0x04
0x00004141

位域
31:24
23:16
15:8

位域名称
Reserved
Reserved
OC1_CFG_R

位宽
8
8
8

访问
R/W
R/W
R/W

描述
保留
保留

7:0

OC0_CFG_L

8

R/W

输出通道 0:左声道配置。

输出通道 1:右声道配置。

16.2.3 ICC 寄存器
中文名:
寄存器位宽:
偏移量:
复位值:
位域
31:24
158

输入通道配置寄存器
[31:0]
0x10
0x00410000

位域名称
Reserved

位宽
8

访问
R/W

描述
保留

龙芯 1B 处理器用户手册
位域
23:16
15:8
7:0

位域名称
IC_CFG_MIC

位宽
8

访问
R/W

描述

8
8

R/W
R/W

保留
保留

Reserved
Reserved

输入通道 2:MIC 声道配置。

16.2.4 (输入输出)通道寄存器配置
中文名:
寄存器位宽:
偏移量:
复位值:
位域
7
6

通道配置寄存器
[31:0]
0x14
0x00410000

位域名称
Reserved
DMA_EN

位宽
1
1

访问
R/W
R/W

描述
保留
DMA 使能
1:DMA 打开
0:DMA 关闭

5:4

FIFO_THRES

2

R/W

FIFO 门限

3:2

SW

2

R/W

采样位数
00:8 位
10:16 位

1

VSR

1

采样率

R/W

1:采样率可变
0:采样率固定(48KHz)
0

CH_EN

1

通道使能

R/W

1:通道打开
0:通道关闭(或者进入节能状态)

16.2.5 Codec 寄存器访问命令
中文名:
寄存器位宽:
偏移量:
复位值:
位域
31

Codec 寄存器访问命令
[31:0]
0x18
0x00000000

位域名称
CODEC_WR

位宽
1

访问
R/W

描述
读/写选择
1:读,读取数据时,先设置 CODEC_WR 为读方式,
并在 CODEC_ADR 设置欲访问的寄存器地址;等到返
回数据完成中断时再读 CODEC_DAT 寄存器读取值。
0:写

30:23
159

Reserved

8

R

保留

龙芯 1B 处理器用户手册
22:16
15:0

CODEC_ADR
CODEC_DAT

7
16

R/W
R/W

Codec 寄存器地址
Codec 寄存器数据

16.2.6 中断状态寄存器/中断掩膜寄存器
中文名:
寄存器位宽:
偏移量:
复位值:
位域
31
30
29:8
7
6
5
4
3
2
1
0

中断状态/中断掩膜寄存器
[31:0]
0x54/58
0x00000000

位域名称
IC_FULL
IC_TH_INT
Reserved
OC1_FULL
OC1_EMPTY
OC1_ TH_INT
OC0_FULL
OC0_EMPTY
OC0_ TH_INT
CW_DONE
CR_DONE

位宽
1
1
22
1
1
1
1
1
1
1
1

访问
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W

描述
输入通道 2:FIFO 满
输入通道 2:FIFO 达到门限
保留
输出通道 1:FIFO 满
输出通道 1:FIFO 空
输出通道 1:FIFO 达到门限
输出通道 0:FIFO 满
输出通道 0:FIFO 空
输出通道 0:FIFO 达到门限
Codec 寄存器写完成
Codec 寄存器读完成

16.2.7 中断状态/清除寄存器
中文名:
寄存器位宽:
偏移量:
复位值:
位域
31:0

16.2.8

位域名称
INT_CLR

位宽
32

描述
屏蔽后的中断状态寄存器,对本寄存器的读操作
将清除寄存器 0x54 中的所有中断状态

OC 中断清除
[31:0]
0x60
0x00000000

位域名称
INT_OC_CLR

位宽
32

16.2.9 IC 中断清除寄存器
中文名:
IC 中断清除
寄存器位宽: [31:0]
偏移量:
0x64
160

访问
RO

OC 中断清除寄存器

中文名:
寄存器位宽:
偏移量:
复位值:
位域
31:0

中断状态/清除寄存器
[31:0]
0x5c
0x00000000

访问
RO

描述
对本寄存器的读操作将清除寄存器 0x54 中的所
有 output channel 的中断状态对应的 bit[7:2]

龙芯 1B 处理器用户手册
复位值:
位域
31:0

16.2.10

0x00000000
位域名称
INT_IC_CLR

访问
RO

描述
对本寄存器的读操作将清除寄存器 0x54 中的所
有 input channel 的中断状态对应的 bit[31:30]

CODEC WRITE 中断清除寄存器

中文名:
寄存器位宽:
偏移量:
复位值:
位域
31:0

位宽
32

CODEC WRITE 中断清除
[31:0]
0x68
0x00000000

位域名称
INT_CW_CLR

位宽
32

访问
RO

描述
对本寄存器的读操作将清除寄存器 0x54 中的中
bit[1]

16.2.11 CODEC READ 中断清除寄存器
中文名:
寄存器位宽:
偏移量:
复位值:
位域
31:0

161

CODEC READ 中断清除
[31:0]
0x6c
0x00000000

位域名称
INT_CR_CLR

位宽
32

访问
RO

描述
对本寄存器的读操作将清除寄存器 0x54 中的中
bit[0]

龙芯 1B 处理器用户手册

17 I2C
17.1 概述
本章给出I2C的详细描述和配置使用。本系统芯片集成了I2C接口,主要用于实现两个
器件之间数据的交换。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接
收数据。器件与器件之间进行双向传送,最高传送速率 400kbps。1B芯片共集成 3 路I2C接
口,其中第二路和第三路分别通过CAN0 和CAN1 复用实现。复用配置参加 23 章MUX寄
存器小节。
I2C_SDA1

CAN0_RX

I2C_SCL1

CAN0_TX

I2C_SDA2

CAN1_RX

I2C_SCL2

CAN1_TX

17.2 I2C 控制器结构
I2C 主控制器的结构,主要模块有,时钟发生器(Clock Generator)、字节命令控制器
(Byte Command Controller)、位命令控制器(Bit Command controller)、数据移位寄存器
(Data Shift Register)。其余为LPB总线接口和一些寄存器。
1. 时钟发生器模块:产生分频时钟,同步位命令的工作。
2. 字节命令控制器模块:将一个命令解释为按字节操作的时序,即把字节操作分解
为位操作。
3. 位命令控制器模块:进行实际数据的传输,以及位命令信号产生。
4. 数据移位寄存器模块:串行数据移位。

162

龙芯 1B 处理器用户手册

图 17-1

I2C 主控制器结构

17.3 I2C 控制器寄存器说明
I2C-0 模块寄存器物理地址基址为:0xbfe58000,地址空间 16KB。
I2C-1 模块寄存器物理地址基址为:0xbfe68000,地址空间 16KB。
I2C-2 模块寄存器物理地址基址为:0xbfe70000,地址空间 16KB。

17.3.1 分频锁存器低字节寄存器(PRERlo)
中文名:
寄存器位宽:
偏移量:
复位值:
位域
7:0

分频锁存器低字节寄存器
[7:0]
0x00
0xff

位域名称
PRERlo

位宽
8

访问
RW

描述
存放分频锁存器的低 8 位

17.3.2分频锁存器高字节寄存器(PRERhi)
中文名:
寄存器位宽:
偏移量:
复位值:
位域
7:0

分频锁存器高字节寄存器
[7:0]
0x01
0xff

位域名称
PRERhi

位宽
8

访问
RW

描述
存放分频锁存器的高 8 位

模块中被分频时钟 clock_a 的频率是 DDR_clk 频率的的一半
(DDR_clk 配置见 22 章)
;
假设分频锁存器的值为 prescale,SCL 总线的输出频率为 clock_s(该时钟根据用户需要和
外部 I2C 设备特性确定),则应满足如下关系:
163

龙芯 1B 处理器用户手册

Prcescale =

clock_a/(5*clock_s)-1

或者 Prcescale = DDR_clk/(10*clock_s)-1

17.3.3 控制寄存器(CTR)
中文名:
寄存器位宽:
偏移量:
复位值:

控制寄存器
[7:0]
0x02
0x00

位域

位域名称

位宽

访问

描述

7

EN

1

RW

6

IEN

1

RW

模块工作使能位 为 1 正常工作模式, 0 对分频寄
存器进行操作
中断使能位 为 1 则打开中断

5:0

Reserved

6

RW

保留

17.3.4 发送数据寄存器(TXR)
中文名:
寄存器位宽:
偏移量:
复位值:

发送寄存器
[7:0]
0x03
0x00

位域

位域名称

位宽

访问

描述

7:1

DATA

7

W

存放下个将要发送的字节

0

DRW

1

W

当数据传送时,该位保存的是数据的最低位;
当地址传送时,该位指示读写状态

17.3.5 接受数据寄存器(RXR)
中文名:
寄存器位宽:
偏移量:
复位值:

接收寄存器
[7:0]
0x03
0x00

位域

位域名称

位宽

访问

描述

7:0

RXR

8

R

存放最后一个接收到的字节

17.3.6 命令控制寄存器(CR)
中文名:
寄存器位宽:
偏移量:
复位值:

命令寄存器
[7:0]
0x04
0x00

位域

位域名称

位宽

访问

描述

7

STA

1

W

产生 START 信号

6

STO

1

W

产生 STOP 信号

5

RD

1

W

产生读信号

4

WR

1

W

产生写信号

3

ACK

1

W

产生应答信号

164

龙芯 1B 处理器用户手册
2:1

Reserved

2

W

保留

0

IACK

1

W

产生中断应答信号

2

都是在 I C 发送数据后硬件自动清零。对这些位读操作时候总是读回‘0’。

17.3.7 状态寄存器(SR)
中文名:
寄存器位宽:
偏移量:
复位值:

状态寄存器
[7:0]
0x04
0x00

位域

位域名称

位宽

访问

描述

7

RxACK

1

R

收到应答位
1 没收到应答位
0 收到应答位

6

Busy

1

R

I2c 总线忙标志位
1 总线在忙
0 总线空闲

5

AL

1

R

当 I2C 核失去 I2C 总线控制权时,该位置 1

4:2

Reserved

3

R

保留

1

TIP

1

R

指示传输的过程
1 表示正在传输数据
0 表示数据传输完毕

0

165

IF

1

R

中断标志位,一个数据传输完,或另外一个器件
发起数据传输,该位置 1

龙芯 1B 处理器用户手册

18 PWM
18.1 概述
1B 芯片里实现了四路脉冲宽度调节/计数控制器,以下简称 PWM.每一路 PWM 工作
和控制方式完全相同.每路 PWM 有一路脉冲宽度输出信号 (pwm_o).系统时钟高达
100MHz,计数寄存器和参考寄存器均 24 位数据宽度,使得芯片非常适合高档电机的控
制。
四路 PWM 控制器系统的基地址具体如下:
表 18-18-1 四路控制器描述
名称

基地址(Base)

中断号

PWM0

0XBFE5:C000

18

PWM1

0XBFE5:C010

19

PWM2

0XBFE5:C020

20

PWM3

0XBFE5:C030

21

每路控制器共有四个控制寄存器,具体描述如下:
表 18-18-2 控制寄存器描述
名称

地址

宽度

访问

说明

CNTR

Base + 0x0

24

R/W

主计数器

HRC

Base + 0x4

24

R/W

高脉冲定时参考寄存器

LRC

Base + 0x8

24

R/W

低脉冲定时参考寄存器

CTRL

Base + 0xC

8

R/W

控制寄存器

18.2 PWM 寄存器说明
(1) 实现脉冲宽度功能
CNTR 寄存器可以由系统编程写入获得初始值,系统编程写入完毕后,CNTR 寄存器在系
统时钟驱动下不断自加,当到达 LRC 寄存器的值后清0.然后重新开始不断自加,控制
器就产生连续不断的脉冲宽度输出.
表 18-18-3 主计数器设置
位域

访问

复位值

说明

23:0

R/W

0x0

主计数器

HRC 寄存器由系统写入,当 CNTR 寄存器的值等于 HRC 的值的时候,控制器产生高脉冲
电平.
表 18-18-4 高脉冲计数器设置
位域

访问

复位值

说明

23:0

R/W

0x0

高脉冲计数器

LRC 寄存器由系统写入,当 CNTR 寄存器的值等于LRC 的值的时候,控制器产生低脉
冲电平.

166

龙芯 1B 处理器用户手册
表 18-18-5 低脉冲计数器设置
位域

访问

复位值

说明

23:0

R/W

0x0

低脉冲计数器

例:如果要产生宽度为系统始终周期 50 倍的高脉宽和 90 倍的低脉宽,在 HRC 中应
该配置初始值(90-1)=89,在 LRC 寄存器中配置初始值(50+90-1)=139.
(2) 当工作在定时器模式下,CNTR记录内部系统时钟.HRC和LRC寄存器的初始值系
统编程写入,当CNTR寄存器的值等于HRC或者LRC的时候,芯片会产生一个中断,
这样就实现了定时器功能.

(3) CTRL控制寄存器,在上面三种工作模式下,控制寄存器的功能不变,根据功能需
求选择不同的配置.
表 18-18-6 控制寄存器设置
位域

访问

复位值

说明

0

R/W

0

EN,主计数器使能位
置 1 时:CNTR 用来计数
置 0 时:CNTR 停止计数

2:1

Reserved

2’b0

预留

3

R/W

0

OE,脉冲输出使能控制位,低有效
置 0 时:脉冲输出使能
置 1 时:脉冲输出屏蔽
SINGLE, 单脉冲控制位

4

R/W

0

置 1 时:脉冲仅产生一次
置 0 时:脉冲持续产生

5

R/W

0

INTE,中断使能位
置 1 时:当 CNTR 计数到 LRC 和 CNTR 后送中断
置 0 时:不产生中断

6

R/W

0

INT,中断位
读操作:1 表示有中断产生,0 表示没有中断
写入 1:清中断

7

R/W

0

CNTR_RST,使得 CNTR 计数器清零
置 1 时:CNTR 计数器清零
置 0 时:CNTR 计数器正常工作

167

龙芯 1B 处理器用户手册

19 RTC
19.1 概述
龙芯 1B 实时时钟(RTC)单元可以在主板上电后进行配置,当主板断电后,该单元
任然运作,可以仅靠板上的电池供电就正常运行。RTC 单元运行时功耗仅几个微瓦。
RTC 由外部 32.768KHZ 晶振驱动,内部经可配置的分频器分频后,该时钟用来计数,
年月日,时分秒等信息被更新。同时该时钟也用于产生各种定时和计数中断。
RTC 单元由计数器和定时器组成,其构架如下图所示:

19.2 寄存器描述
RTC 模块寄存器位于 0xbfe64000——0xbfe67fff 的 16KB 地址空间内,其基地址为
0xbfe64000,所有寄存器位宽均为 32 位。

19.2.1

寄存器地址列表

名称
sys_toytrim

地址
0xbfE64020

位宽
32

RW

描述

RW

对 32.768kHz 的分频系数(计数
器时钟)

sys_toywrite0

0xbfE64024

32

W

TOY 低 32 位数值写入

sys_toywrite1

0xbfE64028

32

W

TOY 高 32 位数值写入

sys_toyread0

0xbfE6402C

32

R

TOY 低 32 位数值读出

sys_toyread1

0xbfE64030

32

R

TOY 高 32 位数值读出

sys_toymatch0

0xbfE64034

32

RW

TOY 定时中断 0

sys_toymatch1

0xbfE64038

32

RW

TOY 定时中断 1

sys_toymatch2

0xbfE6403C

32

RW

TOY 定时中断 2

sys_rtcctrl

0xbfE64040

32

RW

TOY 和 RTC 控制寄存器

sys_rtctrim

0xbfE64060

32

RW

对 32.768kHz 的分频系数(定时器

168

复位值

龙芯 1B 处理器用户手册
时钟)
sys_rtcwrite0

0xbfE64064

32

R

RTC 定时计数写入

sys_rtcread0

0xbfE64068

32

W

RTC 定时计数读出

sys_rtcmatch0

0xbfE6406C

32

RW

RTC 时钟定时中断 0

sys_rtcmatch1

0xbfE64070

32

RW

RTC 时钟定时中断 1

sys_rtcmatch2

0xbfE64074

32

RW

RTC 时钟定时中断 2

注意:其中 sys_toytrim 及 sys_rtctrim 寄存器复位后,其值不确定,如果不需要对外
部晶振进行分频,请对这两个寄存器清零,这样 RTC 模块才能正常计时工作。

19.2.2

SYS_TOYWRITE0

中文名:
寄存器位宽:
偏移量:
复位值:

TOY 计数器低 32 位数值
[31:0]
0x20
0x00000000

缺省

位域

位域名称

访问

31:26

TOY_MONTH

W

月,范围 1~12

25:21

TOY_DAY

W

日,范围 1~31

20:16

TOY_HOUR

W

小时,范围 0~23

15:10

TOY_MIN

W

分,范围 0~59

9:4

TOY_SEC

W

秒,范围 0~59

3:0

TOY_MILLISEC

W

0.1 秒,范围 0~9

19.2.3

SYS_TOYWRITE1

中文名:
寄存器位宽:
偏移量:
复位值:

TOY 计数器高 32 位数值
[31:0]
0x24
0x00000000

位域

位域名称

访问

31:0

TOY_YEAR

W

19.2.4

缺省

描述
年,范围 0~16383

SYS_TOYMATCH0/1/2

中文名:
寄存器位宽:
偏移量:
复位值:

TOY 计数器中断寄存器 0/1/2
[31:0]
0x34/38/3C
0x00000000

位域

位域名称

访问

31:26

YEAR

RW

169

描述

缺省

描述
年,范围 0~16383

龙芯 1B 处理器用户手册
25:22

MONTH

RW

月,范围 1~12

21:17

DAY

RW

日,范围 1~31

16:12

HOUR

RW

小时,范围 0~23

11:6

MIN

RW

分,范围 0~59

5:0

SEC

RW

秒,范围 0~59

19.2.5

SYS_RTCCTRL

中文名:
寄存器位宽:
偏移量:
复位值:

RTC 定时器中断寄存器 0/1/2
[31:0]
0x40
0x00000000

位域

位域名称

31:24

保留

23

访问

缺省

描述

R

0

保留,置 0

ERS

R

0

REN(bit13)写状态

22:21

保留

R

0

保留,置 0

20

RTS

R

0

Sys_rtctrim 写状态

19

RM2

R

0

Sys_rtcmatch2 写状态

18

RM2

R

0

Sys_rtcmatch2 写状态

17

RM0

R

0

Sys_rtcmatch0 写状态

16

RS

R

0

Sys_rtcwrite 写状态

15

保留

R

0

保留,置 0

14

BP

R/W

0

旁路 32.768k 晶振
0:选择晶振输入;
1: GPIO8 来驱动计数器,这是测试模式,
GPIO8 通过外部时钟或者 GPIO8 控制器。

13

REN

R/W

0

0:RTC 禁止;1:RTC 使能

12

BRT

R/W

0

旁路 RTC 分频
0:正常操作;
1:RTC 直接被 32.768k 晶振驱动

11

TEN

R/W

0

0:TOY 禁止;1:TOY 使能

10

BTT

R/W

0

旁路 TOY 分频
0:正常操作;
1:TOY 直接被 32.768k 晶振驱动

9

保留

R

0

保留,置 0

8

EO

R/W

0

0: 32.768k 晶振禁止;
1: 32.768k 晶振使能

7

ETS

R

0

TOY 使能写状态

6

保留

R

0

保留,置 0

5

32S

R

0

0:32.768k 晶振不工作;
1:32.768k 晶振正常工作。

170

龙芯 1B 处理器用户手册
4

TTS

R

0

Sys_toytrim 写状态

3

TM2

R

0

Sys_toymatch2 写状态

2

TM1

R

0

Sys_toymatch1 写状态

1

TM0

R

0

Sys_toymatch0 写状态

0

TS

R

0

Sys_toywrite 写状态

19.2.6

SYS_RTCMATCH0/1/2

中文名:
寄存器位宽:
偏移量:
复位值:

RTC 定时器中断寄存器 0/1/2
[31:0]
0x6C/70/74
0x00000000

缺省

位域

位域名称

访问

31:26

YEAR

RW

年,范围 0~16383

25:22

MONTH

RW

月,范围 1~12

21:17

DAY

RW

日,范围 1~31

16:12

HOUR

RW

小时,范围 0~23

11:6

MIN

RW

分,范围 0~59

5:0

SEC

RW

秒,范围 0~59

171

描述

龙芯 1B 处理器用户手册

20 NAND
20.1 NAND 控制器结构描述
NAND FLASH 控制器最大支持 32GB FLASH 的容量,芯片最多支持 4 个片选和 4 个
RDY 信号。

20.2 NAND 控制器寄存器配置描述
NAND 内部的寄存器的设置如下:
地址

寄存器名称

BFE7_8000

NAND_CMD

BFE7_8004

ADDR_L

BFE7_8008

ADDR_H

BFE7_800C

NAND_TIMING

BFE7_8010

ID_L

BFE7_8014

STATUS & ID_H

BFE7_8018

NAND_PARAMETER

BFE7_801C

NAND_OP_NUM

BFE7_8020

CS_RDY_MAP

BFE7_8040

DMA access address

20.2.1 NAND_CMD(地址:BFE7_8000)
位

位域名

31:11

读写

描述

R/-

Reserved

23:20

NAND_CE

R/-

外部 NAND 芯片片选情况

19:16

NAND_RDY

R/-

外部 NAND 芯片 RDY 情况

R/-

Reserved

15:11
10

done

R/-

操作完成

9

Spare

R/W

操作发生在 NAND 的 SPARE 区

8

Main

R/W

操作发生在 NAND 的 MAIN 区

7

Read status

R/W

读 NAND 的状态

6

Reset

R/W

Nand 复位操作

5

read id

R/W

读 ID 操作

4

blocks erase

R/W

连续擦除标志,缺省 0;1 有效,连续擦擦块的数目
由 nand_op_num 决定

172

3

erase operation

R/W

擦除操作

2

write operation

R/W

写操作

1

read operation

R/W

读操作

0

command valid

R/W

命令有效

龙芯 1B 处理器用户手册

20.2.2 ADDR_L(地址:BFE7_8004)
位

位域名

读写

描述

31:0

Nand_address[31:0]

R/W

读、写、擦除操作起始地址低 32 位

20.2.3 ADDR_H(地址:BFE7_8008)
位

位域名

31:8
7:0

Nand_address[39:32]

读写

描述

R/-

Reserved

R/W

读、写、擦除操作起始地址高 8 位

20.2.4 NAND_TIMING(地址:BFE7_800C)
位

位域名

31:16

读写

描述

R/-

Reserved

15:8

Hold cycle

R/W

NAND 命令有效需等待的周期数,缺省 4

7:0

Wait cycle

R/W

NAND 一次读写所需总时钟周期数,缺省 18

20.2.5 ID_L(地址:BFE7_8010)
位

位域名

读写

描述

31:0

ID[31:0]

R/-

ID[31:0]

20.2.6 STATUS & ID_H(地址:BFE7_8014)
位

位域名称

访问

31:16

R/-

Reserved

15:8

STATUS

R/-

NAND 设备当前的读写完成状态

7:0

ID[40:32]

R/-

ID 高 8 位

20.2.7 NAND_PARAMETER(地址:BFE7_8018)
位

位域名

31:12
11:8

外部颗粒容量大小

读写

描述

R/-

Reserved

R/W

1:2Gb
2:4Gb
3:8Gb
4:16Gb
5:32Gb
6:64Gb
7:128Gb
8:256Gb

7:0

R/-

Reserved

20.2.8 NAND_OP_NUM(地址:BFE7_801C)
位
173

位域名

读写

描述

龙芯 1B 处理器用户手册
31:0

R/W

NAND_OP_NUM

NAND 读写操作 Byte 数;擦除为块数

20.2.9 CS_RDY_MAP(地址:BFE7_8020)
位

位域名

读写

描述

31:28

NAND_RDY_inter [3]

R/W

4’b0001:NAND_RDY[0]
4’b0010:NAND_RDY[1]
4’b0100:NAND_RDY[2]
4’b1000:NAND_RDY[3]

27:24

NAND_CE[3]

R/W

4’b0001:NAND_CS_inter[0]
4’b0010:NAND_CS_inter[1]
4’b0100:NAND_CS_inter[2]
4’b1000:NAND_CS_inter[3]

23:20

NAND_RDY_inter [2]

R/W

4’b0001:NAND_RDY[0]
4’b0010:NAND_RDY[1]
4’b0100:NAND_RDY[2]
4’b1000:NAND_RDY[3]

19:16

NAND_CS[2]

R/W

4’b0001:NAND_CS_inter[0]
4’b0010:NAND_CS_inter[1]
4’b0100:NAND_CS_inter[2]
4’b1000:NAND_CS_inter[3]

15:12

NAND_RDY_inter [1]

R/W

4’b0001:NAND_RDY[0]
4’b0010:NAND_RDY[1]
4’b0100:NAND_RDY[2]
4’b1000:NAND_RDY[3]

11:8

NAND_CS[1]

R/W

4’b0001:NAND_CS_inter[0]
4’b0010:NAND_CS_inter[1]
4’b0100:NAND_CS_inter[2]
4’b1000:NAND_CS_inter[3]

R/-

Reserved

7:0

20.2.10

DMA_ADDRESS(地址:BFE7_8040)

位

位域名

读写

描述

31:0

DMA_ADDRESS

R/W

DMA 读写 NAND flash 数据(ID/STATUS 除外)
时候的访问地址,
读/写地址相同,读写方向通过 DMA 配置实现

20.3 NAND ADDR 说明
Define:
main_op = 0xbfe78000[8];
spare_op = 0xbfe78000[9];
addr_in_nand_flash ={ …A32,A31,A30,A29,A28…A1,A0}=
spare_op ? {addr_h[7:0],addr_l[31:0]} : {addr_h[6:0],addr_l [30:11],1’b0,addr_l [10:0]}

174

龙芯 1B 处理器用户手册
NAND 颗粒地址空间组织示例:
I/O

0

1

2

3

4

5

6

7

Column1

1st Cycle

A0

A1

A2

A3

A4

A5

A6

A7

Column2

2nd Cycle

A8

A9

A10

A11

*L

*L

*L

*L

Row1

3rd Cycle

A12

A13

A14

A15

A16

A17

A18

A19

Row2

4th Cycle

A20

A21

A22

A23

A24

A25

A26

A27

Row3

5th Cycle

A28

A29

A30

A31

A32

….

….

….

对系统板上 NAND 颗粒来说,如果仅仅操作 spare 区,A11=1 是唯一标志。所以软件
配置内部寄存器时,需要配置 A11 和 spare_op 均为 1(见 Examples5) ,错误的示例见
Examples2。
对系统板上 NAND 颗粒来说,如果仅仅操作 main 区,A11=0 是唯一标志.;所以软件
配置内部寄存器时,需要配置 A11 和 spare_op 均为 0(见 Examples1)
,错误的示例见
Examples4。
对系统板上 NAND 颗粒来说,如果操作 main+spare 区,A11 可以为 0(见 Examples3)
;
也可以为 1(见 Examples6)
。

Examples1:(NAND 颗粒中一个 page 的数据只能位于 0x0-0x83f,第一个 op 表示读写开始
的数据,接下来的 op 表示随后的读写数据;NO_op 表示不能被本次 NAND 配置读写的数据)
(spare_op = 1’b0 & main_op =1’b0) equal to (spare_op = 1’b0 & main_op =1’b1);
nand_addr_config_by_software =0x30: addr_in_nand_flash = 0x30
Data in a page

0

0x30

….

0x7ff

0x800

0x830

0x83f

Page 0

NO_op

op

op

op

NO_op

NO_op

NO_op

Page 1

op

op

op

op

NO_op

NO_op

NO_op

Page 2

op

op

op

op

NO_op

NO_op

NO_op

Examples2:
spare_op=1’b1 & main_op=1’b0;(配置出错!
!开始操作不在 spare 区,下图是可能的错误
访问顺序) nand_addr_config_by_software =0x30: addr_in_nand_flash = 0x30
Data in a page

0

0x30

….

0x7ff

0x800

0x830

0x83f

Page 0

NO_op

op

op

op

op

op

op

Page 1

NO_op

NO_op

NO_op

NO_op

op

op

op

Page 2

NO_op

NO_op

NO_op

NO_op

op

op

op

Page 3

NO_op

NO_op

NO_op

NO_op

op

op

op

Examples3:
spare_op = 1’b1 & main_op =1’b1;
nand_addr_config_by_software =0x30: addr_in_nand_flash = 0x30
Data in a page

0

0x30

….

0x7ff

0x800

0x830

0x83f

Page 0

NO_op

op

op

op

op

op

op

Page 1

op

op

op

op

op

op

op

Page 2

op

op

op

op

op

op

op

Examples4:
175

龙芯 1B 处理器用户手册
(spare_op=1’b0 & main_op=1’b0), (equal to spare_op=1’b0 & main_op=1’b1);
nand_addr_config_by_software =0x830: addr_in_nand_flash = 0x1030(配置出错!
!开始
操作在 spare 区,下图是可能的错误访问顺序)
Data in a page

0

0x30

….

0x7ff

0x800

0x830

0x83f

Page 0

NO_op

NO_op

NO_op

NO_op

NO_op

NO_op

NO_op

Page 1

NO_op

op

op

op

op

NO_op

NO_op

Page 2

op

op

op

op

op

NO_op

NO_op

Page 3

op

op

op

op

op

NO_op

NO_op

Examples5:
spare_op = 1’b1 and main_op =1’b0;
nand_addr_config_by_software =0x830: addr_in_nand_flash = 0x830
Data in a page

0

0x30

….

0x7ff

0x800

0x830

0x83f

Page 0

NO_op

NO_op

NO_op

NO_op

NO_op

op

op

Page 1

NO_op

NO_op

NO_op

NO_op

op

op

op

Page 2

NO_op

NO_op

NO_op

NO_op

op

op

op

Examples6:
spare_op = 1’b1 & main_op =1’b1;
nand_addr_config_by_software =0x830: addr_in_nand_flash = 0x830
Data in a page

0

0x30

….

0x7ff

0x800

0x830

0x83f

Page 0

NO_op

NO_op

NO_op

NO_op

NO_op

op

op

Page 1

op

op

op

op

op

op

op

Page 2
Page 3

op
op

op
op

op
op

op
op

op
op

op
op

op
op

176

龙芯 1B 处理器用户手册

21 WATCHDOG
21.1 概述
在系统中看门狗定时器(WDT,Watch Dog Timer)实际上是一个计数器,一般给看
门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间
CPU 应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到 0 就认为程序没有正
常工作,强制整个系统复位。下图是看门狗的实现,系统对看门狗进行配置,看门狗内部
有个计数器,同时看门狗里面的比较器比较计数器值是否为零,如果为零就发出软复位信
号让系统重启。
系统计数采用的时钟频率是为 DDR_clk 的 2 分频(参考第 22 章)
。

图 21-1 看门狗的结构图

21.2 WATCH DOG 寄存器描述
看门狗逻辑可编程寄存器主要有三个,这些寄存器描述如下:

21.2.1 WDT_EN 地址:(0XBFE5_C060)
位

位域名

读写

31:1
0

177

描述
Reserved

WDT_EN

R/W

看门狗使能

龙芯 1B 处理器用户手册

21.2.2 WDT_SET(地址:0XBFE5_C068)
位

位域名

读写

描述

31:1
0

Reserved
WDT_SET

看门狗中计数器设置

R/W

21.2.3 WDT_timer(地址:0XBFE5_C064)
位

位域名

读写

描述

31:0

WDT_timer

R/W

看门狗计数器计数值

系统这三个寄存器的设置顺序:系统先配置看门狗使能位 WDT_EN;然后配置看门
狗开始计数器的初始值 WDT_TIMER,该值保持在一个特别的寄存器中;当系统设置
WDT_SET 后,计数器开始计数。

178

龙芯 1B 处理器用户手册

22 Clock Management
22.1 Clock 模块结构描述
时钟模块用来产生系统主要的三个时钟:CPU_clk、DDR_clk 和 DC_clk。系统中集
成了一个 PLL,PLL 在系统 RESET 时从外部 PAD 的状态获取初始配置,该 PLL 在
进入系统后可以再次配置。PLL 产生一个高频输出 PLL_clk,系统需要的 CPU_clk、
DDR_clk 和 DC_clk 均由此高频输出时钟分频而来。其工作结构图如下:

图 22-1 1B 时钟产生模块

22.2 Clock 配置描述
在系统 RESET 状态下,时钟模块利用外部 PAD 状态选择 PLL 的配置。具体如下表
所示:
表 22-1
PAD

描述

对 PLL 配置作用

NAND_D[5:0]

PLL 输出频率控制

PLL 输出频率:
(NAND_D[5:0]+12)*33/2Mhz

NAND_D6

CPU 和 DDR 频率通路选择,系统复

CPU_clk 和 DDR2_clk

位启动过程中,CPU 和 DDR 频率相

1:33Mhz

同。

0:(NAND_D[5:0]+12)*33/4Mhz

系统启动后,软件可以精确配置 PLL 的频率,这些参数如下表所示:
PLL_FREQ:基地址 0XBFE7_8030:
Bit 位

寄存器描述

[17:0]

PLL 输出频率:
(12+PLL_FREQ[5:0]+ (PLL_FREQ[17:8]/1024))*33/2Mhz

同时,软件可以对内部的 CPU/DDR/DC 时钟频率单独配置。配置过程:对应时
钟 Bypass 位置 1,让其切换到 33Mhz 的外部输入,然后让对应逻辑 RST,最后配置
需要分频的倍数,以产生目标时钟。恢复过程:先把 Bypass 位清零,让对应时钟恢
复到分频的目标时钟。时钟频率的配置过程中使用了 Glitch free 的电路,确保系统能
179

龙芯 1B 处理器用户手册
够正常稳定工作。对应寄存器详细描述如下:
PLL_DIV_PARAM: 基地址 0XBFE7_8030:
Bit 位

寄存器描述

读写

31

DC_DIV 使能

R/W

30

DC_DIV 分频器复位

R/W

29:26

DC_DIV

R/W

25

CPU_DIV 使能

R/W

24

CPU_DIV 分频器复位

R/W

23:20

CPU_DIV

R/W

19

DDR_DIV 使能

R/W

18

DDR_DIV 分频器复位

R/W

17:14

DDR_DIV

R/W

13

DC_BYPASS 使能

R/W

12

DC_BYPASS

R/W

11

DDR_BYPASS 使能

R/W

10

DDR_BYPASS

R/W

9

CPU_BYPASS 使能

R/W

8

CPU_BYPASS

R/W

7:6

保留

保留

5

DC_RST 使能

R/W

4

DC_RST

R/W

3

DDR_RST 使能

R/W

2

DDR_RST

R/W

1

CPU_RST 使能

R/W

0

CPU_RST

R/W

(pll_out/4/DC_DIV)

22.3 系统其它 Clock 描述
在 1B 中,SPI、I2C、PWM、CAN、WATCHDOG、UART 等模块工作都需要时
钟,这些时钟用来实现计数或确定分频系数。这些时钟工作在相同频率,器频率均为
DDR_clk 频率的一半。具体分配系数确定和计数确定参考具体章节的描述。

180

龙芯 1B 处理器用户手册

23 GPIO and MUX
23.1 GPIO 结构描述
GPIO 给芯片的设计和应用提供了灵活外部接口;部分 PAD 通过 MUX 实现,从
而在 BGA256 封装情况下提供丰富的外部功能。GPIO 作为输入高电平时候外部可以
是 3.3V-5V,输入低电平是 0V;输出高电平是 3.3V,输出低电平是 0V;GPIO 对应
的所有 PAD 都是推拉方式。
PAD

复位状态

PAD 描述

GPIO

第一复用

第二复用

第三复用

PWM0

内部上拉,

PWM0 波 形 输

GPIO00

NAND_RDY*

SPI1_CSN[1]

UART0_RX

复位输入

出

内部上拉,

PWM1 波 形 输

GPIO01

NAND_CS*

SPI1_CSN[2]

UART0_TX

复位输入

出

内部上拉,

PWM2 波 形 输

GPIO02

NAND_RDY*

UART0_CTS

复位输入

出

内部上拉,

PWM3 波 形 输

GPIO03

NAND_CS*

UART0_RTS

复位输入

出

内部上拉,

LCD 时钟

GPIO04

LCD 列同步

GPIO05

LCD 行同步

GPIO06

LCD 使能信号

GPIO07

LCD_BLUE0

GPIO08

LCD_BLUE1

GPIO09

LCD_BLUE2

GPIO10

LCD_BLUE3

GPIO11

LCD_BLUE4

GPIO12

LCD_GREEN0

GPIO13

UART1_CTS

LCD_GREEN1

GPIO14

UART1_RTS

LCD_GREEN2

GPIO15

LCD_GREEN3

GPIO16

PWM1

PWM2

PWM3

LCD_CLK

复位输入
LCD_VSYNC

内部上拉,
复位输入

LCD_HSYNC

内部上拉,
复位输入

LCD_EN

内部上拉,
复位输入

LCD_DAT_B0

内部上拉,

UART1_RX

复位输入
LCD_DAT_B1

内部上拉,
复位输入

LCD_DAT_B2

内部上拉,
复位输入

LCD_DAT_B3

内部上拉,
复位输入

LCD_DAT_B4

内部上拉,
复位输入

LCD_DAT_G0

内部上拉,
复位输入

LCD_DAT_G1

内部上拉,
复位输入

LCD_DAT_G2

内部上拉,
复位输入

LCD_DAT_G3

181

内部上拉,

UART

龙芯 1B 处理器用户手册
复位输入
LCD_DAT_G4

内部上拉,

LCD_GREEN4

GPIO17

LCD_GREEN5

GPIO18

LCD_RED0

GPIO19

LCD_RED1

GPIO20

LCD_RED2

GPIO21

LCD_RED3

GPIO22

LCD_RED4

GPIO23

复位输入
LCD_DAT_G5

内部上拉,
复位输入

LCD_DAT_R0

内部上拉,

UART1_TX

UART1_TX

Uart1_DSR

UART1_2RX

复位输入
LCD_DAT_R1

内部上拉,
复位输入

LCD_DAT_R2

内部上拉,
复位输入

LCD_DAT_R3

内部上拉,
复位输入

LCD_DAT_R4

内部上拉,
复位输入

SPI0_CLK

启动配置

SPI0 时钟

GPIO24

SPI0_MISO

启动配置

SPI0 主 入 从

GPIO25

出
SPI0_MOSI

启动配置

SPI0 主 出 从

GPIO26

入
SPI0_CS0

启动配置

SPI0 选 通 信

GPIO27

号0
SPI0_CS1

SPI0_CS2

SPI0_CS3

SCL

内部上拉,

SPI0 选 通 信

复位输入

号1

内部上拉,

SPI0 选 通 信

复位输入

号2

内部上拉,

SPI0 选 通 信

复位输入

号3

内部无上

第一路 I2C 时

拉,复位输

钟

GPIO28

GPIO29

GPIO30

GPIO32

入
SDA

内部无上

第一路 I2C 数

拉,复位输

据

GPIO33

入
AC97_SYNC

AC97_RST

AC97_DI

AC97_DO

CAN0_RX

182

内部上拉,

AC97 同 步 信

复位输入

号

内部上拉,

AC97 复 位 信

复位输入

号

内部上拉,

AC97 数 据 输

复位输入

入

内部上拉,

AC97 数 据 输

复位输入

出

内部上拉,

CAN0 数 据 输

GPIO34

GPIO35

GPIO36

GPIO37

GPIO38

SDA1

SPI1_CSN0

龙芯 1B 处理器用户手册

CAN0_TX

CAN1_RX

CAN1_TX

UART0_RX

UART0_TX

UART0_RTS

UART0_CTS

UART0_DSR

UART0_DTR

UART0_DCD

UART0_RI

UART1_RX

UART1_TX

UART1_RTS

UART1_CTS

UART2_RX

UART2_TX

UART3_RX

UART3_TX

UART4_RX

UART4_TX

183

复位输入

入

内部上拉,

CAN0 数 据 输

复位输入

出

内部上拉,

CAN1 数 据 输

复位输入

入

内部上拉,

CAN1 数 据 输

复位输入

出

内部上拉,

UART0 发送数

复位输入

据

内部上拉,

UART0 接收数

复位输入

据

内部上拉,

UART0 请求发

复位输入

送

内部上拉,

UART0 允许发

复位输入

送

内部上拉,

UART0 设备准

复位输入

备好

内部上拉,

UART0 终端准

复位输入

备好

内部上拉,

UART0 载波检

复位输入

测

内部上拉,

UART0 振铃提

复位输入

示

内部上拉,

UART1 接收数

复位输入

据

内部上拉,

UART1 发送数

复位输入

据

内部上拉,

UART1 请求发

复位输入

送

内部上拉,

UART1 允许发

复位输入

送

内部上拉,

UART2 接收数

复位输入

据

内部上拉,

UART2 发送数

复位输入

据

内部上拉,

UART3 接收数

复位输入

据

内部上拉,

UART3 发送数

复位输入

据

内部上拉,

UART4 接收数

复位输入

据

内部上拉,

UART4 发送数

复位输入

据

GPIO39

SCL1

SPI1_CLK

Uart1_DTR

UART1_2TX

GPIO40

SDA2

SPI1_MOSI

Uart1_DCD

UART1_3RX

GPIO41

SCL2

SPI1_MISO

Uart1_RI

UART1_3TX

GPIO42

LCD_DAT22

GMAC1_RCTL

UART0_0RX

GPIO43

LCD_DAT23

GMAC1_RX0

UART0_0TX

GPIO44

LCD_DAT16

GMAC1_RX1

UART0_1TX

GPIO45

LCD_DAT17

GMAC1_RX2

UART0_1RX

GPIO46

LCD_DAT18

GMAC1_RX3

UART0_2RX

GPIO47

LCD_DAT19

GPIO48

LCD_DAT20

GMAC1_MDCK

UART0_3RX

GPIO49

LCD_DAT21

GMAC1_MDIO

UART0_3TX

UART0_2TX

GPIO50

GMAC1_TX0

NAND_RDY*

UART1_0RX

GPIO51

GMAC1_TX1

NAND_CS*

UART1_0TX

GPIO52

GMAC1_TX2

NAND_CS*

UART1_1TX

GPIO53

GMAC1_TX3

NAND_RDY*

UART1_1RX

GPIO54

UART2_RX

GPIO55

UART2_TX

GPIO56

UART3_RX

GPIO57

UART3_TX

GPIO58

UART4_RX

GPIO59

UART4_TX

龙芯 1B 处理器用户手册
UART5_RX

UART5_TX

内部上拉,

UART5 接收数

复位输入

据

内部上拉,

UART5 发送数

复位输入

据

GPIO60

UART5_RX

GPIO61

UART5_TX

Note1:NAND_CS*/NAND_RDY*表示 NAND_CS1/2/3, NAND_RDY1/2/3 可以配置选择。

龙芯 1B 中 UART0 有 8 个 PAD,UART1 有 4 个 PAD,UART2/3/4/5 各 2 个,UART
本身 PAD 共 20 个,UART 一共可以提供了 10 个两线 UART(上表最后一列红色+黑色)
。
UART0 和 UART1 都实现了一分四功能,
UART0 有 8 个 PAD;UART1 只有 4 个 PAD,
这个时候利用了 CAN0 和 CAN1 的 4 个 PAD。所以在 CAN0/CAN1 不用的时候,1B 最多
可以提供出来 12 个两线 UART(上表最后一列红色+黑色+绿色)
。
当 GMAC1 复用 UART1&UART0 的时候,UART0 复用 PWM 实现两路 2 线串口(上
表橙色部分)
;UART1 复用 CAN0/ CAN1/ LCD(0.5.6.11)实现全功能串口(上表粉色部分);
UART2/3/4/5 维持不变。在 GMAC1 复用的时候,1B 还可以有 1 个全功能和 6 个两线串
口,或者 10 个两线串口。

23.2 GPIO 寄存器描述
偏移地址

位

寄存器

描述

0xbfd010C0

32

GPIOCFG0

配置寄存器 0

读
写
R/W

0xbfd010C4

32

GPIOCFG1

配置寄存器 1

R/W

0xbfd010D0

32

GPIOOE0

输入使能寄存器
0

R/W

0xbfd010D4

32

GPIOOE1

输入使能寄存器
1

R/W

0xbfd010E0

32

GPIOIN0

输入寄存器 0

R

0xbfd010E4

32

GPIOIN1

输入寄存器 1

R

0xbfd010F0

32

GPIOOUT0

配置输出寄存器
0

R/W

184

描述
GPIOCFG0[30:0]
分 别 对 应
GPIO30:GPIO0
1:对应 PAD 为 GPIO 功能
0:对应 PAD 为普通功能
复位值:32’hf0ffffff
GPIOCFG1[29:0]
分 别 对 应
GPIO61:GPIO32
1:对应 PAD 为 GPIO 功能
0:对应 PAD 为普通功能
复位值:32’hffffffff
GPIOOE0[30:0]分别对应 GPIO30:GPIO0
1:对应 GPIO 被控制为输入
0:对应 GPIO 被控制为输出
复位值:32’hf0ffffff
分
别
对
应
GPIOOE1[29:0]
GPIO61:GPIO32
1:对应 GPIO 被控制为输入
0:对应 GPIO 被控制为输出
复位值:32’hffffffff
GPIOIN0[30:0]分别对应 GPIO30:GPIO0
1: GPIO 输入值 1;PAD 驱动输入为 3.3V
0: GPIO 输入值 0;PAD 驱动输入为 0V
分
别
对
应
GPIOIN1[29:0]
GPIO61:GPIO32
1: GPIO 输入值 1;PAD 驱动输入为 3.3V
0: GPIO 输入值 0;PAD 驱动输入为 0V
GPIOOUT0[30:0]
分 别 对 应
GPIO30:GPIO0
1: GPIO 输出值 1,PAD 驱动输出 3.3V

龙芯 1B 处理器用户手册

0xbfd010F4

32

GPIOOUT1

配置输出寄存器
1

R/W

0: GPIO 输出值 0,PAD 驱动输出 0V
GPIOOUT1[29:0]
分 别 对 应
GPIO61:GPIO32
1: GPIO 输出为 1,PAD 驱动输出 3.3V
0: GPIO 输出为 0,PAD 驱动输出 0V

23.3 MUX 寄存器描述
GPIO_MUX_CTRL0 基地址 0XBFD0_0420,寄存器的描述如下,当管脚配置为 GPIO 功能时,
MUX 寄存器的配置不起作用:
位
31:26
28

描述

读写特性
保留

UART0_UAE_PWM23

R/W

27

UART0_USE_PWM01

R/W

26

UART1_USE_LCD0_5_6_11

R/W

25

I2C2_USE_CAN1

R/W

24

I2C1_USE_CAN0

R/W

23

NAND3_USE_UART5

R/W

22

NAND3_USE_UART4

R/W

21

NAND3_USE_UART1_DAT

R/W

20

NAND3_USE_UART1_CTS

R/W

19

NAND3_USE_PWM23

R/W

18

NAND3_USE_PWM01

R/W

17

NAND2_USE_UART5

R/W

16

NAND2_USE_UART4

R/W

15

NAND2_USE_UART1_DAT

R/W

14

NAND2_USE_UART1_CTS

R/W

13

NAND2_USE_PWM23

R/W

12

NAND2_USE_PWM01

R/W

11

NAND1_USE_UART5

R/W

10

NAND1_USE_UART4

R/W

9

NAND1_USE_UART1_DAT

R/W

8

NAND1_USE_UART1_CTS

R/W

7

NAND1_USE_PWM23

R/W

6

NAND1_USE_PWM01

R/W
保留

5
4

GMAC1_USE_UART1

R/W

3

GMAC1_USE_UART0

R/W

2

LCD_USE_UART0_DAT

R/W

1

LCD_USE_UART15

R/W

0

LCD_USE_UART0

R/W

GPIO_MUX_CTRL1 基地址 0XBFD0_0424,寄存器的描述如下,当管脚配置为 GPIO 功能时,
MUX 寄存器的配置不起作用:
位
31

185

描述
USB_reset

读写特性
R/W

龙芯 1B 处理器用户手册
30:25

保留

24

SPI1_CS_USE_PWM01

R/W

23

SPI1_USE_CAN

R/W
保留

22:21
20

DISABLE_DDR_CONFSPACE
保留

19:17
16

DDR32TO16EN
保留

15:14
13

GMAC1_SHUT

12

GMAC0_SHUT

R/W

11

USB_SHUT

R/W
保留

10:6

186

5

UART1_3_USE_CAN1

R/W

4
3
2
1
0

UART1_2_USE_CAN0
GMAC1_USE_TX_CLK
GMAC0_USE_TX_CLK
GMAC1_USE_PWM23
GMAC0_USE_PWM01

R/W

龙芯 1B 处理器用户手册

24 AC/DC
24.1 时钟系统
1B 芯片内部工作部分包括三个电源域(power planes),如下表所示
表 24-1 1B 电源域
电源域

描述

Core

由主供电电源(main power supply)供电.当系统处于 S3,S4,S5 或 G3 状态时,这个电源域
的供电将被断掉

RTC

系统断电时候,由外部电池供电;系统工作情况下,供电从电池切换到部普通电源

DDR

DDR2 工作所需电源

24.2 系统复位
1B 芯片在系统上电复位时,需要将某些芯片引脚上下拉进行配置。如下表格所示的全
部引脚:
表 24-2 1B 上电配置引脚汇总
配置引脚

上下拉

功能

EJTAG_TRST

上拉

TAP 复位

EJTAG_TCK

上拉

TAP 时钟

EJTAG_TDI

上拉

TAP 数据输入

EJTAG_TMS

上拉

TAP 工作模式

SYS_RSTN

上拉

系统复位

24.3 推荐的工作条件
表 24-3 推荐的工作条件
参数

187

范围

描述
Min.

Typ.

Max.

VDD_1V2

核电源电压

1.08V

1.2V

1.32V

PLL_DVDD12

PLL 数字电源

1.08V

1.2V

1.32V

USB_DVDD1V2

USB 数字电源

1.08V

1.2V

1.32V

VDD_1V8

DDR 电源电压

1.62V

1.8V

1.98V

VDD_3V3

IO 电源电压

2.97V

3.3V

3.63V

PLL_AVDD33

PLL 模拟电源

2.97V

3.3V

3.63V

USB_AVDD33

USB 模拟电源

2.97V

3.3V

3.63V

RTC_VDD33

RTC 电源

2.70V

3.3V

3.60V

工作温度

商业级

0℃

55℃

龙芯 1B 处理器用户手册
工业级

-40℃

85℃

24.4 绝对最大额定值
表 24-4 绝对最大额定值
参数

Min.

Max.

VDD_1V2

核电源电压

-0.3V

1.4V

PLL_DVDD12

PLL 数字电源

-0.3V

1.4V

USB_DVDD1V2

USB 数字电源

-0.3V

1.4V

VDD_1V8

DDR 电源电压

-0.3V

2.3V

VDD_3V3

IO 电源电压

-0.3V

4V

PLL_AVDD33

PLL 模拟电源

-0.3V

4V

USB_AVDD33

USB 模拟电源

-0.3V

4V

RTC_VDD33

RTC 电源

-0.3V

4V

存储工作温度

商业级
工业级

-10℃
-50℃

65℃
95℃

功耗

188

范围

描述

1.8W



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : Yes
Author                          : Evan
Company                         : MS
Create Date                     : 2015:09:23 10:19:29+08:00
Modify Date                     : 2015:09:23 10:23:14+08:00
Source Modified                 : D:20150923021628
Tagged PDF                      : Yes
XMP Toolkit                     : Adobe XMP Core 5.4-c005 78.147326, 2012/08/23-13:03:03
Metadata Date                   : 2015:09:23 10:23:14+08:00
Creator Tool                    : Acrobat PDFMaker 11 Word 版
Document ID                     : uuid:0b2ae0a0-d752-4f0e-885d-cd8ee7e2a91f
Instance ID                     : uuid:57f1c44e-d96c-4ed4-9e31-f93ece1cd3b9
Subject                         : 5
Format                          : application/pdf
Title                           : 1B数据手册
Creator                         : Evan
Producer                        : Adobe PDF Library 11.0
Page Layout                     : OneColumn
Page Count                      : 204
EXIF Metadata provided by EXIF.tools

Navigation menu