片上系统的UART接口控制器IP设计毕业设计.doc

上传人:豆**** 文档编号:29919735 上传时间:2022-08-02 格式:DOC 页数:58 大小:3.30MB
返回 下载 相关 举报
片上系统的UART接口控制器IP设计毕业设计.doc_第1页
第1页 / 共58页
片上系统的UART接口控制器IP设计毕业设计.doc_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《片上系统的UART接口控制器IP设计毕业设计.doc》由会员分享,可在线阅读,更多相关《片上系统的UART接口控制器IP设计毕业设计.doc(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 毕业设计(论文)题目: 片上系统的UART接口控制器IP设计姓名 学号所在单位 指导教师完成日期 片上系统的UART接口控制器IP设计摘 要当代在通信和控制系统中,常使用UART (通用异步收发器)实现系统辅助信息的传输。 UART虽然通信速度不快,但是它具有电路简单,成本低,性能可靠,特别适合远距离数据传输等优点。因此,在许多对通信速度要求不高的场合,异步串行口还发挥着很重要的作用,被广泛的使用。而如今市场上的UART功能复杂,在应用只使用到它的几个基本功能,因而造成资源浪费,为此我们需要对UART的功能进行精简,方便使用,降低CPU的工作负担,提高了系统性能。关键词: UART 片上系统

2、 通信协议;AbstractContemporary 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 suitab

3、le 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

4、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第二章 背景22.1知识背景22.2 本课题的研究内容32.3 论文结构4第三章 UART接口协议53.1帧格式53.2 示例73.3 物理接口8第四章 UAR

5、T接口控制器的设计与实现114.1 UART接口控制器核(Core)的设计与实现114.2 UART顶层设计24第五章 测试验证325.1 基于quartus II的功能仿真测试325.2 基于FPGA的系统级测试34第六章 总结35致 谢37附 录38片上系统的UART接口控制器IP设计第一章 绪论当今社会,随着计算机的广泛应用,网络技术的快速发展和数字通信技术的日益普及,经常会采用串行通信方式来进行数据信息的交换传输。在串口通信中,数据的串行并行转换工作主要是由UART来实现。UART是当前较广泛使用的串行数据传输协议之一,它允许在串行链路上进行全双工通信,其应用范围遍及计算机外设、工业控

6、制等场合。现在专用的UART集成电路如8250、8251等既要考虑异步收发功能,又要兼容RS-232C接口设计等功能,比较复杂。而在实际应用中,往往只需要用到UART的几个基本功能,而使用专用芯片势必会造成资源的浪费以及设备成本的提高。所以我们可以将所需的UART功能集成到SOC内部,实现与其他SOC数字系统的直接通信,从而简化了整个系统电路,使系统更为灵活、紧凑,性能也更加稳定。UART16550采用通用的RS-232C串行接口标准,其实现较为简单,最少只需要2条导线即可实现基本通信。第二章 背景2.1知识背景一、UART概述及其发展UART:(Universal Asynchronous

7、Receiver/Transmitter),全称是通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,用于控制计算机与串行设备, 是实现设备之间低速数据通信的标准协议。通常集成在主板上,多数是16550AFN芯片。UART作为一种串口因可靠性高、传输距离远、线路简单、串口通信协议的简洁而广泛应用于串行数据通信电路。其基本原理是1个完整的数据在数据线上依次按比特位传送,虽然传输速率较低,但由于这种传输方式需要的数据线较少,只需用两根线就可以完成数据的收发(一根接收数据,一根发送数据),而且成本低廉,因此特别适合远距离数据传输。“异步”指不需要额外的时钟线进行数据的同步传输,是一种串

8、行总线接口。常用的标准通信波特率有9600bps、115200bps等。UART产生于上个世纪70年代,是第一块大规模集成电路。1981年的推出的IBM PC采用了8250 UART与外设进行数据通信,直到上个世纪末,UART一直是PC中最主要的串行通信接口。随着高速串行总线USB的出现,USB以其诸多的优点取代了UART成为个人电脑中应用最广泛的串行接口。 而在嵌入式领域,由于UART具有操作简单、工作可靠、抗干扰强、传输距离远(组成485网络可以传输1,200米以上),设计人员普遍认为UART是从CPU或微控制器向系统的其他部分传输数据的最佳方式,因此它们被大量地应用在工业、通信和家电控制

9、等嵌入式领域。通常MCU/CPU都会自带一个UART串口,但实际应用中一个串口往往不够用,需要进行UART串口扩展。 二、UART控制器UART控制器完成串行通信功能,控制器在内部总线的操作下,通过对寄存器的读写,完成如波特率设置、串并变换、FIFO控制、流控制及中断控制等,最终将需要发送的并行数据以一定的格式发送;同时也将外部输入的串口数据流按一定格式进行采集完成数据的接收。计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input Firs

10、t Output,先入先出队列)传送到串行设备,ykl若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。 三、SOC的基本概念SOC (系统级芯片System onChip),也有称片上系统,狭义的角度上讲,它是信息系统核心的芯片集成,是将系统关键部位集成在一块芯片上;从广义角度讲,SOC是一个小型系统,是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。SOC 也有译为“系统芯片集成”,意指它是一种技术,用以实现从确定系统功能开始,到软硬件划分,并完成设计的整个过程。SOC是在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。所

11、谓完整的系统一般包括中央处理器(CPU)、存储器、以及外围电路等。 SoC是与其它技术并行发展的,如绝缘硅,它可以提供增强的时钟频率,从而降低微芯片的功耗。 片上系统技术通常应用于小型的,日益复杂的客户电子设备。例如,声音检测设备的片上系统是在单个芯片上为所有用户提供包括音频接收端、模数转换器(ADC)、微处理器、必要的存储器以及输入输出逻辑控制等设备。此外系统芯片还应用于单芯片无线产品,诸如蓝牙设备,支持单芯片WLAN和蜂窝电话解决方案。 2.2 本课题的研究内容本课题内容是设计面向SOC的UART接口控制器,具体来说是设计基于Nios II处理器系统的UART接口控制器并在DE2开发板上进

12、行了验证。2.3 论文结构第一章为绪论第二章介绍了背景,包括UART、SOC.第三章介绍UART接口协议第四章为UART接口控制器的设计与实现第五章为测试验证第六章为总结第三章 UART接口协议UART主要由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。UART内部所实现的功能包括微处理器接口、发送缓冲器、发送移位寄存器、帧产生、奇偶校验、数据接收缓冲器、接收移位寄存器等。3.1帧格式UART一帧由起始位、数据位、校验位和停止位组成。数据逐位传输,示意图如图 31所示。异步串口通信协议作为UART的一种,工作原理是将传输数据的每个字符一位接一位地传输。 其中各位的意义如下:图

13、31 UART帧格式示意图一、起始位 UART空闲时(没有数据传输),总线为高电平(逻辑1),当需要数据传输时,首先发送一个“起始位”,起始位为一个低电平“逻辑0”。 二、数据位(资料位) 如图3-1的“2.”所示,紧挨着“起始位”的是数据位,它可以是、5、6、7或8位,收/发双方在数据开始传输前,需要对双方数据位位数作一致的定义,否则会导致数据的传输错误;数据位的发送采用低位(LSB)先发送。通常采用ASCII码。从最低位开始传送,靠时钟定位。三、校验位 UART的校验位紧挨着数据位,采用奇/偶位校验方式,数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料

