远程终端中通信控制卡的设计与实现

| 收藏本文 下载本文 作者:丑丑BABY

以下是小编帮大家整理的远程终端中通信控制卡的设计与实现(共含8篇),欢迎大家分享。同时,但愿您也能像本文投稿人“丑丑BABY”一样,积极向本站投稿分享好文章。

远程终端中通信控制卡的设计与实现

篇1:远程终端中通信控制卡的设计与实现

远程终端中通信控制卡的设计与实现

摘要:介绍了一种多台单片机与PC机通信的方法,给出了通过一块通信控制卡来实现与多台单片机的实时通信,并将数据上传给上位机以提高通信可靠性和效率的设计方法,同时给出了该通信控制卡的硬件接口电路和软件设计框图。

关键词:单片机;智能模块;串口通信

1概述

PC机与多台单片机构成小型的分布式测控系统已在工业控制、生产管理中得到了广泛的应用。在这类应用系统中,PC机多作为上位机通过直接查询来控制各从机。由于PC机本身还要进行动态数据显示、数据库实时录入、越限报警、报表打印等任务,因此,当从机数目过多时,上位机频繁地响应从机的中断,并在一定时间内等待和接收数据?这极大地影响了PC机的工作效率。为了提高上位机的工作效率,笔者在PC机与各个智能模块间增加了一块用AT89C51作为微控制器的通信控制卡。整个系统构成一个3级分级控制系统,通信控制卡位于中间层,它是系统控制、管理的中枢。

2通信控制卡硬件电路

在本系统中,通信控制卡采用查询方式对下位机的各智能模块进行查询,该智能模块由AT89C51控制的电量、温度、液位、开关量采集板构成,它们分别可独立完成各自的数据采集和处理任务。当处于被查询状态时,系统可采用中断方式与通信卡进行通信。通信卡依次为人机完成各种数据处理任务提供各种数据和控制命令,然后把它们统一打包上传给上位机,从而使上位机可以对其进行显示、加工和处理,并形成各种报表。

该系统的硬件接口电路如图1所示。其中控制卡的核心芯片是AT89C51,它利用本身自带的串口与各智能模块间通过多机通信方式3进行总线式多机通信。为了同时能与PC进行通信,另一端通过8251A的.扩展串口与PC相连。即要求8251A芯片的接收数据线RXD(脚3)及发送数据线TXD(脚19)通过MAX232与PC相连?这是因为电平转换器8251A的输入、输出均为TTL电平,而通过电平转换器可将TTL电平转换成RS232C标准电平以便与PC进行通信。

8251A芯片的时钟输入线CLK可为其提供定时信号。在异步方式时,CLK的频率至少应大于8251A内接收器或发送器输入频率的4.5倍。其引脚RXC(脚25)为接收器时钟,它的作用是控制字符的发送速率,其时钟可使用8253产生的合适时钟频率。在异步方式中,引脚RXC和TXC(即接收、发送时钟)为波特率的16倍。该控制卡中扩展的8kBRAM可分别开辟4个不同的存储电量采集板的数据,处理时可以将它们一起送到PC。

3软件系统设计

3.1通信协议

通信控制卡的AT89C51串口与各智能模块的通信按自定义的通信协议进行。过程如下:

(1)首先使所有从机SM2位置1,以使其处于只接收地址帧的状态。

(2)控制卡先发一地址信息,其中8位为地址,第9位为地址/数据信息的标志位,该位为1表示该帧为地址信息。

(3)从机接收到地址帧后,会将其接收的地址与本从机的地址相比较。对于地址相符的从机,可置SM2=0,以接收主机随后发来的所有信息;而对于地址不相符的从机,则置SM2=1,以继续执行采集任务和其它任务。

(4)当从机发送数据结束后,会发送一帧校验和,并将第9位(TB8)置为1,以作为从机数据传送结束标志。

(5)控制卡接受数据时,先判断数据结束标志(RB8),若RB8=1,且校验正确,则回送正确信号00H,此信号可令该从机复位以重新采集数据,等待地址帧。若校验和出错,则送0FFH,以令该机重发数据,如果重发5次还不行,则认为失败,并转入其它地址。若接收帧的RB8=0,则将原数据锁定到缓冲区,并准备接收下帧信息。

(6)从机接收到复位命令后,再回到监听地址状态(SM2=1)。

3.2程序框图

设主机发送的地址信号01H、02H、03H为从机设备地址,地址FFH是命令各从机恢复SM2为1的状态信号,即复位。从机的命令编码为:

01H―请求从机接收通信卡的数据命令;

02H―请求从机向通信

控制卡发送数据;其它均按从机向通信卡发数据处理。

从机的状态字节格式如图2所示。其中TRDY为1表示从机已准备好接收通信卡的数据(见图2中D1位);RRDY为1表示从机准备好向通信卡发送数据(见图2中D0位);而ERR=1则表示从机接收到的命令是错误的(图2中D7位)。

该通信控制卡与各智能模块均采用12MHz晶振,它们之间的波特率为4800bps,采用定时器T1的工作方式2,这样,当TL1计满时,TH1将自动送数给TL1。当波特率为4800bps时,TH1=TL1=0xf3。而通信卡与PC间的波特率为9600bps,故可用产生的脉冲8分频后送到8253。8253工作在方式3,它产生的周期性方波送给8251A的TXC、RXC,可作为波特率发生器。用C51实现的通信卡和从机的程序流程图如图3和如图4所示。该通信卡采用查询方式,从机采用中断方式进行相互通信,并采用校验方式进行数据校验,然后将数据打包,上传给上位PC。

本设计已用于铁路调度监督系统远程终端单元中的控制信息采集板和开关量采集板,以及铁路微机联锁系统中的上位机控制和模拟屏动态实时显示等方面。整个系统实际运行良好,可靠性高,系统性能得到很大的改善

篇2:基于OMAPl510双核架构的移动多媒体通信终端的设计与实现

基于OMAPl510双核架构的移动多媒体通信终端的设计与实现

摘要:介绍了美国TI公司提供的开放式多媒体平台的软硬件架构,结合移动多媒体通信终端双核处理器OMAP1510的特点,详细阐述OMAP1510在第三代移动通信网络中的典型应用及相关协议分析。

关键词:多媒体终端 0MAP 移动通信 3G网络

第三代(3G)无线通信技术将为蜂窝通信系统和个人通信系统提供真正意义上的宽带服务,服务商将提供更高水准的无线多媒体服务,包括数据、音频、视频和语音服务等。为了充分挖掘3G的多媒体通信潜力,系统开发者需要一种新型的软件和硬件技术。较目前而言,硬件平台必须具有高性能,低功耗,高集成度等特点。由于它必须符合多媒体、移动操作系统和终端用户等标准,还必须符合较大范围的变化,因此编程必须具有较大的灵活性。

