基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计.docx
- 文档编号:30722693
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:32
- 大小:484.10KB
基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计.docx
《基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计
摘要
干涉型光纤水听器作为一种新型的传感器系统,具有灵敏度高,抗电磁干扰与信号串扰能力强,耐高温,抗腐蚀的特点,被广泛应用于信号的实时采样设计中。
本设计的主要目的就是将FPGA中的来自光纤干涉水听器系统的数据实时传输给上位机。
随着电子工业的发展,USB数据传输技术得到了普遍应用,其具有高速,高可靠性,和高度通用的特点。
能够满足高速数据采样系统中数据实时传输的要求,经过与其他传输技术的比较,本方案采用基于FPGA的USB数据传输设计。
设计主要从USB传输技术方案,通信协议以及驱动的一些基本知识入手,使用CY7C68013A传输控制芯片和EP2C8Q208C8FPGA芯片完成了方案的详细设计。
在Altera的FPGA的设计环境QuartusII下,使用VHDL语言完成了FPGA内部USB接口控制程序的编写和接口控制器的时序功能仿真。
结合干涉型水听器的数据传输要求,编写数据产生模块结合USB接口控制程序完成模拟数据传输的时序功能仿真。
结合实际修改CY7C68013的USB传输固件,结合开发板的调试软件,完成了模拟数据传输的硬件验证。
关键词:
FPGAVHDLUSB通信光纤干涉水听器
业设计外文摘要
TitleTransmissiondesignbetweenFPGAandhostPC
infiberoptichydrophone
Abstract
Fiberoptichydrophoneasanewtypeofsensorhasaqualityofhighsensitivity.Itcanbeusedinthefieldwithelectromagneticinterference,hightemperatureorhighcorrosion.Soitiswidelyusedinthedesignofrealtimesamplingsystem.ThemainpurposeofthisdesignistotransmitthedatainFPGAwhichisfromfiberoptichydrophonesystemtothehostpcinrealtime.
Alongwiththedevelopmentoftheelectronicindustry,USBdatatransmissiontechnologyiswidelyusedwiththecharacterofhighspeed,highreliabilityanduniversalproperty.Soitmeetsthedemandofthehighspeeddatatransmissioninrealtimesystem.ComparedwithothertechnologyIchoicetheUSBdatatransmissionbasedonFPGAdesign.ThisdesignmainlyfromtheFPGAandUSBtypeselection,theFPGAdesignprocess,USB2.0communicationprotocolandsomebasicknowledgeofdriver.ThenaccordinglymakethedetaileddesignschemewiththeUSBcontrollerchipCY7C68013AandtheFPGAchipEP2C8Q208C8.UsetheVHDLlanguageandcompletetheprogramofFPGAinternalUSBinterfacecontrollerwithtimingfunctionsimulationinthedesignenvironmentunderQuartusII.Tomeetwiththedatatransmissionrequest,thencompetethedatageneratingmoduleprogramwhichcombinedwiththeUSBinterfacecontrollerprogramtocompletethedatatransmissiontimingfunctionsimulation.ModifytheCY7C68013USBtransmissionfirmwarecombinedwiththeactual.Finallycompetethedatatransmissionhardwareverificationusingthedemoboardandthetestprogram.
KeywordsFPGAVHDLUSBtransmissionFiberoptichydrophone
目次
1设计需求分析
本设计为工程项目“基于FPGA的干涉型光纤水听器多路数据采集系统”的数据传送部分。
该项目主要用于完成对于爆炸冲击波的8路数据采样处理和传送。
对爆炸冲击波的测量具有时间短数据量大工作环境恶劣的特点,因而项目采用能够适应高速数据采集要求的光纤传感器。
当的冲击波发生时,光纤水听器接收到声波,引起光纤传感器几何尺寸的改变,从而引起折射率的变化,导致光程的改变。
通过与未产生形变的相同光纤中同源光的干涉比较,产生可测量的信息。
由于光纤型水听器采用光学原理,其灵敏度很高,动态范围可达120-140dB。
同时由于光学设备本身就具有极强的抗电磁干扰,耐腐蚀的特点,因而光纤干涉水听器采样系统具有很高的可靠性。
采集系统将带有PGC解调的光纤水听器的信号进行模数转换。
根据A/D转换芯片的要求在FPGA芯片中编写VHDL程序,实现对采集的数据进行实时采样的驱动电路,并利用FPGA内部丰富的存储资源实现对高速采样数据的缓存。
在FPGA中采集和处理的数据应能实时传送给上位机用于完成对于测量数据的分析、储存、显示。
高速采样系统采集到的数据缓存在FPGA中的FIFO(先进先出队列)中,在FIFO中的数据和上位计算机之间需要建立一种可靠、高速的数据通信方式,从而将FIFO中的数据实时的传输给上位机,这就是是本设计所要研究和实现的重点。
图1.1基于FPGA的干涉型光纤水听器多路数据采集系统整体框图
本设计需要完成以下工作:
(1)在FPGA芯片和上位计算机之间建立一种可靠、高速的数据传输方式;
(2)提高分析问题解决问题的能力,本设计使用从未学过的CY7C68013芯片,需要通过查阅资料,自学掌握其特性,编写FPGA内部的相应时序控制电路。
通过本设计参与到实际工程项目中,提升对系统工程的认识。
(3)本设计涉及到USB上位机驱动的相关知识,需要对基于windows系统的USB驱动有一定的了解;本毕业设计的编程使用VHDL和C语言,需对VHDL和C语言进行深入学习研究;本毕业设计用到EDA开发环境QuartusII8.0,需要对该软件配置下载部分进行学习。
2方案设计
2.1传输方案的选择
计算机的发展到今天,接口技术也逐渐丰富成熟。
根据目前通用计算机主板常见的接口类型,FPGA和上位机的通信方案有多种:
并口方案(IEEE1284)、串口方案(RS-232、RS485)、PCI接口方案、USB接口方案。
RS232接口传输方式:
首先其接口的信号电平值较高,并且电平逻辑无法兼容TTL电平;其次传输速率较低,当工作在异步传输模式时,波特率仅为20Kbps,同时由于其连线的特点,容易产生共模干扰,抗噪声干扰性弱。
更致命的是其传输距离很有限,其标准的最大传输距离仅能达到15米左右,因而其难以满足高速可靠数据传输的要求。
RS422/RS485接口传输方式:
采用全双工方式传输,最少要4根通信线,因而连线复杂,不仅如此,其最大传输速率仅为10Mb/s。
所以该方案也无法实现设计要求。
并口通信方案特点:
并口引脚过多,造成连线过于密集复杂,在通过高频信号时容易引起信号线间串扰难以消除,导致传输错误,信号频率提高困难,无法适应高速的传输要求。
所以该方案也无法实现设计要求。
PCI通信方案特点:
PCI总线虽然得到广泛应用,但它的缺点也很明显。
首先,由于线间干扰的存在,使得当连接多个设备时系统无法正常工作。
同时多设备共享总线带宽,使得多路采集系统的传输速率较慢,因而其难以满足本设计的要求。
USB即通用串行总线,接口通信方案特点:
(1)高传输速度:
目前USB接口有三种:
USB1.1、USB2.0和USB3.0。
理论上USB1.1的传输速度可以达到12Mbps,USB2.0可达到480Mbps而USB3.0则可以达到速度5Gbps。
(2)支持热插拔:
用户在使用外接设备时,不需要重复先关机插上设备再开机,在电脑工作时,就可以直接将USB电缆插上使用。
(3)广泛使用:
目前其被广泛的应用于计算机外设,接口控制器成本较低。
(4)易扩展多设备:
通过集线器的扩展,一个根集线器最高可连接至127个设备。
随着USB技术的普遍应用,采用USB接口的设备更能够被方便的应用于实际工作中,同时USB通信方式满足了可靠高速数据传输的要求,因而本设计采用USB接口传输方式。
2.2USB总体传输方案设计
USB2.0支持三种数据速率:
低速(1.5Mbit/s),全速(12Mbit/s),高速(480Mbit/s)。
根据本设计的数据采集量应选用高速模式。
根据USB控制器成本和成熟度的选择要求,本分案选择Cypress公司的CY7C68013(FX2)控制器芯片。
图2.1CY7C68013结构图
Cypress公司的CY7C68013芯片集成有USB2.0收发器,8051增强型内核,和相应的可编程接口。
其USB2.0模式下最大传输速度可达到56Mbytes/s。
CY7C68013的接口有两种模式SlaveFIFO和GPIF模式。
本设计采用前者。
在本设计中由FPGA内部的USB接口控制电路产生驱动USB芯片CY7C68013芯片的时序信号,USB芯片只需根据USB协议打包上传即可,无需其他的复杂控制,所以本设计选用SlaveFIFO模式。
该模式下,CPU不参与数据的处理,数据通过芯片内部的FIFO直接传输。
FIFO缓冲的数据由上位机读取,FIFO提供FPGA内部接口控制器所需FIFO满、空等握手信号。
在这种方式下,CY7C68013中的8051单片机程序的功能只是用于配置与SlaveFIFO工作模式相关的寄存器。
之后CY7C68013将工作在SlaveFIFO模式下,FPGA内接口控制器驱动USB芯片高速与主机进行通讯,而不受制于8051CPU有限的时钟频率。
SlaveFIFO模式可再划分为同步读写和异步读写两种模式,本设计使用同步读写模式,其同步时钟信号由FPGA内部接口控制电路提供。
图2.2SlaveFIFO传输示意图
CY7C68013芯片在数据传输时需要使用4kB的内部FIFO。
使用时要通过编写USB芯片驱动程序配置7个端点:
EP0IN&OUT、EP1IN、EP1OUT、EP2、EP4、EP6和EP8。
EP0、EP1IN和EP1OUT是3个只能被固件访问的大小为64Byte的缓存空间。
EP0是数据输入输出端口缓存;EP1IN和EP1OUT是单独的64Byte缓存空间,可以通过编程定义该端点为块传输、中断传输或同步传输三种方式中的一种。
EP2、EP4、EP6、EP8用于大容量高带宽的数据传输,EP2、EP4输出,EP6、EP8输入。
EP4、EP8能够配置为每帧512Byte,但EP2、EP6却只能配置为每帧512Byte或1024Byte,同时分为2、3、4级,其内部的传输由信号full(满)和empty(空)来控a制,当empty为真时不能再对FIFO进行读,当full为真时不能再写数据,USB芯片内部FIFO数据传输示意图如下:
图2.3USB芯片内部FIFO数据传输示意图
根据本设计的需要,使用配置为512字节四重FIFO缓冲工作模式的EP2端口,向外输出数据。
如图2.3所示,当数据从FPGA传送给外部时,只要USB接口数据输入端的FIFO状态为半满,就允许发送数据。
当其状态为满时,CY7C68013芯片会自动将其对应于外部接口,读出数据。
同时将紧接着的空的FIFO对应于USB接口,读入数据。
整个过程类似于水车的原理,通过四重FIFO的空——满交替缓冲,完成每帧512Byte的数据成帧和缓冲传送,周而复始。
当数据写入时与此原理相同,只是方向相反。
2.3USB接口控制器设计
2.3.1接口控制电路引脚设计
FPGA中接口控制器用于承接前面FPGA中FIFO传来16位的数据并将其传输给USB芯片。
它产生USB时钟信号,对USB芯片进行读写控制,并根据USB芯片反馈来的信号(如USB内部FIFO满信号)对FPGA中FIFO进行控制。
图2.4接口电路和USB芯片连接图
IFCLK:
接口控制器的输出时钟,作为USB芯片CY7C68013的时钟信号;
FLAGA,FLAGB,FLAGC,FLAGD:
CY7C68013芯片输出的FIFO状态信息,如满,空等。
其中FLAGD(SLCS)为FIFO的片选信号,由FPGA内接口控制器控制,当SLCS输出高电平时,不可进行数据传输。
FLAGB(FIFOFULL)为USB芯片4重缓冲FIFO满信号,高电平有效;
SLOE:
FIFO输出使能信号,接口控制器控制,当该信号无效时,向上位机的数据线不输出数据;
SLRD:
FIFO读信号,接口控制器控制,同步读时,数据在SLRD有效时的每个IFCLK时钟信号的上升沿读入,异步读时,数据在SLRD的每个有效至无效的跳变沿读入;
SLWR:
FIFO写信号,接口控制器控制,同步写时,在SLWR有效时的每个IFCLK时钟的上升沿时FIFO指针递增,数据被写入,异步写时,在SLWR的每个有效到无效的跳变沿时FIFO写指针递增,数据被写入;
PKTEND:
包结束信号,脉冲触发,接口控制器控制,用于传输一个字节数小于USB芯片固件设定的传输帧大小的数据包。
该信号有效时,不论FPGA内部接口控制电路写入了多少数据,都将自动打成一个包传送。
正常情况下,该引脚无效。
数据包安装CY7C68013固定的包大小进行打包传送。
本设计中采用默认的打包传输方式,该引脚始终无效,赋予固定电平。
FifoData[15:
0]:
16位数据线,由FPGA内接口控制电路输出数据提供给USB芯片;
Data[15:
0]:
16位数据线,由FPGA内部的上一级FIFO缓冲的数据供给USB接口控制器;
FIFOADR[1:
0]:
选择四个FIFO端点的地址线,外部逻辑控制(其二进制值为10表示选择端口2);
Clkout:
由接口控制电路根据所接的CY7C68013芯片内FIFO状态产生的时钟信号,控制从FPGA中FIFO读写数据;
Reset:
外部控制USB芯片复位,低有效,复位后CY7C68013内FIFO数据清零,状态机回到初始状态,读写引脚SLRD,SLWR均有效;
En:
外部控制USB芯片读写控制信号,高有效。
当FPGA内部无信号产生时控制信号En为低,USB芯片不进行数据传输。
图2.5使用QuartusⅡ软件生成的接口控制电路符号
2.3.2USB接口控制器内部逻辑设计
根据USB传输的协议,USB端口包含两种状态,即空闲(IDLE)状态和写(WRITE)状态,其状态机如图2.6所示,当如图2.3的USB芯片内的FIFO没有写事件发生时候,USB处于空闲(IDLE)状态,当USB中的FIFO有写事件发生时候,且FIFO不满时,USB处于写(WRITE)状态,直到FIFO写满之后,USB状态转到空闲(IDLE)状态。
USB内部FIFO状态标识由FLAGB引脚提供。
图2.6USB接口控制器的状态机
本设计使用VHDL语言编写接口控制电路代码,完成数据读取功能,其逻辑设计使用状态机实现,使用了状态fifo_idle(表示空闲)和fifo_transfer(表示传输)。
其核心代码如下:
casestateis
whenfifo_idle=>
state<=fifo_transfer;
whenfifo_transfer=>
iffifo_full='1'then
fifo_wr<='0';
state<=fifo_transfer;
else
fifo_wr<='1';
state<=fifo_idle;
当USB处于写状态时通过控制Clkout时钟读取FPGA中FIFO数据,控制外部数据写入USB接口控制电路,控制SLWR引脚为高,允许写入,将数据传给USB芯片。
当外部读写控制信号en为低时或者fifo_full信号为高时SLWR信号为低,同时控制clkout信号时钟频率为0,外部数据不再读入。
当reset信号为有效时USB控制器芯片复位。
复位后CY7C68013内FIFO数据清零,状态机回到初始状态,读写引脚SLRD,SLWR均有效。
接口控制器具体代码见附录1。
接口控制器工程文件见附件1。
2.4模拟数据传输电路设计
数据传输模拟电路用于模拟产生数据,验证USB接口控制器的传输控制。
系统使用50mhz的时钟频率。
通过锁相环产生驱动ROM的时钟和驱动接口控制电路的时钟信号。
接口控制电路受控于允许信号EN,复位信号RESET,和USB芯片内FIFO满信号FLAGB的控制,输出用于配置USB芯片的ADD0、ADD1,FIFO_OE,FIFO_RD,FIFO_WR,FIFO_CS信号,和USB芯片时钟IFCLK,前级控制时钟信号OUT_CLK。
OUT_CLK信号连接加法器adder,作为adder的时钟信号。
adder根据时钟信号循环产生5位地址,该地址线连接rom地址线,在rom时钟控制下输出数据给USB接口控制器。
本电路用于考核不同控制信号下USB接口控制器的工作情况。
图2.7使用QuartusⅡ软件生成传输测试顶层电路连接图
如顶层文件图所示,数据传输测试电路由USB接口控制器,PLL锁相环,生成的ROM,加法器构成。
ROM:
本设计从QuartusⅡ开发环境中调用了一个32*16bit的ROM用于保存传输所用的数据。
其数据使用QuartusⅡ中新建mif内存文件手动输入;
图2.8建立mif内存文件
PLL:
本设计从QuartusⅡ开发环境中调用了一个锁相环。
锁相环用于不同频率的产生,其使用50mhz基准频率,输出C0时钟50mhz和C1时钟100mhz频率。
后者用于ROM的时钟信号,保证数据总线上数据的更新速度大于数据的读出速度;
加法器(adder):
加法器使用clkout信号作为计时输入时钟信号,当信号上升沿到来时控制输出的5位地址加1,加够31后清0,循环计数。
加法器输出的地址信号连接到ROM中,在ROM的数据输出端由地址信号驱动产生地址对应的数据。
Adder加法器代码见附录2。
ROM代码见附录3。
PLL代码见附录4。
模拟数据传输部分工程文件见附件2。
2.5USB控制器CY7C68013固件及上位机驱动设计
通常芯片固件的编写和上位机驱动的开发需要参考或者直接采用芯片厂商的开发文档和例程,根据Cypress公司开发包中提供的资料,有两种USB芯片固件和上位机驱动的生成方案。
方案
(1):
修改开发包提供的工程框架:
该方案可以使用KeiluVision软件创建一个新的工程。
使用开发包所带的附带文件PERIPH.C,Ezusb.lib,DSCR.a51,USBJmp.OBJ,DSCR.a51,它们代表了设备中五个不同的功能模块。
在新的工程中根据需要调用相应的模块即可。
或者使用设计包生成的FW固件框架。
可以直接使用该工程代码定制自己需要的传输模式最终编译生成固件。
这种方法虽然代码精简,管理方便但是较复杂对于没有固件开发经验的初学者难度较大。
方案
(2):
根据设备功能的需要,直接使用芯片设计包中的例程。
这种方法仅需了解自己的技术方案和例程所采用的方案是否一致即可,根据需要直接选择的某个功能相似的例子最为固件框架。
在硬件资源足够的情况下,这种方法使用最为方便,同时由于可以直接使用例程的上位机驱动,大大节约了开发成本和时间。
本设计选用了方案
(2),使用CYPRESS设计包中的正旋波传输测试例子的固件完成硬件验证。
该例子使用SlaveFIFO同步传输模式,采用端点EP2设置为四重512字节缓冲和本设计一致可以采用。
同时上位机驱动直接使用该例子所带驱动。
固件源代码见附件3。
3电路时序功能仿真及硬件验证
3.1USB接口控制器时序功能仿真
本设计使用QuartusⅡ软件所带的时序仿真软件对附录1所示的USB接口控制器VHDL文件进行时序仿真,选择功能仿真模式。
首先对顶层文件进行编译产生功能网表文件,再对网表文件进行时序功能仿真,仿真结果如下:
图3.1USB接口控制器时序功能仿真(0ns到100ns)
图3.2USB接口控制器时序功能仿真(100ns到220ns)
如图3.1、3.2所示:
开始时fifo_cs低有效,允许数据传输;addr0为低电平,addr1为高电平选择端点2工作方式;reset低有效执行USB控制器复位,fifo_rd、fifo_oe、fifo_wr引脚高有效;数据被传送到数据总线上等待读取(由于是控制器单独仿真clk_out信号无法控制数据的输入);当fifo_wr引脚为高电平时(130ns到170ns),数据被读取,clk_out时钟等于输入clk时钟;当fifo_full引脚高电平有效时(50ns到130ns)或者当外部输出允许信号en为低电平时(170ns到200ns),fifo_wr为低电平,数据不再被读取,clk_out无时钟输出。
3.2模拟数据传输电路时序功能仿真
本设计使用QuartusⅡ软件所带的时序仿真软件对图2.5所示的USB接口控制器顶层文件进行时序仿真,选择功能仿真模式。
首先对顶层文件进行编译产生功能网表文件,再对网表文件进行时序功能仿真,仿真结果如下:
图3.3数据传输模拟电路时序功能仿真(0ns到120ns)
图3.4数据传输模拟电路时序功能仿真(120到250ns)
如图3.3、3.4所示:
开始时锁相环频率锁定需要一定时间,如图3.3开始的时间并无时钟输出(0到30ns),之后ifclk产生时钟输出;当flagb(fifo_full)引脚高电平有效时(120ns到150ns)或者当外部输出允许信号en为低电平时(80ns到110ns),fifo_wr为低电平,数据不再被读取,clk_out无时钟输出,从而控制加法计数器不再产生新的地址,进而从ROM中读取的仍然是原数据,数据线保持原有数据输出,直到fifo_wr高电平有效,再经过ifclk的一个时钟周期保持的数据被读取,从而保证了数据传输的连续性(如120ns到140ns的数据线),没有数据丢失。
3.3模拟数据传输的硬件验证
在硬件验证中,为了满足传输要求,需要根据开发板硬件连接图锁定引脚,并把在硬件验证中不能使用时序信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 干涉 光纤 水听器 系统 上位 通信 设计