14、传送的正确性。在实际的应用中,校验位可以是奇校验或者偶校验,也可以不包括校验位。结束位也不一定是1位,还可以是15或者是2。可有可无,是为了验证数据传输的安全性而设置的,在收/发双方进行数据传输前要预设好是否需要校验位,如果需要则是奇校验还是偶校验。如图2-1的“3.”所示。奇偶校验是对数据进行逐位同或异或运算。如公式(1)和公式(2)所示。DEVEN D7D6D5D4D3D2D1D0 公式(1) DODD DEVEN 公式(2) 如对8位数据0x55(01010101b)作偶校验操作,得到的结果为“0”;作奇校验得到的结果为“1”。简单而言,偶校验增加一位“0”或“1”,使数据位加上校验位后

15、“1”的个数为偶数;而奇校验则是使“1”的个数为奇数。如图 32所示为奇偶校验RTL(寄存器传输级)示意图。使用移位寄存器进行逐位操作。当“LOAD”为逻辑“1”时,加载移位寄存器的数据和初始化校验结果寄存器为逻辑“0”;之后在“CLK”的每个上升沿进行逐位“异或”运算。图3-2 奇偶校验RTL示意图四、停止位 UART的帧以停止位作为停止标志,是在数据位(没有校验位)和校验位(有校验位)之后发送12位的逻辑“1”。停止为可以为1位、1.5位和2位。当发送完停止位之后,UART总线进入空闲。五、空闲位空闲指UART总线上没有数据进行传输,表现为发送方输出逻辑“1”,在空闲时,接收方时刻监视UA

16、RT总线上电平变化,当发现起始化,则进入数据接收状态,直至接收完一帧数据,如果最后没有检测到停止位,则标志帧错误。六、波特率(Baudrate) 波特率是衡量资料传送速率的指针,由于UART没有同步时钟线,收/发双方如果需要进行正确的数据传输,则要在收/发双方定义一致的位时钟,位时钟可以理解为UART总线一个位所占用的时间,即“波特率”。在定义上,收/发双方的波特率可以是随意的,只需要保持一致,如双方都是1000bps,但是,这不能兼容现有常用的设备,兼容性差。所以在工程应用中,常用一些特定的波特率真,如4800ps、9600bps或115200bps等。3.2 示例因为UART的帧格式是可变

17、,以下以几个示例,形象地描述UART的不同设置下的帧格式。一、常用帧格式 如图3-3所示为8位数据位、无校验位、1位停止位的帧格式示意图,一帧共有10位。发送的数据为0xA5。图33 常用帧格式二、偶校验 如图34所示为8位数据位、偶校验、1位停止位的帧格式示意图。每帧共有11位。发送的数据为0xA5,则偶校验结果为“0”。当加个校验位后,可以看出,“1”的个数为偶数。图34 带偶校验帧格式三、奇校验 如图35所示为8位数据位、奇校验、1位停止位的帧格式示意图。每帧共有11位。发送的数据为0xA5,则奇校验结果为“1”。当加个校验位后,可以看出,“1”的个数为奇数。图35 带奇校验帧格式 3.

18、3 物理接口UART的物理接口可以是RS-232、RS-485和IrDA红外线等。其中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实物图二、RS-232电气特性RS-232规定说明了RS-323C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,

19、逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在(315)V之间。在TxD和RxD上: 􀁺 逻辑“1”为-3V-15V; 􀁺 逻辑“0”为+315V。 在RTS、CTS、DSR、DTR和DCD等控制线上: 􀁺 信号有效(接通,ON状态,正电压) +3V+15V ; 􀁺

20、 信号无效(断开,OFF状态,负电压) -3V-15V 。三、RS-232电平转换电路由于RS-232的电气特性和MCU等输出的电气特性不一致,所以对于TTL电平的MCU,使用RS-232连接器(如和PC机通信),需要使用电平转换电路,通常使用集成电路(IC)完成电平转换,常用的IC有MAX232等,当然还有其它公司生产的IC,如SP232等,常以232作为标识。如图 38所示,是使用MAX232作为转换IC的电路图。图38 电平转换电路四、实际应用 􀁺 RS-232 RS-232在实际应用一般用于点对点的数据传输,当然在硬件和软件上加上一些手段,可以用于多机通信,但应用不多

