0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用复杂可编程逻辑器件设计无线数据接收平台

电子设计 来源:郭婷 作者:电子设计 2019-05-05 08:15 次阅读

概述

随着大规模集成电路单片机的迅速发展,复杂可编程逻辑器件(CPLD)具有使用灵活、可靠性高、功能强大的优点,在电子产品设计中得到了广泛的应用。CPLD 可实现在系统编程,重复多次,而且还兼容IEEE1149.1(JTAG)标准的测试激励端和边界扫描能力,使用CPLD 器件进行开发,不仅可以提高系统的集成化程度、可靠性和可扩充性,而且大大缩短产品的设计周期。由于CPLD 采用连续连接结构,易于预测延时,从而使电路仿真更加准确。CPLD 是标准的大规模集成电路产品,可用于各种数字逻辑系统的设计。近年来,随着采用先进的集成工艺和大批量生产,CPLD 器件成本不断下降,集成密度、速度和性能都大幅度提高,这样一个芯片就可以实现一个复杂的数字电路系统;再加上使用方便的开发工具,给设计修改带来很大方便。

实验室设计开发了一款无线数据接收平台,上下行速率可以达到1Mbps。射频部分采用了Maxim 的射频套片,基带部分采用了OMAP 平台,基带射频接口采用了ADI 公司的混合信号前端(MxFE?)基带传输芯片AD9861,系统的逻辑控制和数据的缓冲采用了ALTERA 的CPLD EPM240GT100C3。

2 EPM240GT100C3 实现的功能与总体要求

EPM240GT100C3要完成AD9861的时序控制、AD9861和OMAP之间的数据缓存以及提供网口芯片LAN91C93所需的控制信号。在这几项功能中,最主要的是数据缓存功能。要想正确地实现缓存功能,就必须要求缓存的收发I、Q数据不丢失,不颠倒,不错相,同时保证数据的先写后读。按照这样的思想,再结合两边的接口时序正确地配置读写地址、读写时钟,就可以完成所需功能。

3 CPLD 程序的详细设计

CPLD的主要功能是完成数据缓存和一些时钟控制信号的产生。其功能框图如图1所示,主要包括双口RAM存储体单元,时钟和控制信号产生单元,OMAP侧地址发生单元,AD9861侧地址发生单元。

采用复杂可编程逻辑器件设计无线数据接收平台

3.1 双口RAM 的设计方法

因为OMAP和AD9861两边都有读写操作,于是选择了双口RAM(DPRAM)作为数据的缓存。由于CPLD内部的逻辑资源和布线资源有限,并且没有独立的DPRAM区,只能用DFF来完成缓存功能,这就限制了DPRAM的大小。因为系统要求每个DMA中断读写8个数据,为了减小读写冲突的可能性,同时尽量地降低FF资源的利用,最终采用了相当于两个8×8大小乒乓缓冲的16×8双口RAM缓冲区。DPRAM的外部接口如图2所示:

采用复杂可编程逻辑器件设计无线数据接收平台

其中dina和douta接OMAP的数据线,dinb和doutb接AD9861的数据线,addra和addrb为内部产生的读写地址。Wr_rd_en控制读写的方向,和TX_RX相连,即当Wr_rd_en=’1’时,为发射,数据由OMAP写入,AD读出,数据流向从dina->doub; 当Wr_rd_en=’0’时,为接收,数据由AD端写入,AD读出,数据流向从dinb->doua;wrclk在四种时钟之间切换,分别为3.2768M,6.4M,75M,84M,由TX_RX和V_D_SEL信号的高低来控制。为了降低布线资源的使用,读数时没有用读时钟,而是直接把addra和addrb地址上的数据输出,因为addra和addrb本来就是与读写时钟同步的。

3.2 时钟产生

