PC机与CPLD通信问题的研究

2006-05-07 15:50:09来源: 互联网

通信的特点,简介上位机VB程序的编写;详述在EDA软件MAXPLUSII的环境下,利用AHDL语言,编写下位机程序。此设计具有波特率高、传输准确等优点,并下载到芯片通过硬件试验验证。

可编程逻辑器件 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的右上角),选择先送(收)串行数据最高位或最低位、数据宽度、停止位等。

    设计思想是利用状态机的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 =>

Count[]=count[];

END CASE;

CASE Ss IS --控制输入寄存器

WHEN idle =>

IF MSB_FIRST= =“YES”GENERATE

DTMP[]=D[];

ELSE GENERATE

FOR each_bit IN 0 TO WIDTH-1 GENERATE

DTMP[WINDTH-1-each_bit]=D[each_bit];

END GENERATE;

END GENERATE;

InShift[]=(1,0,DTMP[]);

WHEN send =>

InSift[WIDTH+1..1]=InShift[WIDTH..0];

InShift[0]=VCC;

WHEN OTHERS=>

InShift[]=InShift[];

END CASE;

图3为仿真波形,系统时钟CLK为6MHz,50分频后得到周期为868ns的时钟BAUD,即波特率为115 200 bps。设定为从高位到低位依次传送:起始位1位,低电平;8位数据位,1个停止位,为高电平。图3中显示分别传送十进制数20、21、22、23(即二进制数00010100 00010101 00010110 00010111)的情况,LOAD信号一直有效。可见,传送1个数据总共有10位,1个起始位、8个数据位、1个停止位。按照波特率115 200 bps,传送1个数据需要的时间为86.8μs。这个数度充分体现了CPLD的优势,比单片机MCU串行传输要快上10倍以上。如果上位机UART允许,这个速度还可以增大到接近MCU串行传输的100倍,即波特率为921 600 bps。

设计完成通过仿真以后,通过编程电磁将生成的pof文件用ISP(在线编程)方式下载到CPLD板EPM7128LC84-6,外接RS-232电平转换芯片HIN232CP。经过电平转换,CPLD和PC机接口通信,上位机用VB编写程序。试验证明,在高速情况下,通信正常。

关键字:pc机  通信  问题  研究

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200605/3069.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
pc机
通信
问题
研究

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved