Profile - CN100


CN100

基于FPGA的纳秒窄脉冲测量系统

重庆大学
通信工程学院


Finals


[print]


Project

Name of Project:基于FPGA的纳秒窄脉冲测量系统

Contact Information

Name:李经章
E-Mail:cquljz@163.com
Telephone:023-65103544
Mobile Phone:13594607080
Mailing Address:重庆市沙坪坝区重庆大学A区主教学楼2401

Contest Advisor

Name:何伟 林英撑
E-Mail:hewei007@cqu.edu.cn
Telephone:13908381077

Members

No.NameE-MailEnglish Name
1李经章cquljz@163.comlijingzhang
2赵海cqzhaohai@163.comzhaohai
3孙建211sunjian@163.comsunjian

Project Paper - view as Preliminary(2011/08/29), Final(2011/08/29), Draft, Latest

1. 设计概述 (Preliminary Paper)

 

1 设计概述
1.1  设计意图
窄脉冲信号测量在通信、导航、电子对抗、雷达等领域有着广泛的应用与需求,在核反应堆衰变、高压放电检测、噪声处理等方面技术人员也需要获取窄脉冲信号的参数实现对系统的检测和控制。目前,大部分的窄脉冲测量系统的研究都集中在十几至几十纳秒的窄脉冲上,对于几纳秒级的窄脉冲检测的研究相对较少,也是窄脉冲信号测量领域的一个技术难题。针对以上情况,本系统设计了基于FPGA的纳秒级窄脉冲测量系统。
本设计利用FPGA的高速特性并结合外围器件,如ECL高速比较器、ECL-D触发器、电平转换芯片等实现对纳秒级窄脉冲信号的测量。系统结构框图如图1.1所示。
   图1.1 窄脉冲测量系统结构图
脉冲产生器能够产生周期、脉宽、幅度均可调的纳秒窄脉冲信号,为窄脉冲测量电路提供输入信号,方便系统性能测试及验证。脉冲测量电路测量规定时间内窄脉冲的峰值以及超过设定阈值的窄脉冲个数,并且考虑到外部噪声干扰,在设计中加入噪声检测模块,当噪声幅度超过一定阈值,则认为外部干扰严重,系统会认为检测结果无效且不再进行检测。Altera FPGA负责对测量结果进行处理,并在系统中加入人机交互设备:键盘和液晶显示屏,方便测量参数的设定和测量结果的显示。测量结果以文件形式存放在本地SD卡,同时通过以太网发送给PC机。PC机可以对数据进行处理并以文本和图形的方式显示,而且PC机还可以对系统进行远程设置,将测量参数发送回DE2重新配置测量电路
本设计实现了纳秒级窄脉冲信号的测量,不仅解决了窄脉冲信号测量领域的相关技术难题,而且能够在生产生活领域获得广泛应用,具有重要的科研意义和很高的实际应用价值。
1.2  使用范围及针对的用户群
本设计适用于所有需要对纳秒窄脉冲信号测量的领域,例如高压放电检测、无线通信、精细超声检测以及核试验等领域,系统能够为技术人员提供准确有效的窄脉冲信息,便于人们进行分析研究,可有效满足工程实践的需求。
1.3  选用Altera器件的优势
1)灵活高效的SOC解决方案
SOPC(片上可编程系统)将Nios II处理器、存储器、I/O口等系统设计需要的功能模块集成到一个FPGA上,构件成一个可编程的片上系统。具有灵活的设计开发定制外设,满足复杂的外设要求。
2)方便使用的Nios II软核处理器
Nios II属于核嵌入式开发,具有灵活、高性能、低成本、生命周期长等特点,并提供了大量的开发技术文档和实例。Nios II软核的性能是可以根据应用来选择丰富的IP核库,方便用户设计,有效的提高系统的运算能力。用户还可以定义Nios II指令,提供了运算优化、加速的一个有效途径,易于实现算法的商用化。
3C2H对设计的有力支持
Nios II提供的C2H编译器集成在Nios II IDE里,其主要功能就是自动转换软件程序到硬件实现,并实现Avalon接口,生成Avalon定制外设连接到Nios II系统中。Nios II C2H编译器还可以帮助嵌入式系统开发人员提高效率,实现成功的设计。
4)便于定制基于Avalon的用户自定义外设
用户可以根据系统设计的具体需求定制外设,既能满足用户复杂的外设设计需求,也降低了设计的难度,加快开发进度。定制用户外设有两种可行的方法:一种是在SOPC Builder提供的元件编辑器在图形用户界面下将用硬件描述语言描述的用户逻辑封装成一个SOPC Builder元件;另一种是在Altera提供的元件的基础上来修改。用户可以根据自己的需要进行选择,方便灵活。
5Nios II处理器嵌入uC/OS-II操作系统
uC/OS-II是一个完整的、可移植的、固化和裁剪的占先式实时多任务内核,它可以提供多种系统服务,用户可以方便的使用这些系统调用来实现目标功能。Nios II处理器中已经嵌入移植好的uC/OS-II操作系统,方便用户可以直接在RTOS上进行系统功能设计和应用程序开发。
(Revision: 4 / 2011-08-27 19:52:46)

