一种信号转换装置、 方法及通信设备 【技术领域】
本发明涉及通信领域, 具体地涉及一种 LPC 总线转 UART 接口的装置、 方法及通信设备。 背景技术
串行通信接口协议提供了一种用于数据通信的最简单的标准串行接口, 因此在很 多设备上都得到了广泛的应用。电子设计工程师在对复杂嵌入式系统进行调试时, 经常会 涉及到人机交互, 在人机交互过程中需要利用嵌入式系统的串口作为控制台 (console), 以便上位机通过串口来控制该嵌入式系统, 例如通过串口打印信息, 因此几乎所有的嵌入 式系统需要串口。在电信领域的应用中, 串口除了用于本地的调试, 同时 BMC(Baseboard Management Controller, 基板管理控制器 ) 也通过串口对嵌入式系统进行通讯和控制。
X86 架构处理器主要的应用场景为微型计算机、 服务器或工作站, 并已经开始应 用于嵌入式、 通信领域, 但 X86 架构处理器厂商已经渐渐不再在南桥 (South Bridge) 提供 UART(Universal Asynchronous Receiver and Transmitter, 通用异步收发器 ) 接口, 而是 利用南桥的 LPC 总线 (Low Pin CountBus, 低引脚数总线 ) 连接到超级 I/O 芯片 (Super I/ O ASIC), 由其提供微型计算机所需的各种低速接口 ( 例如 : 并口、 串口、 软驱、 PS2、 键盘、 鼠 标、 打印机等… )。
请参阅图 1, 图 1 为现有技术一利用超级 I/O 芯片实现 UART 通信的硬件连接示意 图。如图 1 所示, 对于 PC 机或嵌入式系统, 直接通过 LPC 总线将超级 I/O 芯片与南桥芯片 连接, 并通过该超级 I/O 芯片提供软盘接口、 并口、 串口、 键盘控制器及 X-BUS 等。但是该超 级 I/O 芯片的管脚多达 128 个, 且体积大。同时该方案还在 LPC 总线上连接一个带有 LPC 接口的 flash, 用于存储整个软件及硬件系统的 BIOS(Basic input output system, 基本输 入输出系统 )。
发明人在实现本发明的过程中, 发现现有技术至少存在以下不足 :
由于超级 I/O 芯片的内部实现多种接口 ( 包括 UART 接口 ) 与 LPC 总线通信时, 对 各个接口相关的参数配置需要通过对超级 I/O 芯片内部的 Index Port 寄存器和 Data Port 寄存器进行操作, 才能完成配置。在系统启动时, 如果要使用串口通信, 首先需要 BIOS 对超 级 I/O 芯片内部进行配置, 进入超级 I/O 芯片的配置状态, 将对 Index Port 寄存器和 Data Port 寄存器进行写操作。只有先将串口接口作为逻辑器件分配给内部总线, 然后才能通过 访问串口寄存器的 I/O 地址, 并对串口控制器进行读写操作, 因此, 配置过程比较复杂。 发明内容
本发明实施例提供了一种信号转换装置、 方法及通信设备。
一方面, 本发明实施例提供了一种信号转换装置, 所述装置包括 : LPC 总线接口单 元、 寄存器配置单元、 UART 单元 ; 所述 LPC 总线接口单元, 用于对来自 LPC 总线的信号进行 协议解析, 并通过本地总线输出本地信号, 所述本地信号包括控制信号、 地址信号及数据信号; 所述寄存器配置单元, 用于根据所述本地信号配置 UART 单元的寄存器 ; 所述 UART 单元 的寄存器分配在内存地址空间和 I/O 地址空间 ; 所述 UART 单元, 用于根据所述本地信号以 及配置后的 UART 单元的寄存器的值将来自所述 LPC 总线上的数据转换成串口数据后通过 UART 接口输出或将从所述 UART 接口接收的串口数据根据所述本地信号输出到所述 LPC 总 线。
另一方面, 本发明实施例的提供了一种信号转换方法, 所述方法包括 : 对来自 LPC 总线的信号进行协议解析, 并通过本地总线输出本地信号, 所述本地信号包括地址信号、 数 据信号及控制信号 ; 根据所述本地信号配置 UART 单元的寄存器 ; 所述 UART 单元的寄存器 分配在内存地址空间和 I/O 地址空间 ; 根据所述本地信号以及配置后的 UART 单元的寄存 器的值将来自所述 LPC 总线上的数据转换成串口数据后通过 UART 接口输出, 或者将从所述 UART 接口接收的串口数据根据所述本地信号输出到所述 LPC 总线。
还一方面, 本发明实施例提供了一种通信设备, 所述通信设备包括 : CPU、 南桥、 本 发明实施例的信号转换装置及外围设备 ; 所述 CPU 用于通过南桥的 LPC 接口向所述信号转 换装置和 / 或外围设备发送信号 ; 所述信号转换装置用于对 LPC 接口的数据和 UART 数据进 行转换, 并将所述 CPU 发送的信号向所述外围设备发送或接收来自所述外围设备的信号以 向所述 CPU 反馈。
本发明实施例的装置与方法, 通过利用可编程逻辑器件的内部逻辑电路实现了从 LPC 总线协议到 UART 串口通信的信号转换功能, 避免了使用现有技术中的超级 I/O 芯片, 达 到了简化配置、 节约成本、 节省电路板空间、 降低电路复杂度的有益技术效果。
本发明实施例的通信设备, 可以将低引脚数 LPC 总线接口单元解析出的数据通过 UART 单元发送出去, 同时可以读写与该通信设备相连的外围设备。 附图说明
图 1 为现有技术一利用超级 I/O 芯片实现 UART 通信的硬件连接图 ; 图 2 为本发明实施例 1 的一种信号转换装置的结构示意图 ; 图 3 为本发明实施例 1 的 LPC 总线接口单元的状态转换图 ; 图 4 为本发明实施例 1 的 UART 单元的功能框图 ; 图 5 为本发明实施例 1 的 FIFO 存储器的接口图 ; 图 6 为本发明实施例 1 的发送子单元的发送工作原理示意图 ; 图 7 为本发明实施例 1 的接收子单元的工作原理示意图 ; 图 8 为本发明实施例 2 的一种信号转换方法的流程示意图 ; 图 9 为本发明实施例 3 一种通信系统的结构示意图。具体实施方式
下面结合附图对本发明实施例作详细阐述, 下列示例性描述应当理解为是对本发 明权利要求的解释而不是对本发明权利要求的限制。
实施例 1 :
本发明实施例 1 提供了一种信号转换装置。本发明实施例 1 通过以 CPLD 或 FPGA 等可编程逻辑器件作为载体, 利用上述逻辑器件的内部逻辑资源实现该信号转换装置 . 从而简化了对该信号转换装置包含的 UART 单元的相应寄存器的配置过程。
图 2 为本发明实施例 1 的一种信号转换装置的结构示意图。如图 2 所示, 本发明 实施例 1 的装置 20 通过 LPC(Low Pin Count, 低引脚数 ) 总线与南桥 40 连接。请参阅图 2, 本发明实施例 1 的装置包括 :
LPC 总线接口单元 201、 寄存器配置单元 202、 UART 单元 203 ;
所述 LPC 总线接口单元 201, 用于对来自 LPC 总线的信号进行协议解析, 并通过本 地总线输出本地信号, 所述本地信号包括控制信号、 地址信号及数据信号 ;
所述寄存器配置单元 202, 用于根据所述本地信号配置 UART 单元 203 的寄存器 ; 所述 UART 单元 203 的寄存器分配在内存地址空间和 I/O 地址空间 ;
所述 UART 单元 203, 用于根据所述本地信号以及配置后的 UART 单元的寄存器的值 将来自所述 LPC 总线上的数据转换成串口数据后通过 UART 接口输出或将从所述 UART 接口 接收的串口数据根据所述本地信号输出到所述 LPC 总线。
进一步地, 所述寄存器配置单元 202, 还可以用于通过所述本地信号获取寄存器 读写方式信息, 当所述寄存器读写方式为内存读写时, 对分配在内存地址空间的 UART 单元 203 的寄存器进行操作 ; 当所述寄存器读写方式为 I/O 读写时, 对对分配在 I/O 地址空间的 UART 单元 203 的寄存器进行操作 ; 所述寄存器读写方式信息由所述 LPC 总线接口单元 201 根据寄存器读写指令判断 得出 : 当所述寄存器读写指令为 I/O 读写指令时, 所述 LPC 总线接口单元输出寄存器读写方 式为 I/O 读写 ; 当所述寄存器读写指令为内存读写指令时, 所述 LPC 总线接口单元输出寄存 器读写方式为内存读写。
进一步地, 所述信号转换装置 20 还可以包括 : 系统存储单元 204, 用于存储系统操 作系统 OS 和 / 或基本输入输出系统 BIOS ; 所述系统存储单元 204 与所述 LPC 总线接口单 元 201 相连, 通过接收来自 LPC 总线接口单元 201 的所述本地信号, 并根据所述本地信号对 存储在里面的数据进行读写操作。
进一步地, 所述 LPC 总线接口单元 201, 还可以用于与至少一个外围设备 30 进行相 连, 并通过所述本地信号与所述外围设备 30 进行通信。所述外围设备包括下列设备中的一 个或多个 : 主备倒换设备、 上电复位设备、 时钟检测设备、 版本查询设备、 中断处理设备。
可选地, 所述本地总线为 Local Bus 总线, 所述系统存储单元为具有 LocalBus 总 线接口的 NOR flash。
优选地, 所述 UART 单元 203 包括 : 寄存器阵列, 用于存储接收到的所述数据信号, 或根据所述数据信号对所述寄存器阵列中的至少一寄存器进行配置 ; 第一 FIFO 存储器, 用 于存储待发送的数据 ; 第二 FIFO 存储器, 用于存储待读取的数据 ; 发送单元, 用于监测所 述第一 FIFO 存储器的状态, 当所述状态为有效时读出所述第一 FIFO 存储器中的待发送的 数据, 并将所述待发送的数据转换成串行格式后, 基于通用异步串行通信协议发送 ; 接收单 元, 用于接收串行数据, 将所述串行数据转换成并行数据后写入到第二 FIFO 存储器中, 并 触发所述寄存器阵列中至少一寄存器的状态发生变化。
进一步地, 以下将结合图表对本发明实施例 1 的信号转换装置包含的 LPC 总线接 口单元的功能作详细阐述。
LPC 总线, 其用于连接南桥 (South Bridge) 和周边慢速设备, 表 1 提供了 LPC 总线
的各管脚的定义。
表 1.LPC 总线信号定义表
在本发明实施例 1 中, LPC 总线必须的信号为 LAD[3:0]、 /LFRAME、 /LRESET、 LCLK ; 可选信号中, 串行中断信号 /SER_IRQ, 需要使用。
图 3 为 LPC 总线接口单元内部状态机状态转换图。如图 3 所示, LPC 总线接口单 元的内部状态机状态转换图描述了 LPC 总线接口单元的工作原理, 这里不赘述, 请参考 LPC 协议文档 《Intel Low Pin Count(LPC)InterfaceSpecification》 文档编号 : 251289-001。
表 2 为 LPC“周期形式与方向” (Cycle type&Dir) 的第二时钟周期定义表, 如表 2 所示, 在 LPC 协议中, 当一帧数据开始后, 在第二个时钟周期 (Cycle type & Dir), 给出了该 帧数据的读写方式 : 是 memory( 内存 ) 读写, 还是 I/O 读写。根据这个信息, 来确定该帧数 据是访问 memory( 内存 ) 地址空间, 还是访问 I/O 地址空间。
Bits[3:2] 00 00 01Bit[1] 0 1 0Definition( 定义 ) I/O Read(I/O 读 ) I/O Write(I/O 写 ) Memory Read( 内存读 )7CN 101989244 A说1 0 1 x明书5/12 页01 10 10 11
Memory Write( 内存写 ) DMA Read( 直接内存访问读 ) DMA Write( 直接内存访问写 ) Reserved( 预留 )表 2.LPC“周期形式与方向” (Cycle type & Dir) 的第二时钟周期定义表
进一步地, 以下将对本发明实施例 1 的 UART 单元的功能、 结构及工作原理作详细 阐述, 为了简化描述, 相同的元件采用了相同的附图标号。
请参阅图 4, 图 4 为本发明实施例 1 的 UART 单元的功能框图。如图 4 所示, 本发明 实施 1 的 UART 单元 203 包括 :
寄存器阵列 2031, 其可以包括接收缓存寄存器、 发送保持寄存器、 中断使能寄存 器、 中断标识寄存器、 FIFO 控制寄存器、 线控制寄存器、 Modem 控制寄存器、 线状态寄存器、 Modem 状态寄存器、 高速缓存寄存器、 除数锁存低位寄存器 (LSB) 及除数锁存高位寄存器 (MSB) ;
第一 FIFO 存储器 2032 及第二 FIFO 存储器 2035, 用于缓存待发送或读取的数据 ; 由于 LPC 总线的速率远大于 UART 的速率, 也为了兼容后续其他设计, 本发明实施例在 UART 单元 203 内嵌入了一组 64*8(FIFO 深度 *FIFO 宽度 ) 的 FIFO(First Input First Output, 先入先出 ) 存储器, 专用于发送数据, 另一组 16*8(FIFO 深度 *FIFO 宽度 ) 的 FIFO 存储器, 专用于接收数据, 两组 FIFO 存储器分别连接到寄存器阵列 2031, 并根据寄存器阵列 2031 的 读写控制指令从寄存器阵列 2031 中读出数据或向寄存器阵列写入数据。
图 5 为本发明实施例 1 的 FIFO 存储器的接口图。如图 5 所示, CLK 管脚为系统时 钟, RST 管脚为系统复位信号, 当写使能 wr_en 有效时, 每个时钟周期都向 FIFO 存储器中写 入一组数据, 当读使能 rd_en 有效, 每个时钟周期都从 FIFO 存储器中读出一组数据, 所以当 对 FIFO 存储器进行读写操作时, 只能在一个时钟周期中操作。当 FIFO 存储器中没有数据 时, empty 管脚输出高电平 ; 当 FIFO 存储器中数据满了之后, FULL 管脚输出高电平 ; din 为 数据输入管脚, dout 为数据输出管脚。
发送子单元 2033, 用于监测第一 FIFO 存储器 2032 的状态, 当所述状态为有效时, 即 FULL 管脚输出高电平以表示第一 FIFO 存储器 2032 已满时, 读出所述第一 FIFO 存储器 中的数据, 并将所述数据转换成串行格式后, 基于通用异步串行通信协议发送。
图 6 为本发明实施例 1 的发送子单元的发送工作原理示意图。 如图 6 所示, 当 FIFO 存储器读到数据之后, empty 管脚信号为低电平, 触发发送子单元去读 FIFO 存储器, 并把读 出的数据内容转换成 UART 通信格式后串行发送, 发送完成后, 继续监测发送 FIFO 存储器的 状态。
上述发送过程进一步细化为 :
步骤 S601、 LPC 总线接口单元解析输出的地址为 UART 通信单元的发送保持寄存器 (THR, Transmit Hold Register) 地址 ( 例如该地址可以为 0X03F8) ;
步骤 S602、 逻辑监控 LPC 总线接口单元输出写使能 (wr_en) 信号 ;步骤 S603、 检测到 LPC 写使能信号有效时 ;
步骤 S604、 将本地总线 Local Bus 上的数据信息发送 ( 写入 ) 至 UART 通信单元的 上述发送保持寄存器中 ;
步骤 S605、 逻辑自动触发发送保持寄存器对第一 FIFO 存储器进行写操作, 以将发 送保持寄存器的数据内容写入到第一 FIFO 存储器中 ;
步骤 S606、 监控该第一 FIFO 存储是否为空, 如是, 则执行步骤 S607, 如否, 则执行 步骤 S614 ;
步骤 S607、 检测到该第一 FIFO 存储器的 Empty 管脚的状态为无效 ;
当该第一 FIFO 存储器中被写入数据之后, 其 empty 管脚被置为低电平 ( 无效状 态 )。
步骤 S608、 当发送子单元空闲时, 则触发发送子单元对该第一 FIFO 存储器进行读 操作, 即读取第一 FIFO 存储器中的数据 ;
步骤 S609、 发送子单元保存欲发送数据进入 UART 转换模式 ;
步骤 S610、 发送子单元发送欲发送数据的开始位 ;
步骤 S611、 UART 线控制寄存器设置帧格式, 以使发送子单元将读取的数据转换为 串口数据格式后基于通用异步串行通信协议发送 ;
本发明实施例中的串口数据格式可以包括 1 位起始位、 5-8 位的数据位、 0-1 位奇 偶校验位以及 1 或 1.5 或 2 位的停止位。
步骤 S612、 发送子单元对欲发送数据进行并串格式转换并发送 ;
步骤 S613、 发送子单元进行奇偶校验计算并发送相应的奇偶校验位 ;
步骤 S614、 发送子单元发送停止位。
本发明实施例接收子单元 2034, 用于根据所述对应的寄存器的配置参数接收串行 数据, 并将所述串行数据转换成并行数据后写入到第二 FIFO 存储器 2035 中, 并触发所述多 个寄存器中至少一寄存器的状态发生变化。 例如触发中断标识寄存器或线状态寄存器的状 态设置发生变化。
图 7 为本发明实施例 1 的接收子单元的工作原理示意图。如图 7 所示, 逻辑采用 串口波特率 16 倍的时钟对 UART 单元 203 的接收子单元 2033 的接收端 Rx 的输入数据进行 监测, 当 RX 有低电平输入时, 表示监测到该数据帧的开始位, 从而进入到 UART 数据帧的解 析状态, 并将接收到的数据进行串并转换后存储在第二 FIFO 存储中, 当检测到停止位时, 将根据 UART 通信单元的配置寄存器 4037 的配置项, 将这帧数据的数据位、 奇偶校验位及停 止位等数据进行检测和存储, 并判断是否奇偶校验错误、 溢出错识或帧错误, 以根据上述判 断结果改变线状态寄存器的状态设置。
具体应用中, 本发明实施例 1 的 UART 单元 203 还可以包括 : 中断子单元 2036, 用 于监测所述多个寄存器中至少一寄存器的状态变化, 例如监测线状态寄存器的状态变化, 以产生中断信号, 并将所述中断信号上传到与所述装置相连接的主机, 以触发所述主机读 取所述待读取的数据, 例如可以通过 SERIRQ 向主机上报中断。
进一步地, 以下将对本发明实施例 1 的寄存器配置单元 202 的功能及工作原理作 详细阐述 :
本发明实施例对 UART 单元的各寄存器既在 I/O 地址空间分配又在 Memory( 内存 )地址空间分配。本发明实施例 1 的寄存器配置单元根据 UART 通信单元包含的寄存器的 I/ O 地址或内存地址, 将所述本地信号分配至 UART 通信单元, 并根据所述本地信号配置所述 UART 单元包含的相应寄存器。
可 选 地, 可 以 预 先 在 I/O 地 址 空 间 分 配 UART 单 元 的 各 寄 存 器 的 地 址 范 围 为 0X03F8 ~ 0X03FF。可选地, 还可以预先在 Memory( 内存 ) 地址空间分配 UART 单元的各寄 存器的地址范围为 0X F00003F8 ~ 0X F00003FF。
在 I/O 地址空间, 将 I/O 地址 0X03F8 共同分配给接收缓存寄存器和发送保持寄存 器, 并当除数锁存器访问位 DLAB = 0 时, 可以对上述寄存器进行访问。接收缓存寄存器与 发送保持寄存器的 Bit0 ~ Bit7 均为数据位, 用于存储数据。
在 IO 地址空间, 将 I/O 地址 0X03F8 共同分配给除数锁存低位寄存器和除数锁存 高位寄存器, 当除数锁存器访问位 DLAB = 1 时, 可以对上述寄存器进行访问, 除数锁存低位 寄存器的 Bit0 ~ Bit7 存储的低 8 位数据和除数高位寄存器的 Bit0 ~ Bit7 存储的高 8 位 数据用于配置串口通信的波特率。
在 I/O 地址空间, 将 I/O 地址 0X03FB 分配给线控制寄存器, 其 Bit0 ~ Bit1 用于 配置串口通信的字长度, Bit2 用于配置串口通信的停止位的个数, Bit3 用于配置串口通信 是否奇偶校验使能, Bit4 用于配置校验方式为奇校验或偶校验。 在 I/O 地址空间, 将 I/O 地址 0X03FC ~ 0X03FE 分别分配给 Modem 控制寄存器、 线 状态寄存器和 Modem 状态寄存器。
在 Memory 地址空间, 不同之处在于, 将 Memory 地址 0XF00003F8 共同分配给接收 缓存寄存器和发送保持寄存器, 并当 DLAB = 0 时, 可以对上述寄存器进行访问。将 Memory 地址 0XF00003F8 共同分配给除数锁存低位寄存器和除数锁存高位寄存器, 并当 DLAB = 1 时, 可以对上述寄存器进行访问。将 Memory 地址 0XF00003FB 分配给线控制寄存器。将 Memory 地址 0XF00003FC ~ 0X F00003FE 分别分配给 Modem 控制寄存器、 线状态寄存器和 Modem 状态寄存器。
本发明实施例 1 的寄存器配置单元, 通过接收 LPC 总线接口单元发送的相关信号, 可以对 UART 通信子单元的各寄存器进行配置, 从而可以提供一个完整功能的 UART : 波特率 可设 50 ~ 450k ; 1bit 开始位 ; 停止位 1bit、 1.5bit、 2bit 可设 ; 奇校验、 偶校验、 无校验可 选。而这些设置的功能, 以寄存器的形式分配到各个地址。当 Host 主机需要通过与信号转 换装置进行 UART 通信或设置时, 只需对 UART 单元的相应寄存器的相应的地址进行读写即 可。例如可以在 I/O 地址空间寻址并使用 “OUT” 和 “IN” 指令进行操作, 操作指令例如可以 为:
MOV DX, 03F8H ; UART THR register
MOV AL, 08H ; data
OUT DX, AL
也可以在内存地址空间寻址, 并直接使用 MOV 指令进行读写操作, 操作指令例如 可以为 :
MOV AL, byte ptr DS : [UART_THR_ADD]。
进一步地, 本发明实施例的信号转换装置还系统存储单元, 用于存储系统操作系 统 OS 和 / 或基本输入输出系统 BIOS ; 所述系统存储单元与所述 LPC 总线接口单元相连, 通
过接收来自 LPC 总线接口单元的所述本地信号, 并根据所述本地信号对存储在里面的数据 进行读写操作。可选地, 所述本地总线为 Local Bus 总线, 所述系统存储单元为具有 Local Bus 总线接口的 NOR flash。
BIOS 被分配在 FF00_0000 ~ FFFF_FFFF 的内存地址空间。当 CPU 通过南桥的 LPC 总线访问存放 BIOS 的 NOR flash 时, 用最高 8 位的地址线产生 flash 的片选信号, 访问该 flash。LPC 总线以 memory 方式访问从设备时, 读 / 写帧中包括了 8 个地址周期, 每个地址 周期传送 4bit 数据, 总共传送 32 位地址数据, 其中 23、 22、 21、 19 位分别对应 Device ID( 设 备标识 ) 的 3 ~ 0 位, 地址数据的 0 ~ 18 位对应 Local Bus 总线地址的 0 ~ 18 位。通过 LPC 总线接口单元的解析, 将来自 LPC 总线的帧信息转换为 flash 所需要的 Local Bus 的读 写时序, 从而可以对 BIOS 中存储的数据进行读写操作。
本发明实施例中还通过使用本地总线与外围设备进行管理, 如使用 LocalBus 总 线对外围设备进行管理。当所有外围以及 flash 存储器都使用同一本地总线进行管理时, 可以对系统进行有效地整合, 提高了系统简洁度, 方便对软件代码进行编写。
综上所述, 本发明实施例 1 的有益技术效果在于 :
本发明实施例 1 通过以 CPLD 或 FPGA 等可编程逻辑器件作为载体, 利用上述逻辑 器件的内部逻辑电路实现 LPC 总线协议到 UART 串口通信 . 从而避免了使用现有技术中的 额外的硬件芯片来实现串口功能, 从而降低了成本、 节省了电路板空间、 降低了电路的复杂 度与冗余度, 简化了对 UART 串口的配置过程。 本发明实施例 1 的信号转换装置在进行串口通信之前, 可以非常方便地根据 LPC 总线接口单元解析的本地信号对 UART 单元的各寄存器进行配置, 以便通过配置好的 UART 单元进行串口通信。本发明实施例 1 的信号转换装置, 由于将 UART 单元的寄存器既分配在 I/O 地址空间, 又分配在内存 (Memory) 地址空间, 所以无论是 I/O 访问还是 Memory 访问, 都 可以访问到 UART 单元的各个寄存器。因此, 在配置过程中, 既可以使用 “OUT” 、 “IN” 等指令 对编址于 I/O 地址空间的 UART 单元的相应寄存器进行配置, 也可以使用 MOV 指令对编址于 Memory 地址空间的 UART 单元的相应寄存器进行配置, 从而大大简化了对 UART 单元的各寄 存器的配置过程。本发明实施例 1 可以应用于 CISC 体系 CPU 的 I/O 读写方式和 memory 读 写方式, 使得 X86 架构的 CPU 可以如同 RISC 体系 CPU 的读写一样, 访问串口或者其他外部 接口与访问内存空间无差异。
本发明实施例使用普通的 NOR flash 而不是 LPC 接口的 flash 来存储 BIOS 代码。 LPC 接口的 flash 是 4 位或 8 位位宽的, 用普通 NOR flash 的数据位宽可以设置为 16 位和 32 位。 使用普通的 NOR flash 拥有独立的数据总线和地址总线, 能快速随机读取, 允许系统 直接从 flash 中读取代码执行。并且使用 NOR flash, 可以使用 JTAG 在线高速升级 flash。 同时通过将 OS flash( 操作系统 flash) 与 BIOS flash, 合并成一片 flash 中, 从而节省了 硬件资源。现有技术中采用 LPC 接口的 flash, 只能通过 LPC 的仿真器进行加载, 如果直接 挂在南桥则不方便实现 JTAG(Joint Test Actions Group, 联合测试行动组 ) 加载, 即使勉 强实现了 JTAG 加载, 其加载时间也非常长, 例如 4Mbit 的 flash 的加载达到数小时, 不实 用。 如果通过本发明实施例的 JTAG 控制 CPLD 的管脚来加载 NOR flash, 就可以实现系统在 线快速升级, 例如在本发明实施例中, 4Mbit 的 flash 加载的时间大约是几分钟。
实施例 2 :
本发明实施例 2 提供了一种信号转换方法。 图 8 为本发明实施例 2 的一种信号转换方法的流程图。如图 8 所示, 所述方法包括: 步骤 S801、 对来自 LPC 总线的信号进行协议解析, 并通过本地总线输出本地信号, 所述本地信号包括地址信号、 数据信号及控制信号 ;
所述本地信号包括地址信号、 数据信号及控制信号 ; 所述控制信号包括片选信号、 读使能信号及写使能信号。
所述对来自 LPC 总线的信号进行协议解析的具体过程可以包括 :
接收来自 LPC 总线的帧数据 ; 根据所述帧数据中的寄存器读写标识判断对所述 UART 单元的寄存器的寄存器读写方式是内存读写还是 I/O 读写 ; 当所述寄存器读写方式为 内存读写时, 对分配在内存地址空间的 UART 单元的寄存器进行访问 ; 当所述寄存器读写方 式为 I/O 读写时, 对分配在 I/O 地址空间的 UART 单元的寄存器进行访问。
步骤 S802、 根据所述本地信号配置 UART 单元的寄存器 ; 所述 UART 单元的寄存器 分配在内存地址空间和 I/O 地址空间 ;
所述 UART 单元的寄存器至少包括下列寄存器中的一个 : 接收缓存寄存器、 发送保 持寄存器、 中断使能寄存器、 中断标识寄存器、 FIFO 控制寄存器、 线控制寄存器、 Modem 控制 寄存器、 线状态寄存器、 Modem 状态寄存器、 除数锁存低位寄存器及除数锁存高位寄存器。
需要强调的是, UART 单元的各寄存器, 既在内存地址空间编址, 又在 I/O 地址空 间编址, 无论是 I/O 访问还是 Memory 访问, 都可以访问到 UART 通信单元的各寄存器。该 逻辑既可以应用于 CISC(Complex Instructions Set Computer, 复杂指令架构计算机 ) 体 系 CPU 的 I/O 读写方式和 memory 读写方式, 使得 X86 架构的 CPU 可以如同 RISC(Reduced Instructions Set Computer, 精简指令架构计算机 ) 体系 CPU 的读写一样, 访问串口或者 其他外部接口与访问内存空间无差异。
所述根据本地信号配置 UART 单元的寄存器的过程具体可以包括 :
配置线控制寄存器的 bit0 ~ bit1, 以配置串行通信的有效子符长度为 5 ~ 8bit ; 配置线控制寄存器的 bit2, 以配置串行通信的停止位的个数为 1bit、 1.5bit 或 2bit ; 配置 线控制寄存器的 bit3, 以配置串行通信是否有校验 ; 配置线控制寄存器的 bit4, 以配置采 用的校验方式为奇校验或偶校验。配置除数锁存低位寄存器的 bit0 ~ bit7 及除数锁存高 位寄存器的 bit8 ~ bit15, 以配置串行通信的波特率 ; 以上仅为示例性说明, 而不应当理解 为对本发明的限制。
步骤 S803、 根据所述本地信号以及配置后的 UART 单元的寄存器的值将来自所述 LPC 总线上的数据转换成串口数据后通过 UART 接口输出, 或者将从所述 UART 接口接收的串 口数据根据所述本地信号输出到所述 LPC 总线。
上述过程可以进一步细化为 : 监测存储发送数据的 FIFO 存储器的状态, 当所述状 态为有效时, 读出所述存储发送数据的 FIFO 存储器中的待发送的数据, 并将所述待发送的 数据转换成串行格式, 基于通用异步串行通信协议发送 ; 或者, 接收串行数据, 将所述串行 数据转换成并行数据后写入存储待读取数据的 FIFO 存储器中, 并触发相关寄存器状态发 生改变, 以使得所述并行数据能够输出到所述 LPC 总线。
进一步地, 所述的信号转换方法, 还包括 : 通过所述本地信号与至少一个外围设备
进行通信。
进一步地, 所述的信号转换方法, 还包括 : 接收来自 LPC 总线的接口的所述本地信 号, 并通过所述本地信号对存储单元进行读写操作。所述本地总线可以为 Local Bus 总线 或其他总线 ; 所述存储单元为具有 Local Bus 接口的 NOR flash 或者与具有其他总线对应 接口的 flash ; 当本地总线与 flash 总线接口不一致时, 也可以将两种总线进行转换后对 flash 进行管理。
本发明实施例 2 的方法与现有技术的利用超级 I/O 器件实现 LPC 转换 UART 接口的 方案相比, 简化了对 UART 单元的相应寄存器的配置过程, 并降低硬件成本和电路冗余度 ; 由于对 UART 单元的各寄存器, 既在内存地址空间编址, 又在 I/O 地址空间编址, 无论是 I/O 访问还是 Memory 访问, 都可以访问到 UART 通信单元的各寄存器, 本发明实施例 2 的方法既 可以应用于 CISC 体系 CPU 的 I/O 读写方式和 Memory 读写方式, 使得 X86 架构的 CPU 可以 如同 RISC 体系 CPU 的读写一样, 访问 UART 串口或者其他外部接口与访问内存空间无差异。
本发明实施例 2 的一种信号转换方法, 可以通过 CPLD 或者 FPGA 作为载体来实现, 以逻辑来实现对来自 LPC 总线的信号进行协议解读, 对 LPC 协议可裁减或增加, LPC 总线协 议能支持 DMA(Direct Memory Access, 直接内存访问 )、 Memory、 firmware HUB 等读写方式, 可以根据使用的需求进行裁减。
实施例 3 :
参见图 9, 本发明实施例 3 提供了一种通信设备 90, 所述通信设备包括 : CPU901、 南 桥 902、 本发明实施例 1 的信号转换装置 903 及外围设备 904 ; 所述 CPU901 用于通过南桥 902 的 LPC 接口向所述信号转换装置 903 和 / 或外围设备发送信号 904 ; 所述信号转换装置 903 用于对 LPC 接口的数据和 UART 数据进行转换, 并将所述 CPU901 发送的信号向所述外围 设备 904 发送, 或接收来自所述外围设备 904 的信号以向所述 CPU901 反馈。
本发明实施例 3 将超级 I/O 功能和系统管理监控功能都利用 CPLD 来完成, 对信号 转换装置、 NOR flash 接口、 检测监控等功能进行整合或融合。在不增加器件的前提下, 仅 利用大约 280 个逻辑单元资源和最多 10 个管脚完成串口功能, 大大节省了 PCB 电路板的空 间和成本, 并且简化了软件对 UART 串口的配置流程。将串口的功能与系统管理功能融合之 后, 大大提高了单板的简洁度, 软件编写更加便利。
本发明实施例 3 的通信设备能识别 LPC 总线的读写方式, 以对逻辑实现的 UART 通 信单元进行配置。为了便于嵌入式软件编写, 本发明实施例 3 以 CPLD 为载体提供了一个完 整功能的 UART 串口 : 其波特率可设为 50 ~ 450k ; 1bit 开始位 ; 停止位可选为 1bit、 1.5bit 或 2bit ; 奇校验、 偶校验或无校验可选。可以采用串行中断的方式, 并且中断模块可以根据 系统需要进行裁减。所有的 UART 串口寄存器既可以在内存地址空间访问, 又可以在 I/O 地 址空间访问。
本发明实施例的通信设备将所述 CPU 发送的信号向所述外围设备发送, 或接收来 自所述外围设备的信号以向所述 CPU 反馈。 所述外围设备包括 : 主备倒换设备、 上电复位设 备、 时钟检测设备、 版本查询设备、 中断处理设备。 以下将以上电复位设备为例, 说明本发明 实施例的通信设备接收上电复位设备的信号以向 CPU 反馈的工作过程。本领域技术人员应 当理解, 下述实例性描述仅用于说明本发明实施例, 而非用地限制本发明。
例如 : 可以预先设定复位模块的复位寄存器地址如下 :当 CPU 通过南桥控制 LPC 总线, 对内存空间的 0xF000, 001C 地址进行读写时。本 地总线输出地址对应到 0xF000, 001C, 信号转换装置中的 LPC 总线接口单元将数据总线连 接到上电复位装置的复位寄存器的输入。当写使能有效时, 寄存器锁存数据总线。上电复 位装置工作时, 其根据复位寄存器的内容, 控制系统的外围设备的复位 ; 当本地总线输出的 地址为 0xF000, 03F8 ~ 0xF000, 03FF 范围之内时, 信号转换装置中的 LPC 总线接口单元将 数据总线连接到 UART 单元的相应寄存器的输入, 再根据控制信号的内容, 对 UART 单元进行 操作, 以使 UART 通信单元, 根据所述本地信号和所述相应寄存器的配置参数, 实现数据的 串行通信。
本发明实施例 3 的通信设备的有益技术效果在于 :
1、 本发明实施例的通信设备, 可以将低引脚数 LPC 总线接口单元解析出的数据通 过 UART 单元发送出去, 同时可以读写与该通信设备相连的外围设备。
2、 使用可编程逻辑器件作为载体, 利用 CPLD 或 FPGA 内部逻辑电路实现 LPC 总线 协议到 UART 串口通信功能 ;
3、 UART 单元的寄存器, 既在内存地址空间分配, 又在 I/O 地址空间分配, 无论是 I/ O 访问还是 Memory 访问, 都可以访问到 UART 模块的寄存器。该逻辑既可以应用于 CISC 体 系 CPU 的 I/O 读写方式和 memory 读写方式, 使得 X86 架构的 CPU 可以如同 RISC 体系 CPU 的读写一样, 访问串口或者其他外部接口与访问内存空间无差异。
4、 利用逻辑实现 LPC 信号的协议解读, 对 LPC 协议可裁减, 增加, 按照使用者需求 进行改动。利用逻辑实现, 以 CPLD 或者 FPGA 作为载体, 实现功能可以很灵活, LPC 协议能
支持 DMA、 Memory、 firmware HUB 等读写方式, 可以根据使用的需求进行裁减。
以上所揭露的仅为本发明的实施例而已, 不能以此来限定本发明之权利范围, 因 此依本发明权利要求所作的等同变化, 仍属本发明所涵盖的范围。