21、。在通信速率低于20kb/s时,RS-232C所直接连接的最大物理距离为15m。􀁺 RS-485 RS-485在工业应用现场应用比较广泛,常使用单工通信组成一主多从的通信网络,使用双绞线连接多台设备,使用差分信号传输数据,所以抗共模干扰能力比RS-232强,共通信距离可以超过1Km。第四章 UART接口控制器的设计与实现4.1 UART接口控制器核(Core)的设计与实现UART采用模块化、层次化的设计思想,全部设计都采用Verilog HDL来实现,其组成框图如图41所示。整个UART由串行数据发送模块、串行数据接收模块、接收和发送FIFO、总线接口逻辑、寄存器和控制逻辑构

22、成。串行发送模块的接收完成并串及串并的转换;发送和接收FIFO用于缓存发送和接收的数据;总线逻辑用于连接UART IP内部总线和LPC模块接口;寄存器和控制逻辑实现UART内部所有数据的收发、控制和状态寄存器、内部中断的控制及波特率信号的产生等。总线接口单元主要完成寄存器访问。因为总线是由LPC总线模块产生。在这里需要为LPC总线模块产生lpc ack信号。因为内部寄存器操作相当快,我们可以让lpc ack在读写信号有效后下一时钟周期就有效,这样可以简化设计。在UART中用到两个FIFO,一个发送FIFO,一个接收FIFO,均为16个字节深度,8位宽。图41 UART的模块功能框图异步传输方式

23、指收发两端各自有相互独立的定位时钟,收方利用数据本身来进行同步的传输方式。数据流按照一定的帧格式串行发送,一个完整的数据帧由起始位、数据位、校验位、结束位构成,完成一个字节(8位)数据的传输。 图42 UART顶层框图设计采用经典的自上以下的分层次结构由图42 UART的顶层框图获知,本设计的UART分为以下三个模块(module):一、波特率发生器divider 这个模块用于为UART的收/发器提供时钟,这个时钟为UART的波特率的16倍频,即如果波特率要求为9600bps时,该模块输出的时钟为9600Hz16=153600Hz。输出时钟需要可配置(UBRRH、UBRRL)。波特率的产生由一

24、个16位的计数器来产生,计数器的初值由波特率设置寄存器的值来决定,当计数器计数到0时产生一个enable信号,该信号的产生频率为波特率的16倍。enable信号被用来控制接收和发送模块状态机的运行。从而达到控制发流数据位时间的目的。波特率发生器实现波特率的变换。利用外部时钟信号产生一个所需波特率l6倍的波特率时钟,用来控制UART的接收与发送。接收模块是用于接收串行信号,并将其转化为并行数据;而发送模块则将准备输出的并行数据按照UART的帧格式转化为串行数据输出。波特率发生器实际上是一个分频器。主要是产生和RS-232通信所采用的波特率同步的时钟。由于串行数据帧与接收数据时钟是异步的,所以在U

25、ART的接收端在什么时刻将数据移入寄存器怎样选择可靠的采样点是非常关键的。一般采用高速时钟对串行数据采样是非常有效的方法。在实际设计中,一般最大选择16倍于波特率的时钟频率。实现波特率时钟的基本思路就是设计一个计数器,该计数器工作在速度很高的系统时钟下,通过总线写入不同的数值到波特率发生器保持寄存器中,然后用计数器的方式生成所需要的各种波特率就能得到所需的波特率时钟.,图43 波特率发生器模块图图44 波特率发生器电路图波特率发生器代码二、接收器rxd 接收模块是整个UART的设计的重点,其主要功能是检测数据的起始位,并对接收的数据进行串并转换,并将接收好的数据储存等待微机处理。由于串行数据帧

