基于FPGA的核物理实验定标器的设计与实现
FPGA设计经过4个基本阶段:设计输入、设计编译、设计验证和器件编程。首先,根据系统的逻辑功能生成顶层结构图,如图4所示。然后,分成几个小模块进行下一级设计。由此由上而下分析其逻辑功能,从底层进行设计编译,每一级都进行波形验证。当最后顶层模块的逻辑功能在波形仿真中满足系统时序要求时,才可进行器件编程。
本文引用地址:http://www.amcfsurvey.com/article/85071.htm由于FLEX10K在工作期间,将配置数据保存在SRAM中,而SRAM数据是易丢失的。SRAM单元必须在器件加电后装入配置数据,且配置完成后,它的存储器和I/O引脚必须被初化。初始化后,器件进入用户模式,开始系统运行。对于FLEX10K系列器件,Altera公司提供了4种配置方案:EPC1(或EPC1441)EPPOM方式配置法、被动串行法、被动并行同步法、被动并行异步法。对器件进行配置时,我们先用被动串行法(passive serial)。这种方式是通过下载电缆对器件进行配置的,适合于调试阶段。当整个系统设计完成后,利用EPPOM方式对器件进行配置。这样固化在EPROM中的数据将在系统上电时对FPGA芯片配置,其中EPROM芯片选用EPC1441。
3.2 FPGA单元模块设计
FPGA单元主由脉冲计数模块,定时控制模块,地址锁存、译码、总线驱动、扩展模块这3大模块组成。其中脉冲计数模块和定时控制模块用来实现对输入脉冲的计数次数的测量;地址锁存、译码、总线驱动和扩展这部分模块,主要实现各数据在总线上的分时传输。总线上的数据包括脉冲计数数据和电源模块的高压数据,以及来自单片机的数据总线D0~D7的数码显示用数据。此模块中的地址译码部分,提供锁存单元片选信号。图5所示为FPGA顶层电路图。
在具体设计时,考虑到计数脉冲宽度为0.1~100μs,最高计数率为2MHz,即计数位数达7位,所以设计中的脉冲良数模块就相当于1个7位的BCD加计数器;而定时控制模块相当于1个7位的BCD减计数器。减计数器的预置初始值由定时选择开关控制,从而控制数的时间。CLR信号为“计数键”产生的一脉冲信号,标志计数开始,而减计数器减到0时加计数器即停止计数。这部分设计通过调用MAX+PLUS II提供的库函数用AHDL语言结合图形输入完成。地址译码、锁存、总线驱动模块主要由D触发器和I/O接口设计而成。由于数据传输中用的是双向输入/输出端口,但是Altera芯片的引脚端口并不可以直接使用,需要加1个三态的逻辑门,因此,总线接口部分采用这2种函数原形(三态门和双向端口)进行组合设计。
3.3 FPGA功能模块仿真时序
在整个FPGA设计中,各单元模块都是经过严格的设计验证之后才继续上一层设计的。这里主要使用MAX PLUS II的TIMER进行波形仿真,来验证各子模块的功能,判断其时序是否满足要求。若时序稍有不对,甚至仅是小毛刺,也要立即更改输入设计。这样,设计的精度才高,系统工作才稳定。当每个模块最终都在时序上满足逻辑功能需求时,设计才能完成。图6为FPGA在MAX PLUS II环境下综合设计后的时序仿真波形图。
4 单片机软件设计
软件部分主要是单片机AT89C51对系统进行控制及相应的数据处理,整个控制流程如图7所示。
结束语
本文给出了一种用于核物理实验中的G-M计数装置定标器的新设计方案。此方案在传统的实验原理下,对旧仪器在电路和功能上做了较大程度的改进。在设计中采用EDA设计思想,以AT89C51单片机作为数据传输的控制核心,用Altera现场可编程逻辑器件(FLEX10K系列的FPGA)对核心计数部分电路进行效而灵活的集成,并在此基础上,扩展了数据的存储功能,增加了与PC机通信的RS232串行接口,从而更加智能化。
评论