CPLD输入时钟有来自射频的16M时钟,来自外部晶振的32.768M时钟和来自OMAP接口的75M时钟CLK。其中16M时钟用于产生数据应用时AD9861所需要的3.2M、6.4M转换时钟,32.768M时钟用于产生语音应用时AD9861所需要的1.6384M、3.2768M时钟以及CODEC AIC1110所需要的8K和2.048M时钟。SDCLK本可以作为OMAP读写的主时钟,但必须要使用CAS信号作为读写允许配合使用才行,为了节省布线资源,不用读写允许,就直接用CAS作为写时钟及OMAP侧的地址产生使用,而SDCLK则用于产生一些同步脉冲。这些产生的时钟除了输出给外部芯片外,还在CPLD内部作为地址产生的时钟使用。3.2M和6.4M的时钟产生是把16M的时钟从0到4计数,由reset和ad_da_enable给计数器清零,这样的模5计数器的最低位即为6.4M,次低位为3.2M时钟。这种时钟产生的方式只需要三个DFF,节省逻辑资源,而且不会产生毛刺,但产生的时钟占空比不是50%,实践证明在低速应用时,AD9861是可以正常工作的。系统的时钟时序如图3所示。

采用复杂可编程逻辑器件设计无线数据接收平台

1.6384M和3.2768M时钟的方法同理,只是需要把32.768M的时钟20分频而已,同样计数器的清零由reset和ad_da_enable控制,这样得到的模20计数器的第2位即为3.2768M,第三位为1.6384时钟,时序跟上图相似,这里就不再给出。

这四个时钟被分时赋给AD9861的主时钟ADA_CLK,具体是哪个时钟被赋ADA_CLK,由收发切换信号TX_RX,语音和数据选择信号V_D_SEL控制。当TX_RX=’0’ 且V_D_SEL=’0’时,输出给ADA_CLK的时钟为1.6384M;当TX_RX=’1’且V_D_SEL=’0’时,输出给ADA_CLK的时钟为3.2768M;当TX_RX=’0’ 且D_SEL=’1’时,输出给ADA_CLK的时钟为3.2M;当TX_RX=’1’ 且V_D_SEL=’1’时,输出给ADA_CLK的时钟为6.4M。

为了进一步节省资源,可以考虑把模5和模20的计数器共用,方案如图4所示,BIT1和BIT2即为所需的时钟,这时前端时钟源由V_D_SEL选择,BIT1和BIT2的选择输出由TX_RX控制。

采用复杂可编程逻辑器件设计无线数据接收平台

2.048M的时钟产生由32.768M时钟16分频得到,计数器的复位由reset和语音允许audcken控制,这样得到的模16的计数器的高位即为2.048M时钟。8K时钟是对产生的2.048M时钟256分频得到。

3.3 地址产生

在使用双口RAM作为数据缓存时,有两部分地址产生电路:OMAP侧地址产生电路和AD9861侧地址产生电路。AD9861侧地址产生电路和OMAP侧地址产生电路大致相同,但由于这2个地址发生器同时使用,所以不能复用。OMAP的地址发生器框图如下:

采用复杂可编程逻辑器件设计无线数据接收平台

CAS 时钟只负责对低3 位地址进行计数,而最高位由于选择2 个8×8RAM 中的一个,为防止adda 和OMAP 同时读写同一个RAM,将OMAP 侧的高位地址线取值为AD9861 侧的地址最高位的反相。DMA 请求清零信号作用:在AD9861 侧每触发一次DMA 请求,就生成一个DMA 请求清零信号,用于复位OMAP 侧地址发生器,避免由于某此误触发引起OMAP 读写地址混乱。AD9861 侧地址发生器如下:

采用复杂可编程逻辑器件设计无线数据接收平台

4位地址总线的低3位用于选择同一片RAM中的8个地址,最高位用于选择2个8×8RAM中的一个,收发切换信号用于在收发切换时给地址发生器清零,复位由于逻辑误触发导致的地址总线错误。

3.4 LAN 控制信号产生

