基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计_第1页
基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计_第2页
基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计_第3页
基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计_第4页
基于FPGA的干涉型光纤水听器系统中FPGA与上位机通信设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要 干涉型光纤水听器作为一种新型的传感器系统,具有灵敏度高,抗电磁干扰与 信号串扰能力强,耐高温,抗腐蚀的特点,被广泛应用于信号的实时采样设计中。 本设计的主要目的就是将 FPGA 中的来自光纤干涉水听器系统的数据实时传输给上 位机。 随着电子工业的发展,USB 数据传输技术得到了普遍应用,其具有高速,高可 靠性,和高度通用的特点。能够满足高速数据采样系统中数据实时传输的要求,经 过与其他传输技术的比较,本方案采用基于 FPGA 的 USB 数据传输设计。设计主 要从 USB 传输技术方案,通信协议以及驱动的一些基本知识入手,使用 CY7C68013A 传输控制芯片和 EP2C8Q208C

2、8 FPGA 芯片完成了方案的详细设计。 在 Altera 的 FPGA 的设计环境 Quartus II 下,使用 VHDL 语言完成了 FPGA 内部 USB 接口控制程序的编写和接口控制器的时序功能仿真。结合干涉型水听器的数 据传输要求,编写数据产生模块结合 USB 接口控制程序完成模拟数据传输的时序 功能仿真。结合实际修改 CY7C68013 的 USB 传输固件,结合开发板的调试软件, 完成了模拟数据传输的硬件验证。 关键词: FPGA VHDL USB 通信 光纤干涉水听器 业 设 计 外 文 摘 要 Title Transmission design between FPGA a

3、nd host PC in fiber optic hydrophone Abstract Fiber optic hydrophone as a new type of sensor has a quality of high sensitivity. It can be used in the field with electromagnetic interference, high temperature or high corrosion. So it is widely used in the design of real time sampling system. The main

4、 purpose of this design is to transmit the data in FPGA which is from fiber optic hydrophone system to the host pc in real time . Along with the development of the electronic industry, USB data transmission technology is widely used with the character of high speed ,high reliability and universal pr

5、operty. So it meets the demand of the high speed data transmission in real time system. Compared with other technology I choice the USB data transmission based on FPGA design. This design mainly from the FPGA and USB type selection, the FPGA design process, USB2.0 communication protocol and some bas

6、ic knowledge of driver.Then accordingly make the detailed design scheme with the USB controller chip CY7C68013A and the FPGA chip EP2C8Q208C8. Use the VHDL language and complete the program of FPGA internal USB interface controller with timing function simulation in the design environment under Quar

7、tus II. To meet with the data transmission request ,then compete the data generating module program which combined with the USB interface controller program to complete the data transmission timing function simulation.Modify the CY7C68013 USB transmission firmware combined with the actual. Finally c

8、ompete the data transmission hardware verification using the demoboard and the test program . Keywords FPGA VHDL USB transmission Fiber optic hydrophone 目 次 1设计需求分析.1 2方案设计.3 2.1 传输方案的选择.3 2.2 USB 总体传输方案设计.4 2.3 USB 接口控制器设计.6 2.4 模拟数据传输电路设计.10 2.5 USB 控制器 CY7C68013 固件及上位机驱动设计.11 3 电路时序功能仿真及硬件验证.12 3

9、.1 USB 接口控制器时序功能仿真.12 3.2 模拟数据传输电路时序功能仿真.14 3.3 模拟数据传输的硬件验证.15 结 论.19 致 谢.20 参 考 文 献.21 附录 1 USB 接口控制器 VHDL 代码.22 附录 2 数据加法器 ADDER VHDL 代码.24 附录 3 ROM VHDL 代码.25 附录 4 PLL VHDL 代码.27 1设计需求分析设计需求分析 本设计为工程项目“基于 FPGA 的干涉型光纤水听器多路数据采集系统”的数据 传送部分。该项目主要用于完成对于爆炸冲击波的 8 路数据采样处理和传送。对爆 炸冲击波的测量具有时间短数据量大工作环境恶劣的特点,

