基于可编程逻辑器件的数据采集系统软件设计_第1页
基于可编程逻辑器件的数据采集系统软件设计_第2页
基于可编程逻辑器件的数据采集系统软件设计_第3页
基于可编程逻辑器件的数据采集系统软件设计_第4页
基于可编程逻辑器件的数据采集系统软件设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、西南科技大学 毕业设计(论文)毕业设计(论文) 题目名称:题目名称: 基于可编程逻辑器件的数据采集系统软件设计基于可编程逻辑器件的数据采集系统软件设计 年年 级:级:2003 级级 本科本科 专科专科 学生学号:学生学号: 学生姓名:张斌学生姓名:张斌 指导教师:熊莉英指导教师:熊莉英 学生单位:信息工程学院学生单位:信息工程学院 技术职称:讲师技术职称:讲师 学生专业:电子信息工程学生专业:电子信息工程 教师单位:信息工程学院教师单位:信息工程学院 西西 南南 科科 技技 大大 学学 教教 务务 处处 制制 基于可编程逻辑器件的数据采集系统软件设计 摘要:本论文介绍了基于可编程逻辑器件的数据

2、采集系统的软件设计与仿真,使用 VHDL 语言在 ISE 6.0 的环境下设计,通过 Modelsim 软件对程序模块进行功能仿真。 软件模块的设计用 VHDL 语言输入与原理图输入相结合的混合输入的方法实现,设 计的显示部分包括七段数码管驱动模块和显示输出控制模块,显示输出用扫描显示 输出方式设计,内部系统由多种功能模块组成并以原理图的方式设计实现,包括加 法计数模块、扫描显示模块、信号发生模块、数据处理模块等。本论文对各模块进 行具体分析并介绍了从设计仿真到最后生成顶层原理图,并用 Modelsim 完成最终的 整体功能的验证,用 ISE 6.0 平台综合总程序然后下载的全过程。 关键字:

3、数据采集;VHDL;混合输入 The software Design of Data Acquisition System Based on programmable logic device Abstract: This dissertation introduces the design and realization of data acquisition system which is based on programmable logic device. This program is designed in VHDL language on a platform which is

4、named ISE 6.0, and is simulated on Modelsim. The models use a method of VHDL language associating with principle diagram to input. The display part of the design includes seven segment data pipe driving module and display module, the fashion of display use scan. The internal function of this design

5、has many modules, includes counter module, scan and manifestation module, signal creation module, data processing module and etc. This dissertation analyses every module of the design, and introduces from simulation to creating principle diagram. The whole function is validated on Modelsim. The whol

6、e process of synthesis and downloading is completed on ISE 6.0. Keywords:Data acquisition, VHDL, Hybrid input 目 录 第 1 章 绪 论.1 1.1 课题背景、目的和意义.1 1.1.1 课题的背景.1 1.1.2 课题的目的和意义.2 1.2 论文的内容安排.2 第 2 章 数据采集系统级设计.4 2.1 FPGA 芯片特点分析 .4 2.2 FPGA 开发软件平台的选择 .9 2.3 软件设计方法的选择.12 2.4 系统设计方案确定.13 第 3 章 功能模块的实现与仿真.16

7、3.1 数据处理部分的设计.17 3.1.1 A/D 转换器控制模块.18 3.1.2 数据的分位处理.20 3.1.3 七段译码器模块.21 3.1.4 扫描显示控制模块.23 3.2 系统辅助调试功能设计.26 3.2.1 方波调试信号.26 3.2.2 三角波调试信号.27 3.2.3 阶梯波调试信号.29 3.2.4 锯齿波调试信号.30 3.2.5 辅助信号输出控制.32 3.2.6 分频器设计.33 第 4 章 顶层原理图的设计.35 4.1 数据处理模块的顶层原理图.35 4.2 系统辅助测试模块顶层原理图.36 4.3 数据采集系统顶层原理图.37 第 5 章 软件下载调试.3

8、8 5.1 系统顶层综合.38 5.2 系统引脚锁定.38 5.3 系统实现过程及布局布线后仿真.39 5.4 使用IMPACT 进行下载配置.40 结 论.41 致 谢.42 参考文献.43 附录 1 数据处理程序.44 附录 2 辅助测试功能模块程序.50 附录 3 辅助测试模块功能仿真.57 附录 4 系统顶层原理图功能仿真.58 第 1 章 绪 论 1.1 课题背景、目的和意义 1.1.1 课题的背景 数据采集技术(Data acquisition)是信息科学的一个重要分支,它研究信息数据 的采集、存贮、处理以及控制等作业在智能仪器、信号处理以及工业自动控制等 领域,都存在着数据的测量

9、与控制问题将外部世界存在的温度、压力、流量、位 移以及角度等模拟量转换为数字信号(Data signal) ,再收集到计算机并进一步予以 显示、处理、传输与记录这一过程,即称为“数据采集” 相应的系统即为数据采集 系统。 数据采集技术已在雷达、通信、水声、遥感、地质勘探、振动工程、无损检测、 语声处理、智能仪器、工业自动控制以及生物医学工程等领域有着广泛的应用。 随着计算机技术的发展与普及,数字设备正越来越多地取代模拟设备,在生产 过程控制和科学研究等广泛的领域中,计算机测控技术正发挥着越来越重要的作用。 然而,外部世界的大部分信息是以连续变化的物理量形式出现的,例如温度、压力、 位移、速度等

10、。要将这些信息送入计算机进行处理,就必须先将这些连续的物理量 离散化,并进行星化编码,从而变成数字量,这个过程就是数据采集。它是计算机 在监测、管理和控制一个系统的过程中取得原始数据的主要手段。 数据采集就是将被测对象(外部世界、现场)的各种参量(可以是物理量,也可 以是化学量、生物量等)通过各种传感元件做适当转换后,再经信号调理、采样、 量化、编码、传感等步骤,最后送到控制器进行数据处理或存储记录的过程。控制 器一般均由计算机承担所以说计算机是数据采集系统的核心,它对整个系统进行 控制,并对采集的数据进行加工处理。用于数据采集的成套设备称为数据采集系统 (Data Acquisition S

11、ystem,DAS) 。 现代数据采集系统的主要特点: (1) 现代数据采集系统一般都由计算机控制,使得数据采集的质量和效率等大, 提高,也节省了硬件投资。 (2) 软件在数据采集系统的作用越来越大,这增加了系统设计的灵活性。 (3) 数据采集与数据处理相互结合得日益紧密,形成数据采集与处理系统采集、 处理到控制的全部工作。 (4) 数据采集过程一般都具有“实时”特性,实时的标准是能满足实际需要 采集系统一般希望有尽可能高的速度,以满足更多的应用环境。 (5) 随着电子技术的发展,电路集成度的提高,数据采集系统的体积越来越小, 可靠性越来越高,出现了单片数据采集系统,可编程逻辑器件简称 PLD

12、,是新一代 的数字器件。它不仅具有很高的速度和可靠性而且具有用户可重复定义的逻辑功 能即具有可重复编程的特点。因此,可编程逻辑器件使数字电路系统的设计非常灵 活,并且大大缩短了系统研制的周期。缩小了数字电路系统的体积和所用芯片的品 种。在数据采集领域也有了极高的应用。 1.1.2 课题的目的和意义 数据采集系统是计算机与外部世界联系的桥梁,是获取信息的重要途径。数据 采集技术是信息科学的重要组成部分。已广泛应用于国民经济和国防建设的各个领 域,并且随着科学技术的发展,尤其是计算机技术的发展与普及,数据采集技术特 有广阔的发展前景。 数据采集系统追求的最主要目标有两个:一是精度,二是速度。对任何

13、量的测 试都要有一定的精确度要求,否则将失去测试的意义;提高数据采集的速度不仅仅 是提高了工作效率,更主要的是扩大数据采集系统的适用范围,便于实现动态测试。 通过本次设计,可以让我了解可编程逻辑器件 FPGA 的基本结构和用途,了解 用 FPGA 芯片做系统设计的方法,也可以通过对 VHDL 语言的学习,熟悉软件与硬 件结合设计的方法,通过 VHDL 语言对基于 FPGA 的硬件系统的控制,实现基本的 数据采集的功能。通过设计过程,我将掌握现代数字系统的设计理念和方法步骤。 1.2 论文的内容安排 本文研究的主要内容如下: (1) 了解课题内容,查阅有关文献,了解 FPGA 结构、原理,熟悉

14、FPGA 技术, 设计基本原则,学习 VHDL 语言及 ISE 6.0 开发软件的用法。 (2) 了解数据采集系统的有关知识及项目要求,确定设计范围;整体上数据采集 系统分两部分,即软件部分和硬件部分。硬件部分的设计应能保证系统的整体性能, 采用资源丰富的 FPGA 来实现。硬件部分主要完成对 FPGA 芯片的接口电路的设计, 以及必要的电源驱动电路和满足项目要求的其它电路部分的设计。本文主要完成软 件部分的设计。 (3) 本报告所涉及的设计内容,主要是对 FPGA 芯片的内部功能的控制和配置, 以满足信号采集系统的基本功能为前提,用 VHDL 硬件配置语言来编程,实现采集 信号的处理,显示等

15、功能,同时还有内部自检信号的设计。 (4) 论文其它部分还会对完成整个设计所需要的芯片做必要的功能介绍,因为软 件设计要用到 ISE 6.0 开发软件,所以开始还会对 ISE 6.0 开发软件做简单的介绍。 (5) 论文以软件设计为主要论述对象,按照整体设计思路,解释整个设计的实 现方法和路径,最后具体说明软、硬件结合调试的过程以及最终设计成果的功能。 第 2 章 数据采集系统级设计 因为软件设计是建立在硬件设计基础上的,所以在软件设计前要对硬件部分做 一个简单的了解,硬件系统用到了 FPGA 芯片系列的 XC2S100-5 TQ144 芯片,下面 介绍硬件的基本知识。 2.1 FPGA 芯片

16、特点分析 现场可编程门阵列(FPGA)是近十年加入到用户可编程技术行列中的器件,可 编程门阵列在器件的选择和内部的互连上提供了更大的自由度。FPGA 的结构类似 于掩膜可编程门阵列(MPGA),由逻辑功能块排列成阵列组成,并由可编程的内 部连线连接这些逻辑功能块来实现不同的设计。FPGA 和 MPGA 的主要差别是 MPGA 利用集成电路制造过程进行编程来形成金属互连,而 FPGA 是利用可以编 程的电子开关实现逻辑功能和互连,类似于传统的由用户进行编程的可编程逻辑器 件。 FPGA 可以达到比 PLD 更高的集成度,但具有更复杂的布线结构和逻辑实现。 PLD 和 FPGA 之间的主要差别是