移动通信的发展对数字信号处理器提出了越来越高的要求,传统的DSP芯片已不能胜任。为了满足移动通信和多媒体领域新应用的需要,德州仪器公司提出了开放式多媒体应用平台OMAP(Open Multimedia Applications Platform)体系结构,并为此设计了OMAP芯片。它采用一种独特的双核结构,把高性能低功耗的DSP核与控制性能强的ARM微处理器结合起来,成为一颗高度整合性SoC。它是一种开放式的、可编程的基于DSP的体系结构。由于OMAP先进独特的结构,其芯片运算处理能力强、功耗低,在移动通信和多媒体信号处理方面具有明显优势。

图1

移动通信市场不断增长,无线因特网的应用越来越多,分离的终端逐步合并为单一的多媒体终端设备。包括MPEG4、TTS、因特网音频、视频会议等新的应用需要功能更强、功耗更低的处理器。OMAP芯片完全满足这些新应用的要求。此外,OMAP开放的体系结构使第三方开发者容易开发出新的无线多媒体应用软件。OMAP在移动通信与多媒体信号处理方面的技术优势使OMAP芯片非常适合应用于第三代手机、无线数字助理、未来掌上电脑等领域。

TI公司当前提供多种OMAP平台,其中包括OMAP1510双核架构处理器。OMAP1510为3G多媒体无线设备的开发提供了极好的平台。

1 OMAP1510硬件构架

OMAP的硬件构架主要由DSP核、ARM核以及业务控制器(Traffic Controller)组成。这三部分可以独立进行时钟管理,有效地控制功耗,如图1所示。TI增强型ARM925核是ARM RISC体系结构的先进代表,工作主频为175MHz。它包括存储器管理单元、16K字节的高速指令缓冲存储器、8K字节的数据高速缓冲存储器和17个字的写缓冲器。片内有1.5MB的内部SRAM,为液晶显示等应用提供大量的数据和代码存储空间。它有13个内部中断和19个外部中断,采用两级中断管理。此外,核内还有ARM CP15协处理器和保护模块。C55x DSP核具有最佳的功耗性能比,工作主频为200MHz。它采用了三项关键的革新技术:增大的空闲省电区域、变长指令、扩大的并行机制。其结构对于多媒体应用高度优化,适合低功耗的实时语音图像处理。C55xDSP核增加了处理运动估计、离散余弦变换、离散余弦反变换和1/2像素插值的硬件加速器,降低了视频处理的功耗。C55x DSP核内部有32K字的双存取SRAM,48K字的单存取SRAM和12K字的高速指令缓存。此外,核内还包含存储器管理单元、两级中断管理器和直接存储器访问单元。OMAPl510芯片具有丰富的外围接口,如:液晶控制器、存储器、摄像机、空中、蓝牙、通用异步收发器、I2C主机、脉宽音频发生器、串行、主客户机USB、安全数字多媒体卡控制器、键盘等接口。这些丰富的外围接口,使OMAP1510特别适用于第三代移动通信系统。

图2

2 OMAP1510软件构架

OMAP的软件结构建立在两个操作系统上:一是基于ARM的操作系统,如Windows CE、Linux等;二是基于DSP的DSP/BIOS。连接两个操作系统所使用的核心技术是DSP/BIOS桥。它是实现和使用OMAP的关键。对于软件开发者来说,DSP/BIOS桥提供了一种使用DSP的无缝接口,允许开发者在GPP(通用处理器,包括ARM)上使用标准应用编程接口,访问并控制DSP的运行环境。利用TI公司的Code Composer Studio集成开发环境,从开发者的角度来看,OMAP好像仅用GPP处理器就完成了所有处理功能。这样,开发者就不需要为两种处理器分别编程,这使编程工作大为简化。在OMAP体系结构下,开发者可以像对待单个GPP那样对OMAP的双处理器平台进行编程。

OMAP1510支持多种实时多任务操作系统在ARM925微处理器上工作,用来对ARM925微处理器进行实时多任务调度管理,对DSP C55x进行控制和通信,同时也支持多种实时多任务操作系统在DSP C55x上工作,实现复杂的多媒体信号处理。DSP/BIOS桥包含DSP管理器,DSP管理服务器,RAM、DSP和外围接口链接驱动。DSP/BIOS桥提供运行在ARM925上的应用程序和运行在DSP C55x上的算法之间的通信管理服务。开发者可以利用该桥中的应用编程接口,控制DSP中实时任务的执行,并与DSP交换任务运行结果和状态消息。在这个环境下,开发者可以调用局部DSP网关组件完成诸如视频、音频和语音等功能。因此,开发者不需要了解DSP和该桥就能开发新的应用软件,如图2所示。

开发多媒体应用程序时,可以通过标准的多媒体应用编程接口(MM API),使用多媒体引擎,方便了应用程序的开发;多媒体引擎对相关的DSP任务通过DSP应用编程接口(DSP APl)使用DSP/BIOS桥;最后由DSP/BIOS桥对数据、I/O流和DSP

任务控制进行协调。如图3所示。

图3

3 双核通信方式

OMAP的软件平台独立于硬件平台,如何使两个操作系统无缝工作,是实现开放的软件平台的关键。其核心技术就是正式应用OMAP平台上的DSP/BIOS桥。

DSP/BIOS桥用于连接DSP和其他通用处理器(GPP)上的OS。GPP在OMAP里是ARM,还可以是MIPS(Microprocessor without Interlocked Pipe Stage)等。DSP/BIOS桥用于非对称的、由一个通用处理器(GPP)和一个或多个DSP组成的多处理器环境。DSP/BIOS桥作为GPP OS和DSP OS的软件组合,把两个操作系统连接在一起。这种连接能够使GPP端的客户与DSP上的任务交换信息和数据。连接分为两种类型:消息子连接和数据流子连接。每种子连接都按顺序传递消息,哪个消息先到消息链,哪个消息就先被传递;同样哪个数据流先到数据流链,哪个数据流就先被传递。每个子连接都独立地进行操作,例如:GPP先发送数据流,然后发送消息;如果消息有高优先级,那么消息比数据流先到DSP。

DSP任务通常用消息对象传送控制和状态信息,用数据流对象传送高效实时数据流。图4表示GPP客户端程序和DSP任务间的关系。

(本网网收集整理)

4 典型应用

4.1 多媒体终端硬件方案

基于OMAP1510的3G移动多媒体终端的硬件结构方案如图5所示。其中3G移动电话卡实现基于3G无线传输技术(RTT)规范的空中接口功能,包括射频模块和基带处理模块以及相应的物理层软件。本方案采用CDMA技术规范。3G移动电话卡与OMAP1510的接口可通过TI外设总线接口实现。

4.2 基于CDMA2000的协议软件设计方案

CDMA2000的实现分为CDMA 2000-1X和CDMA2000-3X两个阶段。前者的数据速率为144kbps,后者的移动车载用户达到144kbps,移动步行用户可达到384kbps,室内固定用户达到2Mbps,可实现无线因特网接人、会议电视等高速多媒体分组数据业务和话音业务。下面主要介绍移动多媒体终端的'协议软件结构。

