您的位置 首页 新能源

根据Verilog HDL的RS-232串口通讯在CPLD上的完成

为了实现PC机与CPLD的通信,进行了相应的研究。分析了RS-232C通信协议,自定义了数据包传输格式。根据UART模块工作状态多的特点,应用了有限状态机理论进行编程实现。为降低误码率,应用16倍频技

CPLD(Complex Programable Logic Device)是一种杂乱的用户可编程逻辑器件。选用接连衔接结构,延时可猜测,从而使电路仿真愈加精确。CPLD是标准的大规模集成电路产品,可用于各种数字逻辑体系的规划。开发工具Quartus II、ISE等功用强壮,编程言语灵敏多样,使规划开发缩短了周期。

跟着嵌入式的开展,对数据的传输和人机交互通讯的要求越来越高。而串口通讯因其资源耗费少、技能老练而被广泛运用。体系中上位机与嵌入式芯片之间的交互通讯能够经过专用集成芯片作为外设RS-232异步串行接口,如TI、EXAR、EPIC公司的550、452等系列UAWT集成电路,或在具有Nios体系的FPGA上能够便利地嵌入UART模块。但是在规划中用户会提出自己的要求,如:数据加密或只运用UART部分功用等,即要求更灵敏的UART。并且有时CPLD资源剩下,出于本钱考虑也会要求规划一种模仿的UART。关于上述的两种状况,就能够在CPLD其丰厚的资源上制造一款UART,完结PC机与嵌入式体系之间的数据交换。

1 串口通讯协议

1.1 UART简介

通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)。异步通讯的特色:不要求收发两边时钟的严厉共同,完结简单,设备开支较小。具有相关工业标准供给的标准的接口电平标准等长处,在工业操控范畴被广泛选用。

异步通讯一帧字符信息由4部分组成:开端位、数据位、奇偶校验位和中止位。
本规划依据RS-232的数据帧结构,设置数据帧结构如图1所示:1 bit开端位,8 bit数据位,1 bit中止位,无校验位。每帧实质上传送1 Byte数据。

1.2 自界说数据包格局

多个上文所描绘的帧就能够组成一个数据包。串口通讯是在RS-232数据帧结构的根底上界说的,传输以数据包为单位进行。包结构如图2所示。

本文选用和校验的结构,一个数据包包含15 Byte。其间第1个字节是数据包头即握手字符。第2字节为操控字符,EE代表写指令,DD代表读指令。第3至第14为可运用数据。第15字节作为校验字符,理论上应等于这个数据包中数据字符串之和的后8bit。

2 规划计划

2.1 UART的规划结构

笔者规划选用模块化规划,计划的UART首要由逻辑操控模块、波特率发生模块、发送模块和接纳模块等组成。波特率发生模块能够树立精确的时钟,确保数据采样精确、作业时序顺利。逻辑操控模块、波特率发生模块、发送模块和接纳模块完结作业有:承认数据开端位、数据收发,串并转化、树立握手衔接、判别指令、数据校验等功用。

2.2 状况图

运用串口通讯在数据交互进程中触及到了多种作业状况,状况比较多样,而运用程序规划中的有限状况机(FSM)理论进行编程规划,这个问题能够便利的处理。

有限状况机是由寄存器组和组合逻辑构成的硬件时序电路,有限状况机的状况(即由寄存器组各位的1和0的组合状况所构成的有限个状况)只能在同一时钟跳变沿的状况下才干从一个状况转向另一个状况。

本规划的有限个状况编码运用独热码方式,即寄存器组每一个bit位代表一种状况(如“0100”,“1000”为四态机中的两种状况),这种状况码的优点是避免了状况紊乱。状况机选用Mealy型有限状况机,这种状况机的下一个状况不光取决于各个输入值,还取决于当时地点状况,契合UART的作业原理。

逻辑操控模块、数据接纳模块和发送模块的规划都运用到了状况机,其间以逻辑状况机为主状况机,其他两个为从状况机。承认各种作业状况和作业流程后便可构建出状况图,便利直观地进行后续规划。

经过状况图能够便利、精确地得到程序规划框图如图4所示。

3 各模块规划

3.1 波特率发生器

串口通讯必需求设定波特率,本规划选用的波特率为9 600 bit/s。发生波特率的时钟频率是越高越好,这样才可发生较高且精确的波特率。规划选用50M主频率要发生9600bit/s波特率,每传送一位数据需求5 208.33个时钟周期。取一个最接近的数是5 208,则波特率为9 600.61,其差错约为0.006%,误码率很低能够确保通讯正常。

