片上系统的UART接口控制器IP设计 毕业设计.doc_第1页
片上系统的UART接口控制器IP设计 毕业设计.doc_第2页
片上系统的UART接口控制器IP设计 毕业设计.doc_第3页
片上系统的UART接口控制器IP设计 毕业设计.doc_第4页
片上系统的UART接口控制器IP设计 毕业设计.doc_第5页
免费预览已结束,剩余54页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕 业 设 计(论文) 题目: 片上系统的 uart接口控制器 ip设计 姓名 学 号 所在单位 指导教师 完成日期 片上系统的 uart 接口控制器 ip 设计 摘 要 当代在通信和控制系统中,常使用 uart (通用异步收发器)实 现系统辅助信息的传输。 uart 虽然通信速度不快,但是它具有 电路简单,成本低,性能可靠,特别适合远距离数据传输等优点。 因此,在许多对通信速度要求不高的场合,异步串行口还发挥着很 重要的作用,被广泛的使用。而如今市场上的 uart 功能复杂, 在应用只使用到它的几个基本功能,因而造成资源浪费,为此我们 需要对 uart 的功能进行精简,方便使用,降低 cpu 的工作负担, 提高了系统性能。 关键词: uart 片上系统 通信协议; abstract contemporary in communication and control system, often use uart (general asynchronous transceiver) to implement system auxiliary information transmission. uart although communication at a modest pace, but it has a circuit is simple, low cost and reliable performance, especially suitable for the remote data transmission, etc. therefore, in many of the communication speed demand is not high occasions, asynchronous serial mouth still plays a very important role, is widely used. and now the market uart function complex in application to use only a few basic function of it and cause the waste of resources, and to do so we need to the function of the uart streamlined, convenient use, reduce work load of the cpu, and improve the system performance. key words: uart; soc; agree on communication 目 录 第一章 绪论 .1 第二章 背景 .2 2.1 知识背景 .2 2.2 本课题的研究内容 .3 2.3 论文结构 .4 第三章 uart 接口协议 .5 3.1 帧格式 .5 3.2 示例 .7 3.3 物理接口 .8 第四章 uart 接口控制器的设计与实现 11 4.1 uart 接口控制器核(core)的设计与实现 .11 4.2 uart 顶层设计 24 第五章 测试验证 .32 5.1 基于 quartus ii 的功能仿真测试 32 5.2 基于 fpga 的系统级测试 .34 第六章 总结 .35 致 谢 .37 附 录 .38 片上系统的 uart接口控制器 ip设计 - 1 - 第一章 绪论 当今社会,随着计算机的广泛应用,网络技术的快速发展和数 字通信技术的日益普及,经常会采用串行通信方式来进行数据信息 的交换传输。在串口通信中,数据的串行并行转换工作主要是由 uart 来实现。uart 是当前较广泛使用的串行数据传输协议之一, 它允许在串行链路上进行全双工通信,其应用范围遍及计算机外设、 工业控制等场合。现在专用的 uart 集成电路如 8250、8251 等既 要考虑异步收发功能,又要兼容 rs-232c 接口设计等功能,比较 复杂。而在实际应用中,往往只需要用到 uart 的几个基本功能, 而使用专用芯片势必会造成资源的浪费以及设备成本的提高。所以 我们可以将所需的 uart 功能集成到 soc 内部,实现与其他 soc 数字系统的直接通信,从而简化了整个系统电路,使系统更为灵活、 紧凑,性能也更加稳定。uart16550 采用通用的 rs-232c 串行接 口标准,其实现较为简单,最少只需要 2 条导线即可实现基本通信。 片上系统的 uart接口控制器 ip设计 - 2 - 第二章 背景 2.1 知识背景 一、uart 概述及其发展 uart:(universal asynchronous receiver/transmitter),全称是 通用异步接收/发送装置,uart 是一个并行输入成为串行输出的 芯片,用于控制计算机与串行设备, 是实现设备之间低速数据通信 的标准协议。通常集成在主板上,多数是 16550afn 芯片。uart 作为一种串口因可靠性高、传输距离远、线路简单、串口通信协议 的简洁而广泛应用于串行数据通信电路。其基本原理是 1 个完整的 数据在数据线上依次按比特位传送,虽然传输速率较低,但由于这 种传输方式需要的数据线较少,只需用两根线就可以完成数据的收 发(一根接收数据,一根发送数据) ,而且成本低廉,因此特别适 合远距离数据传输。 “异步 ”指不需要额外的时钟线进行数据的同步 传输,是一种串行总线接口。常用的标准通信波特率有 9600bps、115200bps 等。 uart 产生于上个世纪 70 年代,是第一块大规模集成电路。 1981 年的推出的 ibm pc 采用了 8250 uart 与外设进行数据通信, 直到上个世纪末,uart 一直是 pc 中最主要的串行通信接口。随 着高速串行总线 usb 的出现,usb 以其诸多的优点取代了 uart 成为个人电脑中应用最广泛的串行接口。 而在嵌入式领域,由于 uart 具有操作简单、工作可靠、抗 干扰强、传输距离远(组成 485 网络可以传输 1,200 米以上) ,设 计人员普遍认为 uart 是从 cpu 或微控制器向系统的其他部分传 输数据的最佳方式,因此它们被大量地应用在工业、通信和家电控 制等嵌入式领域。通常 mcu/cpu 都会自带一个 uart 串口,但 实际应用中一个串口往往不够用,需要进行 uart 串口扩展。 二、uart 控制器 uart 控制器完成串行通信功能,控制器在内部总线的操作下, 通过对寄存器的读写,完成如波特率设置、串并变换、fifo 控制、 片上系统的 uart接口控制器 ip设计 - 3 - 流控制及中断控制等,最终将需要发送的并行数据以一定的格式发 送;同时也将外部输入的串口数据流按一定格式进行采集完成数据 的接收。 计算机内部采用并行数据,不能直接把数据发到 modem,必 须经过 uart 整理才能进行异步传输,其过程为:cpu 先把准备 写入串行设备的数据放到 uart 的寄存器(临时内存块)中,再 通过 fifo(first input first output,先入先出队列)传送到串行设 备,ykl 若是没有 fifo,信息将变得杂乱无章,不可能传送到 modem。 三、soc 的基本概念 soc (系统级芯片 system onchip),也有称片上系统,狭义的 角度上讲,它是信息系统核心的芯片集成,是将系统关键部位集成 在一块芯片上;从广义角度讲,soc 是一个小型系统,是一个产 品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软 件的全部内容。soc 也有译为“系统芯片集成” ,意指它是一种技 术,用以实现从确定系统功能开始,到软硬件划分,并完成设计 的整个过程。 soc 是在单个芯片上集成一个完整的系统,对所有或部分必 要的电子电路进行包分组的技术。所谓完整的系统一般包括中央处 理器(cpu)、存储器、以及外围电路等。 soc 是与其它技术并行发 展的,如绝缘硅,它可以提供增强的时钟频率,从而降低微芯片的 功耗。 片上系统技术通常应用于小型的,日益复杂的客户电子设备。 例如,声音检测设备的片上系统是在单个芯片上为所有用户提供包 括音频接收端、模数转换器(adc) 、微处理器、必要的存储器以 及输入输出逻辑控制等设备。此外系统芯片还应用于单芯片无线产 品,诸如蓝牙设备,支持单芯片 wlan 和蜂窝电话解决方案。 2.2 本课题的研究内容 本课题内容是设计面向 soc 的 uart 接口控制器,具体来说 片上系统的 uart接口控制器 ip设计 - 4 - 是设计基于 nios ii 处理器系统的 uart 接口控制器并在 de2 开发 板上进行了验证。 2.3 论文结构 第一章为绪论 第二章介绍了背景,包括 uart、soc. 第三章介绍 uart 接口协议 第四章为 uart 接口控制器的设计与实现 第五章为测试验证 第六章为总结 片上系统的 uart接口控制器 ip设计 - 5 - 第三章 uart 接口协议 uart 主要由数据总线接口、控制逻辑、波特率发生器、发送 部分和接收部分等组成。uart 内部所实现的功能包括微处理器接 口、发送缓冲器、发送移位寄存器、帧产生、奇偶校验、数据接收 缓冲器、接收移位寄存器等。 3.1 帧格式 uart 一帧由起始位、数据位、校验位和停止位组成。数据逐 位传输,示意图如图 31 所示。异步串口通信协议作为 uart 的 一种,工作原理是将传输数据的每个字符一位接一位地传输。 其 中各位的意义如下: 图31 uart帧格式示意图 一、起始位 uart 空闲时(没有数据传输) ,总线为高电平(逻辑 1) ,当 需要数据传输时,首先发送一个“起始位” ,起始位为一个低电平 “逻辑 0”。 二、数据位(资料位) 如图 3-1 的“2.” 所示,紧挨着“起始位”的是数据位,它可以是 、5、6、7 或 8 位,收/发双方在数据开始传输前,需要对双方数 据位位数作一致的定义,否则会导致数据的传输错误;数据位的发 送采用低位(lsb)先发送。通常采用 ascii 码。从最低位开始传 送,靠时钟定位。 三、校验位 uart 的校验位紧挨着数据位,采用奇/偶位校验方式,数据 片上系统的 uart接口控制器 ip设计 - 6 - 位加上这一位后,使得“1”的位数应为偶数 (偶校验) 或奇数(奇校验), 以此来校验资料传送的正确性。在实际的应用中,校验位可以是奇 校验或者偶校验,也可以不包括校验位。结束位也不一定是 1 位, 还可以是 15 或者是 2。可有可无,是为了验证数据传输的安全 性而设置的,在收/发双方进行数据传输前要预设好是否需要校验 位,如果需要则是奇校验还是偶校验。如图 2-1 的“3.”所示。 奇偶校验是对数据进行逐位同或异或运算。如公式(1) 和公式(2)所示。 deven d7 d6d5 d4d3d2d1d0 公式 (1) dodd deven 公式(2) 如对 8 位数据 0x55(01010101b)作偶校验操作,得到的结果 为“0” ;作奇校验得到的结果为 “1”。简单而言,偶校验增加一位 “0”或 “1”,使数据位加上校验位后“1”的个数为偶数;而奇校验则 是使“1” 的个数为奇数。 如图 32 所示为奇偶校验 rtl(寄存器传输级)示意图。使 用移位寄存器进行逐位操作。当“load”为逻辑“1”时,加载移位寄 存器的数据和初始化校验结果寄存器为逻辑“0”;之后在“clk” 的 每个上升沿进行逐位“ 异或” 运算。 片上系统的 uart接口控制器 ip设计 - 7 - 图3-2 奇偶校验rtl示意图 四、停止位 uart 的帧以停止位作为停止标志,是在数据位(没有校验位) 和校验位(有校验位)之后发送 12 位的逻辑“1”。停止为可以为 1 位、1.5 位和 2 位。当发送完停止位之后,uart 总线进入空闲。 五、空闲位 空闲指 uart 总线上没有数据进行传输,表现为发送方输出 逻辑“1” ,在空闲时,接收方时刻监视 uart 总线上电平变化,当 发现起始化,则进入数据接收状态,直至接收完一帧数据,如果最 后没有检测到停止位,则标志帧错误。 六、波特率(baudrate) 波特率是衡量资料传送速率的指针,由于 uart 没有同步时 钟线,收/发双方如果需要进行正确的数据传输,则要在收/ 发双方 定义一致的位时钟,位时钟可以理解为 uart 总线一个位所占用 的时间,即“ 波特率” 。在定义上,收 /发双方的波特率可以是随意 的,只需要保持一致,如双方都是 1000bps,但是,这不能兼容现 有常用的设备,兼容性差。所以在工程应用中,常用一些特定的波 特率真,如 4800ps、9600bps 或 115200bps 等。 3.2 示例 因为 uart 的帧格式是可变,以下以几个示例,形象地描述 uart 的不同设置下的帧格式。 一、常用帧格式 如图 3-3 所示为 8 位数据位、无校验位、1 位停止位的帧格式 示意图,一帧共有 10 位。发送的数据为 0xa5。 片上系统的 uart接口控制器 ip设计 - 8 - 图33 常用帧格式 二、偶校验 如图 34 所示为 8 位数据位、偶校验、1 位停止位的帧格式 示意图。每帧共有 11 位。发送的数据为 0xa5,则偶校验结果为 “0”。当加个校验位后,可以看出, “1”的个数为偶数。 图34 带偶校验帧格式 三、奇校验 如图 35 所示为 8 位数据位、奇校验、1 位停止位的帧格式 示意图。每帧共有 11 位。发送的数据为 0xa5,则奇校验结果为 “1”。当加个校验位后,可以看出, “1”的个数为奇数。 图35 带奇校验帧格式 3.3 物理接口 uart 的物理接口可以是 rs-232、rs-485 和 irda 红外线等。 片上系统的 uart接口控制器 ip设计 - 9 - 其中 rs-232 是最为大家容易接触的,在 2006 年之前是大部分 pc 机的标准接口,早期电话线上网就是利用 rs-232 连接数 pc 机和 modem。 一、rs-232 连接器 rs-232 的连接器常用的是 db-9,其连接器示意图如图 3-6 所 示,为九针连接器。对于常用的简单应用,使用到的有三根线: rxd、 txd 和 gnd。 图36 db-9连接器示意图 实物图如图 37 所示。 图3-7 db-9实物图 片上系统的 uart接口控制器 ip设计 - 10 - 二、rs-232 电气特性 rs-232 规定说明了 rs-323c 标准对逻辑电平的定义。对于数 据(信息码):逻辑“1” (传号)的电平低于 -3v,逻辑“0” (空号) 的电平高于+3v;对于控制信号;接通状态( on)即信号有效的 电平高于+3v ,断开状态(off)即信号无效的电平低于-3v,也就是 当传输电平的绝对值大于 3v 时,电路可以有效地检查出来,介于- 3+3v 之间的电压无意义,低于-15v 或高于 +15v 的电压也认为 无意义,因此,实际工作时,应保证电平在(315)v 之间。 在 txd 和 rxd 上: 逻辑“1”为-3v-15v; 逻辑“0”为+3 15v。 在 rts、cts、dsr、dtr 和 dcd 等控制线上: 信号有效(接通,on 状态,正电压) +3v+15v ; 信号无效(断开,off 状态,负电压) -3v-15v 。 三、rs-232 电平转换电路 由于 rs-232 的电气特性和 mcu 等输出的电气特性不一致, 所以对于 ttl 电平的 mcu,使用 rs-232 连接器(如和 pc 机通信) ,需要使用电平转换电路,通常使用集成电路(ic)完成电平转换, 常用的 ic 有 max232 等,当然还有其它公司生产的 ic,如 sp232 等,常以 232 作为标识。 如图 38 所示,是使用 max232 作为转换 ic 的电路图。 片上系统的 uart接口控制器 ip设计 - 11 - 图38 电平转换电路 四、实际应用 rs-232 rs-232 在实际应用一般用于点对点的数据传输,当然在硬件 和软件上加上一些手段,可以用于多机通信,但应用不多。在通信 速率低于 20kb/s 时,rs-232c 所直接连接的最大物理距离为 15m。 rs-485 rs-485 在工业应用现场应用比较广泛,常使用单工通信组成 一主多从的通信网络,使用双绞线连接多台设备,使用差分信号传 输数据,所以抗共模干扰能力比 rs-232 强,共通信距离可以超过 1km。 第四章 uart 接口控制器的设计与实现 4.1 uart 接口控制器核(core)的设计与实现 uart 采用模块化、层次化的设计思想,全部设计都采用 verilog hdl 来实现,其组成框图如图 4 1 所示。整个 uart 由 串行数据发送模块、串行数据接收模块、接收和发送 fifo、总线 接口逻辑、寄存器和控制逻辑构成。串行发送模块的接收完成并 串及串并的转换;发送和接收 fifo 用于缓存发送和接收的数据; 总线逻辑用于连接 uart ip 内部总线和 lpc 模块接口;寄存器和 控制逻辑实现 uart 内部所有数据的收发、控制和状态寄存器、 内部中断的控制及波特率信号的产生等。总线接口单元主要完成寄 存器访问。因为总线是由 lpc 总线模块产生。在这里需要为 lpc 总线模块产生 lpc ack 信号。因为内部寄存器操作相当快,我们可 以让 lpc ack 在读写信号有效后下一时钟周期就有效,这样可以简 化设计。在 uart 中用到两个 fifo,一个发送 fifo,一个接收 fifo,均为 16 个字节深度,8 位宽。 片上系统的 uart接口控制器 ip设计 - 12 - 图41 uart的模块功能框图 异步传输方式指收发两端各自有相互独立的定位时钟,收方利 用数据本身来进行同步的传输方式。数据流按照一定的帧格式串行 发送,一个完整的数据帧由起始位、数据位、校验位、结束位构成, 完成一个字节(8 位) 数据的传输。 片上系统的 uart接口控制器 ip设计 - 13 - 图42 uart顶层框图 设计采用经典的自上以下的分层次结构 由图 42 uart 的顶层框图获知,本设计的 uart 分为以 下三个模块(module): 一、波特率发生器 divider 这个模块用于为 uart 的收/发器提供时钟,这个时钟为 uart 的波特率的 16 倍频,即如果波特率要求为 9600bps 时,该 模块输出的时钟为 9600hz16=153600hz。输出时钟需要可配置 (ubrrh、ubrrl) 。波特率的产生由一个 16 位的计数器来产生, 计数器的初值由波特率设置寄存器的值来决定,当计数器计数到 0 时产生一个 enable 信号,该信号的产生频率为波特率的 16 倍。 enable 信号被用来控制接收和发送模块状态机的运行。从而达到控 制发流数据位时间的目的。波特率发生器实现波特率的变换。利用 片上系统的 uart接口控制器 ip设计 - 14 - 外部时钟信号产生一个所需波特率 l6 倍的波特率时钟,用来控制 uart 的接收与发送。接收模块是用于接收串行信号,并将其转化 为并行数据;而发送模块则将准备输出的并行数据按照 uart 的 帧格式转化为串行数据输出。 波特率发生器实际上是一个分频器。主要是产生和rs-232 通信所采用的波特率同步的时钟。由于串行数据帧与接收数据时钟 是异步的,所以在 uart 的接收端在什么时刻将数据移入寄存 器怎样选择可靠的采样点是非常关键的。一般采用高速时钟对串 行数据采样是非常有效的方法。在实际设计中,一般最大选择 16 倍于波特率的时钟频率。实现波特率时钟的基本思路就是设计一个 计数器,该计数器工作在速度很高的系统时钟下,通过总线写入不 同的数值到波特率发生器保持寄存器中,然后用计数器的方式生成 所需要的各种波特率就能得到所需的波特率时钟. , clk rst_n f actor12-10 enable tick_out div ider inst2 图43 波特率发生器模块图 片上系统的 uart接口控制器 ip设计 - 15 - +a120b120 ader =a110b110 equal d qpre ena clr d ena qpre clr 0 1 0seldata datab out0 mux21 seldata datab out0 mux21 equal0 12 h000 - rcnt110 rplstick0 rcnt110 rcnt2312 clk rst_n tick_out enable factor110 add0 1 h1 - 13 h1ffd - rplstick 图44 波特率发生器电路图 波特率发生器代码 a l w a y s ( p o s e d g e c l k o r n e g e d g e r s t _ n ) b e g i n : d i v _ c n t i f ( r s t _ n ) b e g i n r c n t 控制器寄存器 input read_req; / 读请求 output 7:0 read_data; / avalon - 控制器寄存器, 三态输出 output int_o; / 中断信号 input rxd_xi; output txd_xo; output uart_clock; wire write_act,read_act; /determine if a vaild transaction was initiated assign write_act = chip_select assign read_act = chip_select * gpio 寄存器相对地址( 将和基地址结合寻址) parameter 2:0 udr = 3d0, / uart data register (udr) ucs= 3d1, / uart control / 调试信息 parameter rxc = 7, / 接收结束标记, txc = 6, / 发送结束标记 udre = 5 / 发送缓冲空, uart data register empty fe = 4, / 帧错误标记, frame error dor = 3, / 过速错误标记, data overrun upe = 2, / 检验错误, parity error u2x = 1, / uart 倍速设置 mpcm = 0; / mutli-process communication mod parameter rxcie = 7, / rx completed interrupt enable txcie = 6, / tx completed interrupt enable udrie = / uart data register interrupt enable rxen = 4, / rx enable txen = 3, / tx enable ucsz2 = 2, / uart char size2 rxb8 = 1, / rx bit8 txb8 = 0; / tx bit8 parameter umsel = 6, / uart mode select upm1 = 5, / uart parity mode upm0 = 4, 片上系统的 uart接口控制器 ip设计 - 47 - usbs = 3, / uart stop bits select ucsz1 = 2, ucsz0 = 1, ucpol = 0; * 内部寄存器列表 wire 7:0 wudr; reg 7:0 rudr;/- / ucsra/- wire 7:0 wucsra; / ucsrb wire 7:0 wucsrb; reg rrxcie, rtxcie, rudrie, rrxen, rtxen, rucsz2; / ucsrc wire 7:0 wucsrc; reg rupm1, rupm0, rusbs, rucsz1, rucsz0; wire 7:0 wubrrh; wire 7:0 wubrrl; reg 11:0 rubrr; reg 3:0 rcharsize; / 数据帧字节长,(58 个字节) 片上系统的 uart接口控制器 ip设计 - 48 - reg 7:0 rdatrdtmp; / uart 读缓冲 , 三态输出 reg ruartdatrden; / 标记正在读 uart 接收寄存器 reg rtxdoneclr; / 清除发送完成标记 reg rtxbufempty; / 发送缓冲空标记, 1表示空 wire wtxbufread; / 标记发送缓冲的数据已开始发送 wire wbaudtick; / 产生 uart 的时钟脉冲, 16x assign wucsraudre = rtxbufempty; assign wucsrau2x = 1b0; assign wucsrampcm = 1b0; assign wucsrbrxcie = rrxcie; assign wucsrbtxcie = rtxcie; assign wucsrbudrie = rudrie; assign wucsrbrxen = rrxen; assign wucsrbtxen = rtxen; assign wucsrbucsz2 = rucsz2; assign wucsrbrxb8 = 1b0; assign wucsrbtxb8 = 1b0; assign wucsrc7 = 1b0; assign wucsrcumsel = 1b0; assign wucsrcupm1 = rupm1; assign wucsrcupm0 = rupm0; assign wucsrcusbs = rusbs; assign wucsrcucsz1 = rucsz1; 片上系统的 uart接口控制器 ip设计 - 49 - assign wucsrcucsz0 = rucsz0; assign wucsrcucpol = 1b0; assign wubrrh7:0 = 4h0, rubrr11:8 assign wubrrl7:0 = rubrr7:0; wire 7:0 wrxdebuginfo; wire wuarten = rrxen | rtxen; / uart 使能线 , 启动波特率发生 /assign wrxdebuginfo = 8ha5; * 接收 ebi 外部总线上的数据 always (posedge clock or negedge reset_n) begin if (reset_n) begin rudr7:0 = 8h0; rrxcie = 1b0; rtxcie = 1b0; rudrie = 1b0; rrxen = 1b0; rtxen = 1b0; rucsz2 = 1b0; rupm1 = 1b0; rupm0 = 1b0; rusbs = 1b0; rucsz1 = 1b0; rucsz0 = 1b0; rubrr11:0 = 12h00; rtxbufempty = 1b1; end else begin rtxdoneclr = 1b0; 片上系统的 uart接口控制器 ip设计 - 50 - if (wtxbufread) begin rtxbufempty = 1b1; end if (write_act) begin case (address) udr: begin rudr7:0 = write_data7:0; rtxbufempty = 1b0; end ucsra: begin rtxdoneclr = write_datatxc; end ucsrb: begin rrxcie = write_datarxcie; rtxcie = write_datatxcie; rudrie = write_dataudrie; rrxen = write_datarxen; rtxen = write_datatxen; rucsz2 = write_dataucsz2; end ucsrc: begin rupm1 = write_dataupm1; rupm0 = write_dataupm0; rusbs = write_datausbs; rucsz1 = write_dataucsz1; rucsz0 = write_dataucsz0; end ubrrh: rubrr11:8 = write_data3:0 ubrrl: rubrr7:0 = write_data7:0 片上系统的 uart接口控制器 ip设计 - 51 - endcase end end end * 根据地址数据的寻址, 向数据总线发送被寻址寄存器的值, 空 闲时输出高阻, 即为三态输出 always ( read_act or address or wudr or wucsra or wucsrb or wucsrc or wubrrh or wubrrl or wrxdebuginfo ) begin if (read_act) begin ruartdatrden = 1b0; case (address) udr: begin rdatrdtmp = wudr; ruartdatrden = 1b1 / 标记 udr 寄存器的数据已被读出 end ucsra: rdatrdtmp = wucsra; ucsrb: rdatrd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论