基于FSL总线的门光子计数器设计与实现

发布者:SparklingEyes最新更新时间:2011-08-11 关键字:计数器  Microblaze  FSL 手机看文章 扫描二维码
随时随地手机看文章
0 引言
    光学领域尤其是量子光学领域的实验常常需要进行单个相干光子的探测用于实现实验数据的采集。一般常用的配置是一个单光子探测器加上一个门光子计数器,其前端的单光子探测器用来收集光子信号,每探测到一个光子产生一个TTL脉冲,后端的门光子计数器用来记录该TTL上升沿数目并且与PC等其他器件通信或者同步。APD的工作方式相对简单,而门光子计数器则由于具体实验需求不同而要求不同的工作方式,很难有一种通用的计数模式能够满足各种情况的需求。由于成本限制,功能固定的计数器往往因为没有广阔的市场而造成价格很高。另一方面,工业和科研界购买的商用计数器往往无法满足自己的具体需求而导致工作效率低下,甚至无法满足要求。
    所谓门光子计数器就是针对单自旋量子调控实验研究中对单个光子探测的需求所研制的。单自旋量子调控是对晶体中的缺陷,如量子点和金刚石色心进行控制,其信号读出一般是通过自旋发生的单个光子进行探测实现的。在此类实验中常用的技术有三种:门光子计数、定时计数和相关函数测量。文中所述的系统建立了一种可扩展的通信和控制架构能够添加不同方式的计数功能。

1 系统结构设计
    整体系统结构示意图如图1所示,通过PC机的以太网口实现与计数系统的数据通讯与命令传输,PC机将工作模式选择等命令通过网口向系统发送,而系统将在不同模式下的计数值及计数状态等数据通过网口发送到PC机,交由PC机对数据进行处理。系统的主芯片采用Xilinx的SPARTAN 3E系列的XC3S500E。系统的光子计数输入由两个BNC接口引入,这两个接口可以由FPGA进行配置,使光子计数器以不同的模式进行工作。系统的固件烧写在FLASH芯片内,SDRAM提供了大容量存储空间,用于运行时装载Microblaze软核代码、计数应用代码以及存储计数的数据。

a.jpg


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

e.jpg


    系统工作时,由Microblaze软核通过网口接收由PC机发送来的命令,根据命令,通过一路FSL总线对光子计数IP核进行工作模式的选择和配置。计数IP核对外部计数源进行计数,计数的结果和状态数据通过另一路FSL总线发送到Microblaze软核,由Microblaze软核将该数据在DDRRAM内进行缓冲,并通过网口将这些数据最终发送给PC机,由PC机进行分析处理。
    系统有三种工作模式:模式一:使能计数,使能信号有效时(高电平有效),对光子计数输入的计数脉冲信号进行计数;模式二:定周期计数,根据设定的计数周期,对光子计数输入的计数脉冲信号进行计数;模式三:启动和停止信号分开的计时,根据输入的计数启动信号和计数停止信号(均为上升沿有效),进行以系统基频为基准的计时,以实现函数测量。
[page]

2 系统设计实现
2.1 系统硬件框图
    计数系统硬件结构如图3所示,由FPGA、64MB的DDR存储器、16MB的FLASH存储器和10M/100M以太物理层(PHY)等组成。系统工作时,由PC机通过网口发送命令到FPGA,FPGA内部的Microblaze软核配置计数IP核的工作模式,由FPGA通过两路BNC接口对外部计数源进行计数,并将数据在DDRRAM内进行缓冲,最终将这些数据通过网口发送到PC机。

b.jpg


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软核上,以实现计数功能。

[page]

2 系统设计实现
2.1 系统硬件框图
    计数系统硬件结构如图3所示,由FPGA、64MB的DDR存储器、16MB的FLASH存储器和10M/100M以太物理层(PHY)等组成。系统工作时,由PC机通过网口发送命令到FPGA,FPGA内部的Microblaze软核配置计数IP核的工作模式,由FPGA通过两路BNC接口对外部计数源进行计数,并将数据在DDRRAM内进行缓冲,最终将这些数据通过网口发送到PC机。