终端协议结构由两部分组成:是信令协议栈和应用业务协议栈。基于CDMA2000的3G移动多媒体终端的协议软件结构如图6所示。

CDMA2000的信令协议栈包括高层信令层、数据链路层(分成LAC子层和MAC子层)以及物理层。其中高层信令层主要描述了信令结构、安全认证、信令控制和应用、消息格式等;LAC子层提供信令传输的可靠性保证,包括鉴权、ARQ、功用、分割重装等;MAC子层完成逻辑信道业务的复分接以及QoS控制等功能;物理层实现数据编解码和调制解调等物理信道的处理。

应用业务协议栈包括多媒体视频/音频编解码器、实时传输协议(RTP)、呼叫控制信令协议、TCP/IP、PPP等。3G移动通信系统中的多媒体应用基于IP分组数据交换,多媒体会话的呼叫控制管理由一套信令协议集完成。常用的有两种:H.323(基于分组的多媒体通信系统)和SIP(会话发起协议)。图6中给出的H.323是目前应用比较广泛的信令协议集,其中视频编解码器采用H.263标准,音频编解码器采用G.723标准。RTP及其配对协议RTCP提供对等多媒体应用层相关信息,而UDP协议可减少实时多媒体流的传输延迟。H.225.0和H.245协议分别是H.323的呼叫控制协议,运行在TCP协议上。

移动多媒体终端软件的另一重要组成部分是嵌入式操作系统。目前比较流行的嵌入式主流操作系统有VxWorks、WinCE、Linux等,其中Linux为开放源代码,成本低且开发潜力大,支持ARM、PowerPC、x86等多种处理器。因此,本方案采用嵌入式Linux操作系统。嵌入式Linux操作系统可自主开发,也可购买商用成熟的产品,如μC Linux等。

移动多媒体业务是第三代移动通信系统的主要特征,因此研制具备多媒体功能的3G移动终端,选择好平台是关键。OMAP1510以开放式软件体系结构、双CPU硬件通道为其设计特点,对开发者而言,它易于编程、集成化。随着将来3G业务市场的形成和成熟,对3G移动多媒体终端的需求相信会越来越大。本文结合作为3G无线传输技术规范之一的CDMA2000,探讨了基于OMAP1510的3G移动多媒体终端的实现方案。该终端实现方案经过有关科研项目的验证,具有很高的可行性。

篇3:实时通信在调车作业中的设计与实现

实时通信在调车作业中的设计与实现

调车作业中普遍采用了无线平面凋车设备,配合逐渐推广的计算机联锁系统,使调车作业在进路间和进路内的'安全保障进一步提高.但受到站内轨道电路的制约,加上地面调车信号与机车监控装置无法联锁,实际调车做业仍依靠司乘人员确认地面信号,导致调车机车“冲、挤、脱”以及冒进事故时有发生.

作 者:窦东东 张瑜 贾秀敏 Dou Dongdong Zhang Yu Jia Xiumin  作者单位:郑州铁路局长治北车站,450000,山西长冶 刊 名:铁道通信信号 英文刊名:RAILWAY SIGNALLING & COMMUNICATION 年,卷(期): 45(2) 分类号:U2 关键词: 

篇4:金刚石合成控制系统中多串口通信技术的设计与实现

金刚石合成控制系统中多串口通信技术的设计与实现

摘要:通过多串口通信技术在金刚石合成控制系统中的应用,讨论了32位Windows操作系统下,VC多串口通信技术的设计与实现方法,并运用面向对象方法和多线程技术设计了一个比较完善的串口通信类。阐述了用VC开发上位机与PLC之间的串口通信程序设计方法和实现技术。

关键词:串口通信;面向对象方法;多线程;PLC

1引言

传统的金刚石合成机控制系统是由一个PLC和一个可显示终端构成。这种传统的控制系统一般具有如下缺点:

(1)系统所有的工作都由PLC完成,其控制精度较差,致使合成的金刚石质量较差;

(2)显示终端的平面尺寸过小,这一方面使得操作人员观察系统的状态很不方便,另一方面?也常常会引起误操作;

(3)金刚石合成工艺复杂,需控制的参数很多,但原控制系统不能对参数进行保存,这样在根据不同产品和工艺要求对部分参数进行调整时,每次都必须重新设置所有的参数,操作非常麻烦;

(4)界面不友好;

(5)不能通过控制系统自动考核操作人员的工作质量。

为了提高控制精度、方便操作,开发新的控制系统迫在眉睫。笔者针对以上问题,将IPC与PLC有机结合在一起,开发了一套新的控制系统。通过该系统可在上位机(IPC)和PLC之间通过RS-232与RS-485进行大量串口通信。

2VC串口通信分析

在32位Windows系统下使用VC开发串口通信程序通常有如下4种方法:

(1)使用Microsoft公司提供的名为MSCOMM的通信控件;

(2)直接使用Windows应用程序接口(API);

(3)自行设计一个串口通信类;

(4)通过开发一个ActiveX控件来实现串口通信功能。

在上述几种方法中,实际上还是使用WindowsAPI函数,然后把串口通信的细节给封装起来,同时提供给用户几个简单的接口函数。上述几种方法各有优缺点,但在实际情况下,大多数编程人员喜欢使用API函数自行设计串口通信类。

用WindowsAPI函数进行串口通信的编程流程如图1所示。其中打开串口是确定串口号与串口的打开方式;初始化串口用于配置通讯的波特率、每字节位数、校验位、停止位和读写超时等;读写串口用于向串口进行发送数据和从串口接收数据;关闭串口用于将串口关闭并释放串口资源(Windows系统下串口是系统资源)。

由于绝大多数控制系统中串口通信是比较费时的,而且监控系统还要进行数据处理和显示等,所以一般采用多线程技术,并用AfxBeginThread函数创建辅助线程来管理串口通信,这样,主进程就能在进行串口读写的同时,处理数据并完成用户指令的响应,但是设计时一定要处理好数据的共享问题。

串口读写既可以选择同步、异步方式,也可以选择查询、定时读写和事件驱动方式。由于同步方式容易造成线程阻塞,所以一般采用异步方式;而查询方式要占用大量的CPU时间,所以一般采用定时读写或者事件驱动方式,事件驱动方式相关文献较多,故此重点讨论定时读写方式。定时读写方式就是上位机向下位机发送固定格式的数据,在下位机收到后向上位机返回状态信息数据。由于数据的传输需要时间,所有上位机发送数据后就调用_sleep()函数进行休眠,休眠的时间可根据需要进行不同的设置。这样,可以节省CPU时间,以使系统能够很好地进行监控工作和处理其它事务。

3VC串口通信的设计与实现

笔者在Windows系统下,采用面向对象的方法和多线程技术,并使用VisualC6.0作为编程工具开发了一个通用串口通信类CSerialPort,该CSerialPort类封装了串口通信的基本数据和方法,下面给出CSerialPort类的简单介绍。

CSerialPort类头文件中的主要成员变量和成员函数如下:

