基于quartusⅱ的通用运算器的设计与实现学士学位论文(编辑修改稿)内容摘要:

能。 建立一个新工程时,或者在 Settings 对话框 (Assignments 菜单 )EDA ToolSettings 下的 Simulation 页面中,可以在 New Project Wizard(File 菜单 ) 中选择 EDA 仿真工具。 Simulation 页面允许您选择仿真工具并为 Verilog和 VHDL 理工大学学士论文 9 输出文件及其对应 SDF 输出文件的生成指定选项,以及功耗分析和 Signal Activity File 的选项。 VHDL 语言 介绍 VHDL 语言概述 甚高速集成电路硬件描述语言 (Very high speed interated circuit hardware description language,VHDL)广泛用于电路设计的文档记录、设计描述的逻辑综合及电路仿真等方面。 与一般的高级语言比较 , 具有如下的特点 : VHDL 主要用于描述数字系统的结构,行为,功能和接口。 除了含有许多具有硬件特征的语句外, VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。 VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分 ,及端口 )和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。 在对一个设计实体定义了外部界面后,一旦其内部开发完成 后,其他的设计就可以直接调用这个实体。 这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点。 VHDL 语言对行为进行描述的能力为设计大规模复杂数字系统或单片系统提供了重要保证。 VHDL 语言是一种硬件描述语言 , 具有严谨的语言结构和强大的硬件描述能力。 近年发展起来的描述混合系统和描述单片系统的 AMSVHDL, 就是以VHDL 语言为基础的。 VHDL是 EDA开发环境中最重要的一环 ,VHDL语言设计文档描述电子系统结构、行为或功能,要经过 EDA 编译器、综合器、优化器、布局布线器、模拟器及编程器等一系列处理 ,才能转化为物理实现,显然, VHDL 设计文档是这一序列工作的起点,具有重要的意义。 VHDL 支持自上而下的设计思想 , 可以把一个大型设计分解为若干易于实现的子模块。 VHDL 支持设计的再利用 , 使得大型设计可以由多人或多个开发 组共同工作来完成。 理工大学学士论文 10 VHDL 语言介绍 利用 VHDL 实现数字系统的设计流程 利用 VHDL 和可编程逻辑器件实现数字逻辑的流程见图 , 该流程揭示了设计进程中各个 EDA 工具的输人输出情况 ,在整个设计过程中 , 设计者的主要工作是完成 VHDL 设计文档 , 并对以后的处理进程加 以简单的引导 ,设计的大部分工作由 EDA工具完成 ,设计者的工作主要转向高层次的规划和管理以及电路系统的结构与功能的可行性分析。 图 VHDL语言程序设计技术的体系结构 理工大学学士论文 11 VHDL 语言具有强大的功能。 学习语言,要从基本元素 、语法、常用电路的描述方法人手,逐步掌握层次设计的思想。 VHDL 的基本元素 实体 (entity):实体是一个设计的外部界面。 VHDL 表达的所有设计均与实体有关 , 实体是设计中最基本的模块 ,实体的通信点是端口 , 端口必须定义信号名、模式和信号类型。 结构体 (architecture):所有能被仿真的实体都有一个结构体描述 , 结构体描述实体的行为功能 , 包含两类语句 :并行语句和顺序语句。 子程序 : 由过程和函数组成过程能返回多个变量 , 函数只能有一个返回值。 程序包 (package): 是一种重要的设计再利 用机制 , 为了使一组数据类型、常量和子程序对多个设计实体都成为可见的 ,VHDL 提供了该结构。 库 (library): 用来存放预编译的程序包 ,预定义的程序包可以在其它设计中被调用 , 因此 , 库也是一种重要的设计再利用机制。 运算符 (operator): VHDL 为构造表达式提供了算术、关系、逻辑、连接 4种运算符。 进程 (process): 用于实现顺序发生的算法流程 ,进程只能包含在结构体中 , 一个结构体可以包含多个进程语句 ,进程语句包含 3 部分 :敏感表、进程语句、结束语句。 数据对象 : 包括信号、常量、变量、文件 4 类。 元件 (ponent): 是对 VHDL 模块的说明 , 使它能在其它模 块中被调用。 VHDL 的常用语句 VHDL 语句分并行语句和顺序语句 ,并行语句体现了硬件电路执行的并发性 , 主要包括 : 布尔方程、条件赋值语句 withselcetwhen、 whenelse 及元件例化语句等 , 存在于结构体之中、进程之外。 顺序语句与其它高级语言类似 , 是对算法流程的描述 , 包括 ifthenelse、 casewhen 等语句 , 必须包含在进程内。 常用电路的 VHDL 描述 利用 VHDL 设计数字系统 , 必须熟练掌握一些 基本电路的描述方法。 ① 组合电路的描述 :如逻辑门、编码器、译码器、选择器、加法器、乘法器等 ; ② 寄存器的描述掌握书写同步 /异步电路的方法 , 描述时钟上升沿、敏感表、同步复位、异步复位、同步置数等功能。 理工大学学士论文 12 ③ 锁存器的描述 :掌握 D 型锁存器、 SR 型锁存器等的描述方法。 ④ 输出使能的描述 :VHDL没有直接表示的 oe, 所以需要掌握描述 oe的方法。 ⑤ 双向信号的描述 :理解双向模式的内外驱动源的差别 , 正确使用双向信号。 ⑥ 三态缓冲器的描述 :掌握利用信号实现三态缓冲器的方法。 ⑦ 计数器的描述 :掌握可控的二进制、 BCD 加 /减计数器的描述方法。 ⑧ 移位寄存器的描述 :掌握可控算术移位 /逻辑移位及左移 /右移的描述方法。 ⑨ 状态机 :掌握状态机的设计思想及实现方法 , 理解状态编码对设计的面积、速度等方面的影响 , 能够自定义状态编码 , 能够熟练使用 “ 一位有效编码 ”方式。 ⑩ RAM/ROM/FIFO 的设计 :能够利用 VHDL基本语法设计存储阵列 , 能够设计简单的读写驱动电路 , 掌握描述多时钟工作的方法。 VHDL 应用开发介绍 VHDL 语言支持大规模复杂的数字系统设计 , 其核心思想是层次化设计。 VHDL 语言对层次化设计的支持机 制为 :库、程序包、可重用的元件及元件例化语句。 库是用来存放可编译的设计单元的地方 , 通过目录可查看或调用程序包、元件的介绍见前元件例化语句是高层设计调用低层元件的主要手段。 层次化设计的主要步骤如下 : (1)需求分析、系统分析、算法分析。 (2)系统分解、逐步求精 , 将系统分解为易于实现的子模块。 (3)编程实现 , 对各个子模块 , 应用语法实现 , 这些实现了的模块称元件 (4)利用 VHDL 语言的 package 机制 , 将元件归整在程序包。 以后 , 凡是调用该程序包的设计文档 , 都可直接调用其中的元件。 (5)顶层设计。 通 过元件例化 , 将各个元件按算法流程数 (据流程或控制流程 )进行 “ 组装 ” , 得到最 后的设计。 理工大学学士论文 13 3 基于 Quartus II的 半加、全加器的 设计 与实现 基于 Quartus II 的半加器运算 半加器的原理 与 真值表 半加器是 产生进位输入的 加法器 电路。 是实现两个一位二进制数的加法运算电路。 数据输入 A 被加数、 B 加数 ,数据输出 S 和数 (半加和 )、 进位 C0。 A 和 B 是 半加器电路是指对两个输入 数据位 进行加法,输出一个结果位和进位 ,不 相加的两个数, S 是半加和数, C0 是 进位 数。 半加器的真值表 如表 所示。 表中两个输入是加数 A 和 B,输出有一个是和 S,另一个是 进位 C0。 表 半加器的真值表 输入 输出 A B C0 S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 函数的逻辑表达式为: S=A⊕ B ; C0=AB。 半加器的设计与实现 启动 Quartus 软件,在 Quartus II 管理器窗口中选择菜单 File→ New Project Wizard… ,进入新建工程向导。 如图 所示。 理工大学学士论文 14 图 新建工程 在新建工程对话框输入工程名和工程路径,本工程命名为 halfadder。 如图。 图 文件名和工程路径 添加已经有文件(如果没有已经有文件的直接跳过 next),并且在Diviceamp。 Family Setting选项卡中,选择的芯片是 MAX II系列中的 EPM240T100C5,理工大学学士论文 15 如图 ,图。 图 添加已有文件 图 选择芯片 选择仿真,综合工具(实验全部利用 quartus做,三项都选 None),如图。 理工大学学士论文 16 图 选择仿真工具 工程建立完成(点 finish),如图。 图 工程建立完成 添加文件( filenewverilog file(或者 VHDL)),新建完成之后要先保存。 之后开始编译程序。 如图。 理工大学学士论文 17 图 添加文件 对编译完成的文件进行保存,并设为顶层文件(执行菜单命令 Project→ Set as TopLevel Entity)。 并进行语法检测(点击工具栏的这个按钮 ( start Analysis amp。 synthesis))点击确定完成 语法检测。 如图。 图 语法检测 语法检测没有错误以后,新建一个矢量波形仿真文件 Vector Waveform File。 选择菜单 File t→ New„,在 New对话框中选择 Verfication t→ Debugging Files t→Vector Waveform File。 单击 OK,出现波形编辑窗口,显示一个空的波形文件,理工大学学士论文 18 如图。 图 建立波形文件 设置仿真时间区域和网格大小。 选择 Edit→ End Time命令 ,在弹出的对话框中的 Time文本框中输入 1,单位选择μ s,整个仿真域的时间即设定为 1μ s,单击 OK按钮。 选择菜单 Edit→ Grid Size„,根据需要修改网格大小,这里设置 1ns,单击 OK按钮。 如图 ,图。 图 设置 End Time 理工大学学士论文 19 图 设置 Grid Size 设置仿真观察点。 在文件的最左栏中双击鼠标左键,在弹出的对话框中单击 Node Finder,选择 Filter列表中预综合( Presynthesis)或后布局布线( Postfitting)或全部( all)的类型,单击其右上方的 list,出现该类型的所有节点。 单击中间的双右方向键》,所有信号出现在右方 Selected Nodes栏中,确认后返回波形文件。 以时钟脉冲方式对输入信号 A, B进行编辑,使之具有“ 00” “ 01”“ 10”“ 11”这 4种状态,这里对 A、 B都选用时钟信号激励,单击“ ” 周期分别设为 20ns、 40ns。 如图 、图 、图。 图 设置仿真观察点 理工大学学士论文 20 图 Node Finder图 图 时钟设置 1 功能仿真设置,选择 Processing→ Simulator Tool命令,弹出的对话框如图。 在其对话框的仿真模式 Simulator Mode中选择功能仿真 Functional,单击其右侧的 Generate Functional Simulation Netlist按钮, Quartus II将产生设计文件的功能仿真网表,并设置仿真激励文件。 在仿真器设置对话框的仿真输入选项Simulator input栏目下,可以看到将要进行的仿真文件。 然后选择Overwrite simulation input filewith simulation results,单击下方的 Start按钮,启动仿真器,实现功能仿真。 功能仿真结束后单击 Open按钮,返回波形文件,就会得到功能仿真波形,对照半加器逻辑真值表 ,可以很清楚地看到与真值表的理工大学学士论文 21 逻辑完全相符合 图 Simulation Tool对话框 1 一位半加器程序代码 : LIBRARY IEEE。 USE。 ENTITY halfadder IS PORT(a,b:IN STD_LOGIC。 s,c:OUT STD_LOGIC)。 END halfadder。 ARCHITECTURE hadder OF halfadder IS BEGIN s=a XOR b。 c=a AND b。 END hadder。 1 一位半加器仿真结果如图。 理工大学学士论文。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。