lan91c93是一款嵌入式以太网控制器,和OMAP一起构成了嵌入式的以太网网络接口卡。OMAP用异步的FLASH接口时序来访问lan91c93,由于lan91c93没有片选输入端,所以把flash的片选和读写信号通过作一定处理后输出给lan91c93。OMAP把CS1空间分配给了lan91c93,当nFLASH_CS1为低时,把nFLASH_WE,nFLASH_OE输出给nLAN_WE,nLAN_OE,否则nLAN_WE,nLAN_OE为高电平。同时把LAN_RDY信号通过CPLD透传给OMAP,通知OMAP lan91c93准备好数据的交换。

4 仿真和实测

4.1 数据接收状态仿真

置V_D_SEL 为高,TX_RX 也为低,表示现在处于数据接收状态。依据时序关系产生所需的时钟,复位信号;产生AD9861 数据线上的数据,模拟AD 的输出; 产生ADA 使能输入控制信号AD_DA_ENABLE;SDRAM CAS 信号等等。如下图所示,DINB为AD9861数据线上的数据,WRCLK为内部产生的6.4M锁存时钟,用来把DA数据线上的数据写入双口RAM中,AD9861侧的地址ADDRB是对写时钟WRCLK的下降沿计数得到的。当ADDRB为8或0时,产生一DMA中断,触发OMAP通过EMIFF接口把数据读到DSP的MEMORY进行处理,每个DMA请求读8个数据,产生8个低脉冲的CAS信号,对CAS的脉冲个数进行计数,得到OMAP侧地址的低3位,最高位由ADDRB的MSB取反得到,这样能避免读写冲突。可以看出AD的输出数据能够被正确地复现在OMAP的EMIFF接口数据线上,并被OMAP正确地读进去。

采用复杂可编程逻辑器件设计无线数据接收平台

4.2 数据发射状态仿真

置V_D_SEL 为高,TX_RX 为高,表示现在处于数据发射状态。依据时序关系产生所需的时钟,复位信号;产生EMIFF 接口数据线上的数据,模拟OMAP 输出的发射数据; 模拟产生ADA 使能输入控制信号AD_DA_ENABLE;SDRAM CAS 信号等等。如下图所示,ADA_CLK为内部产生的6.4M时钟,输出作为ad9861的DA转换的主时钟。对ADA_CLK的上升沿计数得到AD9861侧的地址ADDRB,当ADDRB为8或0时,产生一DMA中断,触发OMAP通过EMIFF接口把发射数据输出到EMIFF接口数据总线上,每个DMA请求写8个数据,产生8个低脉冲的CAS信号,对CAS的脉冲个数进行计数,得到OMAP侧地址的低3位,最高位由ADDRB的MSB取反得到,这样能避免读写冲突。DINA为EMIFF接口数据线上的数据,用CAS延迟信号的下降沿来锁存DINA,满足EMIFF的SDRAM写时序,可以正确地把数据写入到双口RAM中。DOUTB为输出给DA的数据,同时按照时序要求产生一发射同步信号TX_SYNC,用来指示发射的I和Q,用ADA_CLK的上升沿采样,正好能采样到DOUTB和TX_SYNC的中间,确保数据的稳定性。

采用复杂可编程逻辑器件设计无线数据接收平台

4.3 数据实测结果

记录的频谱图,时域波形图和星座图如下,频谱为250K,跟信号源设置的频偏一致。时域波形I 落后Q 90 度,且I 的最大值对应于Q 的零点,两者的正交性得到了保证,星座图是一个圆同样证明了这一点。

采用复杂可编程逻辑器件设计无线数据接收平台

采用复杂可编程逻辑器件设计无线数据接收平台

采用复杂可编程逻辑器件设计无线数据接收平台


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6044

    文章

    44632

    浏览量

    639435
  • 无线
    +关注

    关注

    31

    文章

    5471

    浏览量

    174000
  • 可编程逻辑
    +关注

    关注

    7

    文章

    517

    浏览量

    44202
