《数字电路与数字逻辑》vhdl

上传人:san****019 文档编号:20873885 上传时间:2021-04-20 格式:PPT 页数:64 大小:266KB
返回 下载 相关 举报
《数字电路与数字逻辑》vhdl_第1页
第1页 / 共64页
《数字电路与数字逻辑》vhdl_第2页
第2页 / 共64页
《数字电路与数字逻辑》vhdl_第3页
第3页 / 共64页
点击查看更多>>
资源描述
硬件描述语言 第 12章 硬件描述语言 121 概述 122 VHDL语言的基本结构 123 数据对象、数据类型和运算操作符 124 仿真和逻辑综合 125 VHDL基本逻辑电路设计举例 本章小结 习题 12 返回主目录 硬件描述语言 硬件描述语言 12.1 概述 在计算机辅助电子系统设计出现以前,人们完成系 统硬件的设计一直采用传统的自下而上的方法,设计者 根据系统的具体需要,选择市场上能买到的逻辑元器件, 构成所需要的硬件电路,在设计的后期进行仿真和调试, 主要的设计文件是电原理图。 硬件描述语言 随着大规模专用集成电路 ( ASIC) 的开发和研制 , 各 ASIC研制和生产厂家相继开发了用于各自目的的硬件 描述语言 。 其中最具代表性的是美国国防部开发的 VHDL语言 ( VHSIC Hardware Description Language) , Viewlogic 公司开发的 Verilog HDL以及日本电子工业振 兴协会开发的 UDL/I语言 。 硬件描述语言 所谓硬件描述语言 , 就是可以描述硬件电路的功能 、 信号连接关系以及定时关系的语言 , 它比电原理图更能有 效地表示硬件电路的特性 。 利用 HDL语言设计系统硬件 , 通常采用自上而下的方法 , 即从系统总体要求出发 , 自上 而下地逐步将设计内容细化 , 硬件描述语言 最后完成系统硬件的整体设计 。 在设计过程中 , 设 计者分 3个层次对系统硬件进行设计:行为描述 、 寄存器 传输 ( RTL) 方式描述和逻辑综合 , 并且在每一层次都要 进行仿真 , 以便尽早发现问题 。 设计过程如图 12.1所示 。 硬件描述语言 图 12.1 HDL 硬件过程框图 规格设计 行为级描述 行为级仿真 R T L 级描述 R T L 级仿真 逻辑综合、优化 门级仿真、定时检查 输出门级网络表 硬件描述语言 设计者不会受到元器件的限制 , 可根据设计需要大 量采用 ASIC芯片 。 采用 HDL语言设计硬件电路时 , 主要 的设计文件是用 HDL语言编写的源程序 , 如果需要也可 以转换成电原理图形式输出 。 硬件描述语言 当前各 ASIC芯片制造商都开发了自己的 HDL语言 , 惟一被公认的是美国国防部的 VHDL语言 , 它已成为 IEEE STD-1076标准 。 VHDL有许多优点 , 它支持自上而 下 ( Top Down) 和基于库 ( Library Based) 的设计方 法 , 而且还支持同步电路 、 异步电路 、 FPGA以及其他随 机电路的设计;系统硬件的描述能力强; 用 VHDL编程 可以和工艺无关等 。 本章简要介绍 VHDL语言的一些基 本知识 , 旨在让读者了解 VHDL。 硬件描述语言 122 VHDL语言的基本结构 1221 语言设计的基本单元及其构成 1222 VHDL构造体的描述方式 1223 包集合、库及配置 硬件描述语言 12.2 VHDL 一个完整的 VHDL程序通常包含实体 ( Entity) 、 构造 体 ( Architecture) 、 配置 (Configuration)、 包集合 (Package)和 库 ( Library) 5个部分 。 前 4种是可分别编译的源设计单元 , 库可由用户生成或由 ASIC芯片制造商提供 。 硬件描述语言 12.2.1 VHDL语言设计的基本单元及其构成 VHDL语言的一个基本设计单元 , 简单的可以是一个 与门 , 复杂的可以是一个微处理器或一个系统 。 但是 , 其 基本构成是一致的 , 它们都由实体和构造体两部分组成 。 首先我们来看一个例子 。 图 12. 2是二选一电路及其 VHDL 描述 。 图 12.2 二选一电路及其 VHDL描述 d0 d1 s e l q Q: OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp: BIT 硬件描述语言 BEGIN cale: PROCESS(d0, d1, sel) VARIABLE tmp1, tmp2, tmp3: BIT; BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp1:=tmp1 OR tmp2; tmp=tmp3; q=tmp AFTER m; END PROCESS; END connect; 硬件描述语言 1. 实体 ( ENTITY) 实体部分主要规定了设计单元的输入和输出或引脚 . ENTITY 实体名 IS GENERIC( 类属参数说明 ) ; PORT( 端口说明 ) ; END 实体名; 属参数说明表示设计单元的默认类属参数值 , 例如规 定端口的大小 、 实体的定时特性等 。 例如上述程序中的 GENERIC(m: TIME: =1ns), 指定了构造体内 m的值为 1 ns。 端口说明是对基本设计实体与外部接口的描述 , 即对外部 引脚信号的名称 、 数据类型和输入输出方向的描述 。 其一 硬件描述语言 PORT( 端口名: 方向 数据类型名; 端口名: 方向 数据类型名 ) ; 端口方向主要有 4种:输入 ( IN) 、 输出 ( OUT) 、 缓冲 ( BUFFER) 和双向 ( INOUT) 。 数据类型主要有布尔型 ( BOOLEAN) 、 位 ( BIT) 位矢量 ( BIT -VECTOR) 、 整数 ( INTEGER) 等 。 有 些 VHDL程序中 , 数据类型的说明符号有所不同 , LIBRARY IEEE USE IEEE.STD -LOGIC -1164.ALL; ENTITY mu IS PORT(d0, d1, sel: IN STD -LOGIC; Q: OUT STD -LOGIC); END mu; 硬件描述语言 该例中 , BIT类型用 STD -LOGIC说明 , 这两种方 法是完全等效的 。 只是使用了不同的库和包集合 , 例如 上列程序的前两个语句 。 2. 构造体 构造体主要用来描述实体的内部逻辑 , 即描述一个 实体的功能 。 ARCHITECTURE 构造体名 OF 实体名 IS 定义说明 ; BEGIN 语句部分 ; END 构造体名; VHDL可用 3种描述格式来完成构造体, 下面将分别介绍。 硬件描述语言 12.2.2 构造体的描述方式 对系统的构造体进行描述 , VHDL允许采用 3种不同 风格的描述格式来完成 , 即行为描述 、 数据流 RTL( 或寄 存器传输 ) 描述和结构描述方式 , 或者是这些方式的任 意组合 。 在当前的情况下 , 采用后两种方式的 VHDL程 序可以进行逻辑综合 , 而采用行为描述的 VHDL程序大部 分只用于系统仿真 。 硬件描述语言 1. 行为描述方式 ( Behavioral Descriptions) 所谓行为描述 , 是指描述该设计单元的功能 , 即该 硬件能做什么 , 主要使用函数 、 过程和进程语句 , 以算 法形式描述数据的变换和传送 。 以四选一电路为例: LIBRARY IEEE; 说明使用 IEEE库 USE IEEE.STD-LOGIC-1164.ALL; 说明使用 IEEE库中 “ STD -LOGIC -1164” USE IEEE.STD-LOGIC-UNSIGNED.ALL; 和 “ STD -LOGIC -UNSIGNED” 包集合 ENTITY mux4 IS 定义实体 mux4, 说明端口 i0, i1, i2, i3, 硬件描述语言 PORT(i0, i1, i2, i3, a, b: IN STD -LOGIC; a,b为输 入 , q为输出 q: OUT STD -LOGIC); END mux4; 实体 mux4结束 ARCHITECTURE behave OF mux4 IS 定义构造 体 behave SIGNAL sel: INTEGER; 定义信号 sel BEGIN WITH sel SELECT 用选择信号代入语句描 q= i0 WHEN 0, 例如: 当 ab为 00时 , sel为 0 i1 WHEN 1, 此时输出 q为 i0, 其余类推 硬件描述语言 i2 WHEN 2, i3 WHEN 3, XWHEN OTHERS; sel= 0 WHEN a=0AND b=0ELSE 1 WHEN a=1AND b=0ELSE 2 WHEN a=0AND b=1ELSE 3 WHEN a=1AND b=1ELSE 4; END behave; 硬件描述语言 2. 数据流 RTL 所谓数据流描述 , 是指以类似于寄存器传输级的方 式描述数据的传输和变换 , 主要使用并行的信号赋值语 句 , 既显示了该设计单元的行为 , 也表示了该设计单元 的结构 。 为说明这一点 , 我们仍用四选一电路为例 , 用 数据流描述其功能 。 例如 , LIBRARY IEEE; USE IEEE.STD -LOGIC -1164.ALL; USE IEEE.STD -LOGIC -UNSIGNED.ALL; ENTITY mux4 IS 硬件描述语言 PORT(input:INSTD-LOGIC-VECTOR(3DOWNTO 0); 端口说明 , 定义输入和输出 sel: IN STD-LOGIC-VECTOR (1 DOWNTO 0); 信号 y: OUT STD -LOGIC); END mux4; ARCHITECTURE rtl OF mux4 IS 定义构造体 rtl BEGIN yset, b=qb, c=q); u2: NAND2 PORT MAP(a=reset, b=q, c=qb); END netlist; ARCHITECTURE behave OF rsff IS 行为描述 BEGIN q=NOT(qb AND set); q=NOT(q AND reset); END behave; 硬件描述语言 在上述例子中, 实体 rsff有两个构造体 netlist和 behave, 如果选用构造体 netlist, 则用: CONFIGURATION rsffconl OF rsff IS FOR netlist END FOR; END rsffconl; 硬件描述语言 如果选用构造体 behave, 则用: CONFIGURATION rsffconl OF rsff IS FOR behave END FOR; END rsffconl; 这只是非常简单的一类配置, 详细说明请读者参 考相关文献。 硬件描述语言 123 数据对象、数据类型和运算操作 符 1231 数据对象 1232 数据类型 1233 运算操作符 硬件描述语言 12.3.1 数据对象 VHDL的数据对象保存有专门类型的值, 数据对象 包括信号( Signal)、 变量( Variable)、常数 (Constant) 和文件 (File),在使用之前必须给予详细的说明。 1. 信号( Signal) 信号与电路内部的硬件连接相对应,端口也是信号。 作为连线,信号可以是逻辑门的输入或输出,也可以表 达存储元件的状态。信号通常在构造体、包集合和实体 12.3数据对象、 数据类型和运算操作符 硬件描述语言 SIGNAL 信号名:数据类型约束条件: =表达式; 例如, SIGNAL enable: BIT:=0; SIGNAL count: BIT-VECTOR(3 DOWNTO 0); 2. 变量( Variable 变量只能在进程语句、 函数语句和过程语句中使用, 它是一个局部量。和信号不同,分配给信号的值必须经过一 段时间的延迟后才能成为当前值,而分配给变量的值则立刻 成为当前值,信号和硬件的“连线”相对应,而变量不能表 达 连线和存储元件。变量的说明格式为 硬件描述语言 VARIABLE 变量名:数据类型约束条件: =表达式; 例如, VARIABLE x, y: INTEGER; VARIABLE count: INTEGER RANGE 0 TO 255: =10; 变量的赋值是直接的,非预设的。而信号的值必须 经过一段延迟后,才能成为当前值的赋值,信号赋值采 用“ =”符号。变量的赋值和初始化的符号“: KG-*4=” 表示立即赋值。 硬件描述语言 3. 常数 (Constant) 常数是一个固定的值。所谓常数说明就是对某一常 数名赋予一个固定的值。通常赋值在程序开始前进行, 该值的数据类型则在说明语句中指出,常数一旦被赋值 就不能再改变。常数说明的一般格式如下: CONSTANT 常数名: 数据类型: =表达式; 例如, CONSTANT VCC: REL: =5.0; CONSTANT DALY: TIME: =100ns; 硬件描述语言 4. 文件 (File) 文件包含一些专门类型的数值, 它不可以通过赋值来 更新文件的内容。文件可以作为参数向子程序传递,通过 子程序对文件进行读写操作。因此文件参数没有模式。 硬件描述语言 12.3.2 数据类型 VHDL具有很强的数据类型,这使得 VHDL能够创建 高层次的系统和算法模型。 VHDL的数据类型分别为标量 类型、复合类型、存取类型和文件类型。其中前两种用 于综合,后两种主要用于建立仿真模型。这里主要讨论 标量类型和复合类型。 1. 标量类型 (Scalar Types) 标量类型是最基本的数据类型,它包括:整数类型、 浮点类型、物理类型和枚举类型。 硬件描述语言 1) 整数类型 (Integer Types) 整数类型严格地和算术整数相似 , 能够处理 VHDL的 软件必须支持 -( 231-1) +( 231-1),即 -2 147 483 647 +2 147 483 647范围的整数,例如: VARIABLE a: INTEGER range -63 +63; 2) 浮点类型 (Floating Types) 浮点类型用于表达大部分实数, VHDL规定其范围 为 -1.0E38 +1.0E38。综合工具通常不支持浮点类型。 3) 物理类型 (Physical Types) 物理类型对于综合意义不大, 主要用于仿真。 硬件描述语言 4) 枚举类型 (Enumeration Types) 枚举类型是一种非常重要的数据类型,用于建立抽 象的模型。设计者用枚举类型严格地表达一个特定操作 所需要的值。枚举类型的所有值由用户定义,这些值为 标识符或某个字母的字面值。标识符像一个名字,例如, abc, black, clock等。文字字符的字面值是用引号括起来的 字符,例如: X、 1等。 举例如下: TYPE Two-level-logic is (0, 1); TYPE color is (red, yellow, blue);KH*2 硬件描述语言 2. 复合类型( Composite Types) 标量类型的数据对象在任何时刻仅持有一个值 , 而复合 类型的数据对象则在某个时刻可持有多个值。复合类型由数 组类型和记录类型组成。 1) 数组类型 (Array Types) 一个数组类型的对象用相同类型的多个元素组成,其定 义如下: TYPE 数据类型名 IS ARRAY 范围 OF 原数据类 型名; 例如: TYPE bit -vector IS ARRAY (0 TO 6) OF STD -LOGIC; 硬件描述语言 2) 记录类型 (Record Types) 一个记录类型的数据对象可具有不同类型的多个元 素,其定义如下: TYPE 数据类型名 IS RECORD 元素名: 数据类型名; 元素名: 数据类型名; END RECORD; 例如, TYPE bank IS RECORD addr: STD -LOGIC -VECTOR (7 DOWNTO 0); ro: INTEGER; END RECORD; 硬件描述语言 表 12.1 VHDL的运算操作符 12.3.3 VHDL定义了丰富的运算操作符,主要有算术运算 符、关系运算符、逻辑运算符、赋值运算符、关联运算 符和其他运算符,如表 12.1 所示。 运算符类型 运 算 符 功 能 逻辑运算符 AND OR NAND NOR XNOR NOT XOR 与 或 与非 或非 同或 非 异或 硬件描述语言 续表( 2) 运算符类型 运 算 符 功 能 关系运算符 = /= = = 等于 不等于 小于 大于 小于等于 大于等于 算术运算符 + / MOD REM SLL 加 减 乘 除 取模 取余 逻辑左移 硬件描述语言 续表( 3) 运算符类型 运 算 符 功 能 算术运算符 SRL SLA SRA ROL ROR * ABS 逻辑右移 算术左移 算术右移 逻辑循环左移 逻辑循环右移 平方 去绝对值 =: 在例化元件时用于形参到实残的映射 + - USE IEEE.STD -LOGIC -1164.ALL; ENTITY decoder -3 -to -8 IS PORT (a, b, c, g1, g2a, g2b: IN STD -LOGIC; 硬件描述语言 y: OUT STD -LOGIC -VECTOR (7 DOWNTO 0); END decoder -3 -to -8; ARCHITECTURE rtl OF decoder -3 -to -8 IS BEGIN Indatayyyyyyyyy=XXXXXXXX; END CASE; ELSE y=11111111; END IF; END PROCESS; END rtl; 硬件描述语言 本章小结 一个数字系统, 当我们借助 EDA工具进行设计时, 都需要对所设计系统的功能结构进行描述,即为 EDA工 具提供规定格式的输入数据,硬件描述语言 HDL就是一 种对数字系统在系统级至电路级进行设计描述的语言。 VHDL语言设计的基本单元主要由实体和构造体来组 成。实体由端口描述和若干个程序体描述组成,端口描 述定义了该实体的外部特性,程序体描述则表述该实体 的内部特性。 硬件描述语言 一个结构体的描述可以用结构描述、 数据流描述和 行为描述中的一种或三种形式的混合来描述。 对于 VHDL的包集合、 库、 配置以及数据类型和运 算符等,本章都简要进行了介绍,限于篇幅,更深入详 细的内容,请读者参考相关文献。 硬件描述语言 习题 12 12.1 VHDL 12.2 请写出实体说明和构造体说明的一般格式。 12.3 构造体的描述方式有哪些? 请简要介绍。 12.4 参考有关书籍, 试设计一个一位七段数码管的 显示译码电路,写出 VHDL
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!