10、因而项目采用能够适应 高速数据采集要求的光纤传感器。当的冲击波发生时,光纤水听器接收到声波,引 起光纤传感器几何尺寸的改变,从而引起折射率的变化,导致光程的改变。通过与 未产生形变的相同光纤中同源光的干涉比较,产生可测量的信息。由于光纤型水听 器采用光学原理,其灵敏度很高,动态范围可达 120-140dB。同时由于光学设备本 身就具有极强的抗电磁干扰,耐腐蚀的特点,因而光纤干涉水听器采样系统具有很 高的可靠性。采集系统将带有 PGC 解调的光纤水听器的信号进行模数转换。根据 A/D 转换芯片的要求在 FPGA 芯片中编写 VHDL 程序,实现对采集的数据进行实时 采样的驱动电路,并利用 FPG

11、A 内部丰富的存储资源实现对高速采样数据的缓存。 在 FPGA 中采集和处理的数据应能实时传送给上位机用于完成对于测量数据的分析、 储存、显示。高速采样系统采集到的数据缓存在 FPGA 中的 FIFO(先进先出队列) 中,在 FIFO 中的数据和上位计算机之间需要建立一种可靠、高速的数据通信方式, 从而将 FIFO 中的数据实时的传输给上位机,这就是是本设计所要研究和实现的重 点。 电电源源 双双通通道道 AD转转换换器器 双双通通道道 AD转转换换器器 双双通通道道 AD转转换换器器 双双通通道道 AD转转换换器器 FIFO读读写写 控控制制模模块块 AD转转换换 控控制制模模块块 并并置置

12、模模块块 并并置置模模块块 并并置置模模块块 并并置置模模块块 FIFO缓缓存存1 FIFO缓缓存存2 FIFO缓缓存存3 FIFO缓缓存存4 锁锁相相环环PLL模模块块 光光 电电 转转 换换 器器 光光 电电 转转 换换 器器 光光 电电 转转 换换 器器 光光 电电 转转 换换 器器 四四选选一一 模模块块 USB接接口口控控制制器器 输输出出控控制制时时 钟钟 外外部部时时钟钟 USB芯芯片片 CY7C68013 上上位位机机 FPGA芯片 EP2C8Q208C8 八八 路路 光光 纤纤 干干 涉涉 水水 听听 器器 传传 感感 器器 八八路路冲冲击击波波数数据据 图 1.1 基于 F

13、PGA 的干涉型光纤水听器多路数据采集系统整体框图 本设计需要完成以下工作: (1)在 FPGA 芯片和上位计算机之间建立一种可靠、高速的数据传输方式; (2)提高分析问题解决问题的能力,本设计使用从未学过的 CY7C68013 芯片, 需要通过查阅资料,自学掌握其特性,编写 FPGA 内部的相应时序控制电路。通过 本设计参与到实际工程项目中,提升对系统工程的认识。 (3)本设计涉及到 USB 上位机驱动的相关知识,需要对基于 windows 系统的 USB 驱动有一定的了解;本毕业设计的编程使用 VHDL 和 C 语言,需对 VHDL 和 C 语言进行深入学习研究;本毕业设计用到 EDA 开

14、发环境 QuartusII 8.0,需要对该软 件配置下载部分进行学习。 2方案设计方案设计 2.1 传输方案的选择传输方案的选择 计算机的发展到今天,接口技术也逐渐丰富成熟。根据目前通用计算机主板常 见的接口类型,FPGA 和上位机的通信方案有多种:并口方案(IEEE 1284) 、串口 方案(RS-232、RS485) 、PCI 接口方案、USB 接口方案。 RS232 接口传输方式:首先其接口的信号电平值较高,并且电平逻辑无法兼容 TTL 电平;其次传输速率较低,当工作在异步传输模式时,波特率仅为 20Kbps,同 时由于其连线的特点,容易产生共模干扰,抗噪声干扰性弱。更致命的是其传输距

15、 离很有限,其标准的最大传输距离仅能达到 15 米左右,因而其难以满足高速可靠数 据传输的要求。 RS422/RS485 接口传输方式: 采用全双工方式传输,最少要 4 根通信线,因而 连线复杂,不仅如此,其最大传输速率仅为 10Mb/s。所以该方案也无法实现设计要 求。 并口通信方案特点:并口引脚过多,造成连线过于密集复杂,在通过高频信号 时容易引起信号线间串扰难以消除,导致传输错误,信号频率提高困难,无法适应 高速的传输要求。所以该方案也无法实现设计要求。 PCI 通信方案特点:PCI 总线虽然得到广泛应用,但它的缺点也很明显。首先, 由于线间干扰的存在,使得当连接多个设备时系统无法正常工

