VHDL语言详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

概述(4/4)
VHDL vs. Verilog HDL
USA—IBM,TI,AT&T,INTEL…VHDL; USA—Silicon Valley…Verilog; Europe—VHDL; Japan—Verilog; Korea—70-80%VHDL;
VHDL的一些基本概念
基本概念(1/7)
操作数的类型应该和运算操作符所要求并置一维数组整数和实数包括浮点数整数和实数包括浮点数mod整数rem整数sll逻辑左移bit或布尔型一维数组srl逻辑右移bit或布尔型一维数组sla算术左移bit或布尔型一维数组sra算术右移bit或布尔型一维数组rol逻辑循环左移bit或布尔型一维数组ror逻辑循环右移bit或布尔型一维数组乘方整数算术操作符abs取绝对值整数vhdl语言的运算操作符2等于任何数据类型不等于任何数据类型小于枚举与整数类型及对应的一维数组大于枚举与整数类型及对应的一维数组小于等于枚举与整数类型及对应的一维数组关系操作符大于等于枚举与整数类型及对应的一维数组bitbooleanstdlogibitbooleanstdlogibitbooleanstdlogibitbooleanstdlogibitbooleanstdlogibitbooleanstdlogibitbooleanstdlogi整数符号操作符整数vhdl语言的运算操作符3运算符优先级xnor最低优先级vhdlvhdl语言的运算操作符4norxorstdlogicvector1downtostdlogicsignalnandjnandbooleansignalstdlogicvector1downtostdlogicsignalbooleanvhdl语言的运算操作符5主要用于位和位矢量的连接
VHDL语言的数据对象(二)
变量
主要用于对暂时数据进行局部储存; 是一个局部变量,只能在进程语句、过程语 句、和函数语句的说明区域中加以说明; 变量的赋值是直接的、立即生效的; 要将一个变量的值用于作用范围之外时,需 要将该变量的值赋给一个相同类型的信号; 说明的格式
Variable 变量名: 数据类型 [:=表达式]; 例: Variable temp : std_logic := ‘0’;
VHDL语言的数据对象(三)
信号
是实体间动态交换数据的手段; 在物理上它对应着硬件设计中的一条硬件连 接线; 初始值只对模拟有用,对综合来说意义不大; 信号既可以作为输入/输出,也可以具有缓 冲模式的特点。 说明的格式
Signal 信号名 : 数据类型 [:=表达式]; 例:signal clk : std_logic := ‘0’;
Process (clk, d1) begin if (clk’event and clk = ‘1’) then q1 <= d1; end if; end process;
Process (clk, d2) begin if (clk’event and clk = ‘1’) then q2 <= d2; end if; end process;
VHDL的功能
描述输入端口/输出端口 描述电路的行为和功能
Input port functions Output port
基本概念(2/7)
VHDL的一些规定
不区分大小写(‘’内的字符和“”内的字符串除外); 每个逻辑行以一个分号作为结束标志; 注释说明使用双短划线“– –”开头(本行有效); 用户定义的变量名、实体名等必须以字母开头; 下划线不能连用; 命名不能与保留字相同; 在MAXPLUSII中,存盘文件名应与设计的实体名相 同。
ENTITY mux4 IS PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); END mux4;
ARCHITECTURE body_mux4 OF mux4 IS BEGIN process(i0,i1,i2,i3,a,b) variable muxval : integer range 0 to 3; --注意变量定义的位置 begin muxval := 0; if (a = '1') then muxval := muxval + 1; end if; if (b = '1') then muxval := muxval + 2; end if;

