
系统以FPGA为处理中心,实现各种工作模式,其功能框图如图2所示。功能模块主要包括软核Microblaze、对外部存储器的接口MPMC、以及需要设计实现的Counterpulse IP核。在Counterpulse IP核与处理器软核之间,采用了FSL总线进行连接,实现由Microbalze对Counterpu-lse核的配置,以及由Counterpulse核到Microblaze的数据传输。

系统工作时,由Microblaze软核通过网口接收由PC机发送来的命令,根据命令,通过一路FSL总线对光子计数IP核进行工作模式的选择和配置。计数IP核对外部计数源进行计数,计数的结果和状态数据通过另一路FSL总线发送到Microblaze软核,由Microblaze软核将该数据在DDRRAM内进行缓冲,并通过网口将这些数据最终发送给PC机,由PC机进行分析处理。
系统有三种工作模式:模式一:使能计数,使能信号有效时(高电平有效),对光子计数输入的计数脉冲信号进行计数;模式二:定周期计数,根据设定的计数周期,对光子计数输入的计数脉冲信号进行计数;模式三:启动和停止信号分开的计时,根据输入的计数启动信号和计数停止信号(均为上升沿有效),进行以系统基频为基准的计时,以实现函数测量。
2.1 系统硬件框图
计数系统硬件结构如图3所示,由FPGA、64MB的DDR存储器、16MB的FLASH存储器和10M/100M以太物理层(PHY)等组成。系统工作时,由PC机通过网口发送命令到FPGA,FPGA内部的Microblaze软核配置计数IP核的工作模式,由FPGA通过两路BNC接口对外部计数源进行计数,并将数据在DDRRAM内进行缓冲,最终将这些数据通过网口发送到PC机。

2.2 主要元器件介绍
2.2.1 FPGA芯片及其配置芯片选用
FPGA选用Xilinx公司的Spartan-3E系列XC3S500E,采用先进的90nm制造工艺生产,其器件密度为50万门。Spartan3系列的FPGA是Xilinx公司专门针对大容量、低成本需求的电子设计而开发的,可支持多种电平的I/O标准;含有丰富的逻辑资源。XC3S500E具有360kbits的块RAM、73kbits的分布式RAM、10476个逻辑单元、20个18×18的乘法器和4个DCM时钟管理模块。
FPGA的配置芯片选用的是Xilinx公司的在系统可编程配置芯片XCF04S,该芯片可为XC3S500E提供易于使用、成本低且可重复编程的配置数据存贮方法,该芯片支持IEEE1149.1标准的JTAG边界扫描测试和编程。在本系统设计中,XCF04S主要存放用于引导Microblaze软核及应用程序的引导代码。
2.2.2 存储芯片
系统使用的RAM是Micron Technology公司的DDRSDRAM(MT46V32M16),是一片容量为512Mbit(32Mx16)的16位总线宽度存储芯片,用于上电后加载Microblaze软核代码和应用程序代码,以及对计数数据进行缓冲。FLASH芯片是Intel StrataFlash parallel NORFlash,型号为28F256J3,存储密度为256Mbit,在本系统中用于保存Microblaze软核代码和应用程序代码。
3 功能设计实现
3.1 基于EDK的FPGA软核Microblaze的应用设计实现
系统设计工具主要采用Xilinx公司的嵌入式开发套件EDK,它是用于设计嵌入式处理系统的集成解决方案。它包括搭建硬件平台的XPS和进行软件配置的SDK。
Microblaze是Xilinx公司推出的32位软处理器核,支持CoreConnect总线的标准外设集合。MicroBlaze处理器运行在150MHz时钟下,可提供125 D-MIPS的性能,这种高效的软核在本系统中可用于实现处理器功能,实现对计数IP核的配置,以及支撑Xilinx的clockgenerator、Et-hernet等IP核。系统对计数器的实现采用Verilog语言将计数功能编写为IP核,将其通过FSL总线挂在Microblaze软核上,以实现计数功能。
2 系统设计实现

