基于FPGA和SC16C554实现多串口通信的方法

发布者:未来感觉最新更新时间:2009-09-01 来源: 张晓峰 李悦丽 黎向阳 张强关键字:FPGA  SC16C554  多串口通信 手机看文章 扫描二维码
随时随地手机看文章

  0 引言

  随着电子技术的飞跃发展,通用数字信号处理器(DSP)的性能价格比不断提高,数据处理能力不断加强,其应用领域日益增多,在数据实时采集及高速数字信号处理中应用尤其广泛。当DSP独立构成一个处理单元时,往往需要和外设进行数据交换,其通信能力至关重要。在研制机载合成孔径雷达系统时,信号处理机作为系统的核心要与飞控系统、稳定平台、雷达信号源以及导航系统等部分进行数据交换;如何实现其与其它部分之间有效的通信成为系统设计的关键。串口通信因为其简单,可靠仍然是广泛采用的方法之一。

  1 串口扩展方案选择

  多串口通信常用的实现方案有两种:一种是软件实现,采用软件编程模拟串口,该方法成本低,但编程复杂、开发周期长、可靠性低。另一种是硬件实现,使用多串口单片机或专用串口扩展芯片,该方法虽然成本较高,但是开发比较简单,可靠性高。

  目前比较通用的实现方案是采用通用异步通信芯片实现串口扩展,采用FPGA/CPLD实现DSP与异步串口扩展芯片之间的逻辑控制,完全基于DSP接收和发送数据。该方案的缺点是:当数据量较大、多串口同时工作时占用DSP的时间较长,影响DSP的工作效率,且会造成数据丢失。因此本文提出了一种新的实现方法--基于FPGA和通用异步通信芯片实现多串口通信设计。在不进行硬件改动的基础上,通过在FPGA内建立一个缓存机制,实现接收串口芯片的数据,达到一定量时向DSP发送中断读取数据。该设计能极大减少对DSP的占用时间,提高了DSP的工作效率;同时提高了对串口芯片中断请求的响应速度,解决了数据丢失的问题。

  2 硬件电路设计

  本设计采用通用异步通信芯片SC16C554来实现串口扩展。SC16C554主要特点有:

  1.有A、B、C、D四个通道独立收发数据;

  2.最高传输速率可达5Mbit/s,具有可编程波特率发生器,便于灵活选择数据收发频率;

  3.具有16字节的收发FIFO,且有1、4、8、14字节四个可选择的中断触发深度;

  4.可通过编程设置传输数据的格式(数据长度,校验位,停止位);

  5.具有可独立控制的发送、接收、线路状态和MODEM状态中断;

  6.充分分级的中断系统控制,全面的线路状态报告功能。

  基于FPGA和SC16C554实现多串口通信的基本原理图如图1所示:

  3 软件设计及实现

  系统实际工作所需波特率分别为9600、38400、115200、153600 。分析计算可得不同波特率发送数据时,连续两个数据之间的时间间隔如表1所示:

  由表1可知单个通道连续两个中断产生的最小时间间隔为65μs;因此在65μs的时间内如果可以实现对四个通道分别进行一次读数据操作,即使是四个通道同时来数据也不会发生数据丢失的现象。

  3.1 数据的存储设计

  即在FPGA内部建立一个缓存机制。设计采用在FPGA内部做一个双端口RAM(DPRAM),用来存储串口数据,DSP通过访问DPRAM得到接收的串口数据。

  DPRAM指一个存储模块却包含两个独立的端口,这两个端口共用同一块地址空间,两个端口都可以向这块空间里写数据或从中读取数据。DPRAM的读写数据的模式包括只读、只写、读写三种模式,其中读写模式又包括先写后读、先读后写、只写不读三种模式,我们采用先读后写的模式。

  我们将DPRAM的地址空间分为四部分,分别用来存放四个通道的数据。当FPGA收到数据时,我们可以根据置通道标志寄存器CS[2:0]的值来判断该数据来自哪个通道,将其存入对应的地址空间,并将该通道对应地址线加一。当该通道存储数据量达到编程设置的触发深度时,就将DSP中断寄存器dspint置低,向DSP发送中断;同时向DPRAM内一事先定义好的公共存储空间写入通道标志字。当DSP收到中断后,首先访问该公共存储区读取通道标志字,判断该中断是由哪个通道产生的;然后调用相应的接收函数从DPRAM内读取该通道的数据存入指定的地址空间等待处理。[page]

  3.2 读串口数据状态机的设计

  一个完整的读取串口数据操作需要进行三次读操作:读中断状态寄存器(ISR)、读线状态寄存器(LSR)、读接收保存寄存器(RHR)。由于这三次读操作具有严格的逻辑顺序和时序关系,非常适合采用状态机来描述;所以本设计采用有限状态机来实现读取串口数据。图2为读通道A数据的状态转移图。

  State0:空闲状态,当没有数据时状态机一直停留在空闲状态;

  State 1:赋IsR寄存器地址给UART_A,置通道标志寄存器CS[2:O]=001(表示A通道);

  State2:读ISR,判断中断类型(04为接受数据准备好中断),赋LSR寄存器地址给UART、A;

  State3:读LSR,判断是否有数据(LSR[0]=1表示有数据在RHR内),赋RHR寄存器地址给UART A;

  State4:读RHR,读取串口数据。

  多通道工作时,可以通过增加状态机状态来实现。完成一个通道的读数操作需要四个状态,当四个通道同时工作时,状态机的状态需要增加到17个。其中Stare5~State8完成对通道B的操作;其中State9~State12完成对通道C的操作;其中State13~State16完成对通道D的操作。

  3.3 读时序设计

  SC16C554的通用读时序图如下:

  其中t6s=0ns t6h=0ns t7h=0ns t7d=10ns t7w=26nst9d=20ns t12h=15ns都为最小值,t12d max="26ns由图3可以看出":对串口进行一次读操作所需的时间T=t6s+t7d+t7w+t9d所以T最小为56ns。本设计采用60MHz时钟分频出10MHz时钟,在一个1OMHz时钟周期(100ns)内完成一次读操作。用6 0 MH z时钟同步一个计数器cscount[2:0],在第一个6 0MH z时钟的上升沿(cs_count=3’b000时)置CS为低,并赋对应的地址给UART A;在第二个60MHz时钟的上升沿(cs_cout=3’b001时)置UART IOR为低;在第四个60MHz时钟的上升沿(cs_count=3’b011时)置CS、UART IOR为高。这样UART IOR有效时间为两个时钟周期(33ns),且比CS延时一个时钟周期(17ns),完全满足图3读时序的要求。

  由图2可知,由空闲状态State0到完成一次串口数据的读取,共需要500ns的时间。这样多通道工作时连续完成四个通道的读数操作共需2μs,远小于单个通道连续两个中断产生的时间间隔65μs;这样有效解决了多通道工作时,当读取数据的过程中其它通道中断丢失的问题。如:当读通道A数据的过程中,通道B产生中断请求;则状态机完成通道A数据读取返回到空闲状态State0,检测到INTB为高,状态机进入下一个状态(State5)进行通道B的数据接收。

  4 测试结果及分析

  我们分别对两种方案进行了测试,结果如下:表2为完全基于DSP接收和发送数据的通信性能测试;表3为基于FPGA接收串口数据的通信性能测试。

  波特率发送周期数据长度测试结果

  比较两种方案的测试结果可以得出以下结论:

  1单通道工作时:两种方案的通信性能是一样的。

  2多通道同时工作时:由表2测试结果可以看出,每次发送的数据量过大、或发送周期较小时,由于DSP对串口芯片中断请求的处理速度问题就会造成数据丢失。由表3测试结果可以看出,四通道工作时,发送数据长度为64字节,通道发送周期最小可达10ms;如果发送数据长度减小,通道发送周期还可以更小。该设计性能远远好于方案改进前完全基于DSP接收和发送数据的性能;能满足系统实际工作的需要。

  5 结束语

  基于FPGA接收数据的设计有两个突出的优点:1、极大提高了对串口中断的响应速度,避免了多通道工作、完全基于DSP接收和发送数据时数据大量丢失的情况;2、完全可编程设置DSP中断产生条件,解决了原来串口芯片只有1、4、8、14字节四个触发深度的限制,可编程设置存储空间范围内的任意字节的触发深度,大大减少了DSP的中断数量,提高了DSP的工作效率。另外程序具有较强的可移植性,当设计需要修改时,只需修改少量代码,有效降低了设计周期。

关键字:FPGA  SC16C554  多串口通信 引用地址:基于FPGA和SC16C554实现多串口通信的方法

上一篇:基于S3C44B0X的心电信号处理系统设计
下一篇:基于SOPC技术的远程测控系统设计方案

推荐阅读最新更新时间:2024-05-02 20:51

基于单片机的现场可编程门阵列的配置
1 引言 在大规模可编程逻辑器件出现以前,把器件焊接在电路板上是设计数字系统的最后一步。当设计存在问题并解决后,设计者往往不得不重新设计印制电路板。设计周期长,设计效率低。CPLD 、FPGA出现后,利用其在系统可编程或可重配置功能,设计者可以在进行逻辑设计而未进行电路设计时就把CPLD、FPGA焊接在电路板上,然后在设计调试时可一次次随心所欲的改变电路的硬件逻辑关系,而不用改变电路板的结构。 2基于SRAM的FPGA的结构和原理 可编程逻辑器件从结构上可分为: ⑴ 乘积项结构器件。其基本结构是〝与-或阵列〞的器件,大部分简单PLD和CPLD多是这种器件。 ⑵ 查找表结构器件。由简单的查找表组成可编程门,再
[单片机]
FPGA的系统架构组成和器件互联问题
通常来讲,“一个好汉三个帮”,一个完整的嵌入式系统中由单独一个FPGA使用的情况较少。通常由多个器件组合完成,例如由一个FPGA+CPU来构成。通常为一个FPGA+ARM,ARM负责软件配置管理,界面输入外设操作等操作,FPGA负责大数据量运算,可以看做CPU的专用协处理器来使用,也常会用于扩展外部接口。常用的有ARM+FPGA,DSP+FPGA,或者网络处理器+FPGA等种种架构形式,这些架构形式构成整个高速嵌入式设备的处理形态。 不得不说的是,随着技术的进步,现在CPU中集成的单元也随之增加,例如TI的 “达芬奇”架构的处理器内部通常由ARM+DSP构成。同时异构的处理器形态业逐渐流行,如ARM9+ARM7的结构。这类一个
[单片机]
技术文章—2D NoC可实现FPGA内部超高带宽逻辑互连
Achronix 最新基于台积电(TSMC)的7nm FinFET工艺的Speedster7t FPGA器件包含了革命性的新型二维片上网络(2D NoC)。2D NoC如同在FPGA可编程逻辑结构上运行的高速公路网络一样,为FPGA外部高速接口和内部可编程逻辑的数据传输提供了超高带宽(~27Tbps)。 图1 Speedster 7t FPGA结构图 NoC使用一系列高速的行和列网络通路在整个FPGA内部分发数据,从而在整个FPGA结构中以水平和垂直方式分发数据流量。NoC中的每一行或每一列都有两个256位的、单向的、行业标准的AXI通道,可以在每个方向上以512Gbps(256bit x 2GHz)的传输速率运行。
[嵌入式]
技术文章—2D NoC可实现<font color='red'>FPGA</font>内部超高带宽逻辑互连
利用LabVIEW和CompactRIO开发惯性检管器
   挑战:   寻找石油或者天然气管道的参考位置,并确保空间误差小于1米    解决方案:   通过使用LabVIEW实时模块和NI CompactRIO,设计和实现一个实时数据采集和处理系统,以管理在石油或者天然气管道内部通行的惯性导航系统(INS)的数据。系统实现了对数据的采集、预处理和储存,还可以利用LabVIEW对数据进行后处理,以获得最终结果。   "借助于LabVIEW,我们很容易实现对PIG(检管器)的编程,以满足任务要求。并且,我们还使用了相同的程序设计语言开发一个后处理程序,以便转换采集的大多数数据。" PIG(检管器)是一个用于石油和天然气管道检验的工具,它插入管道中并且借助于关内液体流动产生的压力前