b.jpg


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软核上,以实现计数功能。

[page]

    由于FSL总线是单向的,所以系统中采用了两条FSL总线,实现Mieroblaze到计数IP核之间的双向通讯,计数IP核在面对两条FSL总线时,担当的分别是MASTER(主)和SLAVE(从)两种角色。因此,fsloprt.v的代码应该同时满足与FSL总线接口的读和写时序。读写时序如图8和图9所示。

h.jpg


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中进行如下配置:
    i.jpg
    j.jpg
    由于从计数IP到Microblaze方向数据量较大,所以对FSL总线的深度进行了配置,如上述代码中,PARAMETERC_FSL_DEPTH=128,被配置为128级深度。

4 结论
    在系统的设计中,光子计数IP核与Mieroblaze软核之间通过FSL总线进行通讯,并且对FSL总线上的FIFO缓冲进行了深度扩充,大大增强了光计数数据的传输可靠性。由于系统将门光子计数的三种模式,以IP核的方式实现,相对于市场上商用的计数器来说,实现方式灵活,易于配置和扩展,这种方式为门光子其他可能潜在的计数需求留下了扩展的基础,并具有较低的设计和生产成本。

 

 

关键字:计数器  Microblaze  FSL 引用地址:基于FSL总线的门光子计数器设计与实现

上一篇:新型便携式心电监测仪的软硬件设计
下一篇:利用Pspice分析放大器环路的稳定性

推荐阅读最新更新时间:2024-03-30 22:17