ClassCSerialPort

{

private:

HANDELm_hPort;

DCBm_Dcb;

COMMTIMEOUTSm_TimeOuts;

DWORDm_Error;

Public:

CSerialPort;??//构造函数

virtual~CSerialPort();??//析构函数

//InitPort()函数实现初始化串口

BOOLInitPort(

char*str=“com1”,

UINTBaudRate=9600,

UINTParity=0,

UINTByteSize=8,

UINTStopBits=1,

UINTReadMultiplier=0,

UINTReadConstant=0,

UINTWriteMultiplier=10,

UINTWriteConstant=1000);

DCBGetDCB();?//获得DCB参数

//SetDCB()函数实现设置DCB参数

BOOLSetDCB(

UINTBaudRate=9600,

UINTParity=0,

UNITByteSize=8,

UINTStopBits=1);

//GetTimeOuts()函数获得超时参数

COMMTIMEOUTSGetTimeOuts();

//SetTimeOuts()函数设置超时参数

BOOLSetTimeOuts(

UINTReadMultiplier=0,

UINTReadConstant=0,

UINTWriteMultiplier=10,

UINTWriteConstant=1000);

//WritePort()函数实现写串口操作

voidWritePort(HANDLEport,CString);

CStringReadPort(HANDLEport);//读串口操作

BOOLClosePort();?//关闭串口

};

下面对该类的重要函数作以说明:

(1)在构造函数CSerialPort()中已对该类的数据成员进行了初始化操作。

(2)初始化串口函数InitPort()函数用于完成串口的初始化工作,包括打开串口、设置DCB参数、设置通信的超时时间等。

打开串口使用CreateFile()函数,其中InitPort()函数中的第一个参数为要打开的串口,通常将该参数赋给CreateFile()函数中的第一个参数;设置DCB参数应调用该类中的SetDCB()函数,并将InitPort()函数中的第2至第5参数赋给SetDCB()函数;设置通信的超时时间应调用该类中的SetTimeOuts()函数,并将InitPort()函数中的第6至第9参数赋给SetTimeOuts()函数。另外,该串口是系统资源,应该根据不同要求对其安全属性进行设置。

(3)SetDCB()函数用于设置DCB参数,包括传输的波特率、是否进行奇偶校验、每字节长度以及停止位等。

(4)SetTimeOuts()函数用于设定访问的超时值,根据设置的值可以计算出总的超时间隔。前面两个参数用来设置读操作总的超时值,后面两个参数用来设置写操作总的超时值。

(5)WritePort()函数用来完成向串口写数据。由于该系统需要对多个串口进行通信,所以首先应把串口号作为参数传递给该函数;接着该函数把按参数传递过来的、要发送的数据进行编码(也就是加入校验,这样能减少误码率),然后再调用WindowsAPI函数WriteFile()并把数据发送到串口。

(6)ReadPort()函数用来完成从串口读数据,由于有多个串口,所以应把串口作为参数传递进来,然后调用API函数ReadFile(),并把下位机发送到串口,数据读出来放到缓存里面,接着对数据进行处理以将其变换成字符串

(CString)类型并返回。

(7)GetDCB()函数主要用于获得串口的当前配置,可通过调用API函数GetCommState()来实现,然后再进行相应的处理。

(8)GetTimeOuts()函数用于获得访问超时值。

(9)ClosePort()函数可用来关闭串口。因为在Windows系统中串口是系统资源,因而在不用时,应将其释放掉,以便于其它进程对该资源的使用。

4基于串口通信的金刚石合成控制

金刚石合成控制系统采用主从式控制方式,上位机为微机、下位机为PLC。上位机的主要功能是对系统进行实时监控,下位机的主要功能是对系统进行实时控制。上位机采用Windows98操作系统,其监控程序可用VC开发,上、下位机之间通过RS-232与RS-485串口进行通信,它们之间采用的通信波特率为9600bps,无奇偶校验,每字节8位,并有1位停止位。上、下位机之间传送的数据格式可自己定义。由于传输数据时可能会引起错误,所以加入了校验算法。该系统通过上位机向下位机发送数据,下位机收到后就把当前系统的状态参数返回给上位机。由于该系统中所控制的参数具有迟滞性,所以应采用定时发送数据的方法来采集现场状态信息。

