基于FPGA的核物理实验定标器的设计与实现
扫描二维码
随时随地手机看文章
介绍使用现代EDA手段设计核物理实验常用仪器——定标器的原理和实现方法。新的定标器利用FPGA技术对系统中大量电路进行集成,结合AT89C51单片机进行控制和处理,并增加数据存储功能和RS232接口,实现与PC机通信,进行实验数据处理。本文给出详细新定标器设计原理图和FPGA具体设计方案。
定标器在大学实验中有很广泛的应用,其中近代物理实验中的核物理实验里就有2个实验(G-M计数管和β吸收)要用到高压电源和定标器,而目前现有的设备一般使用的是分立元器件,已严重老化,高压极不稳定,维护也较为困难;另一方面在许多常用功能上明显欠缺,使得学生的实验课难以维持。为此我们提出了一种新的设计方案:采用EDA进行结构设计,充分发挥FPGA(Field Programmable Gate Array)技术的集成特性,抛弃原电路中众多晶体管,成功地对系统中的大量处理电路进行了简化和集约,提高了仪器的可靠性和稳定性,有利于电路的测试和检修。改进方案后的定标器不仅完善了原有的功能,还增加了数据存储、RS232接口等功能,可以方便地与PC机接口通信,进行数据处理、图像显示和打印等。
1 G-M计数器原理
G-M计数管是一种低压气体放电管,作用是将入射粒子(射线)转换成电压脉冲输出。原子核心物理实验中常用它作为计数装置的“探头”探测射线及射线强度。G-M计数管有2种:用于探测β射线的钟罩型和主要用于探测γ射线的长圆柱型。其中钟罩型β计数管的工作电压为千V(伏)左右,圆柱型工作电压接近千V(伏)。
射线粒子在计数管中引起气体“雪崩”放电,使得计数管导通;电流通过负载电阻R形成一个负脉冲,此脉冲信号通过电容C,经前置放大器送至定标器计数,如图1所示。由于计数管在放电终止后会形成连续放电现象,此现对计数管极其有害,故一发现计数突然增加时,就应立即降低高压。改进后的定标器会自动控制高压源,将其电压降低。这些改进。即可避免以前实验中出现的计数管损坏问题。
2 定标系统原理及硬件实现
定标器系统由电源部分、输入电路部分和脉冲计数显示部分3个模块组成,原理框图如图2所示。
G-M计数管产生的负脉冲经过输入整形电路,进行整形、放大处理,产生标准TTL信号,再由计数测量电路进行计数。定时脉宽门控电路控制计数的脉宽,分6个档:×10 -3、×10 -2、×10 -1、×10 0、×10 1、×10 2。时间倍乘档有4种选择:×1、×2、×4、×8。这样进行的一组测量数据即可以用来描述射线粒子产生的规律。
图2中,显示部分采用的是动态显示的方法,利用单片机AT89C51来进行即时的控制和相应的显示数据。同时根据需要,选择部分测量数据(包括此次计数数据及对应的高压值)存储到RAM中,然后将所选取的RAM中的数据通过RS232串行端口发送到PC机上,经过相应的处理软件进行描图,以及相应的实验数据处理。为了使系统更加集成化,特定时脉宽门控、计数测量电路、地址译码及数据锁存、总线的驱动等电路集成到1片FLEX10K的FPGA中。图3为系统详细电路原理框图。
3 FPGA芯片设计
3.1 FPGA逻辑功能结构及其总体设计
为了简化设计,实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件(FPGA)。FPGA主要实现以下逻辑功能:定时脉宽门控、计数测量、地址锁存、译码、总线的驱动和扩展以及数码显示的控制等功能。其逻辑功能顶层结构如图4所示。FPGA器件选择Altera公司FLEX10K10系列的EPF10K10LC84-4芯片。该芯片集成有1万个等效逻辑门,含有572个逻辑单元(LEs)、72个逻辑阵列块(LABs)、3个嵌入式阵列块(EAB s),并具有720个片内寄存器,可以在不占用内部资源的条件下实现6144 bit的片内存储器;内部模块间采用高速、延时可预测的快速通道连接;逻辑单元间具有高速、高扇出的级联链和快速进位链;片内还有三态网络和6个全局时钟、4个全局清零信号以及丰富的I/O资源;每个I/O引脚可以选择为三态控制或集电极开路输出,可以通过编程控制每个I/O引脚的速度以及I/O寄存器的使用。
FPGA使用的开发软件为MAX+PLUS II。该软件是一个集设计输入、编译、仿真和编程为一体的超级集成环境;提供了自动逻辑综合工具,可以在多个逻辑层次上对高级设计描述进行综合、优化,大大缩短了编译时间,加速了FPGA设计开发进程。MAX+PLUS II支持各种HDL输入选项,包括VHDL、Verilog HDL和ALTERA的硬件描述语言AHDL;提供丰富的库单元供设计者调用,其中包括74个系列的全部器件和多种特殊的逻辑宏单元(macrofunction),以及新型的参数化的巨单元(magafunction)。
FPGA设计经过4个基本阶段:设计输入、设计编译、设计验证和器件编程。首先,根据系统的逻辑功能生成顶层结构图,如图4所示。然后,分成几个小模块进行下一级设计。由此由上而下分析其逻辑功能,从底层进行设计编译,每一级都进行波形验证。当最后顶层模块的逻辑功能在波形仿真中满足系统时序要求时,才可进行器件编程。
由于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串行接口,从而更加智能化。