毕业设计基于的FPGA的数据采集控制系统设计_第1页
毕业设计基于的FPGA的数据采集控制系统设计_第2页
毕业设计基于的FPGA的数据采集控制系统设计_第3页
毕业设计基于的FPGA的数据采集控制系统设计_第4页
毕业设计基于的FPGA的数据采集控制系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、基于的FPGA的数据采集控制系统设计摘 要以ALTERA公司的FPGA芯片EP1C6T144C8为核心,采用A/D转换器件和D/A转换器件设计了一个基于FPGA的数据采集系统,并用状态机描述方式对系统进行了深入分析。系统通过软件设计输入、分析与综合、仿真与验证等过程仿真实现了这一系统。设计输入过程中用VHDL语言编程实现了对TLC5510的采样控制和D/A转换器的控制;分析与综合过程对设计文件进行排错处理,并且对系统耗用的资源进行统计;仿真与验证过程对设计的核心模块的功能和时序性质进行了仿真测试,用仿真波形分析说明设计结果满足设计要求。关键词:数据采集系统;FPGA;采样控制系统Abstrac

2、tThe FPGA chip EP1C6T144C8 of ALTERA Company which works with the A/D and D/A conversion devices as the core. A data acquisition, based on FPGA, was designed by programming with QuartusII simulation software and the function of validation. The system was analyzed deeply by adopting the method of the

3、 state machine. A data acquisition structure was designed in the system, which was achieved by designing inputs, analysis and synthesis, simulation and validation and so on. In the process of design inputs, the control of sampling to TLC5510 and D/A diversion were achieved by programming with VHDL l

4、anguage. The process of analysis and synthesis misarranged the design files. It also made a statistics of consumed sources in the system. The function and timing nature of the design was tested by simulation in the simulating and verifying process for validating the work here.Key Words: Data Acquisi

5、tion System, FPGA, VHDL, Sampling Control System目 录第一章 绪 论11.1 课题背景及依据11.2 选题目的及意义2第二章 系统的结构设计32.1 概述32.2 系统总体结构及原理32.2.1 A/D转换模块4数据存储模块62.2.3 D/A转换模块62.2.4 FPGA控制模块7第三章 FPGA对A/D和D/A转换控制软件设计93.1 VHDL硬件描述语言基础93.1.1 设计输入93.1.2 程序结构说明103.2 状态机设计113.2.1 MOORE状态机设计123.2.2 VHDL一般状态机设计123.2.3 类型定义语句TYPE133

6、.3 用状态机设计A/D采样控制143.4 用行为描述方式设计A/D采样控制163.5 实用状态机的优势173.6 D/A转换的控制18第四章 Quartus仿真204. 1 设计输入204.2 设计编译214.3 设计综合224.4 设计仿真254.5 仿真结果及分析274.5.1 状态机描述方式的时序仿真和功能仿真分析274.5.2 行为描述方式时序仿真分析27第五章 测试信号分析295.1 正弦波的产生295.2 正弦波发生器的特点31结 论33致 谢34参考文献35附录1 状态机实现TLC5510采样控制程序36附录2 行为描述方式实现TLC5510采样控制程序38附录3 测试信号正弦

7、波的产生程序39附录4 D/A转换器控制程序45第一章 绪 论现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDA技。现代电子系统设计领域中的EDA是随着计算机辅助设计技术的提高和专用集成电路规模的扩大应用而生,并得到不断完善的。由于数字技术的发展,可编程专用集成电路,即CPLD/FPGA器件,目前得到广泛的应用,为电子系统的设计带来极大的灵活性。可编程专用集成电路可以通过软件编程对器件的硬件结构和工作方式进行重构,使得硬件的设计如同软件设计那样方便快捷。这一切可极大地改变传统的电子系统设计方法、设计过程乃至设计观念。甚至在ASIC器件设计过程中,利用EDA技术完成对软件仿

8、真之后,在投片之前,也可以先利用FPGA进行“硬件仿真”。如果能够利用CPLD/FPGA器件的可编程特性,把设计的结果加载到器件中进行硬件的调试和验证,则对EDA技术的掌握极其有益。1.1 课题背景及依据20世纪末,电子技术获得了飞速发展,在其推动下, 现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。EDA工程就是以计算机为工作平台,以EDA软件工具为开发环境,以可编程器件为实验载体,以ASIC、SOC新品为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程,EDA工程广义的定义

9、范围包括半导体工艺设计自动化,可编程器件设计自动化,电子系统设计自动化,印刷电路板设计自动化,仿真与测试故障诊断以及形式验证自动化。EDA工程的狭义的定义范围是电子设计自动化。不包含电子生产自动化。EDA工具的出现,给电子系统设计带来了革命性的变化。随着INTEL公司Pentium处理器的推出,ALTERA等公司几十万门乃至上百万门规模的FPGA的上市,EDA工程在功能仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的巨大的挑战。目前,EDA技术作为电子设计的通用平台,逐渐向支持系统级的设计发展;数字系统的设计也从图形设计方案向硬件描述语言设计方案发展。可编

10、程器件在数字系统设计领域得到广泛应用,不仅缩短了系统开发周期,而且利用器件的现场可编程特性,可根据应用的要求对器件进行动态配置或编程,简单易行地完成功能的添加和修改。在EDA软件开发方面,主要集中在美国。 但各国也正在努力开发相应的工具。日本,韩国都有ASIC设计工具,但不对外开放。相信在不久的将来会有更多更好的设计工具在各地发展壮大。EDA技术发展迅猛,完全可以用日新月异来描述。EDA技术的应用广泛,现在已涉及到各行各业。EDA水平不断提高,设计工具趋于完美的地步。EDA市场日趋成熟,但我国的研发水平很有限,需迎头赶上。1.2 选题目的及意义1、对电子设计最前沿技术EDA的跟踪和掌握针对ED

11、A技术发展的走势,无疑高速率,高质量的设计系统代表着未来十几年,甚至几十年的发展方向。传统的电子设计技术通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将他们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。以此流程逐步向上递推,直至完成整个目标系统的设计。而EDA技术的应用是自顶向下的,就是在整个设计流程中各设计环节逐步求精的过程。一个项目的设计过程包括从自然语言说明到VHDL的系统行为描述,系统地分解,RTL模型的建立,门级模型产生,到最终的可以物理布线实现的底层电路,就是从高抽象级别到低抽象级别的整个设计周期。此外,VHDL设计

12、优秀的可行性,EDA平台的通用性以及与具体硬件结构的无关性,使得前期的设计可以容易的应用于新的设计项目,则项目设计的周期可以显著缩短。2、应用FPGA技术实现高速的数据采集系统随着信号处理器件的处理速度越来越快,数据采样的速率也变得越来越高,在某些电子信息领域,要求处理的频带要尽可能的宽,动态范围要尽可能的大,以便得到更宽的频率搜索范围,获取更多的信息量。本课题是对EDA技术的应用,即用EDA工具实现数据的采样。FPGA的应用是EDA技术有机融合软硬件电子设计技术,SOC和ASIC设计,以及对自动设计与自动实现最典型的诠释。用FPGA控制数据采集系统代替用单片机控制数据采集系统已经成为特定的趋

13、势。第二章 系统的结构设计2.1 概述针对基于FPGA的数据采集系统设计的要求,先对EDA技术和VHDL语言进行学习,然后研究数据采集中的关键问题,并且实现用FPGA控制数据采集系统地设计。2.2 系统总体结构及原理系统的总体结构如图2-1所示。在符合奈奎斯特采样定理的条件下,外界的模拟信号频率要小于采样模块采样频率的1/2。如果还有高频分量的话,可以让外界的模拟信号经过一个低通滤波器滤除高频分量后输入到A/D转换芯片TLC5510中。A/D转换芯片每隔一个时钟取出一次x(t)的幅度,抽样后的信号称为离散时间信号,它只表示一些离散时间点。随之在A/D转换器的保持电路中将抽样信号变换成数字信号。

14、经过A/D转换器后不仅时间离散化了,而且幅度也离散化,即x(n)。由FPGA中的采样控制器控制TLC5510的采样,将采集到的信号锁存在FPGA的内部存储器RAM中,然后控制RAM中的数据输出到D/A转换器,D/A转换器每隔一个时钟取出一次y(n),随之在D/A转换器的保持电路中将数字信号转换为模拟信号,这些信号在时间点上的幅度应等于序列y(n)中相应数码所代表的数值大小。若最后输A/D转换器数字信号x(n)模拟信号输入x(t)控制信号FPGA内部FIFO控制信号模拟信号输出y(t)D/A转换器数字信号y(n)信号恢复 y(t)图2-1 数据采集系统结构图出的信号具有不符合条件的高频分量,则还

15、要通过一个模拟滤波器,滤除不需要的高频分量,平滑成所需的模拟输出信号y(t),以完成信号的采集。根据FPGA在系统中的功能,可将其模块分为A/D采样控制模块、数据存储模块和D/A控制模块。2.2.1 A/D转换模块在系统的A/D转换中使用的芯片是TLC5510,TLC5510 高速模数转换芯片,用于视频处理,高速数据转换等领域,采用CMOS工艺制造,精度为8位,转换速率20Msps,每秒采样20M次,采用半闪速结构,内建采样保持电路。TLC5510芯片图如图2-2所示:图2-2 TLC5510芯片引脚图TLC5510为24引脚、PSOP表贴封装形式(NS)。其引脚排列如图2-2所示。AGND:

16、模拟地信号;ANALOG IN:模拟信号输入端;CLK:时钟输入端,作为数据采集的主控时钟;DGND:数字信号地;D1D8:数据输出端口。D1为数据最低位,D8位最高位;OE:输出使能端。当OE位低时,D1D8数据有效;因为系统中D1D8端口的数据在整个仿真过程中都有效,所有OE始终设置为低电平; VDDA:模拟电路工作电源;VDDD:数字电路工作电源;此系统中使用FPGA来控制A/D采样,包括将采得的数据存入FIFO(FPGA内部FIFO存储速率可达10ns),整个采样周期需要4至5个状态即可完成。若FPGA的时钟频率为100MHz,则从一个状态向另一状态转换的时间为一个时钟周期,不到单片机

17、的采样周期的千分之一。TLC5510FPGA模拟信号数据控制信号数字信号图2-3 FPGA控制TLC5510图示如图2-3所示,FPGA控制TLC5510实现了将模拟信号转换成数字信号的过程。其中,TLC5510转换好的数据将存到FPGA的内部存储器中等待处理。TLC5510是以流水线的工作方法进行工作。它在每一个周期都启动一次采样,完成一次采样;每次启动采样是在CLK的下降沿进行,不过采样转换结果的输出在2.5个CLK周期后,将送到内部数据总线上。将输出延时Tdd计入,从采样到输出需经过2.5*Tclk+Tdd。对于需要设计的从采样控制器,可以认为,每加一个采样CLK周期,A/D就会输出一个

18、采样数据。在图2-4所示的工作时序的控制下,当第一个时钟周期的下降沿到来时,模拟输入电压将被采样到高比较器块和低比较器块,高比较器块在第二个时钟周期的上升沿最后确定高位数据,同时,低基准电压产生与高位数据相应的电压。低比较块在第三个时钟周期的上升沿的最后确定低位数据。高位数据和低位数据在第四个时钟周期的上升沿进行组合,这样,第次采集的数据经过2.5个时钟周期的延迟之后,便可送到内部数据总线上。此时输出使能OE有效,数据被送至8位数据总线上。由于CLK的最大周期为50ns, TLC5510 图2-4 TLC5510时序模数转换器的最大采样速率可以达到20MSPS。对A/D器件进行采样控制,传统的

19、方法是用CPU或单片机完成的。编程简单,控制灵活,但缺点是控制周期长,速度慢。特别是当A/D器件本身的采样速度比较快时,CPU的慢速极大的限制了A/D的速度。A/D转换芯片TLC5510的采样速率达40MHz,采样周期是0.025s,单片机在控制A/D进行一个采样周期中必须完成的操作有初始化TLC5510,启动采样,等待约0.025s,发出读数命令,分两次将12位转换好的数从TLC5510读进单片机,再分两次将此数存入外部RAM中,外部RAM地址加1,此后再进行第二次采样周期的控制。显然,用单片机控制TLC5510采样远远不能发挥其高速采样的特性。对于更高速的A/D器件,单片机完全无从控制。2

20、.2.2 数据存储模块数据锁存模块是由ezNiosDK FPGA板的芯片FIFO构成,其存储速率可达到10ns。在FPGA中A/D采样控制器控制TLC5510将数据采集到后,FPGA便将锁存信号调节为有效的高电平,然后将信号锁存入存储器中。选择一:外部随机存储器RAM。其优点是存储量大,缺点是需要外接芯片,且常用的RAM读写速度较低:与FPGA间的连接线过长:特别是在存储数据时需要对地址进行加1操作,影响数据写入速度。选择二:内部随机存储器RAM,在Altera的大部分FPGA 器件中都含有EAB模块,由此可配置成不同类型的内部高速RAM。与外部RAM相比,尽管内部RAM有更大的优势,但使用中

21、仍然存在需要对地址进行加1操作,而影响数据写入速度的缺点。选择三:内部FIFO,相比之下,FIFO更适合于用作A/D采样数据高速写入的存储器,因为FIFO的写入时间只有一个时钟周期,因此决定使用LPM_FIFO作为采样存储器。 D/A转换模块DAC0832是8位分辨率D/A转换集成芯片,与处理器完全兼容,其价格低廉,接口简单,转换控制容易等优点得到了广泛的应用,其引脚图如图2-5所示。对于从零电平开始的正极性模拟输入电压,REFB应当连接到模拟地AGND。VREFT的范围为2V5V。如果要简化电路,可利用DAC0832的内部分压电阻从模拟电源电压VDDA上取得基准电压。在本设计中,CCD输出的

22、模拟视频信号经过反相、滤波、放大之后即为从零电平开始的正极性模拟电压信号。因此,为了简化图2-5 DAC0832芯片引脚图电路并同时满足设计要求,选用了DAC0832的内部基准方式,同时,因为CCD视频信号是2V基准,所以,根据DAC0832的自身的特点,在设计过程中,将REFBS端与AGND,而将REFTS与VDDA端相连,同时将REFBS短接至REFB端,REFTS短接至REFT端来获得2V基准电压。FPGADAC0832控制信号数字信号模拟信号数字信号图2-6 FPGA控制DAC0832图示如图2-6所示,数字信号从FPGA的存储器中输出后,送到D/A转换模块DAC0832中,它将数字信

23、号转换从成与初始信号相似的模拟信号。 FPGA控制模块系统中采用FPGA控制A/D转换模块和D/A转换模块,相对于单片机的控制,显然提高了速度,更有应用价值。如图2-7所示,为FPGA控制模块内部结构图。控制D/A芯片信号A/D采样控制器FIFOD/A采样控制器数字信号数字信号控制A/D芯片信号图2-7 FPGA模块内部结构FPGA模块内部有三大部分构成,分别为A/D采样控制器,FIFO,D/A采样控制器。首先主控时钟条件下,A/D采样控制器驱动A/D转换模块进行数据的采样和转换,然后将转换好的数据存入FPGA内部的FIFO中,然后在主控时钟特定的周期下,将FIFO中暂存的数据输出给D/A转换

24、模块,与此同时,D/A采样控制器驱动D/A转换模块将数据恢复为与原始信号相似的模拟信号。最后将信号发送到硬件设备中进行测试。第三章 FPGA对A/D和D/A转换控制软件设计3.1 VHDL硬件描述语言基础程序设计是使用硬件描述语言HDL,在EDA软件提供的设计向导或语言助手的支持下进行设计。VHDL语言设计是目前电子工程设计最重要的设计方法。用作程序设计的语言种类较多,本设计中用VHDL语言,下面对VHDL进行简单的介绍。硬件描述语言VHDL,语言是随着集成电路的系统化和集成化发展起来的,是一种用于数字系统的设计和测试方法的描述语言。VHDL语言已成为EDA设计中信息交换的重要标准。它较为注重

25、规范化和标准化,这使得VHDL语言系统庞大,语法规则较为复杂,但功能却非常强大。它还有许多的优点。 VHDL的主要优点如下:(1) 系统硬件描述能力强。VHDL具有多层次描述系统硬件功能的能力,即设计的原始描述可以是非常简练的描述,经过层层细化分解,最终成为可直接付诸生产的电路级或版图参数描述。整个过程都在VHDL环境下进行。(2) VHDL语言标准、规范,易于共享和服用。VHDL的移植性很强。VHDL是一种标准语言,故他的设计描述可以被不同工具所支持。可将它从一个模拟工具移植到另外一个模拟工具;从一个综合工具移植到另一个综合工具;从一个工作平台移植到另一个工作平台。这意味着同一个VHDL设计

26、描述可以在不同的设计中采用。(3) 上市时间快,成本低。VHDL与可编程ASIC器件相结合,可大大提高数字系统集成化的速度,同时CPLD/FPGA可使产品设计的前期风险降到最低。 设计输入设计输入包括使用硬件描述语言VHDL、状态图与原理图输入三种方式。VHDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能特定综合器作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点,根据数据采集系统的特点,采用了VHDL语言描述方式。系统设计的VHDL语言程序通常包含5个部分:(1) 实体说明。用于描述系统的外部接口

27、信号。(2) 结构体说明。用于描述系统的行为、系统数据的流程或系统组织结构形式。(3) 配置。属性选项,描述层与层之间、实体与结构体之间的连接关系。(4) 程序包。属性选择,用于把共享的定义放置其中。(5) 库。存放已编译的实体、结构体、包集合和配置,可由用户生成或由ASIC芯片制造商提供。 程序结构说明 程序结构可分为三大部分,即程序包集合,以entity引导的实体说明和以architecture引导的结构体说明。1、包集合、库部分采样控制程序中用到的库有ieee库和std库与work库。库是经编译之后数据的集合,它存放包集合定义、实体定义、结构体定义和配置定义。库的功能类似于DOS操作系统

28、中的目录,库中存放着设计的数据。库的说明总是放在设计单元的最前面。在VHDL中存在的库大致可分为5类:ieee库、std库、asic矢量库、work库、用户定义库。 ieee库是最常用的资源库。目前ieee库中包含ieee标准包std_logic_1164,numeric_bit,numeric_std和math。 std库使VHDL的标准库,在库中存放着称为standard的包集合。由于它是VHDL的标准配置,因此,在调用standard时,可以不按标准格式说明,即逻辑名为std的库为所有设计单元的隐含定义。work库是现行作业库,描述的VHDL语句不需要任何说明,都将存放在work库中,在