17、PLD 通过修改具有固定内连电路的逻辑功能来 进行编程,而 FPGA 是通过修改一根或多根分隔宏单元的基本功能块的内部连线的 布线来进行编程。所以 FPGA 不是建立在可编程逻辑器件的结构上,而是在用户可 编程的特性和它们的快速设计及诊断能力上类似于可编程逻辑器件。对于快速周转 的样机,这些特性使得 FPGA 成为通常的选择,而且 FPGA 比 PLD 更适合于实 现多级的逻辑功能。 通常 FPGA 由布线资源分隔的可编程逻辑单元(或宏单元)构成阵列,又由 可编程 I/O 单元围绕阵列构成整个芯片,排成阵列的逻辑单元由布线通道中的可编 程内连线连接起来实现一定的逻辑功能,即分段的金属互连线可以

18、由可编程开关以 任意方式连接形成逻辑单元之间要求的信号线。一个 FPGA 包含丰富的具有快速系 统速度的逻辑门、寄存器和 I/O 组成。 从几个有代表性厂家的产品来看,FPGA 按照其可编程的方式和逻辑功能的类 型,主要有两类逻辑块的构造: (1) SRAM-查找表类型:编程方式是掉电丢失的静态存储器和采用查找表 实现逻辑; (2) 反熔丝的多路开关类型:编程方式是一次性的反熔丝和采用多路开关实现逻 辑。 Xilinx 公司 Spantan-II 系列器件简介 图图 2-1 Xilinx Spartan-II 内部结构内部结构 图图 2-2 Slices 结构结构 Spantan-II 的逻辑

19、结构和布局如图 2-1 所示。Spantan-II 主要由可配置逻辑块 (CLB,Configurable Logic Blocks) 、可编程输入输出模块(IOB,Input/Output Blocks) 、数字时钟管理器(DCM,Digital Clock Manager) 、块存储器(Block RAM) 、乘法器模块(Multiplier)等基本模块构成。CLB 用于实现 FPGA 的绝大部 分逻辑功能,一个 CLB 包括 2 个 Slices,Slices 结构如图 2-2,每个 slices 包括两个 LUT,两个触发器和相关逻辑。Slices 可以看成是 SpartanII 实现

20、逻辑的最基本结构; IOB 用于提供封装引脚与内部逻辑之间的接口;BlockRAM 用于实现 FPGA 内部的 随机存取,它可以配置成 RAM、双口 RAM、FIFO 等随机存储器;DCM 用于提供 灵活的时钟管理功能;硬件乘法器用于提高 FPGA 的数字信号处理能力。 (1) 可配置逻辑块 CLB 图图 2-3 CLB 拓扑结构拓扑结构 CLB 是 FPGA 的主要逻辑资源,CLB 既可以实现时序逻辑又可以实现组合逻 辑。每个 CLB 由四个互连的 SLICE 构成。CLB 的内部结构如图 2-3 所示。 CLB 由 Slice 构成,SLICE 由更小的逻辑单元组成。每个 SLICE 具有

21、 2 个查找、 2 个寄存器、选择器、进位链和算术逻辑等。 (2) 数字时钟管理器 XC2S100 内部有 DCM4 个,利用 DCM 同样可完成对输入时钟的分频、倍频、 占空比的设定、特定的相移。输入时钟必须分配在全局时钟管脚,所有从全局时钟 管脚输入的信号必须经过 IBUFG(输入全局缓冲)单元,否则在布局布线时会报错。 而 BUFG(全局缓冲)的输入时 IBUFG 的输出,它使时钟到达 FPGA 内部资源 的时钟延迟和抖动最小。DCM 的一般使用方法如图 2-4: 图图 2-4 DCM 使用示意图使用示意图 (3) 可编程输入输出逻辑块(IOB) IOB 模块用于提供 FPGA 内部逻辑

22、与器件封装管脚之间的结构。在 IOB 中有 3 条主要的信号通道:输出通道、输入通道和三态通道。每条通道都有自己的一对存 储单元,根据具体需要可以触发起配置为 D 触发器或者锁存器。 (4) 硬件乘法器 XC2S100 内部有 1818bits 的硬件乘法器 24 个,可完成特定的乘法运算。 乘法器模块不仅可以通过交换矩阵与 18Kb 的块存储器配合使用,也可以单独使用。 乘法器模块的物理分布与块存储器的模块分布式一致的,两个模块彼此相邻。这种 结构非常适合与高速的数字信号处理,利用这些乘法器读取/相乘/累加的多次迭代操 作,可实现高速和高效的 DSP 滤波器结构。 (5) 块存储器(Bloc

23、k RAM)结构 Block RAM 是 FPGA 内部的专用存储器模块,通常沿芯片的垂直边排列。 Spantan-II 系列 FPGA 内部的 BlockRAM 为铜铸的 18kbit 的随机存取贮存器(RAM) 。 BlockRAM 经过编程可以配置成双口 RAM(Dual Port RAM)和单口 RAM。如图 2- 5 和图 2-6 所示。 图图 2-5 双口双口 RAM 图图 2-6 单口单口 RAM FPGA 的设计流程 一个完整的 FPGA/CPLD 设计流程包括电路设计与输入、功能仿真、综合优 化、综合后仿真、实现、布线后仿真和下板调试等主要步骤。 设计输入就是设计者所设计的电

