通用异步串行接口的VHDL实用化设计

发布者:ananan一二三四五最新更新时间:2012-02-01 来源: dzsc关键字:异步串行接口  VHDL  亚稳态  现场可编程逻辑阵列 手机看文章 扫描二维码
随时随地手机看文章

1 引言

  FPGA从实现粘合逻辑逐步发展成为设计平台的核心,在电子、通信以及航空航天等领域得到了广泛应用。本人最近实现的中频软件无线电硬件平台,就以FPGA为核心,实现上变频、下变频等中频数字信号处理,并且构成A/D/A、DSP和ARM模块之间的通信中心。这种以FPGA为核心的架构使得硬件平台结构灵活,具有可重构性,为软件无线电的各种算法分配方案提供了有力支撑。

  除了和TMS320C6416之间的数据流采用EMIF接口外,FPGA的其它接口均采用UART。为了软件开发和移植的便利,UART设计要做到兼容ST16C550的功能。稳定可靠则是作为软件无线电硬件平台关键接口的基本要求。考虑到嵌入式系统的特点,在设计中应尽量降低功耗。本文围绕这些目标,介绍了在UART实用化设计中所遇到的一些重要问题、解决方案以及最终结果。

2 UART及ST16C550概述

  UART是广泛使用的串行数据传输协议,它在收发分离的串行链路上进行全双工异步通信。发送过程接收来自数据总线上的并行数据,按照低位序方式并串转换,然后根据控制寄存器的设置生成串行数据流;相应的,接收过程把串行数据流转换成并行数据,产生中断以及状态信息,并对数据传输过程中的异常进行处理。

  ST16C550是广泛使用的一款UART接口芯片,是NS16C550的改进版本。它收发均带有16字节的FIFO,可以通过设定波特率设置寄存器来进行收发时钟的分频控制,传输速率从50bps到1.5Mbps。具体内容可参见数据手册[1]。

3 实用化设计的主要问题和解决方案

3.1 框架设计

  根据UART的功能和数据流特点,系统划分为5个模块:时钟生成模块,完成时钟分频和时钟分配;界面模块,完成UART其它模块和数据总线的交互;发送模块,缓冲接收到的数据并按照设置生成串行信号;接收模块,按照设置将接收信号串并变换并将数据送到FIFO中;Modem模块完成与Modem信息交互和控制,功能相对简单独立。

3.2 时钟域的划分

  在同步电路设计中,减小时钟数量可简化设计,提高系统的稳定性。不相关的时钟域之间的数据传递不可避免的存在亚稳态问题,带来稳定性能的下降。时钟速率与功耗呈线性关系,当工艺一定时,低功耗设计要求我们降低时钟频率和信号翻转次数。下面从这些设计策略和通信效率来分析不同时钟域划分方案。

  方案一:低速时钟方案。首先根据控制寄存器的设置对外部提供的时钟进行分频,生成全局唯一的时钟。这种方案的优点是系统实现简单、面积最小、功耗最低。缺点也很明显,CPU时钟远远高于芯片的工作时钟,与UART传递数据时将占用CPU过多的时间。

  方案二:高速时钟方案。系统直接采用外部提供的时钟为唯一时钟,根据控制寄存器的设置生成收发模块的同步时钟使能信号,来达到分频的目的。这种方案全局只有一个时钟,设计简单。唯一缺点是功耗较大。

  在实际设计中,综合考虑效率和功耗的要求,采用了两个关联时钟的方案。与CPU的接口界面直接采用外部提供的最高时钟信号,而其它模块采用由波特率设置寄存器控制的分频时钟。这样在系统中存在两个关联的时钟域,设计时需要对两个时钟域边界的逻辑进行分析和处理。

3.3 时钟分频

  同步数字电路设计中,时钟是整个电路中最重要的信号。时钟信号上的毛刺会引起系统的逻辑混乱,大规模的数字芯片还对时钟歪斜(Clock skew)和负载提出了要求。为了适应这些需求,FPGA内部一般设有数量不等的全局时钟网络。

  使用同步计数器或状态机进行时钟分频是一种较好的方案。在设计中计数器或状态机应直接产生分频时钟信号,而不应该对计数器或状态机进行译码来产生时钟信号,因为译码等组合逻辑可能给时钟带来毛刺,引起系统不稳定。UART当波特率设置寄存器为0或1时,时钟信号不需要分频,故分频电路中使用了一个多路选择器。