2. 功能描述 (Final Project Paper)

 

2 功能描述
2.1  功能描述:
本系统在DE2上构建SOPC系统并结合液晶屏显示、SD卡存储、以太网技术,实现了纳秒级窄脉冲信号的检测、处理及测量结果显示。具体来说,本系统具有以下实用功能:
2.1.1  纳秒级窄脉冲测量
    系统的核心功能是测量窄脉冲信号的相关信息。设计的窄脉冲信号测量电路可以测量时间窗内(本系统中为312.5us)脉冲的峰值以及幅值超过设定阈值的脉冲个数,并将测量的结果输出给FPGA进行显示、存储和发送。为了使测量的信息更加灵活准确,可以设定测量的量程以及阈值。
2.1.2  自动测量
用户开启自动测量功能后,系统根据先前测得脉冲峰值大小自动配置脉冲测量电路的测量参数,调整量程上下电压值,不断逼近脉冲峰值,得到较为精确的测量结果。
2.1.3  参数显示
为便于观察测量结果以及设定测量参数,系统采用友晶公司TRDB-LCM液晶显示屏进行图像和文本显示。
1)显示测量参数。液晶显示屏可以实时显示测量参数信息,如初始上下限电压、脉冲比较阈值、脉冲噪声阈值等,并且能够实时更新。
2)显示测量结果。根据测量结果波形的不同分为两种显示方式:
①峰值显示方式。峰值波形显示,将一个工频周期内的脉冲峰值信息以波形的方式直观展现出来,并且将该工频周期内的最大峰值和脉冲数以文本的方式显示。
②脉冲数显示方式。脉冲数波形显示,将一个工频周期内的超过脉冲比较阈值的脉冲个数以波形的方式直观展现出来,并且将该工频周期内的最大峰值和脉冲数以文本的方式显示。
一个工频周期为20ms,将一个工频周期分为64个窗口,则每一个窗口为312.5us,因此液晶屏进行波形显示时,按一个工频周期内64个窗口进行显示。由于一个工频周期内刷屏太快无法观看,因此设定1s刷屏一次,并且每次显示1s内最后一个工频周期的测量结果值。
2.1.4  PS2设置
PS2键盘用于测量参数设定以及液晶显示屏不同界面间的切换。具体有以下几方面的功能:
1)利用PS2键盘可以设定初始上限电压、初始下限电压、脉冲比较阈值以及脉冲噪声阈值,方便测量过程中参数的调整;
2)利用PS2键盘可以根据用户需求进行选择工作模式,如不需要远程查看和设置,可选择脱机工作模式;
3PS2键盘可以实现测量过程中峰值显示方式和脉冲数显示方式的切换,方便用户及时了解峰值和脉冲个数的变化情况。
2.1.5  远程接收与设置
DE2PC机通过Socket编程技术建立基于TCP的服务器/客户机模型,其中DE2作为服务器,PC机作为客户机。根据PC机端发送或者接收数据的不同方式分为远程接收和远程设置。
1)远程接收:PC机接收DE2服务器发送的测量结果信息,并将该测量结果进行相应处理后以波形和文本的方式显示在PC机界面。
2)远程设置:PC机端可以设置系统的测量参数,并将该参数通过网络发送到DE2开发板重新配置测量参数,实现远程设置。
2.1.6  实时存储
系统在SD卡中嵌入了FAT文件系统,在每次工作开始时都会新建一个TXT文本文件,并将此次测量结果以一定格式实时的写入该文件中,保存用户的测量结果,方便用户日后查看。
由于SD卡只能工作在SPI模式下,读写速度较慢,目前还不能完全实现实时存储功能,该功能正在调试过程中。
2.1.7   噪声报警
系统在脉冲测量电路中通过比较器对外部输入噪声幅值进行判断,当外部噪声幅值超过设定阈值电压时,系统认为外部干扰严重,停止相关测量。阈值电压可以灵活设定。 
2.2   系统工作模式
系统存在两种工作模式,网络工作模式和脱机工作模式。用户可以根据实际应用需要选择合适的工作模式。
网络工作模式:系统工作时,DE2PC机建立基于TCP的服务器/客户端模型,实现二者间的网络数据传输。用户可在PC端远程查看测量结果,并设定测量参数;
脱机工作模式:系统工作时,DE2PC机未建立网络连接,测量结果数据只在本地进行存储显示,用户可通过PS/2键盘设定测量参数。
(Revision: 6 / 2011-08-27 22:52:43)

