微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于LabVIEW和ARM嵌入式数据采集与远程传输控制系统

基于LabVIEW和ARM嵌入式数据采集与远程传输控制系统

时间:11-21 来源:互联网 点击:
3.2 FPGA逻辑设计

FPGA内部逻辑电路结构见图2。考虑到后续设计的需要,FPGA内部使用ARM地址总线的低3位来选择当前操作的模块,具体的地址与内部模块对应关系见表1。


图2中各模块功能进一步说明如下:

a)Input_db_part:双向数据总线分离。配合由Control_register送来的控制信号,在Conf_6620有效时将数据总线上的数据送至Config_6620模块,完成AD6620配置,在Fetch_sram信号有效时将读SRAM得到的数据传送至ARM数据总线。

b)Control_register:控制寄存器。内部模块有序工作的核心,具体的控制定义见表2。


c)Config_6620:配置AD6620。此模块在Conf 6620位有效时接收由ARM传来的AD6620配置信息,完成DDC滤波器和控制寄存器配置。它除了本身使用ARM地址总线的3位ARM ADD[3:1]作为FPGA内部模块选择之外,还用了ARM ADD[6:4]作为AD6620的外部接口寄存器地址。Rdy in信号用于指示写入操作成功,ARM检测到此信号有效后,进行下一次的写操作。

d)PII:锁相环。Cyclone EP1C6Q240中有2个锁相环模块,设计中使用了其中的一个将20 MHz的时钟倍频至50 MHz,供AD9244,AD6620以及FPGA内部使用。

e)Ad_to_sram:AD6620输出数据写入SRAM时序产生模块。AD6620工作在单通道模式时典型输出时序见图。

此模块主要完成的功能有:用2个数据锁存器在DV与IQ信号的控制下锁存I路和Q路数据,产生写SRAM所需的地址。由于AD6620抽取率较高的缘故,输出数据率一般较低,在模块中使用了状态机在2次有效数据期间产生写SRAM的时序。此外,当写地址到达设定值时,模块产生写溢出中断,提示ARM改变控制寄存器内容,读取数据。

a)Read_add_gen:读地址产生。在Fetch_sram位的控制下,产生读SRAM时的地址,当读地址到达设定值时,产生读溢出中断,提示ARM改变控制寄存器内容,进行下一步操作。

b)Control_logic:控制逻辑。模块在Start_daq有效时选择由Ad_to_sram模块产生的写SRAM的地址、数据与控制总线与SRAM相接,而在Fetch_sram有效时选择读SRAM的地址、数据与控制总线与SRAM相接。与DMA读取有关的请求与响应信号也在此模块中处理。

3.3 嵌入式Linux驱动程序设计

驱动程序是硬件与应用程序的接口。针对设计任务与硬件特点,在驱动程序中设计了以下函数:

a) AD6620_read:申请DMA缓存,睡眠等待写溢出中断到来,DMA传输完成后,将数据从内核空间传送至用户空间,释放DMA缓存。

b) AD6620_ioctl:核心是一个switch选择结构,根据应用程序中用户命令,完成初始化DMA,写控制寄存器或者配置AD6620的工作。

c)AD6620 open:主要完成DMA通道参数设置,初始化IO端口和信号量。

d) AD6620 release:完成与AD6620_open相反的工作,主要是一些清理和释放申请资源的工作。

函数编写好后,通过下面的file_operations结构体联系起来:


e) AD6620 init:初始化函数,完成驱动程序注册、中断与中断处理函数注册、创建设备文件节点等。其中的驱动程序注册的核心就是上面的file_operations结构体。

驱动程序编写好后,用户就可以在应用程序中调用这些函数,实现通过一组标准化的调用来操作底层硬件。

3.4 客户端应用程序

客户端应用程序为了保证数据与控制信息的可靠传输,采用的是基于TCP协议的Socket网络编程。本次设计客户端运行在ARM上,采用的是Linux下的C编程;而服务器端运行在远程主机上,利用LabVIEW的图形化语言实现。具体客户端的通信与控制流程图见图4。可以看出。客户端是依赖于读取由远程主机发送的控制字符来完成实时控制,实现与服务器端的交互操作的。因此,无论是客户端还是服务器端,在每一次发送数据与控制信息时,都会发送一个控制字符,接收端就是依靠识别此字符来完成相应的操作。表3中给出了控制字符与所执行操作之间的对应关系。  


3.5 LabVIEW服务器程序设计

服务器端的完整程序见图5。服务器在指定的端口上侦听,等待远程客户端的连接。程序的核心是两个循环框,上面的循环框完成发送数据和控制信息的任务,主要包括传送AD6620滤波器设计与控制寄存器配置文件、实时改变AD6620可动态配置寄存器内容、开始数据采集以及停止系统控制等模块。


数据与控制信息内容放在LabVIEW事件框图中,当用户单击前面板上的控制按钮时,相应的信息被发送,这样就避免了系统无休止地查询,节约了系统资源。下面的循环框完成读SRAM数据接收、分离IQ信号、频谱分析与显示等,当用户使得存储文件路径不为空时,可以将此时数据显示控件上的数据保存下来;而当回放文件路径不为空时,用户可以回放之前保存的历史数据。频谱显示控件有线性与对数显示两种格式,它受前面板上的一个系统复选框的控制。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top