[嵌入式]
利用LabVIEW和CompactRIO开发惯性检管器
DSP+FPGA的机载总线接口板研究(二)
发送部分的主要功能是将DSP送入的数据暂存在FPGA内部的FIFO中,等待发送命令。一旦接到发送控制指令,FIFO输出数据并通过并/串转换将并行数据转换为串行数据,同时加入预先设定的间隔。用户可通过写控制寄存器选择发送模式(即单帧发送或自动重复发送)、发送通道延迟设定、发送通道字间隔设定,还可通过读取状态位检查它的工作状态(发送缓冲器空、发送缓冲器满和是否正在发送)。发送模块结构框图如图4所示。      图4 发送模块结构框图   FPGA内部结构是基于SRAM的,因此需要一片配置芯片固化内部逻辑。为了便于调试,采用JTAG模式和被动串行模式(PS)两种配置模式,调试时使用JTAG模式直接将逻辑写入FPGA内部
[模拟电子]
DSP+<font color='red'>FPGA</font>的机载总线接口板研究(二)
基于FPGA的混合信号验证流程
随着SoC设计上的混合信号组件数量增加了,基本的功能验证对于硅初期能否成功也愈来愈重要。FPGA在系统整合难题上加入了一个新特点。在核心上,此新范例-可编程系统单芯片(programmable system chip,PSC)整合FPGA电闸,内嵌快闪和模拟功能在单一的可程序化组件中,提供了具真正程序能力的理想低成本路径,而且系统设计者可以用来快速地设计和研发复杂的混合信号系统。   关键准则   如业界分析师所言,FPGA正成为现代高度整合的SoC系统选择的工具。原因很明显。由于硅架构是预先组装的,因此没有NRE成本,且任何可能影响产品性能或装置可靠度的制程变化都应已解决。芯片整体作业中大部分的复杂度(包括寄生RLC对时
[嵌入式]
FPGA上同步开关噪声的分析
   概述   随着半导体技术的快速发展,近年来FPGA 的器件容量和输入输出的管脚数量都极大的增加了,例如StratixIV 器件,最大的一款EP4SE680 拥有68.11 万个逻辑单元和1104个输入输出管脚。大量的输出管脚在同一时刻翻转会引起同步切换噪声。目前同步切换噪声是FPGA 领域的一个新的挑战。    同步切换噪声的定义   当大量的输出管脚在同一个时刻从高电平到低电平的切换或者从低电平到高电平的切换,会在相邻的管脚上引入噪声,这就是同步切换噪声。典型的一个同步切换噪声的测试设置如图。设置中,FPGA 器件的输入输出的电平标准配置为SSTL18 ClassII。多个在同一时刻不断翻转的输出管脚定义为干扰者。一
[嵌入式]
FPGA在多进制正交扩频通信系统中的应用
    摘 要: 讨论了高速无线分组网络中多进制正交扩频通信系统的设计和实现,其中在系统核心部分的扩频编码调制和解调等很多功能都由FPGA来完成,并对此进行了详细的介绍。     关键词: FPGA 扩频通信 多进制正交扩频 QPSK调制        门阵列逻辑电路在数字系统设计中得到广泛的应用,因此从GAL、EPLD直至目前的FPGA(现场可编程门阵列),容量和功能以及可靠性都得到很大的发展。目前的FPGA结构采用总线方式,布局布线方便灵活,Altera公司的FLEX10K系列FPGA掩埋带有入出寄存器的RAM块,更加方便地应用于CPU系统。随着器件的发展,开发环境进一步得到优化。Altera公司的Ma
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved