基于fpga的数字调制解调器设计毕业设计(编辑修改稿)内容摘要:
及下载 为了对设计工程进行硬件测试,应将其输入输出信号锁定在芯片确定的引脚上。 最后是将下载或配置文件通过编程电缆向 FPGA 或 CPLD 进行下载,以便进行硬件调试和验证。 Quartus II 的原理图输入设计流程 应用数字逻辑电路的基本知识,使用 Quartus II 原理图输入法可以非常方便地进行数字系统的设计,应用 Quartus II 原理图输入法,还可以 把 原有的使用中小规模的通用数字集成电路设计的数字系统移植到 FPGA 中。 设计流程可以分 为: ( 1) 建立工程文件夹,包括工程目录、名称和选择合适器件。 ( 2) 编辑设计图形文件,放置元件、连线、设定输入输出管教名称。 ( 3) 对图形文件进行编译,检查电路是否有误。 ( 4) 时序仿真设计文件,得到方针波形验证设计结果。 11 ( 5)编程下载设计文件,包括引脚锁定和 编程下载。 SignalTap II 逻辑分析仪的使用 伴随着 EDA 工具的快速发展,一种新的调试工具 Quartus II 中的SignalTap II 满足了 FPGA 开发中硬件调试的要求,它具有无干扰、便于升级、使用简单、价格低廉等特点。 SignalTap II嵌入逻辑分析仪集成到 Quartus II 设计软件中,能够捕获和显示可编程单芯片系统( SOPC)设计中实时信号的状态,这样开发者就可以在整个设计过程中以系统级的速度观察硬件和软件的交互作用。 它支持多达 1024 个通道,采样深度高达 128Kb,每 个分析仪均有 10 级触发输入 /输出,从而增加了采样的精度。 SignalTap II为设计者提供了业界领先的 SOPC 设计的实时可视性,能够大大减少验证过程中所花费的时间。 目前 SignalTap II 逻辑分析仪支持的器件系列包括: APEXT II,APEX20KE, APEX20KC, APEX20K, Cyclone, Excalibur, Mercury, Stratix GX, Stratix。 SignalTap II 嵌入式逻辑分析器,提供了芯片测试的一个很好的途径。 通过 SignalTap II 测试芯片无需外接专用仪 器,它在器件内部捕获节点进行分析和判断系统故障。 本文通过对 Cyclone EP2C35F672C6 器件的实验证实该测试手段大大提高系统的调试能力,具有很好的效果。 图 是SignalTap II嵌入到 FPGA 的结构图 : 12 图 将逻辑分析仪嵌入到 FPGA 中 使用 SignalTap II的一般流程是:设计人员在完成设计并编译工程后,建立 SignalTap II (.stp)文件并加入工程、配置 STP 文件、编译并下载设计到FPGA、在 Quartus II 软件中显示被测信号的波形、在测试完毕 后将该逻辑分析仪从项目中删除。 以下描述设置 SignalTap II文件的基本流程: ( 1) 设置采样时钟 : 采样时钟决定了显示信号波形的分辨率,它的频率要大于被测信号的最高频率,否则无法正确反映被测信号波形的变化。 SignalTap II在时钟上升沿将被测信号存储到缓存。 ( 2) 设置被测信号 : 可以使用 Node Finder 中的 SignalTap II 滤波器查找所有预综合和布局布线后的 SignalTap II 节点,添加要观察的信号。 逻辑分析器不可测试的信号包括:逻辑单元的进位信号、 PLL 的时钟输出、 JTAG引脚信号、 LVDS(低压差分)信号。 ( 3) 配置采样深度、确定 RAM 的大小。 ( 4) 设置 buffer acquisition mode: buffer acquisition mode 包括循环采样存储、连续存储两种模式。 循环采样存储也就是分段存储,将整个缓存分 13 成多个片段 (segment),每当触发条件满足时就捕获一段数据。 该功能可以去掉无关的数据,使采样缓存的使用更加灵活。 ( 5) 触发级别 : SignalTap II 支持多触发级的触发方式,最多可支持 10级触发。 ( 6) 触发条件 : 可以设定复杂的触发条件用来捕获 相应的数据,以协助调试设计。 当触发条件满足时,在 signalTap 时钟的上升沿采样被测信号。 完成 STP 设置后,将 STP 文件同原有的设计下载到 FPGA 中,在 Quartus II中 SignalTap II 窗口下查看逻辑分析仪捕获结果。 SignalTap II 可将数据通过多余的 I/O 引脚输出,以供外设的逻辑分析器使用;或输出为 csv、 tbl、 vcd、vwf 文件格式以供第三方仿真工具使用。 VHDL 语言简介 VHDL 的英文全名是 VeryHighSpeed Integrated Circuit Hardware Description Language, 诞生于 1982 年。 1987 年底, IEEE 将 VHDL 替代 了原有的非标准的硬件描述语言 ,并被 美国国防部确认为标准硬件描述语言。 VHDL 主要用于描述数字系统的结构,行为,功能和接口。 除了含有许多具有硬件特征的语句外, VHDL 的语言形式和描述风格与句法十分类似于一般的计算机高级语言。 VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可 视 部分 ,及端口 )和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。 在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。 这种将设计实体分成内外部分的概念是VHDL 系统设计的基本点。 14 VHDL 语言的基本结构:一个完整的 VHDL 语言程序通常包括实体声明( Entity Declaration)、结构体( Architecture Body)、配置( Configuration)、程序包( Package)和库( Library)五个组成部分。 其中实体和结构体是不可缺少的。 前 4 种 分别是编译的源设计单元。 库存放已编译的实体,结构体,配置和包;实体用 于描述系统内部的结构和行为;包存放各设计模块都能共享的数据类型,常数和子程序等;配置用于从库中选取所需要单元来支持系统的不同设计,即对库的使用。 库可由用户生成或芯片制造商提供,以便共享。 实体是描述系统的外部端口,实体说明用于描述设计系统的外部端口输入、输出特征; 结构体是描述系统内部的结构和行为,即用于描述设计系统的行为、系统数据的流程和系统内部的结构及其实现的功能。 配置为属性选项,描述层与层之间、实体与结构体之间的连接关系,比如高层设计需要将低层实体作为文件加以利用,这就要用到配置说明,用于从库中选取 所需设计单元来组成系统设计的不同版本。 程序包为属性选项,用于把共享的定义放置其中,具体地说主要用来存放各种设计的模块都能共享的数据类型、常量和子程序等。 库主要用于存放已经编译的实体、结构体、程序包和配置,可由用户自主生成或有 ASIC 芯片制造商提供相应的库,以便于设计中为大家所共享。 VHDL 的基本结构 一个 VHDL设计由若干个 VHDL文件构成,每个文件主要包含如下三个部分中的一个或全部: 15 ( 1) 程序包( Package); ( 2) 库( library) ( 3)实体( Entity); ( 4)结构体( Architecture)。 图 VHDL组成示意图 一个完整的 VHDL设计必须包含一个实体和一个与之对应的结构体,一个实体可对应多个结构体,以说明采用不同方法来描述电路。 ( 1) 程序包( Package) 程序包是用来单纯罗列 VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。 要使用程序包时,可以用 USE语句说明。 例如: USE ; VHDL 设计 VHDL 文件 程序包( Packages) 声明在设计或实体中将要用到的常数,数据类型,元件及子程序等 实体( Entities) 声明到其他实体及其他设计的接口,即定义本设计输入输出端口 结构体( Architectures) 定义了实体的实现,即电路的具体描述 16 该语句表示在 VHDL程序中要使用名为 STD_LOGIC_1164的程序包中所有定义或说明项。 一个程序包由两大部分组成:包头( Header)和包体( Package Body),其中包体是一个可选项,也就是说,程序包可以只由包头构成。 一般包头列出所有项的名称,而在包体具体给出各项的细节。 ( 2) 库( Library) 库是专门存放预先编译好的程序包( package)的地方。 在 VHDL语言中,库的说明 总是放在设计单元的最前面: LIBRARY 库名; 这样,在设计单元内的语句就可以使用库中的数据。 由此可见,库的好处就在于使设计者可以共享已经编译过的设计结果。 在 VHDL语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。 实际中一个库就对应一个目录,预编译程序包的文件就放在此目录中。 用户自建的库即为设计文件所在目录,库名与目录名的对应关系可在编译软件中指定。 库说明语句的作用范围从一个实体说明开始到它所属的构造体、配置为止。 当一个源程序中出现两个以上的实体时,两条作为使用库的说明语句应在每 个实体说明语句前重复书写。 表 IEEE两个标准库 “std” 与 “ieee” 中所包含的程序包的简单解释。 17 表 STD与 IEEE的程序包 库名 程序包名 包中预定义内容 std standard VHDL类型,如 bit, bit_vector ieee std_logic_1164 定义 std_ logic, std_ logic_ vector等 ieee numeric std 定义了一组基 s td_logic_1164中定 义的类型上的算术运算符,如“+” 、 “ ” 、 SHL、 SHR等 ieee std_ logic arith 定义有符号与无符 号类型,及基于这些类型上的算术运算 ieee std_ logic_ signed 定义了基于 std_logic与 std_logic_vector 类型上的有符号的算术运算 ieee std_ logic_ unsigned 定义了基于 std_logic与 std_logic_vector 类型上的无符号的算术运算 ( 3)实体( entity) 实体是 VHDL设计中最基本的模块, VHDL表达的所有设计均 与实体有关。 设计的最顶层是顶层实体。 如果设计分层次,那么在顶层实体中将包含较低级别的实体。 实体中定义了该设计所需的输入 /输出信号,信号的输入 /输出类型被称为端口模式,同时实体中还定义他们的数据类型。 任何一个基本设计单元的实体说明都具有如下的结构: Entity entity_name 实体名 is port ( 18 信号名 {,信号名 }:端口模式 端口类型; „„ 信号名 {,信号名 }:端口模式 端口类型 ); End entity_ name。 每个端口所定义的信号名在实体中必须 是唯一的,说明信号名的属性包括端口模式和端口类型,端口模式决定信号的流向,端口类型决定端口所采用的数据类型。 端口模式( MODE)有以下几种类型 : IN 信号进入实体但并不输出; OUT 信号离开实体但并不输入;并且不会在内部反馈使用; INOUT 信号是双向的(既可以进入实体,也可以离开实体); BUFFER 信号输出到实体外部,但同时也在实体内部反馈。 端口类型( TYPE)有以下几种类型: Integer: 可用作循环的指针或常数,通常不用于 I/O信号; Bit: 可取值 “ 0” 或 “ 1” ; std_ logic: 工业标准的逻辑类型,取值 “ 0” , “ 1” , “ X” 和 “ Z” ; std_ logic_ vector: std_ logic的组合,工业标准的逻辑类型。 由此看出,实体( ENTITY)类似于原理图中的符号 ,它并不描述模块的具体功能。 实体的通信点是端口( PORT),它与模块的输入 /输出或器件的引脚相关联。 ( 4)结构体( architecture) 结构体是 VHDL设计中最主要部分,它具体地指明了该基本设计单元的行 19 为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。 结构体对其基本设 计单元的输入输出关系可以用 3种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。 不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。 一个完整的、能被综合实现的 VHDL设计必须有一个实体和对应的结构体,一个实体可以对应一个或多个结构体,由于结构体是对实体功能的具体。基于fpga的数字调制解调器设计毕业设计(编辑修改稿)
相关推荐
片可以进行流畅的开发、校验。 FPGA 特别适用于正向设计,即从电路原理图或各种硬件描述语言到芯片成品的设计,在这些设计流程中,设计人员对特别底层的硬件知识并不需要特别的了解和掌握,完全可以从功能应用出发,根据任务需求,自顶向下地进行电路设计。 下面我们来看看 FPGA 的设计流程, Quartus II 环境下的 FPGA 设计过程主要包括 5 个步骤: ●设计输入 运用电路原理图输入、
字转换器,可将得到的与时间间隔成正比的电压 Vcap 转换成数字量。 采用这种方法式,可以做出分辨率很高的时间数字转换器。 然而电流积分点对噪声的敏感度高,且动态范围不够大。 由于电容所能达到的最大电压是确定的,如果要增加测量的动态范围,唯一的途径就是通过减小充电电流或增大电容来改变测量的比例常数。 但是单纯的增大电容和减小充电电流不仅受噪声的影响大,而且受电容制作工艺的限制,误差也将增大。 图
OM。 ( 3) FPGA 的编程数据不便于保密。 EDA 设计流程 图 是基于 EDA 软件的 FPGA/CPLD 开发流程框图,以下将分别介绍各 设计模块的功能特点。 对于目前流行的 EDA 工具软件, 图 的设计流程具有一般性。 原 理 图 / H D L 文 本 编 辑综 合F P G A / C P L D适 配时 序 仿 真F P G A / C P L D编 程 下 载F P G
度,其中操作码占用 16 位指令字的高 4 位。 所有的指令码都很容易译码。 对两个寄存器的指令, d 选择目的寄存器, :r 选择源寄存器, 4 位可以寻址 16 个寄存器,这种指令格式包括 ADD, SUB, AND, OR。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 r r r r d d d d 对于仅需要一个寄存器的指令, d 用来寻址目标寄存器。
数器寻址波形存 储器的 任意波形发生器 在一段时期内曾得到广泛的应用,其取样时钟 频率较高且 可调节, 但其 对硬件要求比较高,需要高性能的锁相环和 截止频率可调的低通滤波器 (或者 多个低通滤波器 ) ,且频率分辨率低,频率切换速度较慢,已经逐步退出市场。 目前市场上的任意波形发生器主要采用直接数字合成( Direct Digital Synthesuzer, DDS)技术
,每一行由一个单独的位来控制,高电平有效。 例如 “0000”表示第 0 列, “0000000000000001”表示第一行的点亮。 由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。 例如要使第一列的 2,4,6,8,行亮,则列为 “0001”、行为 “0000000010101010”就可以实现了。 方案二: VHDL