16、作。同时多设备共享 总线带宽,使得多路采集系统的传输速率较慢,因而其难以满足本设计的要求。 USB 即通用串行总线,接口通信方案特点:(1)高传输速度:目前 USB 接口 有三种:USB1.1、USB2.0 和 USB3.0。理论上 USB1.1 的传输速度可以达到 12Mbps,USB2.0 可达到 480Mbps 而 USB3.0 则可以达到速度 5Gbps。 (2)支持热插 拔:用户在使用外接设备时,不需要重复先关机插上设备再开机,在电脑工作时, 就可以直接将 USB 电缆插上使用。 (3)广泛使用:目前其被广泛的应用于计算机外 设,接口控制器成本较低。 (4)易扩展多设备:通过集线器的

17、扩展,一个根集线器 最高可连接至 127 个设备。 随着 USB 技术的普遍应用,采用 USB 接口的设备更能够被方便的应用于实际 工作中,同时 USB 通信方式满足了可靠高速数据传输的要求,因而本设计采用 USB 接口传输方式。 2.2 USB 总体传输方案设计总体传输方案设计 USB2.0 支持三种数据速率:低速(1.5Mbit/s),全速(12Mbit/s) ,高速 (480Mbit/s) 。根据本设计的数据采集量应选用高速模式。根据 USB 控制器成本和 成熟度的选择要求,本分案选择 Cypress 公司的 CY7C68013(FX2)控制器芯片。 图 2.1 CY7C68013 结构

18、图 Cypress 公司的 CY7C68013 芯片集成有 USB2.0 收发器,8051 增强型内核,和 相应的可编程接口。其 USB2.0 模式下最大传输速度可达到 56Mbytes/s。 CY7C68013 的接口有两种模式 Slave FIFO 和 GPIF 模式。本设计采用前者。 在本设计中由 FPGA 内部的 USB 接口控制电路产生驱动 USB 芯片 CY7C68013 芯片 的时序信号,USB 芯片只需根据 USB 协议打包上传即可,无需其他的复杂控制, 所以本设计选用 Slave FIFO 模式。该模式下,CPU 不参与数据的处理,数据通过芯 片内部的 FIFO 直接传输。F

19、IFO 缓冲的数据由上位机读取, FIFO 提供 FPGA 内部接 口控制器所需 FIFO 满、空等握手信号。在这种方式下,CY7C68013 中的 8051 单片 机程序的功能只是用于配置与 Slave FIFO 工作模式相关的寄存器。之后 CY7C68013 将工作在 Slave FIFO 模式下,FPGA 内接口控制器驱动 USB 芯片高速与主机进行通 讯,而不受制于 8051CPU 有限的时钟频率。 Slave FIFO 模式可再划分为同步读写 和异步读写两种模式,本设计使用同步读写模式,其同步时钟信号由 FPGA 内部接 口控制电路提供。 主主机机 外外部部逻逻 辑辑 收收发发器器

20、和和S SI IE E F FI IF FO O端端点点缓缓冲冲 区区 S SL LA AV VE EF FI IF FO O 从从控控制制器器 8 80 05 51 1固固件件 F FX X2 2芯芯片片 批批量量传传输输 等等 S Sl la av ve eF FI IF FO O 接接口口 图 2.2 Slave FIFO 传输示意图 CY7C68013 芯片在数据传输时需要使用 4kB 的内部 FIFO。使用时要通过编写 USB 芯片驱动程序配置 7 个端点: EP0 IN EP1IN 和 EP1 OUT 是单独的 64Byte 缓存空间,可以通过编程定义该端点为块传输、中断传输或同

21、步传输三种方式中的一种。EP2、EP4、EP6、EP8 用于大容量高带宽的数据传输 ,EP2、EP4 输出,EP6、EP8 输入。EP4、EP8 能够配置为每帧 512 Byte,但 EP2、EP6 却只能配置为每帧 512 Byte 或 1024 Byte,同时分为 2、3、4 级,其内部的 传输由信号 full (满) 和 empty(空)来控 a 制, 当 empty 为真时不能再对 FIFO 进行读, 当 full 为真时不能再写数据, USB 芯片内部 FIFO 数据传输示意图如下: U US SB B接接口口 外外部部接接口口 应应用用环环境境 5 51 12 2* *8 8 5

22、51 12 2* *8 85 51 12 2* *8 8 5 51 12 2* *8 8 空空 满满 半半满满半半满满 图 2.3 USB 芯片内部 FIFO 数据传输示意图 根据本设计的需要,使用配置为 512 字节四重 FIFO 缓冲工作模式的 EP2 端口, 向外输出数据。如图 2.3 所示,当数据从 FPGA 传送给外部时,只要 USB 接口数据 输入端的 FIFO 状态为半满,就允许发送数据。当其状态为满时, CY7C68013 芯片会 自动将其对应于外部接口,读出数据。同时将紧接着的空的 FIFO 对应于 USB 接口,读 入数据。整个过程类似于水车的原理,通过四重 FIFO 的空

23、满交替缓冲,完成 每帧 512Byte 的数据成帧和缓冲传送,周而复始。当数据写入时与此原理相同,只 是方向相反。 2.3 USB 接口控制器设计接口控制器设计 2.3.1 接口控制电路引脚设计 FPGA 中接口控制器用于承接前面 FPGA 中 FIFO 传来 16 位的数据并将其传输 给 USB 芯片。它产生 USB 时钟信号,对 USB 芯片进行读写控制,并根据 USB 芯 片反馈来的信号(如 USB 内部 FIFO 满信号)对 FPGA 中 FIFO 进行控制。 I If fc cl lk k C CY Y7 7C C6 68 80 01 13 3 F FP PG GA A中中U US

24、SB B接接口口 控控制制电电路路 F Fl la ag ga a F Fl la ag gb b/ /f fi if fo o_ _f fu ul ll l F Fl la ag gc c F Fl la ag gd d/ /s sl lc cs s S Sl lo oe e S Sl lr rd d S Sl lw wr r P Pk kt te en nd d F Fi if fo od da at ta a 1 15 5. . .0 0 F Fi if fo oa ad dd de er r 1 1. . .0 0 R Re es se et t E En n C Cl lk ko o

25、u ut t P PC C D Da at ta a C Cl lk k d da at ta a 1 15 5. . .0 0 图 2.4 接口电路和 USB 芯片连接图 IFCLK:接口控制器的输出时钟,作为 USB 芯片 CY7C68013 的时钟信号; FLAGA,FLAGB,FLAGC,FLAGD:CY7C68013 芯片输出的 FIFO 状态信息, 如满,空等。其中 FLAGD (SLCS)为 FIFO 的片选信号,由 FPGA 内接口控制器 控制,当 SLCS 输出高电平时,不可进行数据传输。FLAGB(FIFOFULL)为 USB 芯片 4 重缓冲 FIFO 满信号,高电平有效

26、; SLOE:FIFO 输出使能信号,接口控制器控制,当该信号无效时,向上位机的 数据线不输出数据; SLRD:FIFO 读信号,接口控制器控制,同步读时,数据在 SLRD 有效时的每 个 IFCLK 时钟信号的上升沿读入,异步读时,数据在 SLRD 的每个有效至无效的跳 变沿读入; SLWR:FIFO 写信号,接口控制器控制,同步写时,在 SLWR 有效时的每个 IFCLK 时钟的上升沿时 FIFO 指针递增,数据被写入,异步写时,在 SLWR 的每个 有效到无效的跳变沿时 FIFO 写指针递增,数据被写入; PKTEND:包结束信号,脉冲触发,接口控制器控制,用于传输一个字节数小 于 US