24、路以开发软件要求的某种形式表达出来, 最 常用的是原理图输入和文本输入。 功能仿真使用专门的仿真工具,再不考虑线路延时的情况下,验证电路功 能 是否符合设计的要求。 综合是指将 HDL 语言、原理图等设计输入翻译成由与、或、非门、 RAM, 寄存器等基本逻辑单元组成的逻辑连接(网表) 。优化指逻辑化简,把逻辑描述中的 冗余项除去,已尽量较少设计所消耗的资源。 综合后仿真是指把综合生成的延时文件反标到综合仿真模型中去,估计门 延 时带来的影响。 实现是把综合后的逻辑网表配置到具体的 FPGA/CPLD 器件上。 布线后仿真将布局布线后的延时文件反标入仿真模型。这种仿真既包含门 延 时,又包含布线

25、延时信息,能全面准确的反映芯片的实际工作情况。 下板调试指将生成的数据文件写入芯片中进行测试。 这一流程是一个反复迭代循环的过程,每个仿真步骤如果出了问题,就需要根 据错误的定位返回到相应的步骤更改或者重新设计。另外,大部分 FPGA 都是基于 SRAM 工艺的,而 SRAM 芯片在掉电后信息就会丢失,一定需要外加一片专用配 置芯片,在上电的时候,由这个专用配置芯片把数据加载到 FPGA 中,然后 FPGA 就可以正常工作,由于配置时间很短,不会影响系统正常工作。如果直接给 FPGA 配置程序称为在线方式。但是,在实际电路板的制作中,应该将两种配置方 式都做上去,因为随着逻辑设计复杂性的不断增

26、加,在计算机上以软件方式的仿真 测试变得更加耗费时间,而不断需要重复进行的硬件系统的测试变得更为困难(如 传统的逻辑分析仪,面对需要测试的数据总线位宽很大时,每做一次测试都需要大 量的探头) 。为了解决这些问题,EDA 公司提供了 FPGA 的在线片内分析工具, XILINX 提供的是 ISE 下的 CHIPSCOPE,它的主要功能是通过 JTAG 口,在线 实时地读出 FPGA 的内部信号,它的基本原理是利用 FPGA 中未使用的 BlockRam,根据用户设定的触发条件将信号实时地保存到这些 BlockRam 中,然后通 过 JTAG 口传到计算机,最后在计算机屏幕上显示出时序波形,这样测

27、试就变得非 常方便。 FPGA 设计中几个要注意的准则 (1) 面积和速度的平衡和互换 面积和速度是一对对立统一的矛盾体。要求一个设计同时具备设计面积最小, 运行频率最高是不现实的。更科学的设计目标应该是在满足设计时序要求(包括对设 计频率的要求)的前提下,占用最小的芯片面积。或者在规定的面积下,使设计的时 序余量更大,频率跑得更高。这两种目标充分体现了面积和速度平衡的思想。作为 矛盾的两个部分,面积和速度的地位是不一样的,就要看设计的侧重点。面积和速 度可以互换,从理论上讲,一个设计如果时序余量较大,所能跑的频率远远高于设 计要求,那么就能通过功能模块的复用减少整个设计消耗的芯片面积,这就是

28、用速 度的优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设 计所要求的频率,那么一般可以通过将数据流串并转换,并行复制多个处理模块,对 整个设计采取“乒乓操作”和“串并转换” ,在芯片输出模块再对数据进行并串转换, 从宏观看整个芯片满足了处理速度的要求,这相当于用面积复制换取速度。 (2) 数据接口的同步设计原则 如果输入数据的节拍和本级芯片的处理时钟同频,可以直接用本级芯片的主时 钟对输入数据寄存器采样,完成输入数据的同步化;如果输入数据和本级芯片的处 理时钟是异步的,则只是要用处理时钟对输入数据做两次寄存器采样,才能完成输 入数据的同步化。需要说明的是用寄存器对异步时钟

29、域的数据进行两次采样,是为 了防止亚稳态(数据不稳定态)的传播,使后级电路处理的数据都是有效电平。但 这样做不能完全保证所有数据都是有效的电平,比较保险的办法是用异步 RAM 或 异步 FIFO 完成异步时钟域的数据转换,在输入端口用上级时钟写数据,在输出端 口用本级时钟读数据,这样就可靠的完成了异步时钟域之间的数据同步转换。 (3) 硬件原则 硬件原则主要针对 HDL 代码编写而言的。首先应该明确 FPGA/CPLD 的逻辑设 计所采用的硬件描述语言(HDL)与同软件语言(如 C,C+等)是有本质区别的! 以 Verilog HDL 语言为例,虽然 Verilog 很多语法规则和 C 语言相

30、似,但是 Verilog 作为硬件描述语言,它的本质作用在于描述硬件!应该认识到 Verilog 是采 用了 C 语言形式的硬件的抽象,它的最终实现结果是芯片内部的实际电路。所以评 判一段 HDL 代码的优劣的最终标准是:其描述并实现的硬件电路的性能(包括面积 和速度两个方面)。评价一个设计的代码水平较高,仅仅是说这个设计由硬件向 HDL 代码这种表现形式转换的更流畅、合理。而一个设计的最终性能,在更大程度 上取决于设计工程师所构想的硬件实现方案的效率以及合理性。不能是片面追求代 码的整洁、简短,这与评价 HDL 的标准背道而驰的!正确的编码方法是,首先要做 到对所需实现的硬件电路“胸有成竹”