26、与接收数据时钟是异步的,接收功能实现的关键是接收器与每个接收字符同步。要保证异步通信的双方准确无误地交换信息,必须有效控制采集通信线路上的电平信号的时机。由异步串行通信的特点可知,接收同步是通过低电平起始位实现的。而为了保证采样的正确性,采样在数据位的中间进行,并且接收单元采样数据的频率与发送单元发送数据的频率相同,是波特率时钟周期的l6倍,这样可以有效地降低由于时钟不匹配而导致的误采样。接收模块的设计主要由状态机实现其核心功能,采用独热编码方式,虽然独热编码多用了两个触发器,但所用组合电路可节省一些使电路的速度和可靠性有显著提高161。控制接收器的起始停止位检测,接收数据的计数,移位寄存的功

27、能。接收器时刻监视UART总线的RXD线的电平,当检测到起始位,接收器启动接收状态机,根据寄存器(UCSRB、UCSRC)的设定,解析RXD线的电平,当完成一个字节接收,输出接收到的数据和线状态。接收器的设计主要是围绕“有限状态机”而进行。 图4-5 接收器模块图图4-6 接收器模块电路图 接收器部分代码串行数据接收器用于检测串行数据的开始位,并在特定的时刻将串行总线上的串行数据进行采样,同时对数据流的帧格式进行检查,最后将转换的并行数据输出。因为输入的串行数据信号与内部时钟是异步的,因此,串行信号实际是一个跨时钟域的信号,为了保证信号被可靠的采样并避免亚稳态情况,我们采用了比较稳妥的处理方法

28、,那就是对输入的外部串行数据信号进行了两次采样。采用以下verilog描述可以实现对输入信号的两次采样。always(posedge clk)beginsig_stagel:=siga;sig_out :sig_stagel;end同串行发送模块一样,我们采用有限状态机来描述整个串行数据的接收过程。按照接收串行数据的顺序,整个过程分为空闲状态(idle)、接收开始位状态(recstart)、接收准备状态(rec-prepare)、接收数据状态(recbit)、接收数据完毕状态(recend)、接收核验位状(rec_parity)、校验位计算状态(calc_parity)、校验位检查状态(che

29、ck_parity)、等待(wait)、接收停止位状态(rec_stop)、保存数据状态(push)。整个状态转移见下图。图47 串行数据接收状态转移外部复位使状态从idle开始。空闲状态(idle):在此状态,不断检测UART使能和串行输入信号的状态。如果串行输入信号出现由高到低的电平变化并且UART使能有效,则将采样计数器置为14,并进入下一状态(rex _start)。接收开始位状态(rex_start):在此状态,状态机等待7个时钟周期(也就是半个波特率的时间),然后重新对串行输入信号进行采样,如果仍为低,则认为收到的开始位有效,马上进入接收准备状态(rex) ;否则认为数据总线上先前

30、检测到的低电平为干扰,开始位无效,重新返回到空闲状态。接收准备状态(rex_prepare):在此状态中,根据LCR寄存器中的值算出即将接收的数据帧中数据位的个数,然后等待采样计数器被减至0,随即转入接收数据状态(rex_bit),同时将采样计数器再次置为14。接收数据状态(rec_bit):当采样计数器计到7时,接收串行数据线上的数据位,并放入移位寄存器中,并将数据位个数计数器减1。当采样计数器计到0时,立刻转入接收数据完毕状态(rex_end)。接收数据完毕状态(rex_end):在此状态中,如果判断到数据位数计数器已经为0,表明数据字已经接收完毕,这时要判断帧中是否有校验位,如果没有校验

31、位,那么接下来将会是停止位的接收(rex _stop);如果有核验位的话,下一状态将会是接收核验位状态(rex parity)。而如果发现数据位还没有接收完时,将会回到接收数据状态(rex bit)继续进行数据位的获取。接收校验位状态(rex_parity):在采样计数器计到7时开始对校验位进行获取。随后进入校验位计算状态(calc_parity)。校验位计算状态(calc):在该状态,将根据接收的数及检验位一起parity)进行检验各计算。随后进入校验位检查状态(check_parity)。校验位检查状态(check_parity):根据寄存器的核验位设置及接收数据的校验和来判断是否出现校验