27、B 芯片固件设定的传输帧大小的数据包。该信号有效时,不论 FPGA 内部接口 控制电路写入了多少数据,都将自动打成一个包传送。正常情况下,该引脚无效。 数据包安装 CY7C68013 固定的包大小进行打包传送。本设计中采用默认的打包传输 方式,该引脚始终无效,赋予固定电平。 FifoData15:0:16 位数据线,由 FPGA 内接口控制电路输出数据提供给 USB 芯 片; Data15:0:16 位数据线,由 FPGA 内部的上一级 FIFO 缓冲的数据供给 USB 接 口控制器; FIFOADR1:0:选择四个 FIFO 端点的地址线,外部逻辑控制(其二进制值为 10 表示选择端口 2)

28、 ; Clkout:由接口控制电路根据所接的 CY7C68013 芯片内 FIFO 状态产生的时钟 信号,控制从 FPGA 中 FIFO 读写数据; Reset:外部控制 USB 芯片复位,低有效,复位后 CY7C68013 内 FIFO 数据清 零,状态机回到初始状态,读写引脚 SLRD,SLWR 均有效; En:外部控制 USB 芯片读写控制信号,高有效。当 FPGA 内部无信号产生时控 制信号 En 为低,USB 芯片不进行数据传输。 图 2.5 使用 Quartus软件生成的接口控制电路符号 2.3.2 USB 接口控制器内部逻辑设计 根据 USB 传输的协议,USB 端口包含两种状态

29、,即空闲(IDLE)状态和写 (WRITE)状态,其状态机如图 2.6 所示,当如图 2.3 的 USB 芯片内的 FIFO 没有 写事件发生时候,USB 处于空闲(IDLE)状态,当 USB 中的 FIFO 有写事件发生时 候,且 FIFO 不满时,USB 处于写(WRITE)状态,直到 FIFO 写满之后,USB 状 态转到空闲(IDLE)状态。USB 内部 FIFO 状态标识由 FLAGB 引脚提供。 空空闲闲 写写 复复位位 图 2.6 USB 接口控制器的状态机 本设计使用 VHDL 语言编写接口控制电路代码,完成数据读取功能,其逻辑设 计使用状态机实现,使用了状态 fifo_idl

30、e(表示空闲)和 fifo_transfer(表示传输) 。 其核心代码如下: case state is when fifo_idle= state if fifo_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 信号为

31、低,同 时控制 clkout 信号时钟频率为 0,外部数据不再读入。当 reset 信号为有效时 USB 控 制器芯片复位。复位后 CY7C68013 内 FIFO 数据清零,状态机回到初始状态,读写 引脚 SLRD,SLWR 均有效。 接口控制器具体代码见附录 1。 接口控制器工程文件见附件 1。 2.4 模拟数据传输电路设计模拟数据传输电路设计 数据传输模拟电路用于模拟产生数据,验证 USB 接口控制器的传输控制。系统 使用 50mhz 的时钟频率。通过锁相环产生驱动 ROM 的时钟和驱动接口控制电路的 时钟信号。接口控制电路受控于允许信号 EN,复位信号 RESET,和 USB 芯片内

32、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软件生成传输测试顶层电路连接图 如顶层文件图所示,数据传输测试电路由 US

33、B 接口控制器,PLL 锁相环,生成 的 ROM,加法器构成。 ROM:本设计从 Quartus开发环境中调用了一个 32*16bit 的 ROM 用于保存传 输所用的数据。其数据使用 Quartus中新建 mif 内存文件手动输入; 图 2.8 建立 mif 内存文件 PLL:本设计从 Quartus开发环境中调用了一个锁相环。锁相环用于不同频率 的产生,其使用 50mhz 基准频率,输出 C0 时钟 50mhz 和 C1 时钟 100mhz 频率。 后者用于 ROM 的时钟信号,保证数据总线上数据的更新速度大于数据的读出速度; 加法器(adder):加法器使用 clkout 信号作为计时输

34、入时钟信号,当信号上升 沿到来时控制输出的 5 位地址加 1,加够 31 后清 0,循环计数。加法器输出的地址 信号连接到 ROM 中,在 ROM 的数据输出端由地址信号驱动产生地址对应的数据。 Adder 加法器代码见附录 2。 ROM 代码见附录 3。 PLL 代码见附录 4。 模拟数据传输部分工程文件见附件 2。 2.5 USB 控制器控制器 CY7C68013 固件及上位机驱动设计固件及上位机驱动设计 通常芯片固件的编写和上位机驱动的开发需要参考或者直接采用芯片厂商的开 发文档和例程,根据 Cypress 公司开发包中提供的资料,有两种 USB 芯片固件和上 位机驱动的生成方案。 方案

