基于FPGA的高速数据采集卡的设计(毕业设计) 联系客服

发布时间 : 星期三 文章基于FPGA的高速数据采集卡的设计(毕业设计)更新完毕开始阅读df14fa100a4e767f5acfa1c7aa00b52acfc79c31

安徽理工大学毕业设计

采集数据不够。FPGA内部的M9K模块数量是固定的,分布在FPGA内部的区域也是固定的,如果一味的追求大容量的数据缓冲而使用多个不同位置的M9K模块,在各个模块之间可能也会出现难以控制的时序问题。

由于数据采集卡上的FPGA部分可以由ARM处理器灵活的配置,因此在系统设计上我们就有更大的灵活度。系统调试时使用一个M9K模块组成1024*8bits的双口RAM, 作为前级的数据缓冲模块,下图3-3为典型的双口RAM模块图。

图3-3 典型的双口RAM模块图

AD转换后一共输出为9路LVDS信号,8路LVDS数据输出和1路LVDS同步时钟输出,输出的频率与AD的采样频率一致。设计使用Altera公司自带IP库中的ALTIOBUF可以方便的将9路LVDS转换为单端信号,分别作为双口RAM的八位的数据线data[7..0]和写入时钟wrclock。由于AD数据采集具有连续性,数据和时钟是同步的,因此我们可以使用时钟累加,来设计出与数据一致的地址信号。设计中使用AD输出的同步时钟,在每次时钟上升沿时进行加一操作,输出即为十位二进制的地址线。通过上面这个简单的双口RAM就可以实现AD数据的采集。

在实验的过程中我们会遇到采样点过多和采样点过少的问题。当被测信号的频率较低,而AD采样率固定时,采集的1024点数据可能都不够采集被测信号的一个周期,这就产生了信号的过采样;而当被测信号的频率较高,而AD采样率固定时,采集的1024点数据可能采集了多个周期,这就产生了信号的欠采样。为了很好的解决上述两个问题,设计之前就必须对被测信号和AD的实际能力进行分析,AD的采样率最高为250M,而实际中考虑到可靠性和设计难度,我们选用的最高频率为200M,以100M的采样率为基准频率对被测信号进行采样,为了保证显示的效果,默认显示时出现的信号波形四个周期。在数据采集的过程中先使用100M作为默认的采样率,采集完的数据经过FPGA内部的测周期模块分析之后,对AD的采样率进行重新选择,通过分频和倍频输出合适的采样率。

12

安徽理工大学毕业设计

3.3 触发分析

触发的目的是同步,触发的过程是比较。当触发条件与我们的被测信号一致时,就启动触发信号。比较的两端一个是原始的被测信号,另一个是我们人为设置的触发量,现在我们就从这两个量入手分析一下触发的类型和结构。

数字触发信号模拟输入模拟触发信号帧控制触发控制模拟比较器外部触发信号AD量化数字比较器内触发信号FPGA图3-4 基本的触发结构图

基本的触发结构图如上图3-4所示,输入信号有模拟和数字两种形式,因此与之比较的触发信号也对应的有模拟和数字两种形式。触发方式很容易的被分为模拟触发和数字触发两种,模拟触发的触发信号一般来自外部,因此大部分的模拟触发都是外触发;而数字触发一般都是在FPGA中比较的,比较的信号都是数字量,而且是通过外部控制信号量化到处理器内部形成,因此内触发一般都是数字触发。系统中的模拟触发有电平触发,数字触发有边沿触发和脉宽触发等。 3.4 触发控制

典型的触发信号为比较器输出的脉冲信号,触发控制是根据触发脉冲的起始位置,采集起始位置之后的一帧数据,由于每一次触发信号产生时,采集的数据都是在一个固定的值,因此将每次触发后的512个数据点组合为一帧,在显示上就会出现一个稳定的数据波形。整个控制和实现上述功能的过程就是触发控制。本系统中在前端数据缓冲部分使用1024*8bit的双口RAM,而一个数据帧我们根据显示的数据量选择512*8bit的双口RAM。触发控制就是要在触发信号出现后,将连续512个地址上的数据送到512*8bit的帧存储器中。具体的触发控制电路如下图3-5所示:

13

安徽理工大学毕业设计

