找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于Flash型FPGA的信号源卡设计

[复制链接]
admin 发表于 2013-3-22 04:12:49 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
  0 引言

     信号源广泛应用于电子电路、自动控制和科学试验等领域。它是一种为电子测量和计量工作提供符合严格技术要求的电信号设备。该设计可以模拟各种复杂信号,还可对频率进行动态、及时的控制。作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要,并能够与其它模块,组成自动测试系统。该系统的设计,完整的实现了一个物理信号的产生,同时也包括信号发生器硬件的设计和软件的设计。
     1 系统构成
     系统工作原理如图1所示,通过JTAG接口把程序烧进芯片中后通过电源模块给所有芯片供电使得它们可以正常工作。FPGA上电后自动复位,通过拨动拨码开关选择需要输出的波形和波形的频率,FPGA通过接收到的命令不断的从RAM中读出数据给D/A转化器使其把数字信号转化成模拟信号,同时FPGA也控制多路模拟开关在确定的四路中进行不断的选通使得D/A转换完的模拟信号在肉眼无法识别的情况下感觉是同时从四路输出的信号,最后信号经过电压跟随器完整的输出,我们用示波器在对应的插针上就能够检测到相应的信号。
   
     2 硬件设计
     FPGA采用的是ACTEL公司A3P125-VQ100,该芯片是一歙Flash型的芯片,有30k个系统门,多达81个用户I/O口,350 MHz的系统性能。FPGA模块是由晶振电路、复位电路和下载电路这几部分组成。晶振为FPGA提供一个外接的CLK,复位电路是由一个电容和一个电阻组成,只要电源一给芯片上电就会自动复位,下载电路就是JTAG接口,通过该接口把下载的程序烧入到FPCA中。通过这几个外接电路组成一个FPGA模块。
     控制电路模块是由拨码开关实现的,一部分用于信号选择,另一部分用于频率控制。该系统中一共有4种信号供选择,拨码开关只有0和1,所以只需用两个开关就能控制选择四种信号,在这里00表示直流,01表示正弦波,10表示三角波,11表示方波。那么拨码开关的1到9位是用来控制频率的,因为设计的要求是要控制1~500Hz频率可调,而500用二进制表示为111110100共9位,所以频率可调就是通过控制拨码开关把需要的频率用二进制表示出来,通过一定的运算法则使得输出的波形频率为所要的频率。
     D/A转换器用的芯片是AD5424,该芯片为电流输出型,8位的分辨率,17ns写周期,DAC转换时间是30ns。FPGA接收到控制模块的命令后从RAM中给D/A不断的发送8位的二进制数据,芯片通过自身内部一定的电路把前面发送的二进制数据转换成相应的电流,发送数据的时间是通过该芯片的技术资料中的时序图来控制的,每一个CS的写周期是t3+t7=19ns,中间转化是t7+t8=29ns。当再来一个有效信号时数据就被读出,当写信号有效时又开始写入新的数据从而往复循环。
     从AD5424输出的电流通过下拉电阻转换成电压,经过第一个运放使电压跟随起到加强信号的作用,假设输出的电压是VLF353,通过第二个运放实现放大,第二个电路实际是一个负反馈的电路,通过公式 2012110705213506041361.jpg 可得把VLF353放大了两倍,最后实现输出,从而完成了从D/A到调理信号,再到输出这一过程。
     转化后的电压需要4路同时输出,一共有四种信号,所以采用ADG706这款芯片实现16路信号选择。FPGA给ADG706发送命令控制什么时间选择哪一路开关导通。每一个从模拟开关出来的电压都需要通过滤波器模块,这里用到的是OPA4340这款芯片,同时在每一个输出后面加入一个电容以便保证电压连续输出。
     在整个系统中每一个芯片都需要电源的供电,而每个芯片所需要的电压也不一样,根据需要电源模块从外界引入一个5V的电压通过TPS70358芯片转换成3.3V和2.5V,通过SPX3819M5-L-1-5芯片把5V转化成1.5V。
     3 软件设计
     这个软件的整体设计如图2所示,主要分为五大模块:除法模块、分频模块、控制模块、D/A模块和多路模拟模块这五部分。每一个模块都有一定的功能,是一级一级实现的,软件的整体功能是达到波形的多路输出,频率可调的功能。
    2012110705213509165362.jpg
     由于芯片的限制,在该芯片中写入的程序时不能有除法运算,但是在这里为了选择频率必须用到除法,所以在写入程序前先写入一个除法程序模块;由于要输出的是多路信号,为了实现这一设计要求通过控制D/A和多路模拟开关两个芯片的时钟,使得他们在时钟上不同步,D/A输出的模拟信号在四个输出口都可以输出,由于肉眼识别的时间差异可以达到四路同时输出这一效果。在图3中LOAD是除法模块中的使能端高电平有效,B[8..0]是控制频率的,SWITCH[1..0]是选择输出波形的,这三个都是输入端,输出端是两个,ADGDATA[3..0]和DATA[7..0],前面是多路模拟开关的输出信号,后面是DA的输出信号,从图中可以看出DA输出一个信号的时候多路模拟开关不断的在四个开关口选通。
    2012110705213515415363.jpg
     4 实验结果
     图4是用拨码开关输出250 Hz和100 Hz的测试结果。从实验结果中可以看出当拨码开关的前9位为011111010,第10个和第11个拨码开关为10,然后把示波器的红色探针放到排母的第9根到第12根上的任意一根可以在示波器上看到三角波,并且在图的右下角可以看到当前波形的频率,该频率为261Hz与理论上相差不大。当把拨码开关的前9位改为001100100时,示波器的频率显示为100.94Hz,达到了预期的效果。
    2012110705213518540364.jpg
     图5为同一个方波信号同时输出四路,当第10个和第11个拨码开关为11时,会在排母的第13根到第16根上同时输出方波信号,从图片的左边到右边分别为探针从第16路到第13路探测出的波形,可以看到四路都有方波信号,实现了四路同时输出信号的功能。
    2012110705213523228365.jpg
     通过实验结果可以看出该Flash型FPGA的信号源卡的设计实现了方波,三角波,正弦波和直流信号的多路输出以及频率在1~500 Hz可调的功能。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 18:09 , Processed in 0.057309 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表