收藏 人收藏

    评论

    相关推荐

    可编程逻辑器件

    完成乘法,实现3×4,只要通过写程序让3连续加4次就可以完成了。而可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 在这两类
    发表于 04-15 10:02

    怎么采用可编程逻辑器件设计数字系统?

    本文以乘法器的设计为例,来说明采用可编程逻辑器件设计数字系统的方法。
    发表于 04-29 06:22

    PLD可编程逻辑器件

    PLD可编程逻辑器件 英文全称为:programmable logic device 即 PLD。PLD是做为一种通用集成电路产生的,他的逻辑功能按照用户对器件编程来确定。一般的PLD
    发表于 07-22 09:05

    可编程逻辑器件设计

    可编程逻辑器件设计 (264页,nlc格式)
    发表于 03-25 16:41 66次下载

    基于复杂可编程逻辑器件(CPLD)的120MHZ高速AD采集

    基于复杂可编程逻辑器件(CPLD)的120MHZ高速AD采集卡的设计:介绍了一种基于复杂可编程逻辑器件高速AD采集卡的设计方法,给出了这种采集卡的硬件原理电路和主要的软件设计思路,
    发表于 01-17 09:37 40次下载

    可编程逻辑器件基础及应用实验指导书

    可编程逻辑器件基础及应用实验指导书 《可编程逻辑器件基础及应用》是一门侧重掌握可编程逻辑器件的基本结构和原理的课程。重点是使学生掌握基于可编程
    发表于 03-24 14:22 29次下载

    基于单片机的复杂可编程逻辑器件快速配置方法

    基于单片机的复杂可编程逻辑器件快速配置方法 基于SRAM(静态随机存储器)的可重配置PLD(可编程逻辑器件)的出现,为系统设计者动态改变运行电路
    发表于 03-28 16:47 878次阅读
    基于单片机的<b class='flag-5'>复杂</b><b class='flag-5'>可编程逻辑器件</b>快速配置方法

    什么是PLD(可编程逻辑器件)

    什么是PLD(可编程逻辑器件) PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)
    发表于 06-20 10:32 2.7w次阅读
    什么是PLD(<b class='flag-5'>可编程逻辑器件</b>)

    EDA技术与应用(可编程逻辑器件)

    7.1 可编程逻辑器件的基本原理 7.2 可编程逻辑器件的设计技术 7.3 可编程逻辑器件编程与配置
    发表于 05-23 10:46 142次下载
    EDA技术与应用(<b class='flag-5'>可编程逻辑器件</b>)

    基于单片机的复杂可编程逻辑器件快速配置方法

    基于单片机的复杂可编程逻辑器件快速配置方法
    发表于 01-18 20:35 8次下载

    可编程逻辑器件(书皮)

    可编程逻辑器件(书皮)
    发表于 07-10 14:34 0次下载

    可编程逻辑器件EPLD是如何设计的

    可编程逻辑器件(Electrically Programmable Logic Device,EPLD)是指采用电信号的可擦可编程逻辑器件
    发表于 08-22 18:12 1561次阅读

    可编程逻辑器件的结构

    常见的可编程逻辑器件分为FPGA、EPLD(CPLD)。下面简单介绍两类器件的结构和区别。
    的头像 发表于 03-24 14:18 1280次阅读
    <b class='flag-5'>可编程逻辑器件</b>的结构

    可编程逻辑器件测试

    可编程逻辑器件 (Programmable Loeie Device,PLD)是一种用户编程实现某种逻辑功能的逻辑器件,主要由
    发表于 06-06 15:37 736次阅读
    <b class='flag-5'>可编程逻辑器件</b>测试

    什么叫可编程逻辑器件 可编程逻辑器件有哪些特征和优势?

    可编程逻辑器件(Programmable Logic Device,PLD)是一类集成电路器件,可以根据用户的需求进行编程和配置,以实现特定的逻辑功能。它们具有
    发表于 09-14 15:25 3058次阅读