31、,对该部分硬件的结构与连接十分清晰,然 后再用适当的 HDL 语句表达出来即可。 另外,HDL 语言是分层次的。比较重要的层次有:系统级(System)、算法级 (Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch) 设计等。系统级和算法级与 C 语言更相似,可用的语法和表现形式也更丰富。自 RTL 级以后,HDL 语言的功能就越来越侧重于硬件电路的描述,可用的语法和表现 形式的局限性也越大。相比之下 C 语言与系统级和算法级 Verilog 描述更相近一些, 而与 RTL 级,Gate 级、Switch 级描述从描述目标和表现形式上

32、都有较大的差异。 2.2 FPGA 开发软件平台的选择 FPGA 器件的设计与开发离不开 EDA 工具软件。现在已经有很多支持 FPGA/CPLD 设计的软件。有的设计软件是由芯片制造商提供的,如:Xilinx 公司 的 ISE 软件、Altera 公司推出的 Quartus II 软件和 Lattice 公司为 ispLSI 器件开 发提供的 ispDesignEXPERT 软件;有的是由专业 EDA 软件商提供的,称第三方 软件,如 Synplify、Synopsys、Modelsim、Graphice 和 EWB 等软件,第三方软件 往往支持许多家公司的 PLD 器件。下面介绍一下常用的

33、 EDA 软件。 (1) ISE Xilinx 公司是当今实际上最大的 FPGA/CPLD 生产商之一,长期以来一直推 进着 FPGA/CPLD 技术的发展。其开发软件也不断升级换代,由早期的 Foundation 系列逐步发展到目前的 ISE 8.x 系列。ISE 是集成综合开发环境的简称,是 Xilinx 提供的一套工具集,其集成的工具可以完成上述整个 FPGA/CPLD 的开发过程。下 面是 ISE 的主要特点: ISE 是一个集成环境,可以完成整个 FPGA/CPLD 开发过程。它集成了许 多著名的 FPGA/CPLD 设计工具,能够提供真正的与结构无关的设计环境和强有力 的逻辑综合能

34、力。 ISE 界面风格简洁流畅,易学易用。ISE 的界面秉承了可视化编程技术, 街 面根据设计流程而组织,整个设计过程只需要按照界面组织结构依次点击相应的按 钮或选择相应的选项即可。 ISE 有丰富的在线帮助信息,结合 Xilinx 公司的技术支持网站,一般设计 过程中可能遇到的问题都能很好的解决。 强大的设计辅助功能。ISE 秉承了 Xilinx 设计软件强大的辅助功能。在编 写代码时可以使用编写向导生成文件头和模块框架,也可以使用语言模板 (Language Templates)帮助编写代码。在图形输入时可以使用 ECS 的辅助项,帮 助设计原理图。另外,ISE 的 Core Genera

35、tor 和 LogiBLOX 工具可以方便的生成 IP Core(IP 核)与高效模块为用户所用,大大减少设计者的工作量,提高了设计效 率和质量。 ISE 可以与其它工业标准设计的输入、综合和教研工具链接。它与 EDA 工 具的 接口符合 EDIF2000 和 209 标准。设计者可以使用 ISE 自身集成的仿真 工具进行仿真,也可以使用第三方的 EDA 工具来进行仿真。ISE 具有良好的数据 互换性,支持 Synplify 等著名的综合软件。 (1) Quartus II Quartus II 是 Altera 公司推出的 CPLD/FPGA 开发工具,Quartus II 提供完全集成 且

36、与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括: 可利用原理图、结构框图、VerilogHDL、AHDL 和 VHDL 完成电路描述, 并将其保存为设计实体文件; 芯片(电路)平面布局连线编辑; LogicLock 增量设计方法,用户可建立并优化系统,然后添加对原始系统 的 性能影响较小或无影响的后续模块; 功能强大的逻辑综合工具; 完备的电路功能仿真与时序逻辑仿真工具; 定时/时序分析与关键路径延时分析; 可使用 SignalTap II 逻辑分析工具进行嵌入式的逻辑分析; 支持软件源文件的添加和创建,并将它们链接起来生成编程文件; 使用组合编译方式可一次完成整体设计流程; 自

37、动定位编译错误; 高效的期间编程与验证工具; 可读入标准的 EDIF 网表文件、VHDL 网表文件和 Verilog 网表文件; 能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件。 (2) Modelsim Modelsim 是 Model Technology 公司开发的专门用于 FPGA/CPLD 的功能仿真 软件。它是工业上最通用的仿真软件之一。Modelsim 不仅可以完成设计的功能验证 (RTL 级) ,也可以实现逻辑综合后的门级仿真及布局布线后的功能仿真和时序验 证。下面是 Modelsim 的主要特点: 完全支持 Verilog HDL 和 VHD

38、L 标准。 采用直接编辑技术(Direct Compiled) ,大大提高 HDL 编译和仿真速度。 唯一支持 Verilog HDL 和 VHDL 混合描述的仿真工具。 支持 RTL 级和门级验证,支持 VITAL、SDF 等。 具有友好的用户界面,仿真器包括主窗口、源代码窗口、仿真波形窗口、 列 表窗口、数据流 窗口、设计结构/层次窗口、过程管理窗口等。 支持单步调试,断点设置,批命令处理方式,帮助设计者快速完成设计调 试 和验证。 可与 Renoir 协同工作,完成状态图和流程图的动画调试。 即插即用,可与其他工具结合,完成各种流程。 支持 UNIX 和 Window98/2000/XP