3. 性能参数 (Final Project Paper)

 

3 性能参数
3.1  系统硬件资源使用情况
3.1 系统硬件资源使用情况示意图
3.2  检测脉冲参数
 幅值测量范围:0—3V
 幅值测量精度:+0.1V
 幅值测量误差:3.3%
 个数测量范围:0—312500
 个数测量精度:+6
 个数测量误差:<0.5%
3.3  LCM参数
 分辨率    :
 工作频率25MHZ
 颜色种类: 8
3.4  网络通信参数
         协议:TCP/IP协议;
脉冲数据包:330字节;
        握手信号包:3字节;
阈值包       10字节;
3.5  SD
支持类型:SD1.1
                    SD2.0
读写速率:>=1MB/s
(Revision: 5 / 2011-08-27 20:42:36)

4. 设计结构 (Preliminary Paper)

4 设计结构

4.1  硬件设计部分         
窄脉冲测量系统在FPGA上构建SOPC系统,将测得的脉冲信息数据存储显示,通过以太网发送给PC机。窄脉冲系统充分利用了DE2开发板上SDRAMSRAMDM9000PS/2、外部时钟输入口以及扩展GPIO等资源,外扩键盘、SD卡和LCD显示屏等器件,丰富了系统功能。根据窄脉冲信号的特点,利用ECL高速比较器和ECL D触发器等芯片设计了窄脉冲测量电路。为了更好的测试系统,利用Altera MAXII 系列CPLD设计了窄脉冲产生器,为系统提供窄脉冲信号源。
窄脉冲测量系统工作示意图如图4.1所示:
4.1 窄脉冲测量系统工作示意图
窄脉冲测量系统硬件结构框图如图4.2所示:
4.2 窄脉冲测量系统硬件结构框图
系统实物图如图4.3所示:
4.3 系统实物图
4.2  软件设计部分
系统软件部分按功能可以分为事件响应、数据读取、数据显示、系统设置、数据存储、网络发送六个功能模块。为了增强系统设计的稳定性,设计中移植有uC/OS-II操作系统,利用uC/OS-II操作系统提供的接口函数创建不同任务实现相应功能。
根据系统设计需求,拟划分为五个任务实现系统相应功能,分别为系统初始化任务、数据读取及处理任务、数据存储任务、网络发送任务、显示任务、系统设置任务。任务之间通过信号量和全局变量等进行同步和通信。各个任务实现的功能如下:
系统初始化任务:初始化硬件设备和全局变量、创建其他任务,当创建完其它任务后删除自身,不参与任务调度。
数据读取及处理任务: FIFO中数据超过64个读取一次数据,并将数据转换为数据存储和发送所需要的格式。
数据存储任务:将转换后的数据按照一定的文件格式存入SD卡中。
数据收发任务:将转换后的数据打包,根据系统设置的要求,通过网口发送至PC机,并且能够接收PC机发送的数据,交给系统设置任务进行相关设置。
系统设置任务:根据终端请求或者PC机发送来的数据对系统参数进行设置。
显示任务:读取SD卡中存储的数据,LCM上以一定的方式显示出来,并根据终端请求改变显示的模式。
4.4 系统任务调度示意图
为了使用户更为方便、直观的观测和管理数据,系统采用VC++ 6.0MFC编写PC机程序。PC机接收并存储网口发送来的数据(规定时间内峰值以及超过阈值的脉冲个数),并将这些数据以图像化的形式显示在界面上,便于用户查阅、处理。为了实现远程控制,PC机通过网口发送设置的参数到测量系统,并完成系统上下测量量程、脉冲比较阈值等参数的配置。
(Revision: 5 / 2011-08-27 20:00:36)

5. 设计方法 (Final Project Paper)

5 设计方法

5.1  窄脉冲发生电路设计
为了对系统进行测试,设计了一个周期、脉宽和幅度均可调纳秒窄脉冲产生器。脉冲产生器的原理图如图5.1所示,脉冲产生器以MAXII EPM240核心器件,采用逻辑延时芯片DS1123LCPLD输出的方波信号延时,通过对原信号和延时信号进行逻辑异或运算从而产生纳秒级窄脉冲,经放大器对信号进行放大输出。
脉冲产生器有两种工作模式,单脉冲模式和周期脉冲模式,在单脉冲模式下按键一次产生一个脉冲,在周期脉冲模式下连续产生周期的脉冲。调节输出方波的周期即可调节脉冲产生周期(周期脉冲模式下),通过配置DS1123L的延时深度实现脉宽可调,调节负反馈电阻实现脉冲的幅度可调。为了方便控制,添加了按键、拨码和7段数码显示管进行人机交互。脉冲产生器的原理框图如图5.1所示:
5.1 脉冲产生器原理框图
5.2  脉冲检测电路设计
脉冲测量电路是系统的核心功能电路,实现了单位时间内脉冲峰值和超过规定阈值脉冲个数的测量。脉冲测量电路原理框图如图5.2所示。设计采用了8ECL高速比较器加ECL D触发器的方式测量脉冲的峰值,D触发器端固定接ECL低电平,每个测量周期开始时通过FPGA控制ECL D触发器置位,当脉冲幅值超过比较器的参考电压值时比较器输出ECL电平跳变,从而使ECL D触发器复位(输出电平变低),ECL D触发器输出信号经过电平转换后输出给FPGA,根据触发的级数和上下参考电压值即可计算脉冲的幅值。当脉冲幅值超过阈值比较器的参考电压时,比较器输出ECL电平发生跳变,从而触发ECL T触发器(ECL D触发器的输出端反接输入端实现),经过电平转换后将信号输入FPGAFPGA通过对输入信号计数,将计数值乘以2就会得到超过规定阈值的脉冲个数。
为实现脉冲测量范围以及阈值可调,幅值测量比较器和脉冲个数测量比较器的参考电压均可通过配置DAC调节,其中幅值测量比较器的参考电压通过电阻网络分压得到。为了实现对噪声的检测,这部分电路中添加了噪声检测电路。噪声检测电路和脉冲个数测量电路的原理相同,当噪声幅值超过设定的阈值后,系统认为外界干扰严重,停止对脉冲信号进行测量。
5.2 脉冲测量电路原理框图
5.3  脉冲测量控制模块设计
        为了方便读取脉冲测量结果,避免频繁的中断系统,提高系统的运行效率,在FPGA内设计了脉冲测量控制模块。该模块主要完成了读取脉冲测量结果和控制测量操作的功能。模块内部设计定时器,当测量时间窗口312.5us结束时,读取该窗口内的测量结果,并将测量结果写入双时钟FIFO内,当FIFO内写入64个以上数据时(测量了一个工频周期),通过比较器向SOPC系统发送高电平信号,通知CPU取数据。同时该模块检测外部提供的工频信号,并完成测量窗口与工频信号的同步,当检测不到工频信号时停止测量。SOPC系统也可在更改测量参数期间控制该模块停止测量操作。脉冲测量电路控制模块的结构框图如下所示:
5.3 脉冲测量电路控制模块的结构框图
5.4  SD卡模块设计
SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等,虽然重量只有2,却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。
SD卡有两种工作方式:高速的四线模式和SPI模式。前者可配置线宽,时序复杂,传输速率快;后者时序简单,速度较低。表5.1显示了SD卡在两种工作模式下的针脚定义。由于DE2SD卡接口设计为SPI接口,所以本系统采用SPI模式。
5.1 SD卡针脚定义
SD卡的控制器由硬件实现,按照SD卡的工作时序和Avalon总线接口协议,用VHDL设计电路,使其能兼容SD1.1SD2.0协议(支持普通SD卡和高容量SDHC卡),再利用SOPC Builder工具集成到SOPC系统中。由于SPI模式下对SD卡操作相对较慢,在调试过程中发现不能在规定的时间内完成对SD卡内的文件进行读写操作,现正在对SD卡的操作方法进行优化,以加快对SD卡内文件的读写速度。
SD卡工作时序图如图5.4所示:
5.4 SD卡工作时序图
 为了方便对自定义模块进行操作,在软件中编写了底层函数实现了SD卡读、SD卡写、SD卡初始化和简单的向SD卡发送命令的操作。为了以文件的形式存放脉冲测量结果数据,在软件中通过C语言编写相关函数实现FAT16系统。由于系统资源有限,为了简化FAT文件系统操作,减小对资源的占用,仅仅编写了读取文件列表函数、从SD卡中读文件、在SD卡中创建文件、向指定文件添加数据等函数,实现了常用的FAT文件操作。
5.5  LCM显示模块设计
液晶显示屏的控制部分是由硬件来实现的,通过自定义模块将其挂到Avalon总线。液晶显示屏的硬件部分实现了寄存器的配置、显示存储器RAM的大小设置、RGB颜色的转换等操作。具体硬件结构实现如图5.5所示:
 
5.5 LCM硬件自定义模块
液晶显示屏的软件设计是通过Nios II开发工具来实现。液晶屏显示按照不同功能和内容分为多个显示界面,如欢迎界面(如图5.6所示)、参数设定界面、峰值显示方式界面、脉冲数显示方式界面等,而且在参数设定界面、峰值显示方式界面和脉冲数显示方式界面之间可以进行相互切换,更加人性化,方便用户操作和观察。
5.6 欢迎界面效果示意图
  液晶显示屏具体软件设计流程如图5.7所示:
5.7 液晶显示屏软件流程
上电之后,液晶显示屏显示欢迎界面,然后根据用户的选择进入参数设定界面或是工作模式选择界面,若用户选择参数设定界面,则在完成初始上下电压值、脉冲比较阈值等参数设置后进入工作模式选择界面,否则直接进入工作模式选择界面;在工作模式选择界面中,如果用户选择脱机模式,则直接进入峰值显示方式界面,否则先进入网络等待界面等待PC机建立网络连接,然后再进入峰值显示方式界面;用户进入峰值显示方式界面后,既可以切换到脉冲数显示方式界面观察脉冲数波形变化,也可以切换到参数设定界面重新设置测量参数。
 
5.6  测量参数设置功能设计
窄脉冲测量系统的测量参数有两种设置方式:PS2键盘设置和远端PC机设置。
1PS2键盘设置设计。PS2键盘模块硬件部分是通过添加自定义模块构建SOPC系统来实现,将其挂到Avalon总线上与CPU进行交互。
PS2键盘模块软件部分是在Nios II中实现。PS2键盘响应是通过中断的方式来实现的,首先注册键盘中断并进行初始化,然后编写键盘中断服务程序,响应按键中断对PS2键盘按键中断进行处理。
2)远端PC机设置设计。远端PC机通过Windows Socket编程与DE2上移植有LWIP协议的Nios II软件工程建立网络通信连接,此时,PC机便可通过socket将设置的初始上下限电压值、脉冲比较阈值等参数发送到DE2板上并重新配置脉冲测量电路参数。
 
5.7  网络发送及接收设计
5.7.1  LWIP 的在Nios II上的移植
LWIP(light-weight Internet Protocol)是瑞典计算机科学院的Adam Dunkels等开发的用于嵌入式系统的轻量级TCP/IP协议栈。LWIP在保持TCP/IP协议功能的基础上减少对RAM的占用,一般它只需要几十KByteRAM40K左右的ROM就可以运行,适用于诸如嵌入式系统等资源有限的小型平台。
LWIP所有与操作系统、编译器相关的部分被单独放在/src/arch目录下。因此,LWIPuC/OS-II上的实现就是修改该目录下的相应文件。
1)与CPU或编译器相关的include文件
LWIP/src/arch/include/arch目录下,cc.hcpu.hperf.h头文件中定义了与CPU或编译器相关的参数,如数据长度、字的高低位顺序等,而且与uC/OS-II所定义的参数一致。通常,C语言的结构体是4字节对齐的,但在处理数据包时,LWIP是通过结构体中不同数据的长度来读取相应的数据位,所以需要在定义结构体的时候使用_packed关键字,取消编译器对结构体字节对齐处理,并且由于LWIP的结构体中定义了PACK_STRUCT_xxx宏,因此在移植的时候需要添加编译器所对应的_packed关键字。
2sys_arch操作系统相关部分  
sys_arch.h是包含与操作系统相关的一些结构和函数的头文件,主要可以分为以下四个部分:
sys_sem_t 信号量
LWIP中需要使用信号量进行通信,因此sys_arch头文件实现了对于信号量结构的创建、释放以及处理,具体有以下函数:
sys_sem_new( )  //创建一个信号量结构 
sys_sem_free( )  //释放一个信号量结构 
sys_sem_signal ( )  //发送信号量 
sys_arch_sem_wait( )  //请求信号量
由于uC/OS-II已经实现信号量OS_EVENT的各种操作,并且功能与LWIP函数功能一致,所以只要把uC/OS-II的函数重新封装成以上函数。
sys_mbox_t消息
LWIP使用消息队列进行缓冲、传递数据报文,因此在sys_arch中定义了消息队列结构。sys_mbox_t消息以及相应的操作函数如下: 
sys_mbox_new() //创建一个消息队列 
sys_mbox_free() //释放一个消息队列 
sys_mbox_post() //向消息队列发送消息 
sys_arch_mbox_fetch() //从消息队列中获取消息
uC/OS-II虽然实现了消息队列结构OS_Q及其操作,但是uC/OS-II没有对消息队列中的消息进行管理,因此不能直接使用,必须在uC/OS-II的基础上重新实现。为了实现对消息的管理,定义了以下结构:
typedef  struct{
OS_EVENT *pQ
void *pvQEntries[MAX_QUEUE_ENTRIES]
}sys_mbox_t
typedef PQ_DESCR sys_mbox_t //LWIP中的mboxUCOS的消息队列
该结构包括OS_EVENT类型的队列指针(pQ)和队列内的消息(pvQEntries)两部分对队列本身的管理利用uC/OS-II自己的消息队列相关函数来完成然后使用uC/OS-II中的内存管理模块实现对消息的创建、使用和删除两部分综合起来便实现了LWIP的消息队列功能。
sys_arch_timeout函数
LWIP中每个与外界网络连接的线程都有自己的timeout属性即等待超时时间。这个属性表现为每个线程都对应一个sys_timeout结构体队列,它包括线程的timeout时间长度以及超时处理函数,该函数会做一些释放连接、回收资源等工作。timeout结构体已在sys.h中定义,而且对结构体队列的数据操作也由LWIP负责。
struct sys_timeouts *sys_arch_timeouts(void)
这个函数的功能是返回目前正处于运行状态的线程所对应的timeout队列指针。timeout队列属于线程的属性,是与操作系统相关的函数,只能由用户实现。
sys_thread_new创建新线程函数
LWIP即可以是单线程也可以是多线程,单线程即只有一个TCP/IP线程(tcpip_thread),负责处理所有的TCP(Transmission Control Protocol:传输控制协议)UDP(User Datagram Protocol:用户数据报协议)连接,各种网络程序都通过TCP/IP线程与网络交互。多线程则有多个TCP/IP线程,可以提高运行效率。
uC/OS-II中,没有线程(thread)的概念,只有任务(Task)。它提供了创建新任务的系统调用OSTaskCreate,因此需要把OSTaskCreate封装为sys_thread_new线程创建函数。需要注意的是LWIP中的thread并没有uC/OS-II中优先级的概念,必须事先为LWIP中创建的线程分配好优先级。
3 lib_arch库函数
LWIP用到8个外部函数,这些函数通常与系统或编译器有关,因此需要由用户自己实现。主要外部函数如下:
u16_t htons(u16_t n)//16位数据高低字节交换
u16_t ntons(u16_t n)
u32_t htonl(u32_t n)//32位数据大小端对调
u32_ t ntonl(u32_t n)
int strlen(const char *str)
int strncmp(const char *str1,const char *str2,int len)
void bcopy(const void *src,void dest,int len)
void bzero(void *data,int n)
4)网络设备驱动程序
DE2采用的网络芯片为DM9000芯片。LWIP的网络驱动有特定的模板,/src/netif/ethernetif.c文件即为驱动的模板,用户为自己的网络设备实现驱动时可参照此模板。LWIP中可以有多个网络接口,每个网络接口都对应了一个netif结构,该结构体包含了相应网络接口的属性、收发函数等。LWIP调用netif的函数netif->input()netif->output()进行以太网数据包的收发等操作。网络驱动的主要功能是实现网络接口的收发、初始化以及中断处理。 
5.7.2  网络发送数据格式
DE2PC机间通过TCP/IP协议网络进行数据传输,网络通信中数据是以TCP包的形式进行传送,DE2服务器端必须首先要确定发送和接收数据包的数据格式。
    1)包的格式:采用TCP包格式进行发送,其格式如图5.8所示
5.8 TCP数据包格式
由于设计中采用的是LWIP协议栈,在进行数据封包的时候“IP首部”和“TCP首部”是由系统协议来完成的,因此用户只需要完成“TCP数据”部分的封装,可以在发送时直接发送TCP数据。
2)包的种类及TCP数据格式:DE2服务器端存在两种类型的包,一种是脉冲数据包,TCP数据格式为:测量数据每5个字节一组(前3个字节存放脉冲个数,后2个字节存放峰值),共64组(320字节),1个字节的数据包包类型,并留有一定的余量共330个字节,其中脉冲数据包的包类型为字符1。具体如表5.2所示:
 
 表 5.2 脉冲数据包
另一种是握手信号包,TCP数据格式为:1个字节的握手信号,1个字节的握手信号包包类型,并留有一定余量共3个字节,其中握手信号包类型为字符2。具体如表5.3所示:
 
                                                            表5.3 握手信号包          
                          
5.7.3  远程设置参数格式
  PC机端作为网络连接的客户机,因此采用与DE2服务器端同一种格式的TCP数据包。
  PC机端有两种类型的数据包,一种是阈值包,里面存放要设置的阈值信息,TCP数据格式为:3个字节的阈值数据,1个字节的阈值包包类型,并留有一定的余量共10个字节,其中阈值包类型为字符3。如表5.4所示:
 
                                                                表5.4 阈值包 
                            
阈值发送需要三个阈值包,在这里仅列出其中一种,其余两个阈值包的格式与表5.4一致。
还有一种是握手信号包,其TCP数据格式与DE2端握手信号包格式相同,具体参见表5.3
5.7.4  网络发送接收流程设计
DE2PC机间的网络通信是半双工方式,本系统中分为两部分进行设计:PC机端网络发送及接收设计和DE2端网络发送及接收设计。
1PC机端网络发送及接收设计
      PC机端网络发送和接收过程分为两种模式:接收模式和发送模式。
接收模式:建立连接成功,“启动接收”按钮按下,PC机首先发送一个握手信号0DE2,然后PC机接收DE2发送回来的握手信号,进行分析处理后,PC机接收DE2发送的脉冲数据包,并根据包的类型对接收到的数据包做相应的处理,依次循环执行,在接收模式过程中可以暂停、重新设定阈值或者结束PC机端程序运行。
发送模式:“设定阈值”按钮按下,PC机发送握手信号1DE2,然后PC机接收DE2返回的握手信号,如果握手信号正确PC机发送阈值包到DE2,并转而进入接收模式,否则继续接收DE2握手信号
PC机端网络发送及接收流程图如图5.9所示:
5.9 PC机网络发送及接收流程
2DE2端网络发送及接收设计
       DE2作为网络通信的服务器端,不断监听客户机的连接请求,当PC机请求连接时,接受请求并与PC机建立socket连接,DE2PC机建立连接后便可进行数据传输。DE2接收PC机发送的握手信号,如果握手信号为0 DE2发送确认握手信号到PC机,握手成功后开始发送脉冲数据包,若脉冲数据包发送错误则DE2重新发送;如果握手信号为1DE2发送确认握手信号到PC机,握手成功后,DE2开始接收PC机发送的阈值包。
PC机端可以暂停程序的运行,此时DE2服务器进入等待状态,直到PC机进行其他操作,DE2才结束等待状态继续进行数据传输或是断开网络连接。
DE2端网络发送及接收流程图如图5.10所示:
5.10 DE2端网络发送及接收流程
5.8  PC机界面设计
  PC机界面用MFC进行编写,MFC(微软基础类)是微软为简化程序员的开发工作所开发的一套C++类集合,是一套面向对象的函数库,因此用MFC来编写PC机界面方便简洁。