波特率发生器要处理的另一个要害性问题是确保精确地捕获开端位“0”。即时精确地捕获开端位不只决议通讯是否顺利开端,并且还影响后续的数据采样进程可靠地进行。计划采取了16分频的波特率发生器,即经过对50 M总时钟源分频,得到一个9 600×16 Hz的时钟进行数据传输,这样每16个时钟信号采样1 bit数据。在Rxd数据接纳端口接纳到从闲暇高电平“1”跳变为开端位低电平“0”信号后,接连8个分频周期承认是否是开端位。若是接连的低电平则捕获开端位,自此之后每16个时钟周期读取1 bit数据。这种办法不只确保了开端位的精确捕获,并且使数据采样点处于了数据的正中央确保了数据的精确。

3.2 接纳器

在波特率发生器捕获开端位并发动后,接纳器将开端作业。其首要作业是接纳每一位数据,将串行数据移位存入缓冲寄存器,并在接纳完一字节数据后将数据存入锁存器完结串并转化,一起宣布char_ok信号告诉逻辑操控模块一个字节的数据现已接纳结束。
接纳器的部分程序如下所示:

3.3 逻辑处理模块

逻辑处理模块是模仿UART的决议计划模块。它首要完结PC机与CPLD的握手、数据处理和数据校验、状况剖析与给收发模块供给决议计划。

PC机要向CPLD发数据时,先向串口发送FF,FF标明PC机要与CPLD树立联络。CPLD收到这个信息后,由逻辑模块的talk信号告诉发射模块握手状况,发送器经过串口给PC机反应信息,DD标明CPLD收到了PC机的要求并赞同树立联络,CC标明握手不成功PC机能够再次宣布恳求。握手成功后,PC机要向CPLD宣布指令字符,E1标明写,E2标明读。

随后进入数据接纳或发送状况,每个数据包接纳结束后逻辑处理模块进入下一状况——数据校验状况。依据上文说到的本规划的数据校验选用和校验,数据校验完后逻辑处理模块会依据校验成果给出信号check,告诉发送模块Txd发送反应信息给PC机。
逻辑操控模块的部分程序如下所示:

在逻辑接纳模块中的重点是握手环节,它表现了PC机与CPLD彼此对话的要害,后边两者的相互通讯都是依据此而树立的。运用上述思路规划的握手环节时序仿真如图5所示。

如图所示当char接纳寄存器经过Rxd接纳到一个字符信息后宣布char_ok信号,经逻辑操控模块得知是握手信息FF后,触发握手成功talk信号,并在下一时钟上升沿Txd从闲暇状况的高电平“1”变为开端位“0”预备发送反应信息给PC机。

3.4 发送器

发送器在接纳逻辑处理模块给出的指令后发送相应的数据给PC机。发送内容首要包含:数据正确或握手成功信息DD,暗示PC机持续下一步操作;数据重发或握手失利CC,暗示PC机从头发送数据;以及PC机欲从嵌入式体系中读出的数据。


4 试验验证

工程规划的某嵌入式体系要求PC机向CPLD发送数据。CPLD选用ATREL公司的MAX7000系列芯片EPM7128SLC84-15。芯片具有2 500个可运用门阵列、128个宏单元、8个逻辑阵列块、84个用户I/O接口。CPLD的IO操作电平是TTL电平,经过MAX232电平转化芯片将PC机串口电平转化为TTL电平,就树立起了串口通讯的电气根底。PC机上具有VC++编写的数据下载程序,波特率为9600 bit/s,每个数据帧含1位开端位,8位数据位,无校验位,1位中止位。通讯数据格局用上文说到的和校验数据格局,以数据包为单位发送,如图6所示。

从试验成果可看到PC机每发送一个完好的15 Byte数据包,CPLD回复握手成功和数据校验正确,标明规划可行。

5 结束语

本文从工程规划实践动身,没有选取通用的UART芯片,经过剖析异步通讯中UART的结构特色,运用CPLD的丰厚资源和一些工程技能制造了自界说通讯数据包格局的串口通讯模块。经过与PC机上数据传输程序联试,完结了信息的传输和人机互动,证明规划计划的正确。现在嵌入式技能运用非常广泛并且市场需求很宽广,PC机与嵌入式体系的通讯完结了人机互动使体系功用愈加强壮。研讨对增强嵌入式体系操作性有重要意义。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/195377.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部