3.4 异步时钟与亚稳态

  UART使用独立的时钟信号,使得CPU与UART以及UART之间的信号都处在不同的时钟域。为了减少时序上的冲突,跨时钟域的数据传递首先需要同步处理。但由于时钟频率和相位的差异,就不可避免存在亚稳态问题[2]。所谓亚稳态,是指触发器/锁存器的输入信号时序不能满足设置时间和保持时间的要求,将有可能使得触发器/锁存器的输出没有正确的锁定到逻辑0或逻辑1,处在一个未知的状态,如滞留在中间状态,或者震荡。这里以SN74ABT7819的参数为例来分析亚稳态、说明提高系统稳定性的方法[3]。

  亚稳态滞留时间是随机的,服从参量为的负指数分布。T0表示器件进入亚稳态可能性的孔径时间。SN74ABT7819在室温、5V电压时,t=0.30ns,T0=7ps,输入信号建立时间TSU1=5ns,传播延时TPD1=9ns,芯片内部触发器建立时间以及传播延时约TPD2+TSU2=1.3ns。设定触发器异步输入信号边沿频率FD=10MHz,芯片工作频率即触发器时钟FC=50MHZ。则每个接收外界输入信号的触发器平均失效时间MTBF(the Mean Time Between Failures)为:

  系统中有多路并行信号跨越不同的时钟域,这样系统总的MTBF会很小,将以小时或分钟计。可见单触发器同步电路不能满足稳定性的要求。为了减小亚稳态的影响,将亚稳态控制在时钟域边界,可以采用传统的握手通讯方式[4]或者双触发器同步电路,前一方案在通信速率较低时有效,后者则在实践中广泛使用,这里仅对后者进一步说明。三级触发器同步电路一般是不必要的。

  异步输入经过两级触发器同步生成同步输出。即使第一个触发器输出存在亚稳态,经过一个时钟周期后,第二个触发器输出仍处于亚稳态的概率非常小,此电路的平均失效时间MTBF已经是一个无限长的时间:

  Xilinx未给出Virtex II系列的亚稳态描述参数,它能工作在更高的时钟频率上,亚稳态的参数会比SN74ABT7819优秀。但以上分析和设计规则依然适用。

3.5 同步FIFO的设计

  设计中根据收发模块对状态标志要求的不同,分别进行同步FIFO的设计以节约逻辑资源。其中,发送模块的FIFO只需要全空/全满标志,采用地址相等不相等的比较逻辑和地址绕回指示位来产生。具体过程为:地址随着相应的操作递增,写指针由内存的最后位置返回到初始位置时将地址绕回指示位置1,读指针返回时则置0。因此,当读写指针地址相同时,若地址绕回指示位为0,则读写指针经历了相同次数的循环移动, FIFO处于空状态(图4a);若地址绕回指示位为1,则写指针比读指针多循环一次,FIFO处于满状态。

  接收模块需要在FIFO中数据量达到一个设定的数值时产生一个中断,由于设定的数值是任意的,这样空/满标记的产生必须使用减法器,消耗的逻辑资源稍大。综合后的逻辑资源使用情况也说明了这点。

3.6 锁存器的使用

  使电路复杂化的常见原因之一是设计中存在许多不必要的锁存器,使得电路复杂,工作速度降低,系统可靠性变差。综合时应该仔细检查是否合理使用了锁存器。由于UART接口的功能特点,设计中共使用了4个锁存器,用来锁存A(2:0)和CSn信号。当UART和CPU总线处在同一个芯片中时,这些锁存器可以用寄存器取代。

4 综合结果

  整个设计以VHDL语言来实现。在SYNOPSYS Design Compiler中使用LSI_10K库,设定系统工作频率为25MHz,其他使用预定的选项,综合后最大路径延时为10.66ns,预期工作频率大于90MHz。资源使用情况如表1所示。

  在XC2V1000-6芯片中,以Synplify为综合工具,则使用了188个寄存器,占用了1%的逻辑资源。最大路径延迟预期9.043ns,预期工作频率110MHz。

5 仿真与验证

  设计中对UART各模块分别撰写了相应的测试程序,验证了各模块的正确性。然后把这些模块装配在一起,在系统级上再进行了接收、发送和中断功能的门级验证。这种模块化分层次的验证过程在调试中有效地缩小了查找错误的范围,提高了调试效率并保证了代码的健壮性。

6 结束语

  稳定性和低功耗是嵌入式通信系统的重要设计目标。实现需要的功能有时并不困难,难的是提高系统稳定性和有效降低功耗。时钟的规划和亚稳态的处理与这两个目标有着非常密切的关系,是实用化设计关注的重点之一。通过稳定性、功耗与资源等方面的综合考虑,该设计在所实现的软件无线电硬件平台上得到了成功应用,达到了实用化设计的目标。

关键字:异步串行接口  VHDL  亚稳态  现场可编程逻辑阵列 引用地址:通用异步串行接口的VHDL实用化设计

上一篇:基于DSP Builder的VGA接口设计
下一篇:用CPLD实现DSP与背板VME总线之间的连接

推荐阅读最新更新时间:2024-05-02 21:52

简易通用型PCI接口的VHDL-CPLD设计
摘要:从PCI时序分析入手,重点阐述了PCI通用的状态机设计,说明了用VHDL语言来实现本PIC通信状态机的软件设计以及进行MaxPlusII验证的程序和方法。用该方法所设计的接口既可支持PCI常规传输,又可支持PCI猝发传输。 关键词:PCI时序 CPLD器件 状态图 VHDL语言 PCI猝发传输 用CPLD设计所构成的CPI接口系统具有简洁、可靠等优点,是一种行之有效的设计途径。很多技术杂志和网站上,都有不少用CPLD设计PCI常规传输系统的文章。但用这些方法在MzxPlusII、Fundition等环境下进行模拟仿真时,其产生的时序往往与PCI规范有很大出入。虽然Altera等公司推出PCI核可以直接使用,但这样的内核
[应用]
VHDL设计有限状态机的方法
    摘要: 以离心机定时顺序控制器的设计为例,阐述了用VHDL设计有限状态机的方法,讨论了如何消除状态机输出信号的“毛刺”。     关键词: VHDL 状态机 EDA 离心机 毛刺     现代数字系统的设计一般都采用自顶向下的模块化设计方法。即从整个系统的功能出发,将系统分割成若干功能模块。在自顶向下划分的过程中,最重要垢是将系统或子系统按计算机组成结构那样划分成控制器和若干个受控制的功能模块。受控部分通常是设计者们所熟悉的各种功能的电路,设计较为容易。主要任务是设计控制器,而其控制功能可以用限状态机来实现。因而有必要深入探讨有限状态机的设计方法。 1 状态机设计的一般方法
[传感技术]
VHDL密码控制系统的设计和仿真
  1 引言   随着电子技术和ASIC技术的发展.数字系统设计向速度快、容量大、体积小、重量轻的趋势发展。目前数字系统设计可直接面向用户需求,根据系统的行为和功能要求,自上而下地逐层完成设计过程:描述、综合、优化、仿真与验证,以及器件生成。该设计过程除系统行为和功能描述外,其他设计几乎都由计算机自动完成,从而实现电子设计自动化(EDA)。这样大大地缩短了系统的设计周期,适应当今品种多、批量小的电子市场要求,提高了产品的竞争能力。由于电子设计自动化是采用硬件描述语言描述硬件电路,所以研究硬件语言及仿真、综合等技术是电子设计自动化的首要任务。本文提出一种利用MAX+plusⅡ开发软件环境和硬件描述语言VHDL的密码控制系统设计方案