35、(1):修改开发包提供的工程框架:该方案可以使用 Keil uVision 软件创建一 个新的工程。使用开发包所带的附带文件 PERIPH.C,Ezusb.lib,DSCR.a51,USBJmp.OBJ,DSCR.a51,它们代表了设备中五 个不同的功能模块。在新的工程中根据需要调用相应的模块即可。或者使用设计包 生成的 FW 固件框架。可以直接使用该工程代码定制自己需要的传输模式最终编译 生成固件。这种方法虽然代码精简,管理方便但是较复杂对于没有固件开发经验的 初学者难度较大。 方案(2):根据设备功能的需要,直接使用芯片设计包中的例程。这种方法仅需 了解自己的技术方案和例程所采用的方案是否

36、一致即可,根据需要直接选择的某个 功能相似的例子最为固件框架。在硬件资源足够的情况下,这种方法使用最为方便, 同时由于可以直接使用例程的上位机驱动,大大节约了开发成本和时间。 本设计选用了方案(2),使用 CYPRESS 设计包中的正旋波传输测试例子的固件 完成硬件验证。该例子使用 SlaveFIFO 同步传输模式,采用端点 EP2 设置为四重 512 字节缓冲和本设计一致可以采用。同时上位机驱动直接使用该例子所带驱动。 固件源代码见附件 3。 3 电路时序功能仿真及硬件验证电路时序功能仿真及硬件验证 3.13.1 USBUSB 接口控制器时序功能仿真接口控制器时序功能仿真 本设计使用 Qua

37、rtus软件所带的时序仿真软件对附录 1 所示的 USB 接口控制器 VHDL 文件进行时序仿真,选择功能仿真模式。首先对顶层文件进行编译产生功能 网表文件,再对网表文件进行时序功能仿真,仿真结果如下: 图 3.1USB 接口控制器时序功能仿真(0ns 到 100ns) 图 3.2 USB 接口控制器时序功能仿真(100ns 到 220ns) 如图 3.1、3.2 所示:开始时 fifo_cs 低有效,允许数据传输;addr0 为低电平, addr1 为高电平选择端点 2 工作方式; reset 低有效执行 USB 控制器复位,fifo_rd、 fifo_oe 、fifo_wr 引脚高有效;数

38、据被传送到数据总线上等待读取(由于是控制器 单独仿真 clk_out 信号无法控制数据的输入) ;当 fifo_wr 引脚为高电平时(130ns 到 170ns) ,数据被读取,clk_out 时钟等于输入 clk 时钟;当 fifo_full 引脚高电平有效 时(50ns 到 130ns)或者当外部输出允许信号 en 为低电平时(170ns 到 200ns) , fifo_wr 为低电平,数据不再被读取,clk_out 无时钟输出。 3.23.2 模拟数据传输电路时序功能仿真模拟数据传输电路时序功能仿真 本设计使用 Quartus软件所带的时序仿真软件对图 2.5 所示的 USB 接口控制器

39、 顶层文件进行时序仿真,选择功能仿真模式。首先对顶层文件进行编译产生功能网 表文件,再对网表文件进行时序功能仿真,仿真结果如下: 图 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 为低电

40、平,数据不再被读取,clk_out 无时钟输出,从而控制加法计 数器不再产生新的地址,进而从 ROM 中读取的仍然是原数据,数据线保持原有数 据输出,直到 fifo_wr 高电平有效,再经过 ifclk 的一个时钟周期保持的数据被读取, 从而保证了数据传输的连续性(如 120ns 到 140ns 的数据线) ,没有数据丢失。 3.33.3 模拟数据传输的硬件验证模拟数据传输的硬件验证 在硬件验证中,为了满足传输要求,需要根据开发板硬件连接图锁定引脚,并 把在硬件验证中不能使用时序信号控制且并无太大必要的信号直接接相应电平使其 满足要求。之后开发板连接 JTAG 下载线,上位机安装相应下载线驱动