32、错。随后进入等待(wait)状态。等待(wait):等待采样计数器被减到0。此时可以进入接收停止位状态(rec_stop)。接收停止位状态(rex_stop):仍然是在第7个采样时钟位置,对串行数据采样获得停止位,如果发现串行输入数据为0,那么停止位不正常,将把frame error信号置为有效。在采样时钟计为0时进入保存数据状态(push)。保存数据状态(push):在此状态中,将 push信号置为有效,同时将接收到的数据及状态位压入FIFO中。不过如果发现检测到是break状态,那么压入的数据将会是0。状态然后将再次回到空闲(idle)状态。完成一次数据帧的接收。三、发送器txd 发送模块

33、的设计相对简单。其功能是将要发送的并行数据转换成串行数据并且在输出的串行数据流中加入起始位和停止位。发送器首先将要发送的8位数据寄存,并在最低位后添加起始O在最高位前添加停止位l,组成10位要发送的数据然后根据UART内核模块的计数值将相应的数据送人移位寄存器输入端。UART内核模块输出的计数值是从0依次计到9。即先将要发送数据的最低位送人移位寄存器。发送器是监视EBI总线,当检测需要发送一个字节时,发送器启动发送状态机,同样时,发送器会根据寄存器(UCSRB、UCSRC)的设定,逐位往UART总线的TXD线发送数据。当发送完成一个字节,发送器输出发送状态。和接收器相似地,发送器的设计也是围绕

34、“有限状态机”而进行。 图4-8 发送模块图图4-9 发送模块电路图发送器部分代码串行数据发送模块将数据由并行数据按照一定的数据格式转换为串行数据流,并从串行总线输出。该部分设计采用有限状态机实现,分为空闲状态(idle)、取数据(pop_byte)、发送开始位(send_start)、发送数据(Send_byte)、发送核验位(Send_parity)、发送停止位(Send_stop)这六个状态。图410 发送状态迁移图串行发送状态转移空闲状态(idle):当所有数据(包括FIFO)都发送完毕后,状态进入该状态。在此状态中,一直检查发送FIFO中的数据个数,一旦FIFO中有数据后,马上进入下

35、一状态pop 。取数据(pop_byte):在此状态中,首先将发送FIFO的pop信号有效从FIFO中取出数据,同时根据LCR1:0的值来得到发送的数据位数。分别算出数据的奇偶校验值,然后转入下一状态(Send_start)。发送开始位(send_start):输入0并保持16个elk。发送数据(Send ):将数据每隔16个cll逐位发送到。发送过程中byte)TX还将根据LCR寄存器的值来得到将要发送的校验位。如果设置为不发送校验位,状态直接跳转到发送停止位(send_stop)。发送核验位(Send_parity) :输出校验位并保持16个clk。发送停止位(Send_stop):根据L

36、CR的值得到发送停止位的长度,输出1。该状态执行完成后,跳转到空闲状态开始下一个数据字符的发送。最后要说明的是,当LCR寄存器的break信号被置为有效后,所有的数据不应该被输出。4.2 UART顶层设计UART的顶层设计是使用和整合以上三个模块,以寄存器的方式接到EBI,控制收/发器模块。图4-11 UART顶层设计框图图412 UART电路图顶层主要是完成寄存器的实现,使FPGA配置的UART可以以外设方式接受单片机的监控。 一、奇偶校验位设计如前面的文字可以了解到,奇偶校验是对数据进行逐位同或异或运算。可以概括成如公式(1)和公式(2)所示。DEVEN D7D6D5D4D3D2D1D0