单片机定时器/计数器的结构和工作原理
  1.结构   2 个定时器 T0 和 T1:16 位加 1 计数器,通过编程来设置工作状态   定时器方式寄存器TMOD:设置定时器的工作方式   定时器控制寄存器TCON:启动和停止定时器的计数;计数溢出标志   2.工作原理   MCS-51 单片机定时/计数器的工作原理:   归根结底是计数器。每接收到一个计数脉冲,加法计数器的值就加一,当计满时发生溢出,并从 0 开始继续计数。   (1) 定时功能 (设置 TMOD 中位 C/T=0)   对片内机器周期进行计数,即每个机器周期产生一个计数脉冲,计数加 1 。   (2) 计数功能 (设置 TMOD 中位 C/T=1)   对片外从 T0 (P3.
[单片机]
单片机定时器/<font color='red'>计数器</font>的结构和工作原理
ARM指针寄存器 -程序计数器PC、堆栈指针SP
堆栈是一种具有“后进先出”(LIFO---Last In First Out)特殊访问属性的存储结构。堆栈一般使用RAM 物理资源作为存储体,再加上LIFO 访问接口实现。 堆栈的实现方法: 在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为‘压栈’(push )。通常用一个指针(堆栈指针 SP---Stack Pointer)实现做一次调整,SP 总指向最后一个压入堆栈的数据所在的数据单元(栈顶)。从堆栈中读取数据时,按照堆栈 指针指向的堆栈单元读取堆栈数据,这个过程叫做 ‘弹出’(pop ),每弹出一个数据,SP 即向相反方向做一次调整,如此就实现了后进先出的原则。 堆栈
[单片机]
定时器/计数器T1的定时实例
1、本例使用定时器1的定时中断控制2个LED实现不同的闪烁频率。 2、实现方法:通过给定时器T1设置适当的初值,实现50MS的定时中断,由于要控制两个LED以不同的频率闪烁,因而需要设置两个变量来分别计算中断次数。 3、在keil c51中新建工程ex46,编写如下程序代码,编译并生成ex46.hex文件 #include //包含头文件 sbit LED1=P1^0; //端口位定义 sbit LED2=P1^1; unsigned char counter1,counter2; //定义全局变量,用以存储定时器的中断溢出次数 //主函数 void main(void) { EA = 1; //开总中断
[单片机]
定时器/<font color='red'>计数器</font>T1的定时实例
sTM32 使用TIMx_CH1作为 Tx1F_ED 计数器时钟
环境:iar arm 5.3 stm32f103vbt6 使用PA.8 外部输入10Mhz的方波。可从systick中断得到数据4. 4×5000(预分频值)×1000(tick中断时间)=20MHz 属于双边沿检测,一个PA.8个脉冲有2个边沿,所以时钟加倍。 由于使用了TI1F_ED它的结构如下: void RCC_Configuration( void ) { /* Setup STM32 system (clock, PLL and Flash configuration) */ SystemInit( ); /* Enable GPIOA, GPIOC and USART1 clock */ RCC
[单片机]
sTM32 使用TIMx_CH1作为 Tx1F_ED <font color='red'>计数器</font>时钟
用AT89S51单片机来制作的手动计数器
  1. 实验任务   利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示。   2。 系统板上硬件连线   1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。   2.把“单片机系统”区域中的P2.0/A8-P2.7/A15
[单片机]
用AT89S51单片机来制作的手动<font color='red'>计数器</font>
Fluke 985手持式尘埃粒子计数器在医疗行业的应用
为什么要保障医疗机构室内的空气质量呢?医疗机构室内的空气质量如何保证呢? 在高度敏感的卫生保健设施环境中,同时有传染性病人和高度易感染病人在接受治疗,因此最大程度降低感染和疾病传播的可能性至关重要。 如果不能正确监测和管理室内空气质量,会因为住院时间延长而增加费用、致使医疗机构承担相应责任,更重要的是为病人和医护人员带来不必要的风险。 医疗机构中的室内空气质量(IAQ)问题根源 机构内部人员产生的传染性病原体,例如结核、风疹(麻疹)和流行性感冒。 通常存在于人类环境的病原体,可能会危及免疫系统受损的病人。此类生物体包括烟曲霉(一种常见的霉菌)等。 为了控制传染性病原体的运动和扩散,机构设计者和管
[医疗电子]
Fluke 985手持式尘埃粒子<font color='red'>计数器</font>在医疗行业的应用
MSP430定时/计数器TimerA的使用详解(一)
MSP430定时器A是一个16位的定时器,简图如下: 注意:从上图我们可以知道Timer_A有三个捕获/比较寄存器:CCR0,CCR1,CCR2,这一点是和51不同的。 有四个时钟源,并且支持分频。当选择好时钟源之后需要选择定时器的工作模式: 通过MCx的值可以确定工作模式,其中有Stop,Up,Continuous,Up/down 四种模式。 其实第一种就是定时器没有工作。 Up从0一直计数到到TACCR0寄存器的值。 这种模式就是上图所示,TACCR0 =0XFFFF。当定时器等于TACCR0时,标志位TACCR0 CCIFG interrupt flag会置1. Continuous模式更加容易理解,它是从0一直
[单片机]
51单片机---定时器/计数器的配置
1.CPU时序 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。比如开发板的时钟电路上的12MHZ晶振,它就提供了单片机的振荡周期。周期T=1/12M,单位为秒。 状态周期: 两个振荡周期为1个状态周期,用S表示。振荡周期又称为S周期或时钟周期。 机器周期:6个状态周期,即12个振荡周期。以12MHZ晶振为例,机器周期=12*(1/12M)=1/M=1us. 指令周期:完成一条指令所占用的全部时间,以机器周期为单位。以12MHZ为例,指令周期为1~4us. 2.定时器绪论 51单片机有2组定时器/计数器,既可以定时又可以计数。 定时器/计数器和单片机的CPU是相互独立的,定时器/计数器工作时不需要C
[单片机]
51单片机---定时器/<font color='red'>计数器</font>的配置
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved