1、附录1 ARM外围电路 14附录2 FPGA外围电路 15附录3 ARM读取显示程序 20 第一章 系统设计方案和主要器件选型1.1 系统设计方案整个系统是由前端模拟通道、触发电路、FPGA数据采集预处理、数据模拟输出和ARM数据处理显示五部分组成。FPGA数据采集预处理分为A/D数据采集、触发控制、帧控制、SDRAM控制器和ARM数据交换五个部分,模拟数据经过A/D装换后在FPGA中缓冲,缓冲之后使用触发控制将采集到的数据分成512个数据点组成的数据帧,数据按照帧的顺序传输,经过SDRAM存储后,通过ARM与FPGA中的共享存储区传输给ARM。具体的数据采集系统的硬件结构图如下图2-1所示:
2、图2-1 数据采集卡硬件结构图1.2 ADC芯片选型A/D转换器是整个采集系统的核心,系统前端模拟电压调理电路、FPGA数据采集和后端的采集控制部分都与A/D直接相关,A/D芯片的选择不但关系到系统设计的性能,而且直接决定了整板设计的难度。1.3 DA芯片选型为了输出高性能的模拟信号,DAC采用采样率高达175M的高速DAC。AD970X系列DAC针对低功耗特性进行了优化,同时仍保持出色的动态性能,适合用于手持便携式仪器等需要有效地合成宽带信号的场合。AD9707 精度高达14位 ,采样率为175MSPS,内部集成边沿触发式输入锁存器,1V温度补偿带隙基准电压源和自校准功能,使AD9707能提
3、供真14位INL与DNL性能。1.4 FPGA芯片选型在现代采集系统中FPGA往往被用做通信系统的中枢,负责了大量的数据采集和前期处理和控制工作,FPGA作为系统的中间级主芯片承担着承前启后的重大任务。1.4.1 FPGA的特点及选型常见的FPGA一般由六部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。1.4.2 FPGA的设计步骤1.电路设计与输入 2.功能仿真3.综合优化 4.综合后仿真5.实现与布局布线 6.时序仿真和验证7.板级仿真与验证 8.调试与加载配置 1.4.3 FPGA核心电路设计FPGA各系列的最小
4、系统板的单元组成基本相同,仅具体电路中存在着差异。一般可以把其组成分为七部分:FPGA主芯片、PROM存储芯片、电源电路、全局时钟发生电路、JTAG接口电路、下载模式选择电路和接口引出插针。以该最小系统板作为控制核心,外加所需的接口电路就可以实现各种设计。1.5 主控CPU选型主控CPU相当与人的心脏,整个系统运行的快慢与它有直接关系,常见的嵌入式处理器有单片机、ARM、DSP等,它们都有各自的特点,运用的场合各有不同,设计的难度也不一样。主控CPU的选择是一个综合的过程,在选择时它必须有以下特点:1. CPU运算速度快,不能拖慢整个系统采集的效率。2. CPU内嵌LCD控制器可以驱动TFT-
5、LCD,利于降低系统设计难度。3. 所选处理器比较常见,在其他设计中有广泛应用,便于代码移植,简化设计。4. 基于此CPU的开发板购买方便,价格便宜,代码丰富。 第二章 数据采集与触发电路设计2.1 前端采集电路设计2.1.1 AD前端调理电路前端调理电路目的就是将被测信号调理到AD9480模拟输入的电压范围。被测信号经过前端阻抗变换网络之后,进入后级运算放大器,后级选择高阻抗低噪声运算放大器ADA4817,输入阻抗高达500G。下图2-1为AD8351单端转差分的典型电路:图2-1 AD8351单端转差分的典型电路下图2-2为AD9480功能模块图:图2-2 AD9480功能模块图2.1.2
6、 FPGA数据采集设计中使用FPGA内部的RAM来缓冲AD输出的数据,EP3C25内部的RAM资源总共有608Kbits,使用这些内部的RAM作为数据缓冲单元,既可以节约成本,又可以提高硬件采集的性能。使用FPGA内部的RAM资源,设计中可以非常容易的构建前端数据缓冲所需要的双口RAM或者FIFO。下图2-3为典型的双口RAM模块图。2-3 典型的双口RAM模块图2.2 触发电路与触发控制为了保证采集数据的稳定,一般的数据采集系统中都会有触发电路,它能提供了一个稳定的触发相位点,使得重构的波形能够在上位机的显示屏上稳定显示,还保证我们能观测的感兴趣的波形。2.2.1 触发分析触发的目的是同步,
7、触发的过程是比较。图2-4 基本的触发结构图2.2.2 触发控制典型的触发信号为比较器输出的脉冲信号,触发控制是根据触发脉冲的起始位置,采集起始位置之后的一帧数据,由于每一次触发信号产生时,采集的数据都是在一个固定的值,因此将每次触发后的512个数据点组合为一帧,在显示上就会出现一个稳定的数据波形。整个控制和实现上述功能的过程就是触发控制。2.4 SDRAM控制器设计2.4.1 SDRAM控制器结构图2-5 SDRAM控制器系统结构1.控制接口模块图2-6 接口模块的结构图第三章 各芯片间的数据传输与处理3.1 采集卡各芯片速度等级的划分和数据流向按照整个系统各部分的速度,我们将系统简单的划分
8、为三个速度等级,不管是程序设计还是PCB设计都要充分的考虑到各个速度等级的特点,才能设计出合理可靠的系统,具体划分情况如下图3-1所示:图3-1 系统速度等级划分图为了提高采集、存储和显示的效率,根据各个芯片的特点,运用了下面几种处理方式来提高效率:1.在FPGA中构建一个多缓冲单元的乒乓机制采集模块,提高FPGA采集的效率,并降低了中间级传输的速度,利于中间级的数据处理。2.在中间级FPGA与后端ARM之间的通信中,使用DMA模式,大大提高了数据传输的速率,并解放了ARM,使其可以从容的进行数据处理和显示工作。3.在ARM接收数据后对采集的数据帧进行控制,保证数据传输的可靠性和正确性。3.2
9、 ARM与FPGA通信在数据采集卡中ARM主要负责数据显示和数据分析,处理的速度处于MS级;而FPGA在系统中处于数据的高速采集和高速处理,处理的速度是ns级。两个处理器的之间的数据传输属于典型的异步数据通信,它们之间通信的速度之间决定了系统处理数据的效率。FPGA与ARM之间属于大量数据交换,以异步并行读取的方式为例介绍ARM与FPGA的通信,实际设计中使用DMA方式来实现ARM与FPGA之间的大数据量通信。3.2.1 ARM存储系统分析S3C2410A存储控制器提供访问外部存储器所需要的存储器控制信号。S3C2410A支持大、小端模式,将存储空间分为8个组(Bank),每组大小是128M,
10、共计1GB,如图3-2所示。3.3 数据的模拟输出3.3.1 模拟输出电路设计模拟输出部分是由AD9707、低电压异或门76VX86和运放ADA4899组成。测试时可以通过跳线J1选择AD9707的工作模式,J1选择高电平时为PIN模式,低电平时为SPI模式,出现高电平脉冲时复位内部寄存器。电路图中AD9707的输入时钟选择差分时钟, AD9707输出选择单端输出,正向输出端IOUTA与ADA4899的反相输入端相连,反向输出端IOUTB接地,内部基准电压源REFIO与ADA4899的同相输入端相连。运算放大器ADA4899将AD9707单端输出的电流变化转换为电压变化,外部使用内部基准电压源
11、时REFIO引脚需用一个0.1F电容接地。基本的硬件电路图如下图3-3所示:图3-3 AD9707基本外围电路3.3.2 AD9707内部寄存器配置在AD9707测试之前必须按照外围电路的设计配置好AD9707工作的状态。3.3.3 使用ARM和FPGA分别配置AD97071使用ARM配置AD9707内部寄存器S3C2410具有两个SPI接口模块,每个模块分别具有两个8位移位寄存器用来接收和发送数据。数据的接收(串行移入)和发送(串行移出)是同时进行的。串行数据的速率由相应的寄存器设定。其时序很简单,主要是在CLK的控制下,两个双向移位寄存器进行数据交换。SPI接口发送数据的程序流程图如下图3
12、-4所示:图3-4 SPI数据发送程序流程图使用S3C2410的SPI端口0来配置AD9707内部寄存器的主程序如下:void Spi_MS_poll(void) int i; S16 a2=0x0080,0x0200;/地址0x00的数据为0x80;地址0x02的数据为0x00 for(i=0;i2;i+) /通过两次赋值 SPI_Port_Init(0);/SPI端口初始化 rSPPRE0=0x0; /设置波特率SCLK为20MrSPCON0=(05)|(14)|(13)|(12)|(01)|(00);/设置SPI端口为polling模式,时钟使能,SPI为主控模式 rSPPIN0=(02
13、)|(1/禁止多主控错误检测使能,主机输出后释放MOSIif(rSPSTA0&0x1) /检查SPI0的状态 rSPTDAT0=ai; i+; /发送数据,准备下一次发送数据 5)|(0/设置SPI端口为Polling模式,禁止SCK, 选择主控模式使用ARM的SPI接口可以很方便的配置AD9707,但是在测试电路板上ARM离AD9707较远,走线比较长,布线时比较复杂,导致测试时不得不使用飞线。为了解决布线困难的问题,我们采用FPGA模拟SPI接口配置AD9707内部寄存器。2.使用FPGA配置AD9707内部寄存器FPGA的使用非常灵活,同一片FPGA通过不同的程序可以产生不同的电路功能。
14、下面就是使用VHDL语言编写一个SPI控制器,来发送配置数据给AD9707。根据图4-7中的写入时序编写程序17 18 19 20,具体代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SPI IS GENERIC(DATA:STD_LOGIC_VECTOR(11 DOWNTO 0):=110101101011);-配置数据PORT(SCLK:IN STD_LOGIC; CSB, SDIO: OUT STD_LOGIC);END SPI;ARCHITECTURE BEHAVE OF SPI IS SIGNAL COUNT : STD_LOGIC_VECTOR
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1