39、 平台,不同平台间有相同的用户界面 和 数据库。 从以上论述可以看出,ISE 具有可调用第三方仿真工具的功能,而在仿真领域, Modelsim 具有高效、准确的特点,而且可完美地进行功能仿真,所以本设计采用 ISE 6.0 作为软件开发平台,用 Modelsim 作为仿真软件平台。 2.3 软件设计方法的选择 VHDL 作为一种硬件描述语言,具有与具体硬件电路无关和与设计平台无关的 特性,并且具有良好的电路行为描述和系统描述能力,并在语言易读性和层次化结 构化设计方面,表现了强大的生命力和应用潜力。VHDL 支持多种设计方法,如: 结构化设计方法、模块化设计方法、原理图设计方法等,它们各自的特

40、点如下: (1) 结构化设计方法 特点: 对一个复杂的系统,应用自顶向下,逐步求精的方法予以分解和化简。 强调采用模块化的设计方法,并有一组基本设计策略。 采用结构图作为模块设计的工具。 有一组评价设计方案质量的标准及优化技术。 内容: 合理地进行模块分解和定义,使一个复杂系统的设计转化为若干基本的设 计。基本的分解原则如下:把密切相关的子问题划归为系统的相同部分、把不相关 的问题划归为系统的不同部分。 有效地将模块组织成一个整体,从而体现系统的设计功能。 结构化系统设计与结构化系统分析有着密不可分的联系,它是以系统能够的 逻辑模型和数据流图为基础,借助于一套标准的设计方法和图表工具,通过自顶

41、向下或 自底向上的方法,逐层把系统划分为多个大小适当,功能明确,具有一定独立性的模块. 所以模块的组织是主要的内容。 (2) 模块化设计方法 所谓模块(Module)是指这样的一组程序语句(或描述),它包括输入与输 出、逻辑功能描述、内部信息及其运行环境。 输入与输出:模块的输入来源和输出去向在正常的情况下都是同一个调用 者,即模块。从调用者处获得输入信息,经过模块本身的处理后,再把输出返送给 调用者。 逻辑功能:模块的逻辑功能描述了该模块能够做什么样的事情,具备什么 样 的功能,即对输入信息能够加工成什么样的输出信息。 内容信息:模块的内部信息是指模块执行的指令和在模块运行时所需要的 属 于

42、该模块自己的数据。 运行环境:模块的运行环境说明了模块的调用与被调用的关系。 (3) 原理图输入与 VHDL 混合输入设计方法: 早期的 EDA 设计软件几乎都采用原理图设计输入方法,这种设计方法直观、易 学易用,为广大设计工程师所接受。原理图设计方法的主要支撑是功能强大、分门 别类的器件库。而不同厂商甚至不同型号的 FPGA 的库元件的许多电气特性与结构 特点有较大的差异,器件库元件通用性差导致了原理图设计的可移植性差。为了克 服这些缺陷,硬件描述语言 HDL 应运而生,并且与原理图设计结合出现了现在流行 的混合输入设计方法。 HDL 与原理图输入法的关系: HDL 和传统的原理图输入方法的

43、关系就好比是高级语言和汇编语言的关系。 HDL 的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率 高,比较直观,但设计大规模 CPLD/FPGA 时显得很烦琐,移植性差。在真正的 PLD/FPGA 设计中,通常建议采用原理图和 HDL 结合的方法来设计,适合用原理图 的地方就用原理图,适合用 HDL 的地方就用 HDL,并没有强制的规定。在最短的 时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路。 由以上论述可以看出,最适合做数据采集系统软件设计的方法就是 VHDL 与原 理图输入混合编程方法,整个设计可以用由 VHDL 设计的元件模块结合顶层原理图 的设计实

44、现所有功能。 2.4 系统设计方案确定 本设计的要求是:设计一种基于可编程逻辑器件的数据采集系统,完成软件部 分的设计,设计语言为 VHDL 硬件描述语言,得出系统功能仿真结果。功能指标: a) 数据采集精度为 8 位。 b) 数据采集速度为 30KHz。 按照设计的要求,设计的基本结构图如图 2-7, 图图 2-7 系统结构系统结构 上图中: 数据读入模块:完成将前端接口数据向逻辑器件芯片的的读入操作。 数据处理模块:完成对数据的逻辑处理与转换,方便后面做相应的处理。 显示模块:完成对数据的显示功能。 时钟模块:为系统提供同步时钟信号。 在系统调试中,需要有一个信号产生器来提供标准信号,来检

45、测系统输入部分 的运行,同时也可以实现用一些自定义的信号序列来验证系统内部对数据处理的正 确性,为此,在设计中需要加入一个信号产生模块。在设计信号产生模块的时候, 要考虑到以下几方面的因素: (1) 系统中的信号产生功能不是为了生成很标准的波形,而是为了作为系统自我 测试波形而设计。 (2) 产生的波形的种类要比较直观,而且是比较有特征的,有规律变化的波形, 这样可以较好地观察系统对数据的处理的正确性。 数 据 读 入 模 块 A/D 控制 模块 数据处理模块 显示模块 前 端 电 路 (3) 生成波形离散特征点的频率要与数据采集系统的数据处理频率同步,这样可 以保证读入的数据没有遗漏部分特征