本系统中PC机界面应用程序是利用MFC AppWizard向导生成的一种基于对话框模式的应用程序。该向导可以自动生成3个类,用户可以直接在此基础上进行修改。本系统中在主对话框界面上添加PC机界面所需要的控件,如编辑框、静态文本框、按钮、组框等,并在对话框初始化函数中创建Windows Socket线程,通过socket进行数据的收发,实现DE2PC机的数据传输。PC机整体界面示意图如图5.11所示:
        
                       图 5.11 PC机整体界面示意图

 

(Revision: 7 / 2011-08-27 20:29:34)

6. 设计特点 (Preliminary Paper)

6设计特点

1)具有很高的实用及商业价值
系统适用于高压电电力测试、脉冲雷达检测、精细超声检测以及医疗等领域,实用价值大、应用范围广,具有很高的实用及商业价值。
2自主设计窄脉冲信号发生及检测电路
  窄脉冲信号发生器产生幅度、频率和脉宽均可调的纳秒级窄脉冲信号,为脉冲测量电路提供信号源,窄脉冲测量电路实现设定时间内窄脉冲个数及最高脉冲幅度的检测。设计中将这些硬件做成了一块扩展电路板,使系统外观简单,使用方便。
3) 以太网实现双向通信
  以太网具有传输速率快、距离远、通用性强等特性。FPGA将已打包的数据通过以太网发送到PC机进行存储及显示,同时PC机也可以通过以太网控制系统的工作状态,实现远程控制,克服了恶劣条件或者人工无法到达现场的控制。
4)  Nios II强大的数据处理能力
系统利用NIOS II的强大的处理能力,对工频周期内采集到的大量数据进行一定的转换运算,然后按照文件的格式存入SD卡中,最后将数据按以太网包格式进行打包并发送。
5) PC机数据二次处理
PC机将接收到的数据进行二次处理,以更为直观的图表形式显示处理结果,便于读取所测脉冲参数信息。
6) 易于扩展,方便升级
 由于基于FPGA 的嵌入式系统具有软硬件可编程的特点,通过Quartus IISOPC Builder Nios II IDEAltera工具能方便地对系统软硬件设计进行修改、调试和下载,使得系统的维护和升级方便易行。
(Revision: 4 / 2011-08-27 20:31:53)

7. 总结 (Final Project Paper)

 

7 总结
经过几个月的学习、摸索,我们对SOPC系统有了更深刻的认识。在搭建SOPC系统中充分利用SOPC Builder工具提供的现有的以及Altera大学计划提供的IP核,大大加快了设计进程。Altera公司网站和技术论坛上提供了丰富的支持,友晶公司也为DE2开发板提供了大量的应用实例,这些资源在加快我们设计进度的同时,同时也开阔了我们的眼界,使我们对SOPC技术开发有了全新的理解。
通过这次竞赛的学习锻炼,我们掌握了利用Altera公司的FPGA进行系统开发的常用方法手段,Quartus II软件提供了大量现有的IP,并提供了丰富的接口,方便开发人员使用。SignalTap II开发工具可以方便的查看FPGA内信号的实时变化,为系统开发提供了极大便利。
系统在开发过程中遇到了很多问题,经过不懈的努力,一个个困难都被排除了,基本达到了系统的预期功能。一个个困难的解决见证了我们队伍的成长。在解决问题的过程中,我们充分体会到了经验的重要性。丰富的设计经验会在系统设计初期选择一套优良的方案,丰富的软硬件调试经验又会大大加快设计的进度。利用实验室积累下来丰富经验的同时,本次设计又会为今后的设计积累不少经验。
我们设计的系统还有不完善的地方,SD卡模块还不能实时的存储系统的测量数据,需要对软硬件进行充分优化,减小读写文件所需要的时间。指导老师和师兄都为我们提供了丰富的建议,相信一定可以完成。
最后,感谢Altera公司给我们提供了这次难得的锻炼机会和DE2开发平台,感谢在开发过程中给我们提供指导和帮助的老师和同学们。
(Revision: 2 / 2011-08-27 20:32:37)