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

概述
随着大规模集成电路和单片机的迅速发展,复杂可编程逻辑器件(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 的零点,两者的正交性得到了保证,星座图是一个圆同样证明了这一点。

新年礼物怎么选,2021新年礼物选择推荐
基于SN7400N的单IC信号注入器电路
华为首款鸿蒙OS终端明天发布
光舵微纳完成由国投创合投资的近亿元B+轮股权融资
泰克公司展出最新Certus 2.0 ASIC原型调试解决方案
采用复杂可编程逻辑器件设计无线数据接收平台
中国首家三星Cinema LED影厅_尽现影音极致体验
拍照手机推荐:华为P10、努比亚Z17、荣耀v9和OPPOR11
如何自制超声波清洗机?
基于USB接口的保护设计方案解析
活动回顾 | 芯来RISC-V全栈技术分享
NVIDIA推出超级计算加速卡:英伟达的GPU能否取代AMD的CPU
Mini LED和OLED两者的区别在哪里
职称论文发表流程需要满足那些条件
材料人必看:手机全面屏下的天线工艺LDS
英特尔物联网为自动售货机提供了智能解决方案
三极管各种放大电路的知识总结
轴承孔磨损原因及修复方法
六大室内定位方案算法对比 室内定位MVP是谁?
导热塑料如何散发多余的热量及保障物体的正常运作呢?