41、,使用 Quartus软件编译顶层文件形成 sof 目标配置文件,下载到 FPGA 芯片形成相应的 电路。 图 3.5 用于硬件验证的顶层文件 在本设计中,将 en 引脚接为高电平始终有效,reset 引脚接高电平为始终无效, 如图 3.5 所示。从而简化实验环节,保证硬件验证过程中数据的连续性。 图 3.6 使用编译生成的 sof 配置文件下载 在通过 Quartus软件配置下载,在 FPGA 芯片中形成电路后需使用 EZ-USB 软 件通过 USB 数据线下载 USB 固件,固件下载成功后 PC 机发现未识别设备,根据 提示选择驱动存放位置手动安装驱动。驱动安装好后 WINDOWS 设备管

42、理器中显示 如图 3.8 所示。 图 3.7 下载 USB 固件 图 3.8 在 PC 机上安装成功 USB 驱动 图 3.9 开发板硬件连接图 本设计中使用艾曼电子开发板进行硬件验证。如图 3.9 所示,开发板连接上位机 为 USB 接口的 JTAG 下载线,USB 数据线和电源线。硬件安装配置结束可以进行数 据测试。使用开发板带的 USB 读写速度测试软件进行速度测试。 开发板硬件连接原理图见附件 4。 图 3.10 USB 传输速度测试 首先测试 USB 上传的数据的速度。打开开发板附带的测试软件,选择启动读线 程,如图 3.10,可见,实际上传的的速度可以达到 35MB/s,满足设计要

43、求。之后读 取传输的数据,选择读测试,此时测试软件把采样传来的数据生成一个 10MB 的 BIN 数据包,可以用 winhex 软件打开数据包检查数据。 图 3.11 使用 Winhex 软件观察接收的数据 图 3.12 使用 Winhex 软件观察接收的数据 由于上位机数据监测软件为直接使用例程的,并没用根据模拟传输进行编写, 其对数据进行了多次采样,出现了大量数据的重复;图中 0 到 F 的数字代表一个 8 位的存贮单元,从低到高使用小端对齐排列。图中所选定的十六进制数字按照高低 8 位排列一个 16 进制数字。图 3.11 中 03 20h 换算成十进制为 800 ,图 3.12 中 1

44、b 58h 换算成 10 进制为 7000 和 rom 中数据一致。 图 3.13 与 ROM 中数据比较 通过对 BIN 文件中中大量数据的比对,其均为 ROM 中所储存的数据。因而可 以验证数据传输是正确的。 测试软件及生成数据见附件 5。 结结 论论 本设计对基于 FPGA 的数据采集系统与上位机之间的数据传输方案作了深入的 研究和分析,对硬件描述语言 VHDL 的应用、FPGA 系统的设计流程和芯片之间的 接口设计进行了学习和实践,在此基础上完成了 FPGA 与上位机的通信设计中 FPGA 内接口控制部分。并对 USB 芯片的通信固件进行了理论设计,对 USB 传输 工程固件和上位机驱

45、动程序进行了探索。 课题的具体实施工作如下:首先,应用 VHDL 语言编写 USB 芯片接口控制器, 再为控制器编写数据产生模拟传输验证程序,并通过时序仿真实现。经过实际调整 后得到了最终的总体测试电路,将其下载到 FPGA 芯片中配合 USB 传输固件实现硬 件验证。最终,实现传输速率为 35Mbyte/s 的传输系统。 本课题对 USB 数据传输进行了深入地学习和研究,取得了不少经验,虽然初步 实现了 FPGA 中数据与上位机之间的传输设计,但并没有根据传输方案修改优化 USB 传输固件,也没有根据传输的数据时序编写上位机数据接收显示程序,因而本 方案需要继续研究和完善。 致致 谢谢 首先

46、感谢我的毕业设计指导老师焦素敏教授。在我完成本设计的过程中,焦 老师给了我认真详尽的指导,本设计的选题,方案的确定和最终的完成无不凝 结着她的心血。不仅如此焦老师还教会了我严谨的治学态度,使我获益匪浅。 感谢在毕业设计上给与我极大帮助的王元庆、匡翠婷等同学,他们分别负责 基于 FPGA 的干涉型水听器项目的数据采集和 FPGA 内部 FIFO 数据缓存设计, 他们为我的设计提供了具体的数据要求,同我我一起研究具体技术方案。也是 他们营造了同学间温馨的气氛,给了我学习上的鼓励。 感谢我的父母给予我的理解和支持,没有他们的无私奉献,我就没有今天的 成绩。 最后,向所有关心支持帮助过我的老师和同学们

