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 .
Page Count: 204
Download | |
Open PDF In Browser | View 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 : 204EXIF Metadata provided by EXIF.tools