图3-5触发控制FPGA顶层原理图

3.5 SDRAM控制器的设计

同步动态随机存储器(SDRAM)具有存储容量大、价格便宜等特点,与SRAM相比SDRAM需要额外的控制逻辑和刷新机制,这使得SDRAM的存储速度一般而且增加了SDRAM设计的难度。由于SRAM结构上的瓶颈,很难用于大容量存储,而随着SDRAM的工艺和技术不断改进,陆续出现了DDR3、DDR5 SDRAM,它们的频率都在1GHZ以上,甚至高达4GHZ,单片容量已达到2GB,价格也相对低廉,因此SDRAM成为了高速大容量数据存储的首选。 3.5.1 SDRAM工作原理

SDRAM是具有同步接口的高速动态访问存储器,SDRAM的同步接口和完全流水线的内部架构允许极快的数据速率,SDRAM器件内部由多个“体(BANK)”的组成,通过行地址和列地址来寻址,存储体的行和列地址的位数取决于存储器的容量。

SDRAM的控制是通过总线命令实现的,命令由RAS(行地址选通), CAS(列地址选通), 和 WE(读使能)信号联合产生,例如,在某个时钟周期时,如果3个信号均为高电平,表示发出空操作命令(NOP), NOP命令时片选信号也无效。

SDRAM的访问是通过一系列命令进行的,SDRAM上电后,必须首先按照预定的方式进行初始化才能正常的运行。SDRAM初始化操作过程如下:

上电并且时钟稳定后至少等待100us,然后至少执行1条空操作;对所有页执行预充电操作,这个期间SDRAM内部寄存器单元控制逻辑处于空闲状态,随后向各页发出八条刷新操作指令;最后执行SDRAM工作模式的设定LMR命令用来配置SDRAM工作模式寄存器,写完模式寄存器以后,初始化过程完成。

在行地址被选定并且相应的行被打开之后,就可以进行读操作了。SDRAM读、写操作过程基本相识,根据实际应用的需要,发出读、写指令。SDRAM可实现突发

14

安徽理工大学毕业设计

式读写,支持的突发长度可配置为1个、2个、4个、8个数据周期或者页模式。并且突发的模式可以配置为顺序或者间隔型。对SDRAM进行访问的最主要操作就是读RD和写WR操作。SDRAM在进行读写操作时,必须要先进行页激活ACT操作,以保证存储单元是打开的,以便从中读取地址或者写入地址,关闭存储单元通过预充电PCH命令实现。在进行写操作时,内部的列地址和数据就会被寄存;进行读操作时,内部地址被寄存,等待CAS 延迟时间(通常为1~3个时钟周期)后,读出的数据出现在数据总线上,具体时序详见SDRAM数据手册。

SDRAM必须通过不断的刷新来保持数据,刷新可以分为自动刷新(Auto Refresh)和自刷新(Self Refresh)。自动刷新时,刷新所需的地址由SDRAM内部的刷新控制器提供。自刷新主要用于在外部时钟失效时保存SDRAM内的数据。自刷新被激活时,其它的任何控制都无效,一旦时钟恢复,自刷新就会退出,又必须开始自动刷新以保持数据。SDRAM的操作主要通过控制信号RAS、CAS和WE的不同状态组合来实现。 3.5.2 SDRAM控制器结构

SDRAM控制器针对SDRAM的指令操作特点,为SDRAM提供同步命令接口和时序逻辑控制,下面将以ALTERA公司的Cyclone系列FPGA为例,主机系统时钟为133MHz,使用三星公司的K4S641632E,256MByte SDRAM,介绍SDRAM控制器的具体设计方法,下图3-5为SDRAM控制器的系统结构图。

CMD[2:0]接口控制模块RequestCMD_ACKADDR命令模块SADDR[11:0]BA[1:0]CS[1:0]仲裁器REF_REQ

CMDACK命令接口ADDR[11:0]命令生成器刷新控制REF_ACKCKERASCASWE数据路径模块DATAINDM命令接口OE

DATAOUT

DQDQM图3-6 SDRAM控制器系统结构

SDRAM控制器由3个子模块组成:控制接口,命令通道和数据通道。控制接口模块从主机接收命令和相关的存储地址,同时对命令解码后传送给命令模块,命令模

15