BB方案大结局之方案总体设计篇——基于BB及FPGA的高速数据采集及DDS信号发生器设计与实现
EEWORLD 黑非拉
QQ:527973684
离活动结束的时间越来越近了,之前针对该方案做了一些工作,还有一些工作要完成,零散地在论坛里发过两个进展贴,其实部分已经在实际项目中有用到,比如DDS信号发生器用于控制扫描振镜,尽管项目中实现的细节及采用的软硬件与这次提交的方案还是有所不同,但基本思路是吻合的。本来打算做到这就算了,后来考虑了下,认为还是应该把这个方案相对完整地做出来,这样一方面可以很好的锻炼自己的能力,另一方面可以增加自己在论坛的参与度,EEWORLD在工作的两年多时间里还是让我受益匪浅。
这个活动从论坛奖励给我的的88个E芯币开始,我用它们买了两本关于信号完整性方面的书籍,完整的看了一本,另一本还在睡觉,至少得有一个稍微像样的结尾吧,于是利用最近工作上稍微空闲的一周多时间,将该方案当作一个小项目完整地做了一下,花了一个周末整理文档,整个做下来感觉还是很有收获的,特别是调试数据采集的代码,涉及计算机与BB数据传输的同步以及BB与FPGA数据传输的同步,好好的把Linux驱动同步机制及应用程序多线程理解了一番,调试时真是机关重重,陷阱多多。由于时间有限,这个方案还存在很多问题,特别是模拟部分的设计,后面会根据实际项目中的需要进行改进或重新设计。
一、方案总体设计
活动开始时最初提交的初步方案:https://bbs.eeworld.com.cn/thread-432527-1-1.html,图1是方案总体设计原理图,其中CAN及UART部分是实际项目中用到的功能,本方案没有用到,可以作为该方案的后续扩展部分。
图1 :方案总体设计原理图
该方案中,计算机作为上位机,BB作为下位机,上位机和下位机通过以太网口实现基于TCP协议的SOCKET通信,其中计算机上位机控制软件为TCP Client端,BB软件为TCP Server端,另外BB通过TI AM335X的GPMC接口实现与BB FPGA扩展板的通信。
这样,上位机控制软件通过网口发送信号波形命令及信号频率参数给BB Linux软件,BB Linux软件处理接收到的信号波形命令及信号频率参数生成DDS RAM区的数据及相位累加器的频率控制字并通过GPMC送到FPGA中,最后由FPGA控制DA芯片完成DDS信号发生的功能;另外一种DDS信号发生的方法采用DDS芯片完成,BB的GPIO口产生控制DDS芯片AD9832的时序,FPGA用作连线,这种方法较前叙方法灵活性要差很多,在本方案中一起实现了。
另外,FPGA控制AD芯片高速(可能谈不上高速)采集模拟信号输入,FPGA内部做一个数据缓存,BB通过GPMC读取缓存数据并通过以太网口将数据送给上位机。FPGA传输数据给BB,BB传输数据给上位机,上位机利用得到的数据实时成像,灰度图像的灰度值即为采集得到的数字量,这里面利用成像的行帧同步机制来同步FPGA与BB的GPMC传输、BB与上位机的以太网TCP协议传输以及成像的速度,这一块基本功能实现了,目前点采样频率25KHz,一帧512*512的灰度图像理论上的成像时间为512*512/25KHz=10.48576s,实际成像时间在11s以内,说明25KHz的采样频率对于GPMC以及以太网来说没问题,可能行与行之间有一定的时间间隔,帧与帧之间也有一定的时间间隔以保证上述的同步性。
该方案的硬件部分扩展了一块BB FPGA扩展板,即方案总体设计原理图中绿色部分,BB FPGA扩展板原理图、PCB图pdf下载及相应的实物图见之前的帖子:https://bbs.eeworld.com.cn/thread-435781-1-1.html,从成本角度考虑,FPGA芯片采用相对比较便宜的Altera公司的EP2C5T144C8N,在这个原理验证方案中基本够用了,用于数据采集的10位AD芯片ADS826,用于FPGA DDS的10位DA芯片DAC900以及DDS芯片AD9832也都是从TI和ADI公司官网免费申请的,在模拟部分,无论是DA输出模拟信号还是AD输入模拟信号都是使用易受干扰的单端正电压信号,输出模拟信号的放大也没有考虑到信号失真等信号完整性问题,这些是硬件后续需要深入改进的地方,用E金币买的两本信号完整性方面的书籍也许可以派上点用场,这方面的知识我很欠缺。
图2是方案调试过程的照片。
file:///C:/Users/Gao/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif
图2:方案调试过程照片
该方案的软件包括三部分:(1)计算机端的基于VisualStudio2010 C#的控制及数据采集成像软件;
(2)BB端的基于Linux C的DDS芯片AD9832驱动、读写FPGA的GPMC驱动及应用程序,包括TCP Server Socket、DDS芯片控制、FPGA DDS波形数据及频率控制字设置、数据采集与传输以及项目中调试过的CAN通信程序;
(3)FPGA端的基于QuartusII Verilog与原理图输入结合的FPGA程序,包括硬连接BB与DDS芯片模块、用FPGA搭建的DDS模块、数据采集与传输模块。
下面将简单介绍这三部分的实现,并最终给出所有的源程序代码。
下一篇:BB方案大结局之上位机软件实现篇——基于BB及FPGA的DAQ及DDS设计与实现
本帖最后由 黑非拉 于 2014-6-22 19:19 编辑