29、使用该库时无需进行任何说明。除了work库之外,其他的库在使用前都要先做说明。一般来说,在使用库时先要用两条语句对库进行说明。2、实体说明部分以entity引导的实体说明定义了一个设计单元的输入端口clk和din以及输出端口clk1、oe和dout,这些端口也是设计单元对外的特性。实体说明给出了设计单元与外部的接口,也就是说给出了单元外部的引脚。VHDL描述的所有设计均与实体有关,实体是设计中最基本的单元。设计的最顶层是顶层实体,如果将设计分层次,那么在顶层实体中又可以包含较低层次的实体。实体说明的一般语法如下:实体说明主要包括端口说明和类属说明两个方面。在实体说明中不能使用类属说明和端口说明

30、以外的任何说明。实体说明,作为一个设计的对外特性的具体描述,提供了与其他设计的接口。所有这些功能通过定义实体的特征来完成。(1)类属说明类属说明是实体说明组织中的可选项,放在端口说明之前。 (2)端口说明端口说明是对基本设计单元外部接口的描述,也可以说是外部引脚信号的名称,对数据类型和输入输出方向的描述,端口说明包含端口名和端口方向两个因素。1) 端口名:赋予每个外部引脚的名称,即clk,din,dout,oe,clk1。2) 端口方向:定义外部引脚是输入还是输出。如clk:in std_logic;dout:out std_logic_vector(7 downto 0)。表明方向的说明符如

31、下:IN 输入,信号从端口进入结构体之内;它主要用于时钟输入、控制输入和单向的数据输入。OUT 输出,信号从结构体内流经端口输出;它主要用于计数输出。INOUT 双向,驱动信号可以在实体内向外,也可在实体外向内,也允许用于内部反馈。BUFFER 缓冲输出,但也可以用于内部反馈。3) 数据类型:规定描述对象的特征。在VHDL语言中有10种数据类型,但是在逻辑电路中通常用到的有4种: 位:位(bit)可取值0或1。 位矢量:位矢量(bit_vector)取值是一组二进制位的值。 布尔型:布尔型(boolean)可取值TRUE或FALSE。 整数:整数(integer)可用作循环的指针或常量,通常不

32、用于I/O信号。3、结构体说明部分以architecture引导的结构体是一个基本设计单元内部工作的具体描述。它具体指明该基本设计单元的行为,单元内部的连接关系,也就是定义了设计单元具体的功能或内部操作特性。3.2 状态机设计有限状态机及其设计技术是实用数字系统设计中的重要组成部分,也是实现高效率可靠逻辑控制的重要途径。尽管到目前为止,有限状态机的设计理论并没有增加多少新的内容,然而面对先进的EDA工具、日益发展的大规模集成电路技术和强大的VHDL等硬件描述语言,有限状态机在其具体的设计技术和实现方法上又有了许多新的内容。3.2.1 MOORE状态机设计从状态机的信号输出方式上分,有MOORE

33、型和MEALY型两类状态机。从输出时序上看,前者属于同步输出状态机,而后者属于异步输出状态机。MEALY型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生变化的,不依赖时钟的同步。MOORE型状态机的输出则仅为当前状态 的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比MEALY机要多等待一个时钟进程。在状态机设计中根据高速数据采集的特点采用了MOORE型状态机。 VHDL一般状态机设计用VHDL可以设计不同表达方式不同实用功能的状态机,然而他们都有相对固定的语句和程序表达方式,只要把握了这些固定的语句表达部分,就能根

34、据实际需要写出各种不同风格和面向不同实用目的的VHDL状态机。用VHDL设计的状态机有多种形式,从状态机的信号输出方式上分有MEALY型和MOORE型两种状态机;从结构上分,有单进程状态机和多进程状态机;从状态表达方式上分有符号化状态机和确定状态编码的状态机;从编码方式上分有顺序编码状态机、1位热码编码状态机或其他编码方式状态机。然而最一般和最常用的状态机通常都包含说明部分、主控时序进程、主控组合进程、辅助进程等几个部分。1)、说明部分说明部分中使用TYPE语句定义新的数据类型,此数据类型位枚举型,其元素通常都用状态机的状态名来定义。状态变量应定义为信号,便于信息传递;并将状态变量的数据类型定

35、义为含有既定状态元素的新定义的数据类型。说明部分一般放在结构体的ARCHITECTURE和BEGIN之间。2)、主控时序进程所谓主控时序进程是指负责状态机运转和在时钟驱动下负责状态转换的进程。状态机是随外部时钟信号,以同步的时序方式工作的。因此,状态机中必须包含一个对工作时钟信号敏感的进程,作为状态机的“驱动泵”。时钟clk相当于这个“驱动泵”中电机的驱动功率电源。当时钟发生有效跳变时,状态机的状态才发生变化。状态机向下一状态转换的实现仅仅取决于时钟信号的到来。3)、主控组合进程如图3-1所示,com进程即为一主控组合进程,它通过信号current_state中的状态值,进入相应的状态,并在此