46、点而导致测试失败。 信号产生模块的结构图如图 2-8。 图图 2-8 信号产生模块信号产生模块 通过以上基本思路可以看出,整个设计将围绕几个模块来逐步实现,具体 分为: (1) 数据处理模块; (2) 显示模块; (3) 信号产生模块; (4) A/D 转换器控制模块。 其中信号产生模块又分为: (1) 方波产生模块; (2) 递增锯齿波产生模块; (3) 递减锯齿波产生模块; (4) 三角波产生模块; (5) 阶梯波产生模块。 时 钟 时 钟 输 入 方波产生 递增锯齿波产生 递减锯齿波产生 三角波产生 阶梯波产生 通过特定的数据选择 功能模块选择一种波 输出 控制模块的具体功能和实现方法将

47、会与相应的子模块一起在第 3 章解释。 由于本论文所解释的设计思路是用原理图输入法与 VHDL 输入法混合编程的方 法实现系统所有功能,所以上面所归纳出来的基本模块将会以 VHDL 语言设计输入, 然后生成实现相应功能的器件符号,最终与必要的电子器件共同连接成顶层原理图。 后面的章节主要对原理图的实现和下板调试做全面的论述。 第 3 章 功能模块的实现与仿真 本章主要介绍底层基本模块的设计思路和设计方法的全部过程,并说明通过测 试激励调试的结果,根据结果验证各模块的功能。 由上一章的论述,可以的到一个整体的系统设计构想框图,具体框图的组成结 构,以及共同完成的功能如图 3-1 所示: A/D

48、采样控制模块 采样数据 数 据 处 理, 十 进 制 分 位 个位 十位 百位 数码管驱动模块 数码管驱动模块 数码管驱动模块 七段数码管 动态显示 (扫描方式) 自我校准信号产生模块 (拟产生五种信号) 图图 3-1 系统功能模块系统功能模块 从图中各模块所起的作用可以看出,全部的模块按在系统中的用途可以分为 3 大类: (1) A/D 采样控制部分:在设计中,按照要求,为了达到 30KHz 的采样率,还 需 要对系统晶振做一定的分频处理。设计中,分频功能是利用一个循环语句实现,循 环次数由程序中定义的变量来控制,每次循环都由一个时钟沿出发,这样就可以实 现对频率变化的控制。 (2) 数据处

49、理部分:这部分主要完成对 8 位二进制数的十进制分位处理,方便在 七段数码管中显示,在显示数据输入数码管前,数码管驱动是必不可少的。 (3) 自我校准功能的实现:利用内部时钟信号,按照各种波形的变化规律生成常 见的特征明显的离散波形,而且特征点出现速率与采集速率相同,方便校准功能的 实现。 下面,按以上各部分为类别,分部分介绍整个系统模块的设计方法。 3.1 数据处理部分的设计 模拟信号经前端电路采样,通过 A/D 转换器转换成为数字信号后,需要做一定 的处理,才能够最终输出到显示模块。 由于本设计硬件部分的设计者采用了七段数码管作为显示器件,所以数据处理 模块的设计必须考虑到七段数码管的显示

50、原理,在处理过程中对数字信号做必要的 转换。讨论处理方法前,让我们先了解一下七段数码管的显示原理。 七段数码管的显示原理 七段 LED 数码管由七条发光管呈 8 字排列而成,其结构如图 3-2。 图图 3-2 七段数码管七段数码管 组成数码管 8 字形的七条发光管分别由七条输入接口控制,假设这七条发光管 按顺序排列为 a、b、c、d、e、f、g,那么七段数码管的显示可以由下面的组合控制 显示 09 九个数字,其中 1 代表高电平,0 代表低电平。 数码管显示输入 7 位数据 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 2 1 0 1 1 0 1 1 3 1 0 0 1 1

51、1 1 4 1 1 0 0 1 1 0 5 1 1 0 1 1 0 1 6 1 1 1 1 1 0 1 7 0 0 0 0 1 1 1 8 1 1 1 1 1 1 1 9 1 1 0 1 1 1 1 由于 A/D 转换器输出的是 8 位的二进制数据,所以由计算可知转换成十进制可 以表示 0255,共 256 个数据,由此可知,硬件电路中,至少要用 3 个七段数码管 来显示。了解了七段数码管,下面就从数据输入处理到输出显示分节来介绍一下: 3.1.1 A/D 转换器控制模块 在信号采集处理中,信号的采样是通过 A/D 转换器实现的,A/D 转换器的采样 速率根据芯片型号的不同而不同,所以,在设计

52、采集电路时,对 A/D 转换器的控制 是必不可少的,在本设计中,系统的主体是 FPGA 芯片,这也为对 A/D 转换器的控 制提供了很大的方便。 A/D 转换器控制模块的主要目的就是保证芯片的正常工作,同时也是采样前端 电路与 FPGA 整体处理部分的连接桥梁,通过控制模块,可以使系统采样速率达到 预定的要求,也可以控制采样的中断。 在设计中,根据采样的时序,用状态机来描述采样控制过程,在状态 st0,给 A/D 转换器一个读使能信号,同时锁存 A/D 转换器的输出;在状态 st1,给出采样控 制模块数据输出锁存信号。如图 3-3。 St0St1 Reoe=1 Lock=1 Dclk=0 Re

53、oe=0 Lock=0 Dclkreoe=1;adck=1;lock=1;dclk=0;next_ads_statereoe=0;adck=0;lock=0;dclk=1;next_ads_stateadck=0;lock=0;dclk=1;next_ads_state=sta0; end case; end process; process(clk,rst) begin if rst=0 then ads_state=sta0; elsif(clkevent and clk=1) then ads_state=next_ads_state; end if; end process; proc

54、ess(lock,rst) -lock 上升沿,将转换好的数据锁入 begin if rst=0 then data0); elsif lockevent and lock=1 then data=d; end if; end process; adoe=50 then ou1:=integer(real(ou4)/100.0)-1; -百位 else ou1:=integer(real(ou4)/100.0); end if; if (ou4 mod 100)mod 10)=5 then ou2:=integer(real(ou4 mod 100)/10.0)-1; -十位 else ou2

55、:=integer(real(ou4 mod 100)/10.0); 8 位 二 进 制 数 据 除以 100 商(百位) 余 数 除以 10 商(十位) 余数(个位) end if; ou3:=(ou4 mod 100)mod 10; -个位 在 Xilinx ISE 6.0 中,将这个模块用 VHDL 输入方式进行输入,调试正确后,生 成一个测试激励,进行功能仿真,仿真结果如图 3-6。 图图 3-6 分位模块功能仿真分位模块功能仿真 由图中可以看出,在 245255 这几个数中,程序成功地将每个数据的个、十、 百位分开了,证明程序功能没问题。因为程序里有不能综合的除法运算存在,所以, 在

56、综合之前,需要在原理图里加入除法器 IP 核,完成除法运算。加入除法器后程序 的变化见附录 1。为了顶层原理图的调用,还需要在 Xilinx ISE 6.0 中生成器件符号, 最终生成的器件符号如图 3-7。 图图 3-7 分位模块符号分位模块符号 模块引脚说明: clkin:脉冲信号输入端口; reset:复位端口,高电平复位; inp:8 位二进制数据输入端口; oup1、oup2、oup3:分别为百位、十位、个位输出端口。 3.1.3 七段译码器模块 上节中,介绍的数据分位模块已经可以将 8 位二进制数据分开为百位、十位、 个位并输出了,输出的数据均为 3 位二进制数据,但是这里新的问题

57、又出现了,七 段显示管是 7 位输入端口,为了解决接口宽度不兼容的问题,必须加入一个译码的 模块,一方面将接口宽度由 3 位扩展为 7 位,另一方面将普通的二进制数据译码为 七段数码管可以正常显示的序列,这种序列与显示数字对应的关系已在 3.1.1 节讲解。 这里需要的模块在硬件电路中很常见,就是七段译码器,同样,用 VHDL 语言 编一个七段译码器模块也比较简单: 下面是实现七段译码器功能的部分程序: architecture Behavioral of DECODER47 is begin SEG= WHEN D=0 ELSE WHEN D=1 ELSE WHEN D=2 ELSE WHE

58、N D=3 ELSE WHEN D=4 ELSE WHEN D=5 ELSE WHEN D=6 ELSE WHEN D=7 ELSE WHEN D=8 ELSE WHEN D=9 ELSE ; end Behavioral; 程序的仿真结果如图 3-8。 图图 3-8 七段译码模块功能仿真七段译码模块功能仿真 由仿真图可以看出,在输出 09 的数据译码结果中,都显示正确,证明设计程 序功能可以实现,图 3-9 是七段译码器的器件符号。 图图 3-9 七段译码器件符号七段译码器件符号 模块引脚说明: d:3 位二进制数据输入端; seg:译码后的 7 位二进制数据输出端。 3.1.4 扫描显示控

59、制模块 为了节约 FPGA 的引脚资源,硬件设计中,用动态扫描显示的方式进行数据的 输出显示。 动态扫描显示原理:采用广播式的数据输出方式,即数据发送端送出一个数据, 同时连接到这个端口的所有的接收设备都可以接收到数据信息,但在动态扫描显示 电路中,每一个显示设备都有一个使能端,当使能端使能的时候,可以显示收到的 数据,这样,我们可以利用人眼的视觉暂留原理,输出端先送出 a 设备需要的数据, 这时只有 a 设备使能,所以只有 a 设备显示数据,当输出端在很短的时间间隔后又 送出 b 设备需要的数据,这时 a 设备不使能,b 设备使能,所以这时只有 b 设备可 以显示数据,依此类推,显示设备可以

60、显示一系列的数据,而由于数据输出速度很 快,切换显示速度远远超过了人眼的反应速度,就会给人一种同时显示的假像。 根据动态扫描显示原理,在输出显示三位十进制数据的时候可以在输出端口按 次序地先输出百位,此时百位七段数码管使能,然后输出十位,此时十位七段数码 管使能,最后输出个位,此时个位七段数码管使能,如此循环,便可以实现三位十 进制数据的显示。 设计流程图如图 3-10。 待 输 出 数 据 百位 十位 个位 输出 片 选 信 号 输出 输出 图图 3-10 动态扫描输出模块动态扫描输出模块 在实际设计中,由于还需要加入显示输出信号序号的数码管,所以,这个模块 还需要加入一个输入端口,和一位片

温馨提示

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

评论

0/150

提交评论