2.2 主要元器件介绍
2.2.1 FPGA芯片及其配置芯片选用
FPGA选用Xilinx公司的Spartan-3E系列XC3S500E,采用先进的90nm制造工艺生产,其器件密度为50万门。Spartan3系列的FPGA是Xilinx公司专门针对大容量、低成本需求的电子设计而开发的,可支持多种电平的I/O标准;含有丰富的逻辑资源。XC3S500E具有360kbits的块RAM、73kbits的分布式RAM、10476个逻辑单元、20个18×18的乘法器和4个DCM时钟管理模块。
FPGA的配置芯片选用的是Xilinx公司的在系统可编程配置芯片XCF04S,该芯片可为XC3S500E提供易于使用、成本低且可重复编程的配置数据存贮方法,该芯片支持IEEE1149.1标准的JTAG边界扫描测试和编程。在本系统设计中,XCF04S主要存放用于引导Microblaze软核及应用程序的引导代码。
2.2.2 存储芯片
系统使用的RAM是Micron Technology公司的DDRSDRAM(MT46V32M16),是一片容量为512Mbit(32Mx16)的16位总线宽度存储芯片,用于上电后加载Microblaze软核代码和应用程序代码,以及对计数数据进行缓冲。FLASH芯片是Intel StrataFlash parallel NORFlash,型号为28F256J3,存储密度为256Mbit,在本系统中用于保存Microblaze软核代码和应用程序代码。
3 功能设计实现
3.1 基于EDK的FPGA软核Microblaze的应用设计实现
系统设计工具主要采用Xilinx公司的嵌入式开发套件EDK,它是用于设计嵌入式处理系统的集成解决方案。它包括搭建硬件平台的XPS和进行软件配置的SDK。
Microblaze是Xilinx公司推出的32位软处理器核,支持CoreConnect总线的标准外设集合。MicroBlaze处理器运行在150MHz时钟下,可提供125 D-MIPS的性能,这种高效的软核在本系统中可用于实现处理器功能,实现对计数IP核的配置,以及支撑Xilinx的clockgenerator、Et-hernet等IP核。系统对计数器的实现采用Verilog语言将计数功能编写为IP核,将其通过FSL总线挂在Microblaze软核上,以实现计数功能。
由于FSL总线是单向的,所以系统中采用了两条FSL总线,实现Mieroblaze到计数IP核之间的双向通讯,计数IP核在面对两条FSL总线时,担当的分别是MASTER(主)和SLAVE(从)两种角色。因此,fsloprt.v的代码应该同时满足与FSL总线接口的读和写时序。读写时序如图8和图9所示。

3.4 计数IP核和FSL总线的在EDK中的连接实现
为了能使用FSL总线,首先应该在XPS图形界面中对Microblaze进行配置,在Buses中将Number of FSL Links设置为1。再在IP Catalog中将FSL总线加入到工程中两次。
在计数IP核编写后并综合通过后,将该IP核导入到XPS工程中。
在XPS中,分别对Microblaze和计数IP核的MFSL和SFSL进行连接,将Microblaze的MFSL端连接到计数IP核的SFSL端,反之将计数IP核的MFSL端连接到Microblaze的SFSL端。并在system.mhs中进行如下配置:

![]()
由于从计数IP到Microblaze方向数据量较大,所以对FSL总线的深度进行了配置,如上述代码中,PARAMETERC_FSL_DEPTH=128,被配置为128级深度。
4 结论
在系统的设计中,光子计数IP核与Mieroblaze软核之间通过FSL总线进行通讯,并且对FSL总线上的FIFO缓冲进行了深度扩充,大大增强了光计数数据的传输可靠性。由于系统将门光子计数的三种模式,以IP核的方式实现,相对于市场上商用的计数器来说,实现方式灵活,易于配置和扩展,这种方式为门光子其他可能潜在的计数需求留下了扩展的基础,并具有较低的设计和生产成本。
凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。