case muxval is when 0 => q <= i0; when 1 => q <= i1; when 2 => q <= i2; when 3 => q <= i3; end case; end process; END body_mux4;
ARCHITECTURE body_mux4 OF mux4 IS signal muxval : integer range 0 to 3; --注意信号定义的位置 BEGIN process(i0,i1,i2,i3,a,b) begin muxval <= 0; if (a = '1') then muxval <= muxval + 1; end if; if (b = '1') then muxval <= muxval + 2; end if;
概述(2/4)
用语言的方式而非图形等方式描述硬件电路
容易修改 容易保存
特别适合于设计的电路有:
复杂组合逻辑电路,如:
译码器、编码器、加减法器、多路选择器、地址译码 器…...
状态机 等等……..
概述(3/4)
另一种硬件描述语言Verilog HDL
1983到84年,Phil Moore在Gateway Design Automation发明; 1989年,被Candence收购; 1995年12月,通过IEEE标准(IEEE 1364); 语法上Verilog基于C语言,简单易学;
VHDL语言详解
主讲:张晓磊
内容提要
VHLD概述; VHLD的一些基本概念; VHDL的数据对象,数据类型及类型转换,运 算符等; VHDL的顺序描述语句; VHDL的并行描述语句; VHDL的子程序结构; VHDL库、程序包和配置; VHDL的预定义属性; VHDL的重载; VHDL结构体的描述方式。
两个进程语句并行执行
VHDL的数据对象、类型及运算符
VHDL语言的数据对象
常量;变量;信号及文件;
VHDL语言的数据类型
标量类型;复合类型及子类型;
VHDL语言的数据类型转换函数; VHDL语言的运算符
逻辑、算术、关系及并置运算符;
VHDL语言的词法单元
注释、数字、字符及字符串、位串;
VHDL语言的数据对象(一)
基本概念(4/7)
2选1多路选择器的VHDL描述 ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ; END ENTITY mux21a ;
实体
ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s = '0' ELSE b ; END ARCHITECTURE one ;
基本概念(3/7)
基本结构
USE定义区 自定义程序包 PACKAGE定义区 描述电路内部 的功能,说明 电路执行什么 动作或功能 ENTITY定义区 ARCHITECTURE 定义区 CONFIGURATION 定义区 定义电路实体的 外观;I/O接口的 规格 调用库和程序包
决 定 哪 一 个 architecture被使用
与顺序无关
THE SAME
c <= a and b; d <= a or b; d <= a or b; c <= a and b;
C = A and B D = A OR B
基本概念(7/7)
所有的进程语句(process)都是并行执行的; 在一个进程语句中的代码是顺序执行的; 进程语句的输出与输入以及敏感信号表的 事件发生有关;
VHDL语言的数据对象(四)
文件
VHDL-93语法把文件也当作对象; 不能被赋值; 通过规定的过程和函数对文件对象进行读出 和写作的操作; 说明的格式
File 文件名 : 文件类型 is [方向] 路径表达式; Type 文件类型名 is file of 数据类型; 例: type filetype is file of std_logic_vector; file myfile : filetype is in “/myproject/vector.in”
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
例:定义为变量
case muxval is when 0 => q <= i0; when 1 => q <= i1; when 2 => q <= i2; when 3 => q <= i3; end case; end process; END body_mux4;
VHDL语言的数据类型(1/12)
VHDL是一种强类型语言
每个数据对象只能具有一个数据类型,且只 能具有那个数据类型的值; 对某数据对象进行操作的类型必须与该对象 的类型相匹配; 不同类型之间的数据不能直接代入; 相同数据类型时,位长不同的也不能代入; 文件类型与存取类型主要用于建立模拟模型。
概述(1/4)
Very high speed integrated Hardware Description Language (VHDL)
发展史
1980年,美国国防部的VHSIC(Very High Speed Integrated Circuit)计划; 1982年,正式诞生“VHSIC硬件描述语言”; 1987年12月,VHDL被接纳为IEEE 1076标准; 1993年,该标准被修订,更新为新的VHDL标准 IEEE 1164;
Entity test1 is Entity test1 is Port ( clk, d1, d2 : in bit; Port ( clk, d1, d2 : in bit; q1, q2 : out bit); q1, q2 : out bit); end test1; end test1; architecture test1_body of architecture test1_body of test1 test1 is 输出与有条件 is begin 约束的输入有关 begin Process (clk, d1) Process (clk, d2) begin begin if (clk’event and clk = ‘1’) if (clk’event and clk = ‘1’) then then q1 <= d1; q2 <= d2; 这两个进程 end if; end if; 该代码在进程 end process; 语句并行执行 end process; Process (clk, d2)语句中顺序执行 Process (clk, d1) begin begin if (clk’event and clk= ‘1’) then if (clk’event and clk= ‘1’) then q2 <= d2; q1 <= d1; end if; end if; end process; end process; end test1_body; end test1_body;
信号signal vs. 变量variable
信号signal 代表电路中的连接 全局变量 赋值符号‘<=’ 赋值在一个过程结束后才 会变化 变量variable 代表局部的一个暂存值 局部变量 赋值符号‘:=’ 赋值没有延迟,立即变化
例:定义为信号
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); END mux4;
基本概念(6/7)
结构体(architecture)说明的相关概念
结构体是由一个或多个并行语句构成的,他们的书 写顺序并不代表他们的执行顺序。
Entity test1 Is 输出只和输入有关 Port ( a, b : in bit; c, d : out bit); end test1; architecture test1_body of test1 is begin 并行执行 c <= a and b; d <= a or b; end test1_body; Entity test1 Is Port ( a, b : in bit; c, d : out bit); end test1; architecture test1_body of test1 is begin d <= a or b; c <= a and b; end test1_body;
常量
指在设计实体中不会发生变化的值; 可以是任何数据类型; 可以在很多部分进行说明。 说明的格式
Constant 常量名: 数据类型 [:=表达式];

Constant width_temp : integer :=8; Constant VCC : real := 3.3; Constant delay: time :=10ns;
结构体
基本概念(5/7)
实体(entity)说明的相关概念
类属参数说明
在端口说明前面; 例generic (delay: time);
IN 设 计 INOUT 体 LINKAGE 实 BUFFER OUT
端口说明
端口名,方向,数据类型 方向包括: 输入(in);输出(out);双向(inout); 缓冲(buffer);连接(linkage).
相关文档
最新文档