[嵌入式]
<font color='red'>VHDL</font>密码控制系统的设计和仿真
通用异步串行接口VHDL实用化设计
1 引言   FPGA从实现粘合逻辑逐步发展成为设计平台的核心,在电子、通信以及航空航天等领域得到了广泛应用。本人最近实现的中频软件无线电硬件平台,就以FPGA为核心,实现上变频、下变频等中频数字信号处理,并且构成A/D/A、DSP和ARM模块之间的通信中心。这种以FPGA为核心的架构使得硬件平台结构灵活,具有可重构性,为软件无线电的各种算法分配方案提供了有力支撑。   除了和TMS320C6416之间的数据流采用EMIF接口外,FPGA的其它接口均采用UART。为了软件开发和移植的便利,UART设计要做到兼容ST16C550的功能。稳定可靠则是作为软件无线电硬件平台关键接口的基本要求。考虑到嵌入式系统的特点,在设计中应尽量降
[嵌入式]
基于EDA 技术(FPGA)的自动门控制系统设计
引 言   门和人类文明是孪生的,它伴随着人类文明的发展而跃动。21 世纪的今天,门更加突出了安全理念,强调了有效性:有效地防范、通行、疏散,同时还突出了建筑艺术的理念,强调门与建筑以及周围环境整体的协调、和谐。   门大规模专业化生产始于150 年前,在不断发展和完善的过程中,涌现出大批独具规模的专业制造商。门的高级形式--自动门起源在欧美,迅速发展至今天,已经形成了种类齐全、功能完善、造工精细的自动门家族。   中国早在十多年前就开始引用欧洲自动门,并把它应用在酒店、机场、购物中心、银行、写字楼等大中型公共场所,为这些建筑增添了亮丽、时尚的姿彩。自动门从理论上理解应该是门的使用观念的延伸,是人们根据需要对门的功能的提升和
[安防电子]
基于EDA 技术(FPGA)的自动门控制系统设计
AC-Link数字音频VHDL编/解码的FPGA设计
   0 引言   数字音频处理是指为真实再现声音的逼真效果而对音频进行的编解码处理技术,它是宽带网络多媒体、移动多媒体通信的关键技术.Audio Codec′97(音频数字信号编/解码器)是其中一种用于声音录放的技术标准,简称AC′97. AC′97采用双集成结构,即Digital Controller(数字信号控制器)和Audio Codec(音频编解码),使模/数转换器ADC和数/模转换器DAC转换模块独立,尽可能降低EMI(电磁干扰)的影响。   利用FPGA,可以实现复杂的逻辑控制,对大量音频数据做并行处理.FPGA提供可编程时钟发生器,满足音视频处理要求的时钟范围宽、相位抖动(Phase Jitter)小的要求,
[嵌入式]
AC-Link数字音频<font color='red'>VHDL</font>编/解码的FPGA设计
基于VHDL的通信编码波形的设计与仿真
    引言     信号传输一般可分为两大部分:编码与解码。其中编码要求根据所传输信号特点选择合适的编码方式。由于不同的信号在不同的环境中进行传输,受到的干扰是不同的,而选择合适的编码方法可以最大限度的避免干扰,使通信更加顺畅、更加准确。     要实现不同的编码方式关键是要找到合适的算法,并且要求算法必须简洁亦兼容。笔者在这里主要采用了对比、联合和模块化的设计方法,使每一种编码成为一个独立模块,但又共用同一个或多个时钟。由此,大大节约了程序的存储空间,减少了程序的调试时间。     文章将用VHDL设计八种常用的编码方式,并运用ALTERA公司的QUARTUSII设计软件进行仿真调试。QUARTUSII设计软件是一
[电源管理]
基于<font color='red'>VHDL</font>的通信编码波形的设计与仿真
SDRAM控制器的设备与VHDL实现
在高速实时或者非实时信号处理系统当中,使用大容量存储器实现数据缓存是一个必不可少的环节,也是系统实现中的重点和难点之一。SDRAM(同步动态随机访问存储器)具有价格低廉、密度高、数据读写速度快的优点,从而成为数据缓存的首选存储介制裁。但是SDRAM存储体结构与RAM有较大差异,其控制时序和机制也较复杂,限制了SDRAM的使用。目前,虽然一些能家长微处理器提供了和SDRAM的透明接口,但其可扩展性和灵活性不够,难以满足现实系统的要求,限制了SDRAM的使用。 在详细阐读SDRAM数据文档的前提下,参考ALTERA公司的IP core,利用可编程器件(CPLD,FPGA)设计了一种通用的SDRAM控制器。它具有很高的灵活性,可以方便
[缓冲存储]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved