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指令,提供了运算优化、加速的一个有效途径,易于实现算法的商用化。
3)C2H对设计的有力支持
Nios II提供的C2H编译器集成在Nios II IDE里,其主要功能就是自动转换软件程序到硬件实现,并实现Avalon接口,生成Avalon定制外设连接到Nios II系统中。Nios II C2H编译器还可以帮助嵌入式系统开发人员提高效率,实现成功的设计。
4)便于定制基于Avalon的用户自定义外设
用户可以根据系统设计的具体需求定制外设,既能满足用户复杂的外设设计需求,也降低了设计的难度,加快开发进度。定制用户外设有两种可行的方法:一种是在SOPC Builder提供的元件编辑器在图形用户界面下将用硬件描述语言描述的用户逻辑封装成一个SOPC Builder元件;另一种是在Altera提供的元件的基础上来修改。用户可以根据自己的需要进行选择,方便灵活。
5)Nios II处理器嵌入uC/OS-II操作系统
uC/OS-II是一个完整的、可移植的、固化和裁剪的占先式实时多任务内核,它可以提供多种系统服务,用户可以方便的使用这些系统调用来实现目标功能。Nios II处理器中已经嵌入移植好的uC/OS-II操作系统,方便用户可以直接在RTOS上进行系统功能设计和应用程序开发。
(Revision: 4 / 2011-08-27 19:52:46)
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键盘可以根据用户需求进行选择工作模式,如不需要远程查看和设置,可选择脱机工作模式;
3)PS2键盘可以实现测量过程中峰值显示方式和脉冲数显示方式的切换,方便用户及时了解峰值和脉冲个数的变化情况。
2.1.5 远程接收与设置
DE2与PC机通过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 系统工作模式
系统存在两种工作模式,网络工作模式和脱机工作模式。用户可以根据实际应用需要选择合适的工作模式。
网络工作模式:系统工作时,DE2与PC机建立基于TCP的服务器/客户端模型,实现二者间的网络数据传输。用户可在PC端远程查看测量结果,并设定测量参数;
脱机工作模式:系统工作时,DE2与PC机未建立网络连接,测量结果数据只在本地进行存储显示,用户可通过PS/2键盘设定测量参数。
(Revision: 6 / 2011-08-27 22:52:43)
5 设计方法
5.1 窄脉冲发生电路设计
为了对系统进行测试,设计了一个周期、脉宽和幅度均可调纳秒窄脉冲产生器。脉冲产生器的原理图如图5.1所示,脉冲产生器以MAXII EPM240核心器件,采用逻辑延时芯片DS1123L对CPLD输出的方波信号延时,通过对原信号和延时信号进行逻辑异或运算从而产生纳秒级窄脉冲,经放大器对信号进行放大输出。
脉冲产生器有两种工作模式,单脉冲模式和周期脉冲模式,在单脉冲模式下按键一次产生一个脉冲,在周期脉冲模式下连续产生周期的脉冲。调节输出方波的周期即可调节脉冲产生周期(周期脉冲模式下),通过配置DS1123L的延时深度实现脉宽可调,调节负反馈电阻实现脉冲的幅度可调。为了方便控制,添加了按键、拨码和7段数码显示管进行人机交互。脉冲产生器的原理框图如图5.1所示:
图5.1 脉冲产生器原理框图
5.2 脉冲检测电路设计
脉冲测量电路是系统的核心功能电路,实现了单位时间内脉冲峰值和超过规定阈值脉冲个数的测量。脉冲测量电路原理框图如图5.2所示。设计采用了8路ECL高速比较器加ECL D触发器的方式测量脉冲的峰值,D触发器端固定接ECL低电平,每个测量周期开始时通过FPGA控制ECL D触发器置位,当脉冲幅值超过比较器的参考电压值时比较器输出ECL电平跳变,从而使ECL D触发器复位(输出电平变低),ECL D触发器输出信号经过电平转换后输出给FPGA,根据触发的级数和上下参考电压值即可计算脉冲的幅值。当脉冲幅值超过阈值比较器的参考电压时,比较器输出ECL电平发生跳变,从而触发ECL T触发器(ECL D触发器的输出端反接输入端实现),经过电平转换后将信号输入FPGA,FPGA通过对输入信号计数,将计数值乘以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卡在两种工作模式下的针脚定义。由于DE2的SD卡接口设计为SPI接口,所以本系统采用SPI模式。
表5.1 SD卡针脚定义
SD卡的控制器由硬件实现,按照SD卡的工作时序和Avalon总线接口协议,用VHDL设计电路,使其能兼容SD1.1和SD2.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机设置。
1)PS2键盘设置设计。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的占用,一般它只需要几十KByte的RAM和40K左右的ROM就可以运行,适用于诸如嵌入式系统等资源有限的小型平台。
LWIP所有与操作系统、编译器相关的部分被单独放在/src/arch目录下。因此,LWIP在uC/OS-II上的实现就是修改该目录下的相应文件。
1)与CPU或编译器相关的include文件
LWIP在/src/arch/include/arch目录下,cc.h、cpu.h、perf.h头文件中定义了与CPU或编译器相关的参数,如数据长度、字的高低位顺序等,而且与uC/OS-II所定义的参数一致。通常,C语言的结构体是4字节对齐的,但在处理数据包时,LWIP是通过结构体中不同数据的长度来读取相应的数据位,所以需要在定义结构体的时候使用_packed关键字,取消编译器对结构体字节对齐处理,并且由于LWIP的结构体中定义了PACK_STRUCT_xxx宏,因此在移植的时候需要添加编译器所对应的_packed关键字。
2)sys_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中的mbox是UCOS的消息队列
该结构包括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 网络发送数据格式
DE2和PC机间通过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 网络发送接收流程设计
DE2和PC机间的网络通信是半双工方式,本系统中分为两部分进行设计:PC机端网络发送及接收设计和DE2端网络发送及接收设计。
1)PC机端网络发送及接收设计
PC机端网络发送和接收过程分为两种模式:接收模式和发送模式。
接收模式:建立连接成功,“启动接收”按钮按下,PC机首先发送一个握手信号0到DE2,然后PC机接收DE2发送回来的握手信号,进行分析处理后,PC机接收DE2发送的脉冲数据包,并根据包的类型对接收到的数据包做相应的处理,依次循环执行,在接收模式过程中可以暂停、重新设定阈值或者结束PC机端程序运行。
发送模式:“设定阈值”按钮按下,PC机发送握手信号1到DE2,然后PC机接收DE2返回的握手信号,如果握手信号正确PC机发送阈值包到DE2,并转而进入接收模式,否则继续接收DE2握手信号。
PC机端网络发送及接收流程图如图5.9所示:
图5.9 PC机网络发送及接收流程
2)DE2端网络发送及接收设计
DE2作为网络通信的服务器端,不断监听客户机的连接请求,当PC机请求连接时,接受请求并与PC机建立socket连接,DE2与PC机建立连接后便可进行数据传输。DE2接收PC机发送的握手信号,如果握手信号为0, DE2发送确认握手信号到PC机,握手成功后开始发送脉冲数据包,若脉冲数据包发送错误则DE2重新发送;如果握手信号为1,DE2发送确认握手信号到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进行数据的收发,实现DE2和PC机的数据传输。PC机整体界面示意图如图5.11所示:
图 5.11 PC机整体界面示意图
(Revision: 7 / 2011-08-27 20:29:34)