36、状态中根据外部的信号,同时确定下一状态的走向,即向次态信号next_state中赋入相应的状态值。此状态值将通过next_state传给图中的REG时序进,直至下个时钟脉冲的到来再进入另一次的状态转换周期。因此主控组合进程也可称为状态译码进程,其任务时根据外部输入的控制信号,或当前状态的状态值确定下一状态的取向,即next_state的取值内容,以及确定对外输出或对内部其他组合或时序进程输出控制信号的内容。4)、辅助进程辅助进程用于配合状态机工作的组合进程或时序进程。comb_outputs fsm:s_machine current_state next_stateprocessregpro

37、cesscomclkresetstate_inputs图3-1 一般状态机结构框图 类型定义语句TYPEVHDL有限状态机涉及的相关语句类型和语法表述在此之前的VHDL语法介绍中已涉及,这里仅介绍与有限状态机设计有联系的其他语法现象,即用户自定义数据类型定义语句及相关的语法现象。用户自定义数据类型是用类型定义语句TYPE和子类型定义语句SUBTYPE实现的。TYPE语句的用法如下:TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型;或TYPE 数据类型名 IS 数据类型定义 ;利用TYPE语句进行数据类型自定义有两种不同的格式,但方法是相同的。其中,数据类型名由设计者自定,此名将作为

38、数据类型定义之用,方法与以上提到的预定义数据了行的用法一样;数据类型定义部分用来描述所定义的数据类型的表达方式和表达内容;关键词OF后的基本数据类型是指数据类型定义中所定义的元素的基本数据类型,一般都是取已有的预定义数据类型,如BIT、STD_LOGIC或INTEGER等。子类型SUBTYPE指是由TYPE所定义的原数据类型的一个子集,它满足原数据类型的所有约束条件,原数据类型称为基本数据类型。子类型SUBTYPE的语句格式如下:SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;子类型的定义只在基本数据类型上作一些约束,并没有定义新的数据类型,这是与TYPE最大的不同之处。子

39、类型定义中的基本数据类型必须在前面已有过TYPE定义的类型,包括已在VHDL预定义程序包中用TYPE定义过的类型。利用子类型定义数据对象的好处是,除了使程序提高可读性和易处理外,其实质性的好处还在于有利于提高综合和优化效率,这是因为综合器可以根据子类型所设的约束范围,有效地推出参与综合的寄存器的最合适的数目。3.3 用状态机设计A/D采样控制 A/D转换器控制程序见附录1。TLC5510采样状态机设计。根据一般状态机的结构设计采样状态机结构。如图3-2所示,程序包含3个进程。REG进程是时序进程,他在时钟信号CLK的驱动下,不断将next_state中的内容赋给current_state,并由

40、此信号将状态变量传输给组合进程COM。组合进程COM有两个主要功能:状态译码功能。即根据从current_state信号中获得的状态变量,决定下一状态的转移方向,即确定次态的状态变量;采样控制功能。即根据current_state中的状态变量确定TLC5510的控制信号线ADoe、ADck、OE等输出相应的控制信号,当采样结束后还要通过LOCK向锁存器件进程发出锁存信号,以便将由TLC5510的D7.0数据输出口输出的8位转换数据锁存起来。clk状态机next_statecurrent_statePROCESSREGPROCESSCOMPROCESSLOCKTLC5510A/DoeA/DckO

41、ED7.0rstdata7.0模拟信号输入图3-2 采样状态机结构框图根据其采样时序用VHDL语言中的状态机来描述采样控制过程。掌握VHDL语言的基本结构,语法以及基本语句和设计优化,编程并且仿真来完成基于FPGA的高速数据采集系统的设计。而状态机则是最佳选择方案。无论与VHDL的其它设计方案相比,还是与可完成相似功能的CPU相比,状态机都有难以超越的优越性。如图3-3所示的状态图,在状态st0,给A/D一个采样时钟ADck的上升沿,同时锁存A/D的输出;在状态st1,给出采样控制模块数据输出锁存信号。A/D采样控制器的输出共有4个信号:l ADck:提供A/D采样时钟。l ADoe:TLC5

42、510的输出使能,一直有效。l dclk:用来同步data的输出,可以作为下一级的data锁存信号。St0St1A/Dck<=1;lock<=1;dclk<=0;A/Dck<=0;lock<=0;dclk<=1;图3-3 TLC5510采样控制状态图l data:采样数据输出。以下是状态机采样控制的关键程序部分:when sta0=>ADck<='1'lock<='1'dclk<='0'next_state<=sta1;when sta1=>ADck<='0&#

43、39;lock<='0'dclk<='1'next_state<=sta0;when others=>ADck<='0'lock<='0'dclk<='1'next_state<=sta0;状态机的两个主要状态的转换是通过以上的控制程序实现的。在St0状态,定制了三个信号特性:时钟采样信号ADck<='1',锁存信号lock<='1',数据输出同步时钟dclk<='0',这一状态完成后指向的下一状态ne

44、xt_state<=sta1即St1状态; 在St1状态同样定制了三个状态,时钟采样信号ADck<='0',锁存信号lock<='0',数据输出同步时钟dclk<='1',这一状态完成后指向的下一状态又为St0,这样的控制实现了状态机的状态循环。3.4 用行为描述方式设计A/D采样控制TLC5510采样控制程序见附录2。除了用状态机的方法来完成对A/D采样控制功能,简单的数字逻辑电路也可以完成。不同的是用简单的逻辑电路实现采样功能的时候,控制模块的输入时钟clk与送往TLC5510的ADck的周期是一致的,而用状态机设计的

45、时候是二分频的关系。因此,电路的工作效率更高。但是状态机设计有更多的优势。程序的关键部分是将系统时钟CLK四分频,以得到TLC5510的采样时钟。if q>=2 then clk1<='1' else clk1<='0'以上程序语句所在的PROCESS构成了一个将系统时钟进行4分频的进程。A/D采样控制可以用行为描述方式的VHDL设计,是因为行为描述方式是对系统数字模型的描述。程序中oe信号为输出使能,控制输出信号的时序,为了使输出端口一直有效,所以将oe信号设置为低电平。经过系统时钟4分频以后得到采样控制程序的采样时钟clk1,在采样时钟有效

46、的电平内才能实现采样操作,否则停止采样。程序中的q为8位信号,它作为一种数值容器,不但可以容纳当前值,也可以保持历史值。这一属性与触发器的记忆功能有很好的对应关系,只是不必注明信号上数据流动的方向。它的作用是实现将端口输入的信号通过控制信号传输到各个指定的端口。实际中它是不存在的器件,只是一个为了实现信号的传输设置的数值容器。信号的初始值不用设置,而且初始值仅在VHDL的行为仿真中有效,它有全局性特征。根据规定,信号的赋值必须在进程中,所以定义q在process中:q:std_logic_vector(7 downto 0);3.5 实用状态机的优势利用VHDL设计的逻辑系统中,由于许多是可以

47、利用有限状态机的设计方案来描述和实现的。无论与基于VHDL的其他设计方案相比,还是与可完成相似功能的CPU相比,在许多方面,有限状态机都由其难以超越的优越性,主要表现在一下几个方面:l 状态机克服了纯硬件数字系统顺序方式控制不灵活的特点。状态机的工作方式是根据控制信号按照预先设定的状态机进行顺序运行的,状态机是纯硬件数字系统中的顺序控制模型,因此状态机在其运行方式上类似于控制灵活和方便的CPU,而在性能上优于CPU。l 由于状态机的结构相对简单,设计方案相对固定,特别是可以定义符号化枚举类型的状态,这一切都为VHDL综合器尽可能发挥其强大的优化功能提供了有利条件。而且,性能良好的综合器都具备许

48、多可控或自动的优化状态机的功能已资利用。l 状态机容易构成性能良好的同步时序逻辑模块,这对于对付大规模逻辑电路设计中令人深感棘手的竞争冒险现象无疑是一个上佳的选择。为了消除电路中的毛刺现象,在状态机这机中由更多的设计方案可供选择。l 于VHDL的其他描述方式相比,状态机的VHDL表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处。l 在高速运算和控制方面,状态机更有其巨大的优势。由于在VHDL中,一个状态机可以由多个进程构成,一个结构体中可以包含多个状态机,而一个单独的状态机(或多个并行运行的状态机)以顺序方式所能完成的运算和控制方面的工作于一个CPU的

49、功能类似。因此,一个实体的功能便类似于一个含有并行运行的多CPU的功能。就运行速度而言,尽管CPU和状态机都是按照时钟节拍以顺序时序方式工作的,但CPU是按照指令周期,以逐条执行指令的方式运行的;每执行一条指令,通常只能完成一项简单的操作,而一个指令周期须由多个机器周期构成,一个机器周期又由多个时钟节拍构成;一个含有运算和控制的完整设计程序往往需要成百上千条指令。相比之下,状态机状态变换周期只有一个时钟周期,而且由于在每一状态中,状态机可以完成许多并行的运算和控制操作。所以,一个完整的控制程序,即使由多个并行的状态机构成,其状态数也是十分有限的。一般由状态机构成的硬件系统比CPU所能完成同样功

50、能的软件系统的工作速度要高出35个数量级。因此在一般CPU无法胜任的领域中有广泛的应用,如超高速串行或并行A/D、D/A器件的控制、硬件串行通信接口RS-232、PS/2、USB的实现、FPGA高速配置电路的设计、自控领域中的高速顺序控制系统,通信领域中的许多功能模块的构成,RISC CPU设计领域中特定功能指令模块的设计等。l 高可靠性。CPU本身的结构特点与执行软件指令的工作方式决定了任何CPU都不可能获得圆满的容错保障,这已是不争的事实了。因此,用于要求高可靠性的特殊环境中的电子系统中,如果以CPU作为主控部件,应是一项错误的决策。然而,状态机系统就不同了,首先它是由纯硬件电路构成,它的

51、运行不依赖软件指令的逐条执行,因此不存在CPU运行软件过程中许多固有的缺陷;其次是由于状态机的设计中能使用各种完成的容错技术;再次是当状态机进入非法状态并从中跳出,进入正常状态所耗的时间十分短暂,通常只有23个时钟周期,约数十个ns,尚不足以对系统的运行构成损害;而CPU通过复位方式从非法运行方式中恢复过来时,耗时达数十毫秒,这对于高速高可靠系统显然时无法容忍的。3.6 D/A转换的控制D/A转换控制程序见附录4。此模块主要是控制D/A模块的读写状态。当reset信号为高电平时,读写端口均停止工作,当reset信号为低电平时,读写状态进入工作状态,接受数据和输出数据。if reset='

52、;1' then cs<='1' wr<='1' else cs<='0' wr<='0' 当FPGA给存储器发出控制信号控制存储器数据数据,同时控制DAC的读端口进入工作状态后,就将要转换的信号输入到DAC中,等待转换。DAC的转换精度由DAC的分辨率来说明。DAC的分辨率就是DAC所能分辨的最小电压增量,它反映了DAC对微小输入量变换得敏感性。分辨率得高低通常用二进制输入量的位数来表示。FPGA发出控制信号,控制DAC0832芯片接收数字信号。其过程为先将数字信号锁存到芯片本身内部的锁存器中,再

53、将锁存的信号发送到芯片本身内部的寄存器中,然后将数据发送到D/A转换单元。这样就实现了FPGA控制DAC转换信号的过程。第四章 Quartus仿真4. 1 设计输入可以使用Quartus提供的图形编辑器和文本编辑器实现图形输入、设计框图输入、AHDL、VHDL和Verilog HDL输入,还可以利用混合设计格式、LPM和宏功能模块来加速设计输入。本设计中选用的是VHDL语言。首先,创建一个项目。项目的组成包括:设计文件、资源分配文件、仿真文件、系统设置和设计的层次信息。1) 在Quartus的当前窗口中,选择file-new project wizard。出现一个“新建项目向导:简介”窗口;按

54、照提示,单击next出现一个“新建项目向导:目录、名称、顶层设计实体名称”对话框,再这个对话框中,依次填写设计存放的路径、项目的名称及项目顶层设计实体的名称;单击next按钮,出现一个“新建项目向导:添加设计文件”对话框,选择需要添加进项目的设计文件;单击next按钮出现一个“新建项目向导:摘要”窗口,这个窗口显示了设计项目的一些基本信息;单击finish按钮,结束创建新项目向导。这时,在项目的导航窗口的hierarchies标签内出现顶层设计实体的名称。接下来,创建一个VHDL文件。设置信息如图4-1所示。图4-1 新建工程示意图2) 在Quartus的当前窗口中,选择File-new-VH

55、DL file,如果要产生一个新图表模块/原理图文档。这里,选择添加VHDL File选项,单击OK,进入到VHDL代码编辑窗口。设置信息如图4-2所示。图4-2 新建VHDL文本程序示意图4.2 设计编译Quartus允许对整个设计项目进行编译,或者只编译项目的一个组成部分。针对编译的设计实体compilation focus可以选择项目层次的任何一个部分。它的编译器由一系列模块组成。这些模块将检查设计错误,进行逻辑综合,并且将设计适配到具体的Altera器件中,产生输出文件。这些输出文件将在设计仿真、定时分析和器件编程时使用。编译器首先从定义项目不同的设计文件的层次连接中提取信息,检查设计

56、文件的基本设计输入错误;然后产生一个设计的组织图标,并且将设计文件组合到单一的可以进行高效处理的数据库当中。产生一个新的项目的同时,Quartus软件产生默认的编译器设置,说明编译焦点、编译器完成的类型、目标器件和其他选项。(1) 确定软件处于编译模式(processing-compile mode)。(2) 选择processing-compile settings选项,出现一个compiler settings对话框。(3) 选中需要编辑的文件,按右键,选择ADd-current entity at top level&set focus,将当前文件设置为顶层文件。(4) 对照设计实体example的编译器设计方式(compiler settings)设置设计实体(data_counters)。(5) 运行编译:选中processing-start compliation开始编译过程,编译器立即编译设计实体。在设计编译时,状态窗口自动显示编译

温馨提示

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

评论

0/150

提交评论