当前位置:首页 > EDA > 电子设计自动化
[导读]CPLD(Complex Programable Logic Device)是一种复杂的用户可编程逻辑器件。采用连续连接结构,延时可预测,从而使电路仿真更加准确。CPLD是标准的大规模集成电路产品,可用于各种数字逻辑系统的设计。开发工具Quart

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.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所示。

 


图6 数据下载

从实验结果可看到PC机每发送一个完整的15 Byte数据包,CPLD回复握手成功和数据校验正确,表明设计可行。

5 结束语

本文从工程设计实际出发,没有选取通用的UART芯片,通过分析异步通信中UART的结构特点,运用CPLD的丰富资源和一些工程技术制作了自定义通信数据包格式的串口通信模块。通过与PC机上数据传输程序联试,实现了信息的传输和人机互动,证明设计方案的正确。如今嵌入式技术应用十分广泛而且市场需求很广阔,PC机与嵌入式系统的通信实现了人机互动使系统功能更加强大。研究对增强嵌入式系统操作性有重要意义。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

正弦信号发生器是一种用于产生正弦波信号的电子设备,广泛应用于通信、测试和测量等领域。该发生器主要由两部分组成:正弦波信号发生器和调频、调相、键控等信号产生部分。

关键字: 正弦波信号发生器 CPLD

串行通信接口是一种数据传输方式,采用串行通信协议(Serial Communication Protocol)。它通过串行数据线(Serial Data Line)进行数据传输,通常使用标准的RS-232、RS-485或...

关键字: 串行通信 RS-232

上位机串口通信是指在上位机(通常是计算机或微控制器)与外部设备之间通过串行通信协议进行数据传输和通信的过程。在串口通信中,数据以位为单位按顺序传送,通常使用一个或两个物理线路(通常是两条线)来实现数据的发送和接收。

关键字: 上位机 串口通信

串口通信(Serial Communication)是一种常用的数据传输方式,它通过串行数据线逐位传输数据,具有成本低、简单易用、可靠性高等优点。在工业控制、通信设备、嵌入式系统等领域得到广泛应用。

关键字: 串口通信 嵌入式系统

串口通信是一种常见的通信方式,用于在不同设备之间传输数据。它通过串行数据线(通常是一对TXD和RXD线)在设备之间进行通信。串口通信具有简单、可靠、成本低等优点,因此在工业控制、嵌入式系统、数据采集等领域得到广泛应用。

关键字: 串口通信 串口编程

串口通信是一种常见的通信方式,主要应用于计算机和其他设备之间的数据传输。它的主要原理是利用串行数据传输的方式,将数据一位一位地按顺序传输,而不是同时传输所有的数据。下面我们来看看串口通信的主要原理以及如何提高其传输速度。

关键字: 串口通信 串口速度

异步串行通信是一种通信方式,其中字符或字节以一种串行的方式从一个设备传输到另一个设备。以下是异步串行通信的详细介绍:通信方式:在异步串行通信中,数据以字符为单位进行传输。每个字符都由起始位、数据位、奇偶校验位和停止位组成...

关键字: 异步串行通信 RS-232

串口通信是一种常见的通信方式,它通过串行方式传输数据。串口通信的原理相对简单,主要涉及到数据位的传输和接收。在串口通信中,数据按照一定的波特率(baud rate)逐位传输。通常,一个字节的数据由8位组成,所以传输一个字...

关键字: 串口通信 波特率

RS 232串口通信是一种常见的串行通信协议,广泛应用于计算机和其他设备之间的数据传输。它是由美国电子工业协会(EIA)制定的一种标准,规定了数据传输的物理层和部分数据链路层的规范。

关键字: RS 232 串口通信

虽然 USB 几乎完全取代那些旧电缆和连接器,但 UART 绝对不会成为过去。您会发现许多 DIY 电子项目都使用 UART。

关键字: UART 串口通信 USB
关闭
关闭