47、表示最诚挚的谢意! 参参 考考 文文 献献 1 焦素敏.EDA 技术基础M.北京:清华大学出版社,2009. 2 潘松,王国栋.VHDL 实用教程M.四川:电子科技大学出版社,2006. 3 郑亚民,董方舟.可编程逻辑器件开发软件 QuartusM.北京国防工业出版社, 2006 4 周立功.PDIUSBD12 USB 固件编程与驱动开发M.北京.北京航空航天大学出版 社,2003 5 谭会生,瞿遂春.EDA 技术综合应用实例与分析M. 西安:西安电子科技大学出 版社,2004.11.1. 6 北京理工大学 ASIC 研究所.VERILOG HDL 语言 100 例详解M.北京:清华大 学出版

48、社,1999.12. 7 刘爱容,王振成. EDA 技术与 CPLD/FPGA 设计应用简明教程M.北京:清华大 学出版社, 2007.8. 8 潘松,黄继业.EDA 技术与 VERILOG HDLM. 北京:清华大学出版社,2005.7. 9 杨志忠,卫桦林,郭顺化. 数字电子技术基础M . 北京:高等教育出版社,2004. 10 王金明,杨吉斌. 数字系统设计与 Verilog HDL M . 北京:电子工业出版社, 2002. 11 李洪伟, 袁斯华. 基于 Quartus 的 FPGA/ CPLD 设计M . 北京:电子工业社, 2006. 12 张文. 可编程逻辑器件的发展与应用J

49、. 大众科技,2006 . 13 阎石. 数字电子技术基础M . 北京:高等教育出版社,1992. 14 侯伯亨,顾新. VERILOG HDL 硬件描述语言与数字逻辑电路设计M . 西安: 西安电子科技大学出 版社,1999. 15 刘皖,何道君,谭明. FPGA 设计与应用M.北京:清华大学出版社,2006.6. 16 Don Anderson,Dave Dzatko.USB 系统体系M.北京.中国电力出版社,2003 17 Chenna Madhavuni, Rakesh. Transceiver design in USB physical Interface with short-c

50、ircuit protection.D Texas A use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity usb is port( en: in std_logic; clk: in std_logic; reset: in std_logic; fifo_full: in std_logic; outclk: out std_logic; ifclk: out std_logic; addr0: out std_logic; addr1: out

51、 std_logic; fifo_oe: out std_logic; fifo_wr: buffer std_logic; fifo_rd: out std_logic; fifo_cs:out std_logic; fifo_data: out std_logic_vector(15 downto 0); data: in std_logic_vector(15 downto 0) ); end usb; architecture behavior of usb is type states is(fifo_idle,fifo_transfer); signal state: states

52、:=fifo_idle; signal clk_in: std_logic; signal clk_out: std_logic; signal fifo_data_in: std_logic_vector(15 downto 0); begin addr0=0; addr1=1; clk_in=clk; ifclk=clk; fifo_cs=0; fifo_oe=1; fifo_data=data; process(clk) begin if fifo_wr=0 then clk_out=0; else clk_out=clk; end if; end process; process(cl

53、k_in,reset,en) begin if en=0 then fifo_wr=0; else if falling_edge(clk_in) then if reset=0 then state=fifo_idle; fifo_wr=1; fifo_rd state if fifo_full=1 then fifo_wr=0; state=fifo_transfer; else fifo_wr=1; state state=fifo_idle; end case; end if; end if; end if; end process; outclk=11111 then num=00000; else num=num+1; end if; end if; addr=num; dataout=datain; END PROCESS; END behav; 附录附录 3 3 ROMROM VHDLVHDL 代码代码 LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY altera_mf; USE altera_mf.all; ENTITY rom IS PORT ( address: IN STD_LOGIC_VECTOR (4 DOWNTO 0); clock: IN STD_LO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论