37、公式(1) DODD DEVEN 公式(2) 对于串行UART,数据是逐位传输,奇偶检验显得很简单,如图4-13所示为串行数据奇偶校验示意图,可以看出,只需要一个异或门和一个D触发器,D触发器用于寄存当前异结果,异或门监视串行数据,检测到下一个串行数据到来时,把这位的串行数据和D触发器寄存的结果作异或运算,D触发器再把这个异或结果寄存起来。图4-13 串行数据奇偶校验UART收/发器分别包含一个奇偶校验,发送器的奇偶校验用于对将要发送的数据产生检验值,发送到TXD线上;接收器的奇偶校验用于对接收的数据产生校验值,再和从RXD线上接收到的校验值比较,产生校验结果。代码实现请见源低码。 二、有限状

38、态机设计有限状态机Finite State Machine(FSM)的设计在FPGA设计中很经常用到,在本设计状态机也是采用常用的三步式结构更新状态机当前状态、判断状态机下一个状态和根据状态机当前状态决定输出。如程序清单 2.3(见附录)_为FMS三步式结构伪代码,本设计UART的接收器和发送器的状态机是按照这种代码结构编写。首先,先定义状态机的状态值和编码方式(如Gray、One-Hot等编码),按规范编写的状态机可以被综合器发现,可以在综合器选项中选择状态机的编码方式,所以代码中状态机的状态值设定不是太关键,综合器是会自动分配的状态机部分代码三、UART接收器设计UART接收器的框图如图4

39、-14所示。由框图看出,UART接收器的设计主要是围绕“接收状态机”进行。RXD线需经滤波器处理再进入状态机处理,同步时钟是有用于使UART接收器的波特率时钟和发送器同步,波特率计数器产生波特率,控制状态机的数据接收。整个接收器的工作由RXD线上的有效起始位启动。图414 UART接收器框图(1)总线电平滤波采样 由于使用环境的干扰等,RXD线可能出现毛刺,所示需要RXD的输入需经滤波处理,处理方法是在一位数据中间取三个点的电平值,少于2个点为电平“1”,则把该位判为电平“0”,否则判为电平“1”,这种方法称为“多数表决法”。如图 4-15所求为这种方法的原理和实现示意图,表 4.1所示为对应

40、的真值表。 图4-15 RXD滤波(多数表决)表41 RXD滤波真值表RXD线D8 D9 D10 输出0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 对RXD线上的滤波适用于起始位的检测、数据位接收、校验位接收和停止位的判别。(2)同步时钟 由于UART的收/发两个设备的时钟可以存在差异,如果接收器在接收时和发送器的时钟不同步,增加了传输错误的机率,所以,接收器需要在检测到起始位的起始边沿时,同步自身的时钟,这样将减小因双方时钟上的差异而导致数据传输错误的机率。该功能的实现是在接收器空闲时,当检测到RXD线的电平从

41、高到低的变化时,复位接收器的滤特率计数器,即滤特率计数器在检测到以上条件时才开始计数。(3)停止位处理 停止位是发送器明确告诉接收器一帧的结束,发送器发送完停止位后可以立即发送下一帧数据的起始位。如上小节所述,检测一位的电平是取中间三点电平作多数表决运算,这个法规同样对停止位的接收有效。如果多数表决为“0”电平,则置位“帧错误”标志位。但有别于其它位的接收,如图4-16所示,完成停止位的接收不是在一个波特位结束处,而是在取完三点电平作多数表决运算后立取结束停止位的接收,之后接收器马上重新监视RXD线电平的下降沿,开始检测下一帧的起始位。图416 接收器停止位处理停止位处理可以降低UART收/发

