当前位置:首页 > 工业控制 > 电子设计自动化
[导读]引言用CPLD(复杂可编程逻辑器件)设计乃至仿真、验证、利用ISP(在系统可编程)对硬件调试都非常方便,所以开发周期很短,且I/O口随意设定,故用CPLD设计专用芯片是大势所趋。VB是一种面向对象的高级语言,应用这的

引言

用CPLD(复杂可编程逻辑器件)设计乃至仿真、验证、利用ISP(在系统可编程)对硬件调试都非常方便,所以开发周期很短,且I/O口随意设定,故用CPLD设计专用芯片是大势所趋。VB是一种面向对象的高级语言,应用这的通信控件编写上位机的通信程序十分方便,过程简单。本文针对CPLD和PC通信的特点,各编写了上位机和下位机的程序,进行相对高速的串行通信。

1 上位机和下位机通信特点简介

根据串行通信的协议,发送串行数据一般是:1个起始位、n个数据位,1个或多个停止位。这样,发送起始位以后表明传输开始。传送与接收的双方设定好同样的传输位数,直到n个数据位送完以后,送停止位。上位机和下位机的电平标准不同,它们通过RS-232电平标准转换,在两者之间接入RS-232电平转换芯片即可。上位机和下位机的传输是异步传输,这样就需要有一个参考脉冲代表传输速度即波特率。通信双方取得一样的通信速度bps,指的是每一秒钟所传送的位数。现在仪器和工业场合,一般9 600 bps是最常见的速度,而现在个人计算机PC所提供的串行速度可 115 200bps(甚至921 600 bps)。因为常用的单片机MCU的软件是过程语言,以其作为下位机,无法提供这么高的波特率,即使是较低的波特率也可能产生误差。所以在传输距离较近而设备也可提供时,使用最高的传输速度也可以。CPLD的软件是非过程语言,也就是说其逻辑段定义的所有动作是同时进行的而不是串行的,所以完全可以提供这样的高速下位机UART(Universal Asynchronous Receiver Transmitter)。

2 上位机VB程序

上位机软件利用VB6编写。微软的VISUAL BASIC语言有极其友好的界面,深受广大编程人员的好评。其可视化特点得到了很好的发挥,其中的MSCOMM控件非常方便编写软件,将最低层的部分隐蔽,只要了解自己需要的参数即可顺序编写上位机软件。现在简介该控件的各项参数:

CommPort——指定串行口;

PortOpen——串口是否打开;

InPut——输入寄存器;

Output——输出寄存器;

InBufferSize——输入缓冲区大小;

OutBufferSize——输出缓冲区大小;

InputLen——一次由串行端口读入字符串长度或字节个数;

Settings——设备波特率、传输数据位、校验位、停止位;

InputMode——输入的是数据类型(文字形式或是二进制形式)。

上位机程序要和下位机配合起来。主要须考虑的问题是波特率、输入输出数据类型。对于从下位机到上位机输出数据的情况,可作以下处理(反之类似):

Settings 115200,n,8,1(波特率115 200bps,校验位默认,8位数据位,1个停止位)对于上位机,将输入的数据以二进制数形式获取要通过以下的转换:

Dim data() As Byte

Private Sub Timer1_Timer()

data()=MSComm1.Input

For i="LBound"(data)To UBound(data)

Text2.Text=data(i)

Next

End Sub

在串口打开的情况下,利用定时器定时从下位机获取数据,显示在窗口中。通过设置VB定时器控件的interval参数来控制读取时间。可见,上位机利用VB编写程序,十分方便,这是一种成熟的模块化语言,只要把参数给定,很快可以实现编程。

3 下位机通信程序编写

MAXPLUSII里有许多常用的宏单元,如计数器、四则运算、各类逻辑门乃至ROM、RAM等;而在这些宏单元里具体的参数都可以由用户来自行设定,这就是上面提到的IP核形式。由于CPLD数字设计中结构化设计的趋势,不同层次的IP(intellectual Property)核将出现。各个IP核可重复利用,大大提高了设计能力和效率,避免了重复劳动。以下设计的是下位机的IP核,它是一个波特率、起始位、停止位均可设定的宏单元。

MAXPLUSII的AHDL(Altera Hard ware Description Language)是Altera公司开发的完全集成于MAXPLUSII中的一种模块化高级语言,特别适合于描述复杂的组合逻辑、组运算、状态机和真值表。本文利用AHDL,直接生成IP核。

设计的最终目标是生成如图1所示的Symbol。其参数可以由用户设定(如图1的右上角),选择先送(收)串行数据最高位或最低位、数据宽度、停止位等。

Symbol

设计思想是利用状态机的3种状态send(receive)、wait、idle,系统时钟为输入的CLK,在这3种状态间变换。而BAUD为CLK分频后的波特率时间。发送时,当BAUD上升沿时,输出1位串行数据。输出全部结束时,BUSY端出现低电平信号,这时利用LOAD信号可以从D端读取并入的数据。由于使用的是AHDL,这种状态机实现起来非常方便,程序简洁明了。图2所示为状态机图。

状态机图


程序清单如下:

CASE Ss IS --状态机

WHEN idle =>

IF Load THEN

Ss=wait;

ELSE

Ss=idle;

END IF;

WHEN wait =>

IF Baud THEN

Ss=send;

ELSE

Ss=wait;

END IF;

WHEN send =>

IF count[]!=0 THEN

Ss=wait;

ELSE

Ss=idle;

END IF;

WHEN OTHERS =>

Ss=idle;

END CASE;

TxD=InShift[WIDTH+1]; --TXD串出

IF Ss!=idle THEN --控制BUSY

Busy=VCC;

END IF;

CASE Ss IS

WHEN idle =>

count[]=WIDTH+STOP_BITS; --等传送的位数

WHEN send =>

count[ ]=count[ ]-1;

WHEN OTHERS =>



参考文献:

[1].CPLDdatasheethttp://www.dzsc.com/datasheet/CPLD_1136600.html.
[2].RS-232datasheethttp://www.dzsc.com/datasheet/RS-232_584855.html.
[3].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.


来源:零八我的爱0次

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