上位机编程时,可用VC6.0生成一个对话框类型的`程序框架,然后将自己编写的CSerialPort类加入到该工程中,并在主界面类?CCrystal?中添加一个CSerialPort类的成员变量serial。当监控系统开始工作时,可用AfxBeginThread??函数创建辅助线程来管理串口通信,当调用CSerialPort类中的WritePort??函数向串口发送数据后,可调用_sleep??函数使辅助线程休眠一段时间,以便使PLC有充分的时间返回数据;接着再调用CSerialPort类中的ReadPort()函数并从串口读数据,然后再调用_sleep()函数使辅助线程再休眠一定的时间。这样设计后,当进行串口通信时,主线程就能继续完成监控功能和处理其他事务。辅助线程函数的主要代码如下:

UINTSerialPro(void*param)

{

Ccrystal*mdlg=(Ccrystal*)param?

CStringstr;

intflag=1;

//如果初始化串口失败返回

if(!InitPort(“com2”))

{AfxMessageBox(“打开串口2失败”);

return0;

}

//循环读写串口,直到结束

while(flag)

{

//这里把要发送的数据传送给变量str

……

//向串口写数据

mdlg->serial.WritePort(hport,str);

//让辅助线程休眠100ms

_sleep(100);

//从串口读数据并赋给变量str

str=mdlg->serial.ReadPort(hport);

//这里把从串口得到的数据进行处理

……

5结束语

运用面向对象方法和多线程技术设计的通用串口通信类CSerialPort类,通过对WindowsAPI函数的封装使串口通信变得简单方便、容易维护。目前,该软件系统已成功地应用于金刚石合成控制系统,并成功解决了RS-232与RS-485两种串口通信的问题。经过几个月的运行表明,该串口通信软件工作稳定,出色地完成了系统的实时监控和显示任务。此外,由于采用了面向对象的方法和模块化设计,该软件的维护和升级十分方便;同时该系统具有很好的移植性,按照不同需求稍微改动一些代码就可以应用于其它控制系统中。

篇5:金刚石合成控制系统中多串口通信技术的设计与实现

金刚石合成控制系统中多串口通信技术的设计与实现

摘要:通过多串口通信技术在金刚石合成控制系统中的应用,讨论了32位Windows操作系统下,VC多串口通信技术的设计与实现方法,并运用面向对象方法和多线程技术设计了一个比较完善的串口通信类。阐述了用VC开发上位机与PLC之间的串口通信程序设计方法和实现技术。

关键词:串口通信;面向对象方法;多线程;PLC

1 引言

传统的金刚石合成机控制系统是由一个PLC和一个可显示终端构成。这种传统的控制系统一般具有如下缺点:

(1) 系统所有的工作都由PLC完成,其控制精度较差,致使合成的金刚石质量较差;

(2) 显示终端的平面尺寸过小,这一方面使得操作人员观察系统的状态很不方便,另一方面?也常常会引起误操作;

(3) 金刚石合成工艺复杂,需控制的.参数很多,但原控制系统不能对参数进行保存,这样在根据不同产品和工艺要求对部分参数进行调整时,每次都必须重新设置所有的参数,操作非常麻烦;

(4) 界面不友好;

(5)不能通过控制系统自动考核操作人员的工作质量。

为了提高控制精度、方便操作,开发新的控制系统迫在眉睫。笔者针对以上问题,将IPC与PLC有机结合在一起,开发了一套新的控制系统。通过该系统可在上位机(IPC)和PLC之间通过RS-232与RS-485进行大量串口通信。

2 VC串口通信分析

在32位Windows系统下使用VC开发串口通信程序通常有如下4种方法:

(1)使用Microsoft公司提供的名为MSCOMM的通信控件;

(2)直接使用Windows应用程序接口(API);

(3)自行设计一个串口通信类;

(4)通过开发一个ActiveX控件来实现串口通信功能。

在上述几种方法中,实际上还是使用Windows API函数,然后把串口通信的细节给封装起来,同时提供给用户几个简单的接口函数。上述几种方法各有优缺点,但在实际情况下,大多数编程人员喜欢使用API函数自行设计串口通信类。

用Windows API函数进行串口通信的编程流程如图1所示。其中打开串口是确定串口号与串口的打开方式;初始化串口用于配置通讯的波特率、每字节位数、校验位、停止位和读写超时等;读写串口用于向串口进行发送数据和从串口接收数据;关闭串口用于将串口关闭并释放串口资源(Windows系统下串口是系统资源)。

由于绝大多数控制系统中串口通信是比较费时的,而且监控系统还要进行数据处理和显示等,所以一般采用多线程技术,并用AfxBeginThread()函数创建辅助线程来

[1] [2] [3] [4] [5]

篇6:多路异步串行通信系统在光纤陀螺组合中的设计与实现

多路异步串行通信系统在光纤陀螺组合中的设计与实现

摘要:DSP在与多个外设进行通信时,需要扩展异步串行通信接口。以TMS320C6711为例,采用ST16C554异步串行收发器,介绍了目前最先进的C6000系列DSP与多路RS232、RS485/422设备通信的设计方案,并给出了软硬件实现实例。

关键词:数字信号处理器通用异步串行收发器可编程逻辑器件光纤陀螺

DSP与计算机通信的外部接口主要可划分为串行通信口和并行通信口。串口通信包括采用RS232、RS485/422、USB、IEEE1394等协议的通信,并口通信包括采用IEEE488、IEEE1248等协议的通信。本文主要介绍DSP多路RS232、RS485/422通信系统的设计与实现,并将此系统应用于光纤陀螺三维角速率测量组合中。

1系统方案设计

1.1系统框图

图1为DSP多路异步串口通信系统的框图。计算机接收端为通用的数据采集卡,其与DSP之间采用RS485/422协议,通信速率可达921.6kBPS。光纤陀螺与DSP之间采用RS232协议,通信速率可达115.2kBPS。该系统可以实现DSP与三路RS232设备和一路RS485/RS422设备的通信。

1.2TMS320C6711简介

TMS320C6000系列DSP芯片最初主要是为移动通信基站的信号处理而推出的超级处理芯片,200MHz时钟的TMS320C6711完成1024点的FFT算法的时间只要66μs,比传统的DSP芯片要快一个数量级,因此在民用和军用领域都有广阔的应用前景。在军事通信、电子对抗、雷达系统、精确制导武器等高智能化的应用领域,这种芯片的处理能力具有不可替代的优势[2]。TMS320C67XX是TMS320C6000中的浮点系列,TMS320C6711是其中性价比较好的一款芯片。正如其它的TMS320C6000系列芯片一样,该芯片提供了两个多通道同步缓冲串口,没有提供异步串口,因此需要进行异步串口扩展。

1.3通信方案设计

目前几乎所有的数字信号处理器都提供了一个或多个串行接口,然而,多数DSP芯片提供的是同步串口。在实际的应用中,也需要DSP能够与多个外设进行异步串行通信,如与PC机或光纤陀螺之间进行串行数据传输就要求DSP系统具有多路UART串行接口;当然也可以利用通用的I/O口构成串口,由软件设定波特率(在DSP不繁忙的情况下,往往采用这种方法)。但是当这两种I/O线被占用或对通信的实时性要求较高时,DSP应该通过扩展异步通信芯片来实现高速串行通信。

针对这种情况,本文研究并实现一种简单可靠的异步串口扩展方法,即在DSP的并行总线上扩展UART芯片,用硬件实现异步数据传输。该方法的优点是软件实现简单,代价是在总线上需扩展其它设备。由于本方案要实现DSP与四路外设的异步串口通信,综合考虑硬件连接和软件编程的方便性,采用四通道ST16C554串行异步收发器与多路电子转换芯片MAX3245E来完成。这样,用最简单的硬件连接和软件编程就能实现四路异步的串行通信。

1.4ST16C554简介

ST16C554是EXAR公司的异步通信芯片,其主要特点如下[3]:?

・与ST16C454、ST68C454、ST68C554、TL16C554兼容;

・16字节的发送与接收FIFO;

・接收控制和发送控制相互独立的四通道选择;

・四个可选的接收FIFO中断触发级;

・标准MODEM接口;

・最高可达1.5M的波特率,其波特率发生器可编程;

・数据位长度为5、6、7、8,停止位长度为1、1.5、2;

・具有偶校验、奇校验或无校验模式。

ST16C554不仅能将DSP发送的数据进行并/串转换,还能将从外设或MODEM接收的数据进行串/并转换,能够同时完成四个独立通道的收发。同时,ST16C554还具有四组独立的16字节的接收与发送FIFO,可以通过使能FIFO及设置FIFO中断触发级有效地减少CPU的中断,提高系统效率及可靠性。

2系统硬件设计

系统的硬件设计框图如图2所示。该硬件系统由电源转换电路、

电源监控电路、DSP、SDRAM、FLASHROM、UART、电平转换芯片及可编程逻辑芯片等组成。电源转换电路完成5V至3.3V/1.8V的DC-DC转换,提供系统设计中所有低压芯片的电源。电源监控电路用来监控系统所有电源电压,当电源电压低于额定值时,DSP及UART复位,对芯片起保护作用。ST16C554UART同时完成A、B、C、D四个通道的通信,其中A、B、C三个通道完成三路RS232的异步收发,波特率为115.2kBPS,D通道完成RS485/422的通信,波特率为921.6kBPS,且波特率可以在相应的控制寄存器中分别设置。当外接晶振为14.7456MHz时,可以方便地完成上述波特率的设置。多路UART-RS232电平转换器件MAX3245转换速率可达1MBPS。可编程逻辑芯片为XILINX公司的CPLD(XC9572XL),用以完成系统中所有的逻辑控制。

当DSP对UART进行读写操作时,必然涉及到UART的'实际地址在DSP中的转换。本方案中DSP的CE3空间设为8位异步模式,相应的地址范围为0xB0000000~0xBFFFFFFF。而对应于UART的读写操作地址以及四个独立通道的选通地址,就要加上相应的偏移量。相应的读写及片选逻辑由CPLD完成。CPLD相应的内部逻辑如下:

――CE3COMMUNICATIONSPACEADDR=B0000000―BFFFFFFF

D3:CSF3<=CE3OR(NOTEA5);--通道CFOG3ADDR=B0000008

CSF2<=CE3OR(NOTEA4);--通道BFOG2ADDR=B0000004

CSFl<=CE3OR(NOTEA3);--通道AFOG1ADDR=B0000002

CSF4<=CE30R(NOTEA2);--通道DRS422ADDR=B0000001

其中,CSF1~CSF4为通道选择信号,低电平有效;EA2~EA5为DSP的地址线。

3软件设计

该系统软件设计包括PC机、TMS320C711及ST16C554的初始化和通信协议等。下面将结合本系统的硬件给出TMS320C711初始化ST16C554的程序。初始化的主要任务是设置操作每个通道所需要的参数,这些参数包括串行通信时数据串的数据位数、停止位数、奇偶校验等。另外,还需要设置发送和接收的波特率及中断方式。

其中RHR为接收保持寄存器,THR为发送保持寄存器。FCR为FIFO控制寄存器,设置为FIFO使能。IER为中断使能寄存器,与FCR配合使用,设置为FIFO中断方式,也可以设置为DMA方式。LSR为线性状态寄存器,通过查询最低位检测FIFO或RHR中是否有数据。DLL及DLM为波特率设置寄存器,通过对晶振分频完成波特率的设置。当LCR的最高位为1时,才能改变DLL及DLM的设置。

以通道A为例,DSP对ST16C554初始化的C语言程序如下:

/*FOG1*/

*(char*)0xb0000032=0x80;/*lcr=80*/

*(char*)0xb0000002=0x08;/*dll=08*/

*(char*)0xb0000012=0x00;/*dlh=00*/

*(char*)0xb0000032=0xlb;/*lcr=1b*/

*(char*)0xb0000022=0x01;/*fcr=01*/

*(char*)0xb0000012=0x01;/*ier=01*/

*(char*)0xb0000022=0x03;/*fcr=01*/

*(char*)0xb0000022=0x01;/*fcr=01*/

四个通道都设置为FIFO方式及中断使能。通道A、通道B、通道C分别设置给RS232,波特率为115.2kBPS;通道D设置给RS485/422,波特率为921.6kBPS。

DSP对通道A的数据读取程序如下:

while((readtp&0x01)!=0)

{readdata=*(char*)0xb0000002;/*readrhr*/

readtp=*(char*)0xb0000052;/*read1sr*/

4与光纤陀螺的对接测试

将该系统与光纤陀螺对接,测试表明该系统完全满足设计要求。

图3为陀螺

仪的标度因数测试结果,图中横坐标为输入角速率,纵坐标为DSP输出的数据经D/A转换后的电压输出值,图中曲线是根据输入输出数据用最小二乘法拟合求得的。

该系统的软件及硬件已调试通过,并成功地应用于航天光纤陀螺角速度测量系统中。该方案能够灵活高效地完成DSP与多个PC机或传感器(即多个光纤陀螺)之间的异步串口通信,还可以实现与MODEM之间的标准接口。另外,若利用DSP的EDMA功能完成收发,还可以进一步提高系统性能,实现高速串行通信[4]。

篇7:多路异步串行通信系统在光纤陀螺组合中的设计与实现

多路异步串行通信系统在光纤陀螺组合中的设计与实现

摘要:DSP在与多个外设进行通信时,需要扩展异步串行通信接口。以TMS320C6711为例,采用ST16C554异步串行收发器,介绍了目前最先进的C6000系列DSP与多路RS232、RS485/422设备通信的设计方案,并给出了软硬件实现实例。

关键词:数字信号处理器 通用异步串行收发器 可编程逻辑器件 光纤陀螺

DSP与计算机通信的外部接口主要可划分为串行通信口和并行通信口。串口通信包括采用RS232、RS485/422、USB、IEEE1394等协议的通信,并口通信包括采用IEEE488、IEEE1248等协议的通信。本文主要介绍DSP多路RS232、RS485/422通信系统的.设计与实现,并将此系统应用于光纤陀螺三维角速率测量组合中。

1 系统方案设计

1.1 系统框图

图1为DSP多路异步串口通信系统的框图。计算机接收端为通用的数据采集卡,其与DSP之间采用RS485/422协议,通信速率可达921.6kBPS。光纤陀螺与DSP之间采用RS232协议,通信速率可达115.2kBPS。该系统可以实现DSP与三路RS232设备和一路RS485/RS422设备的通信。

1.2 TMS320C6711简介

TMS320C6000系列DSP芯片最初主要是为移动通信基站的信号处理而推出的超级处理芯片,200MHz时钟的TMS320C6711完成1024点的FFT算法的时间只要66μs,比传统的DSP芯片要快一个数量级,因此在民用和军用领域都有广阔的应用前景。在军事通信、电子对抗、雷达系统、精确制导武器等高智能化的应用领域,这种芯片的处理能力具有不可替代的优势[2]。TMS320C67XX是TMS320C6000中的浮点系列,TMS320C6711是其中性价比较好的一款芯片。正如其它的TMS320C6000系列芯片一样,该芯片提供了两个多通道同步缓冲串口,没有提供异步串口,因此需要进行异步串口扩展。

1.3 通信方案设计

目前几乎所有的数字信号处理器都提供了一个或多个串行接口,然而,多数DSP芯片提供的是同步串口。在实际的应用中,也需要DSP能够与多个外设进行异步串行通信,如与PC机或光纤陀螺之间进行串行数据传输就要求DSP系统具有多路UART串行接口;当然也可以利用通用的I/O口构成串口,由软件设定波特率(在DSP不繁忙的情况下,往往采用这种方法)。但是当这两种I/O线被占用或对通信的实时性要求较高时,DSP应该通过扩展异步通信芯片来实现高速串行通信。

针对这种情况,本文研究并实现一种简单可靠的异步串口扩展方法,即在DSP的并行总线上扩展UART芯片,用硬件实现异步数据传输。该方法的优点是软件实现简单,代价是在总线上需扩展其它设备。由于

[1] [2] [3] [4]

篇8:短波扩频通信系统中数字相关器的FPGA设计与实现

短波扩频通信系统中数字相关器的FPGA设计与实现

摘要:基于FPGA设计的数字相关器,对前端模数/转换器在384kbps采样率下采得的数据进行希尔波特变换,再与本地序列做相关运算,最后将相关结果送给DSP,供DSP做进一步的处理。介绍了所选用的Stratix芯片,阐述了FPGA内部子模块的功能和设计实现方法,对所设计的FPGA数字相关器进行了仿真和校验,结果达到了设计要求。

关键词:数字相关器FPGA希尔波特变换Stratix

采用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗、提高了可靠性,同时还可以很方便地对设计进行在线修改。电路设计者可以通过软件编程,经过设计输入、仿真、测试和校验,用硬件实现特定的数字信号处理算法。这种方法由于具有通用性强的特点并可以实现算法的并行运算,因此无论是作为独立的数字信号处理器,还是作为DSP芯片的协处理器,目前都是比较活跃的研究领域。

短波通信具有设备简单、通信距离远、机动灵活、价格低廉和抗毁性强的特点,有着重要的应用价值。在短波通信系统中,接收方在信号检测、同步的过程中,要进行大量的乘加操作来做相关运算。在传输速率较高、样点间隔较小的情况下,完全由系统中央DSP处理器进行运算,很难实现实时处理。利用FPGA的特点,把信号同步数字相关部分分离出来,设计一个专用的数字相关器,作为中央DSP处理器的协处理器,来分担这部分工作,是一个很好的解决方案。本文阐述的就是这样一个应用在短波扩频通信系统的接收方中,完成数字相关功能的基于FPGA设计的相关器。

1Stratix系列芯片简介

本文采用Stratix系列芯片实现数字相关器。Stratix系列是著名的可编程逻辑器件供应商Altera公司于2002年新推出的FPGA产品。其主要特点是:采用1.5V内核,0.13μm全铜工艺,容量为10570~114140个逻辑单元,内嵌多达10Mbit的三种RAM块,即512bit容量的小型RAM,4KB容量的标准RAM,512KB的大容量RAM;具有True-LVDS(tm)电路,支持LVDS、LVPECL、PCML和HyperTranport(tm)差分I/O电气标准,且有高速通信接口;增加了片内终端匹配电阻,提高了信号完整性,简化了PCB布线;提供了完整的时钟管理方案,具有层次化的结构和多达12个锁相环(PLL)。

该系列芯片的最大特色是内嵌硬件乘法器和乘加结构的可编程DSP模块,特别适于实现高速信号处理。这种DSP模块是高性能的嵌入算术单元,它的运行速度可以达到250MHz,每个DSP模块的数据吞吐性能可以高达2.0GMACS。它可以配置为硬件乘法器、加减法器、累加器和流水线寄存器,如表1所示。

表1单个DSP单元的设置模式

模式9bitx9bit18bitx18bit36bitx36bit单个乘法器8个4个1个相乘累加器2个(结果为52bit)2个(结果52bit)――2个乘积求和4个2个――4个乘积求和2个1个――

Stratix系列具有多达28个DSP模块,可配置为224个(9bit×9bit)嵌入乘法器,可以为大数据吞吐量的应用提供灵活、高效和有价值的方案。这些DSP模块可以实现多种典型的DSP功能,如有限冲击响应(FIR)滤波、快速傅立叶变换(FFT)功能、相关器和加密/解密功能等。

Stratix系列由Altera公司提供的新一代开发软件QuartusII支持。此软件加强了网络功能,设计人员可以直接通过Internet获得Altera的技术支持。QuartusII软件中的MegawizardPlus_InManager工具可以很方便地对一些常用的基本模块进行定制,以满足不同的需要;设计人员还可以在定制后的基础上,进行进一步的改进,扩展出更多的功能。

2FPGA模块设计

数字相关器在短波扩频通信系统中的具体功能是:接收A/D采样后的采样信号,对采样信号进行希尔波特变换,得到与其正交的另一路信号;然后以这两路信号分别作为实部和虚部,与本地序列进行相关运算,将相关值的实部和虚部送给DSP做后续处理,如图1所示。只有包含有正确同步头信息的信号经采样后与本地序列作相关运算,得到的相关值的模值才会出现峰值;对应于发端特定的同步头帧结构,相关后的相关峰也会出现规律性的特征。这样,DSP才可以通过先对相关值求模,然后对模值出现的峰值的间隔、幅值和数目等信息进行判断和进一步处理,来确定是否捕捉到信号。下面具体介绍完成上述数字相关功能的FPGA的设计。FPGA设计的内部结构框图如图2所示。

2.1希尔波特变换部分

系统接收到的射频信号经过前端预处理后,送到A/D采样,然后以串行方式输出样点值到FPGA。每个样点值是用10bit的二进制补码表示的,需先通过一个串/并转换器转化为宽度为10bit的并行信号。样点值首先要进行的是希尔波特变换,希尔波特变换有多种实现方法,这里采用一个129阶的滤波器来实现,滤波器的抽头系数由MATLAB函数remez产生,如图3所示。

将10bit的并行信号输入到一个10bit×129的RAM模块,采用循环写入的方式,RAM模块类似一个桶形循环存储器?熏较早存入RAM的信号值就会被新来的数据覆盖掉,这样就与图3所示的输入信号先进先出是等效的。经MATLAB函数remez产生的抽头系数是一组变换范围很大的带有小数部分的十进制数,为了能够进行后续的硬件运算,需要对这组十进制数作归一量化处理,把它们映射到宽度为14bit的有符号的二进制数所能表示的范围上去,即转化为14bit的二进制补码数。这组抽头系数在运算的过程中是固定不变的,所以可以把它们固化在片内ROM模块中,与RAM中的值同步读出,再经过两组D触发器对齐后,送到一个10bit×14bit的有符号数的相乘累加器做相乘累加运算。相乘后的数据宽度是24bit,但是由于对固定数据宽度的有符号的二进制数进行加减运算时,会出现结果超出固定数据宽度所能表示的范围,即溢出现象,导致运算结果错误,所以就要为这里进行的129次累加操作留有一定的数据宽度富裕量,每次把乘积符号扩展4bit再进行累加操作,这样输出就是一个28bit的有符号数,即是所需的虚部。由于在将抽头系数从十进制到二进制的归一量化过程中,人为地将其扩大了许多倍,所以与每个虚部相对应的'实部从中心抽头输出后,需经过一个固定倍数的乘法器,扩大同样的倍数来与虚部保持一致。

相乘累加模块是希尔波特变换部分的核心单元,这里用到了Stratix器件独特的嵌入式DSP模块。在Quartus的MegawizardPlus_InManager中选择ALTMULT_ACCUM(MAC)定制相乘累加模块。首先系统会提示只有Stratix系列才可以定制此类型模块,本例选择的两个输入端分别是10位和14位的有符号数,与RAM和ROM的输出端相连,再将累加后的输出端设为28位。这里有意预留了4位,用来防止在129次累加的过程中出现数据溢出的现象。将时钟、使能、清零等设置好后,即可生成所需的相乘累加模块,在编译的过程中Quartus就会自动把这部分配置到嵌入式DSP模块中,而不去占用片内的逻辑单元。这样就把原本用几个模块完成的功能用单个模块实现了,同时也提高了运行的可靠性。

2.2相关运算部分

样点值经过希尔波特变换得到的实部和虚部两部分,将分别存储到两个具有80个存储单元的RAM中,同样是采用循环写入的方式,类似于DSP编程中的桶形存储区。由于本文所应用的短波系统采用的是每个码元取五个采样点,而本地序列是一个码元对应一个数值,所以在做相关运算时是从当前的80个样点值里,每隔4个点取一个值,共取出16个样点值,依次与本地序列的16个值做相乘累加。下一次操作就把当前样点向后移一位,按同样的方法取点运算。这样依次进行,每一个样点值都会产生一个与其相对应的相关值。反映在FPGA内部,就要求RAM从当前存入的值开始,向前每隔4个单元取一个值作为输出。这样在一个样点间隔内,就从RAM中依次读出16个值,与从ROM中同步读出的16个本地序列值做相关运算。此时的相关运算中的乘法就需要是复数相乘,其结果也是复数,分两路输出实部和虚部,对这两路结果分别进行累加运算,即可得到所需的相关值的实部和虚部。

复数相乘模块是相关运算部分中的重要环节。从RAM中读出的实部和虚部组成的信号值,与从ROM中读出的本地序列值,在这里要进行复数相乘运算。复数相乘模块结构图如图4所示,a、b、c、d分别代表信号和本地序列的实部和虚部,按照式子(a+jb)×(c+jd)=(ac-bd)+j(ad+bc)的组合进行相乘加减。这里需要说明的是,考虑到后面要与DSP相连,数据的宽度被限制在32位。所以对于乘法器B和D而言,28bit与9bit相乘得到的结果应是37bit。这里在定制乘法器的时候强行把它限制为32bit,去掉了最高位的多余符号位,舍去了低4位。这样处理带来的后果就是人为地将乘积缩小了16倍。如果对乘法器A和C的结果不做处理,直接进行加减运算,则结果将导致严重的错误。因此对于乘法器A和C,应该人为地将其输出值右移4位,同样地缩小16倍,再进行下一步的加减运算,就可以有效地避免上述的错误。这样输入的4个数值经过几个时钟周期的运算后,输出的两个数值就是所求的复数相乘结果。这里的4个有符号数乘法器都会在编译时自动地配置到Stratix器件的嵌入式DSP模块上去。

2.3总体控制模块和接口部分

2.3.1总体控制模块

系统上电后,FPGA内部各模块都处于运行状态,各个模块相互连接,各自有运行时序,所以为了保证各模块依次先后运作,并得出正确的结果,就需要一个指挥控制模块对各模块进行准确的控制。这里采用两个工作在80MHz和40MHz时钟下的主从计数器对相关部分和希尔波特变换部分各模块进行控制。在一个样点间隔内,根据计数器不同的计数值,利用不同的组合逻辑电路产生各个模块的使能、清零等信号,保证各模块在正确的时序下运行。为了提高FPGA处理的效率,希尔波特变换部分和相关部分实际上是并行工作的。在同一个样点间隔时间内,希尔波特变换部分处理的是当前输入的样点数据,而相关部分是在处理上一个样点间隔内希尔波特变换部分输出的结果。这两部分之间之所以能够进行相互协调和并行运行,就是由于有来自总体控制模块的各种控制信息。

2.3.2接口部分

FPGA有两个接口,一个与A/D接口,另一个与DSP接口。在与A/D的接口部分中,有三个输入端data_in、FS和SLCK,data_in用来串行输入A/D转换来的样点值;FS为帧同步信号,它在输入到FPGA后用来驱动FPGA内部的总体控制模块;SCLK为移位时钟,它控制A/D与FPGA之间数据串行传输的移位。在与DSP的接口部分中,data_out[15..0]用来输出FPGA运算的结果,与DSP的数据总线挂接在一起,在FPGA内部设置一个三态门,开门信号就是FPGA的片选信号CE。当CE不选通的时候,三态门输出为高阻状态,不会影响DSP的数据总线。在每一个样点间隔的时间内,FPGA运算出相关值的实部和虚部,将它们分别锁存在四个16bit锁存器中,并将与DSP相连的data_ready信号置高电平,表示数据已经准备好。DSP检测到data_ready为高后会进行读操作,用地址总线的高几位产生出片选信号将FPGA选通,通过地址总线的低两位A0、A1来选择四个锁存器的其中一个,依次读取实部和虚部两个32位数的高16位和低16位。FPGA内部会对DSP的读操作计数,确认数据分四次读出后,则将data_ready置低,直到下一次运算完毕后再抬高。

3仿真和校验

各子模块设计好后,可以用图形方式或文本方式将各个模块连接起来,对顶层设计进行编译。这里选用的是Stratix系列中容量最小的一种:EP1S10F780C7,编译后产生的编译报告如图5所示。

无论是片内逻辑单元、片内RAM还是DSP嵌入块,所选的EP1S10F780C7芯片都还有相当一部分余量。但是,如果是选用其它系列的芯片,没有嵌入式的DSP模块,最后其所占用的片内逻辑单元会远不止这么多。

编译完成后即可进行仿真和校验,这部分可分为三个过程。对于同一块数据,先在Quartus下进行仿真,产生出一系列相关值。然后在MATLAB环境下利用其绘图方便的特性,完全按照FPGA中各模块处理数据的方法,编一段程序对数据进行处理,并画出处理结果的图形,如图6所示。理论上其处理结果应和Quartus的仿真结果完全一样,实际比较得出两者确实完全一样。最后在MATLAB中从理论上运用纯软件的方法编一段程序,对数据进行处理,并画出处理后的相关峰图,如图7所示。

可以比较出这两种图形所显示的相关峰的幅度与相对位置都基本一致。这就说明用FPGA对数据进行处理的结果和理论方法的处理结果是吻合的,这也就验证了FPAG设计的正确性。由于FPGA所进行的只是初相关,所以图7显示的相关峰幅度不大,数据送到DSP后要进行二次相关等处理,然后用于信号的捕获和同步。

本文阐述了短波扩频通信系统中用于信号同步捕获的数字相关器的FPGA实现,并对所选的Stratix系列器件进行了介绍。在384kbps的采样速率下,由外部提供40MHz的时钟,此相关器工作性能稳定,运算结果正确,能很好地配合DSP工作,完成对样点数据的希尔波特变换和相关处理。

TM1300 DSP系统的以太网通信接口的设计与实现

短波扩频通信系统中数字相关器的FPGA设计与实现

页面点击分析工具设计与实现

TMS320C54XX系列DSP与PC机间串行通信的实现

顶岗实习管理系统设计与实现论文

汽车安全检测系统的设计与实现

液体火箭发动机故障数据库的设计与实现

基于P2P的计算机辅助教学系统的设计与实现

终端营销时代--现实与对策

终端操作中的几条根本原则

远程终端中通信控制卡的设计与实现(合集8篇)

欢迎下载DOC格式的远程终端中通信控制卡的设计与实现,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档