第三章 采集时序控制逻辑设计
图 3-8 触发方式选择
从图3-8中可以看出预设的触发方式共有7种,CLK1时钟触发、AI1_tri触
发信号脉冲、AI2_tri触发信号脉冲、outside_tri外部信号触发、实验板上的Aout1内部触发、Aout2内部触发,mantri手动触发。这7种触发方式都是通过计算机给信号,使它产生不同的控制字组合方式来选择不同的触发方式。本课题使用的触发方式是CLK1的时钟触发,它通过触发控制字startq[2...0]=000来控制一个8选1的选择器,使得产生了时钟触发功能。 3.4.5 降频累加器的电路设计
A[11..0]采集数据In[11..0]Out[11..0]累加器数据选择器B[11..0]Out[11..0]Set数据锁存器DB[11..0]累加控制字10MSet[2..0]clkDB[11..0]GN累加选择SRAM地址产生器AB[15..0]CLK采集进行 clkWR 图3-9 累加器框图
31
电子科技大学硕士学位论文
图3-9主要是通过累加器对采样频率fs实现降频。这里通过累加器来降频主要是因为可以通过累加器来获得多次采样数据,之后对获得的多组采样数据进行平均值处理,这种方法可以减小采样误差,以此提高最后的测试精度等,具体的逻辑控制如下图。
图3-10 采样累加控制过程
图3-10是采样累加的一个电路控制降频过程,首先通过一个2选1的选择
器,来控制是否运行累加器ad_adder_8实现累加功能。而模块8_2SEL1_new 主要是通过累加控制字sel来控制是选择累加过的s[11..0]数据还是选择没累加过的IA[11..0],最后通过数据送到缓冲器74244C中,而缓冲器则是通过clk1时钟信号
与A_wr模拟写信号来控制是否将数据最终送出。
图3-11 采集过程控制
图3-11主要是对整个采集过程的起始与停止控制。首先通过采集起始信号
I_start控制始发过程,当I_start为0时,通过D触发器翻转电平,这时end点就是高电平1,表示它将继续采集,而此时end点信号又与nA/D来控制采集过程是
32
第三章 采集时序控制逻辑设计
数字部分采集还是模拟部分采集,当nA/D为低电平的时候输出为A_wr模拟控制字有效,数字控制字D_wr无效;当nA/D为高电平的时候,输出是D_wr数字控制字有效,模拟控制字A_wr无效。在主轴上end为1时,采集继续中,当触发信号TRI送过来的时候,通过D触发器,信号翻转变为0,这时lend为0,而下一个D触发器又是靠s_END来控制的,因此lend先和clk1与的结果为endtri_clk送入到con1_02,这是点数控制采集过程,它主要是实现在设置的采集点数内采集,如果采集点数结束,就送出s_END信号,然后再通过一个D触发器对lend信号翻转送出并与之前的end信号异或实现最后的采集停止控制,另一方面对翻转的信号再取反并与clr相与,以此用来对四个D触发器清零。这就采集过程的控制。
3.5 本章小结
本章主要是设计通用测试平台中FPGA时序控制逻辑电路来控制硬件电路的采集过程。在这里,阐述了硬件平台的地址分配,触发方式的种类以及触发源的实现方法;其次介绍了通过FPGA来控制采集得到的数据如何实现读写过程;第三,则是主要说明采集过程的控制与实现。
33
电子科技大学硕士学位论文
第四章 虚拟数字频谱仪软件设计
虚拟仪器的实质是将可完成传统仪器功能的硬件和最新计算机软件充分结合
起来,实现并扩展传统仪器的功能,完成数据采集、分析处理、显示和自动化功能。
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是美国国家仪器公司(National Instruments,简称NI)推出的一种使用基于图形化编程方式的虚拟仪器软件开发环境[12]。本文正是基于这种软件平台进行的设计。
4.1 前面板窗口和框图程序窗口
在本课题中,首先我们建立一个新的VI。即从LabVIEW启动对话框上点击New VI按钮,将会出现两个没有标题的新窗口,选择菜单栏的Windows菜单项,弹出下拉菜单,选择Tile Left and Right选项。可以将这两个窗口平行排列,这样便于前面板与框图程序相对应。一个是前面板窗口,另一个是框图程序窗口。窗口都是白的,用户就可以创建一个新的VI程序。本设计中主要设计并调用了子VI程序和动态链接库(DLL),因此对这两个部分做简单介绍。
4.1.1 VI库
LabVIEW可以将多个VI程序文件(扩展名为.vi)压缩成一个文件(文件的扩展名为.llb),我们称之为库文件[13],使用VI库有以下有点:
? 使用VI库,可以用最多255个字符(含扩展名)给VI程序命名; ? VI库可压缩VI程序以节省磁盘空间(在打开时解压);
? 因为多个VI在同一个文件中,使得计算机之间的VI转移很简单; ? VI库没有层次,也就是所不能在VI库类创建VI库;
? 在文件系统中打开VI或保存VI比在VI库中来得快,因为压缩和解压缩
要耗费运行时间。
另外制作子VI程序并用于主程序之间时,可以使主程序的逻辑框图关系更加明了,也方便我们的阅读和修改[17]。
34
第四章 虚拟数字频谱仪软件设计
4.1.2 动态链接库(DLL)
Windows出现不久,Microsoft公司就引入了动态链接库(DLL-Dynamic Link Libraries)。动态链接库是封装好的供多个应用程序调用的功能模块。使用动态链接库时,应用程序只有当运行时才连接到DLL的功能模块上,动态链接库再生成执行文件后依然是单独的文件[18]。
在程序设计中,一般比较倾向于使用动态链接库,因为:
? 将多个应用程序共同使用的模块独立成所有应用程序都可以共享的动态
链接库,可以减少应用程序可执行文件的大小,节省存储空间
? 如果动态链接库的到出接口不变,修改和升级动态链接库中的功能模块就
不必更新可执行的应用程序。
? 动态链接库可以支持任何其它Windows编程语言,使得动态链接库应用
更加广泛的应用。
动态链接库通过导出函数将特定的变量和函数交给应用程序使用。当一个函 被导出时,它被加入到动态链接库所包含的一个表中。此表包含了所有导出函数的位置,可以用来查找和调用这些函数。任何没有被导出的函数不加入该表中,并且不能被任何外部应用程序所调用[19]。
在应用程序中有两种办法调用动态链接库中的函数。一种是通过代码查询动态链接库中的函数位置,获得一个指向该函数并且用来调用该函数的指针。
还有一种更为常用的办法就是在工程中加入动态链接库的导入库(.lib)。这与在工程中加入静态库的办法相同。在编译过程中,导入库被看作是标准库文件,但是导入库内并不包含功能模块中函数的实现,而只包含调用动态链接库中函数的小段代码。需要注意的是导出库文件是编译动态链接库时一起创建的。
在本课题中所调用的DLL是通过LabWindows/CVI来制作的,以这个动态链接库作为虚拟频谱分析仪的底层驱动程序。这样就简化了LabVIEW访问底层的方法,也可以提高效率[20]。
4.2 基于FFT算法的频谱分析仪设计
频谱分析仪主要是将采集到的模拟信号经过模/数转换后变为数字信号,然后再进行数字化处理。而将连续信号变成数字信号是在计算机上实现信号数字化处理的必要步骤。
35