42、两个设备因时钟的不一致而导致的传输失败率。(4)奇偶校验处理 奇偶校验是用于标记状态寄存器的“校验错误”标志位。如4.2.1小节所述的奇偶校验设计,无论是否使能奇偶校验,接收器每接收到一个数据位就运算一次校验,完成数据位的接收后得到刚接收到数据的校验值,如果禁止了奇偶校验,这个校验值被放弃;如果使能了校验,这个校验值会和接发到的校验位作比较,根据比较结果标志相关的状态位。(5)接收器状态机 图4-17所示为接收器状态机的状态图,状态机的设计在4.2.2 小节已有所述,本模块的状态机是按照其结构编写。状态机在空闲状态时,RXD为高电平时,由状态图看出,空闲状态下,RXD的下降沿将启动状态机,这个

43、下降沿是UART通信协议的起始位。使用状态机处理接收,可以使设计思路清晰,有利于设计的维护和升级。 图4-17 接收器状态机(6)模块接口 接收器模块的接口定义如程序清单 4.2所示四、UART发送器设计发送器的设计相对接收器简单很多,因为发送器只需根据控制输入,往TXD逐位输出数据,在这里省去了发送器的设计过程,请自行参考源代码,代码设计和接收器相似。如程序清单 2.5所示为发送器模块接口。第五章 测试验证5.1 基于quartus II的功能仿真测试一、发送数据测试(一)往数据寄存器(UDR)写输入数据0xA5根据接口设计,数据寄存器UDR的内部地址是0,故操作时序为:内部寄存器地址add

44、ress = 0;写请求置高,即write_req = 1,数据线Write_data = A5,如下图所示。图5-1(二)发送数据线TX电平情况根据测试,当往数据寄存器定入数据后,如果控制器处于空闲状态,将立即发送该数据。数据是逐bit发送的,低位先发送(LSB),前一步中写入的数据是0xA5=0b10100101,故发送时比特流应为0b10100101,加上起始位(低电平)和停止位(高电平),共10位,最终比特流程为0b0101001011。下图为写入数据后的发送数据线txd_xo的波形仿真截图,从图中可以看到,UART控制器数据发送功能正确。图5-2二、接收数据测试(1)数据线RX接收比

45、特流0b0101011111在仿真波形文件上编辑数据线rxd_xi的电平值,包括1个起始位,8个数据位和1个停止位,如下图所示。图5-3(2)读取数据寄存器(UDR)当数据寄存器UDR接收到一帧数据后,中断线int_o将置高,以通知微控制器中断服务程序读取数据寄存器中的数据。UDR内部地址为0,故读取时序为:内部寄存器地址address = 0;写请求置高,即Read_req = 1。结果数据线read_data上给出了数据0xF5,如下图所示。图5-4分析,数据线rxd_xi上接收到的有效数据比特流为0b10101111,该比特流是低位在前,正常位序为0b11110101,即0xF5,说明U

46、ART控制顺数据接收功能正确。5.2 基于FPGA的系统级测试第六章 总结随着电子技术的日新月异,电子设备向着小型化、低功耗方向发展。本文以某手持设备接口板开发为契机,结合实际需求,通过了解和学习最新的电子技术与设计手段,提出了不同于传统的采用ASIC芯片实现的方案,也就是采用SOC来实现UART控制器的设计。UART是一款比较有代表的串行通信接口。文中介绍了UART通信协议及程序设计过程。SOC作为可编程器件,具有硬件电路简洁、系统灵活性高的特点。这种方式实现的串行通信可以在保证了系统的功能性的同时使系统硬件更加简洁,从而降低系统功耗和成本。论文采用业界流行的Verilog HDL语言,按照自顶而下的设计流程完成了UART内部各模块的设计和仿真。在后期,在实物开发平台上进行了的设计验证,结果证实了该方案能够完成扩展UART的功能,并且能够拥有更小的体积,消耗更少的能量,非常适合手持设备的应用。随着IP核的不断积累和成熟以及SOC芯片工艺的提高,它的设计灵活性、低功耗、高度集成性等优势会越来越明显,必将成为一种主流的设计方法得到广泛的应用。参考文献1 Nios II Processor Reference Handbook. Altera Corporation.2006,102 Nios II Softwar

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com