《组合逻辑电路的vhdl描述、竞争与冒险》由会员分享,可在线阅读,更多相关《组合逻辑电路的vhdl描述、竞争与冒险(38页珍藏版)》请在金锄头文库上搜索。
1、1,第九讲 组合逻辑电路分析与设计,1、VHDL语言介绍 2、组合逻辑电路VHDL描述 3、组合逻辑电路中的竞争与冒险,2,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,VHDL:Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。,VHDL作为IEEE标准的硬件描述语言和EDA的重要组成部分,经过几十年的发展、应用和完善,以其强大的系统描述能力、规范的程序设计结构、灵活的语言表达风格和多层次的仿真测试手段,在电子设计领域受到了普遍的认同和广泛的接受,成为现代EDA领域的
2、首选硬件设计语言。专家认为,在新世纪中,VHDL与Verilog语言将承担起几乎全部的数字系统设计任务。,3,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,库(LIBRARY)存放预先设计好的程序包和数据的集合体。 程序包(PACKAGE)将已定义的数据类型、元件调用说明及子程序收集在一起,供VHDL设计实体共享和调用,若干个包则形成库。,IEEE库包括:STD_LOGIC_1164 STD_LOGIC_ARITH是SYNOPSYS公司加入IEEE库程序包,包括: STD_LOGIC_SIGNED(有符号数) STD_LOGIC_UNSIGNED(无符号数),1、库、程序包,4
3、,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,STD_LOGIC_SMALL_INT(小整型数) VHDL 87版本使用IEEE STD 1076-1987 语法标准 VHDL 93版本使用IEEE STD 1076-1993 语法标准,例:LIBRARY IEEE USE IEEE.STD_LOGIC_1164.ALL 描述器件的输入、输出端口数据类型中将要用到的IEEE的标准库中的STD_LOGIC_1164程序包。,5,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,格式: ENTITY 实体名 IS 类属参数说明 端口说明 END 实体名;,规则:(1)
4、类属参数说明必须放在端口说明之前,用于指定如矢量位数、延迟时间等参数。例如 GENERIC(m:TIME:=1 ns);-说明m是一个值为1ns的时间参数 则程序语句:tmp1 = d0 AND se1 AFTER m;-表示d0 AND se1经1ns延迟后才送到tem1。,2、实体(ENTITY)说明,6,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,(2)端口说明是描述器件的外部接口信号的说明,相当于器件的引脚说明。其格式为: PORT(端口名,端口名:方向 数据类型名; : 端口名,端口名:方向 数据类型名);,例如:PORT(a,b:IN STD_LOGIC; s:I
5、N STD_LOGIC; y:OUT STD_LOGIC);,7,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,端口方向包括: IN; -输入, 符号: OUT; -输出, 符号: INOUT;-双向, 符号: BUFFER; -具有读功能的输出,符号:,8,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,9,例:用VHDL语言编写的实体声明: library ieee; use ieee.std_logic_1164.all; entity or_gate is port ( a : in bit ; b : in bit ; c: out bit ); end
6、 or_gate ;,上面的实体声明描述了一个或门单元,它有三个引脚a、b、c。给出了三个引脚a、b、c的参数;in和out数据类型是bit。,基本设计单元的实体,用于指明设计基本单元的行为、元件及内部连接关系,即定义设计单元的功能。,结构体的结构: ARCHITECTURE 结构体名 OF 实体名 IS 说明语句;-为内部信号、常数、数据类型、函数定义 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;,3、结构体(ARCHITECTURE),10,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,例如:或门的结构体 ARCHITECTURE or1 OF t
7、emp1 IS SIGNAL y:STD_LOGIC; BEGIN y=a OR b; END ARCHITECTURE or1;,11,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,12,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,4、进程(PROCESS),进程语句属于并行语句,它在VHDL中使用最频繁、最能体现VHDL风格。,进程语句格式: 进程标号:PROCESS (敏感信号参数表) IS 进程说明部分 BEGIN 顺序描述语句 END PROCESS 进程标号;,进程语句是并行处理语句,即各个进程是同时处理的,在一个结构体中多个Process语句是同
8、时并发运行的。,Process语句的特点: 进程结构内部的所有语句都是顺序执行的。 多进程之间,是并行执行的,并可访问构造体或实体中所定义的信号。 进程的启动是由进程标识符process后的信号敏感表所标明的信号来触发进程的活动,也可以用WAIT语句等待一个触发条件的成立。 各进程之间的通信是由信号来传递的。,13,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,例 不含信号敏感表的进程语句,ARCHITECTURE multiple_wait OF tests IS SIGNAL a,b:bit:=0; BEGIN P1:PROCESS BEGIN WAIT ON a; WAI
9、T ON b; WAIT FOR 0ns; WAIT; END PROCESS p1; END ACHITECTURE multiple_wait;,14,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,例 含信号敏感表和WAIT语句的错误程序,ARCHITECTURE sensitivity_list OF tests IS SIGNAL a,b:bit:=0; BEGIN p1:PROCESS(a) BEGIN WAIT ON b; WAIT FOR 0ns; WAIT; END PROCESS p1; END ARCHITECTURE sensitivity_list;,1
10、5,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,例 利用进程语句设计的半加器,ARCHITECTUTE behav OF half_adder IS BEGIN Padder:PROCESS(a,b) BEGIN sum=a XOR b AFTER 5ns; carry=a AND b AFTER 5ns; ENDPROCESS Padder; END behav;,16,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,进程是一个无限循环的硬件行为的描述。当进程执行完最后一个语句时,在敏感信号的触发下,又开始重复执行,这个模块就这样永无修止地工作。但是如果没有敏
11、感信号的变化,这个进程就不会工作。,17,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,把特定的结构体关联(指定给)一个确定的实体,为大型系统的设计提供管理和工程组织。,5、配置(CONFIGURATION),18,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,configuration 配置名 of 实体名 is for 选配结构体名 end for ; end 配置名;,配置:从某个实体的多种结构体描述方式中选择 特定的一个。,19,VHDL语言的基本语句,顺序语句(Sequential Statements) 并行语句(Concurrent Stateme
12、nts),第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,顺序语句,特征: 顺序语句只能出现在进程或子程序、块中 顺序语句描述的系统行为有时序流、控制流、条件分支和迭代算法等 顺序语句用于定义进程、子程序等的算法 顺序语句的功能操作有算术、逻辑运算,信号、变量的赋值,子程序调用等,20,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,顺序语句, WAIT语句; 断言语句; 信号代入语句; 变量赋值语句; IF语句; CASE语句;, LOOP语句; NEXT语句; EXIT语句; 过程调用语句; NULL语句。,21,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,
13、VHDL介绍,并行语句,进程语句 并发信号代入语句 条件信号代入语句 选择信号代入语句 并发过程调用语句 块语句 并行断言语句 Generate 生成语句 元件例化语句,22,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,23,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,VHDL介绍,library ieee; -使用的库 use ieee.std_logic_1164.all;-使用的包 entity and_ent is -名为and_ent的实体 port(a,b: in std_logic; -输入信号为a,b y: out std_logic); -输出信号为y
14、end and_ent; architecture and_str of and_ent is 实体and_ent的结构体,该结构体名称为and_str begin y=a and b; - 逻辑表达式 end and_str;,例:用VHDL描述2输入端与门电路。,LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL ENTITY or1 IS PORT( a,b:IN STD_LOGIC; y:OUT STD LOGIC); END or1; ARCHITECTURE example1 OF or1 IS BEGIN y=a OR b; END example
15、1;,24,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,用VHDL描述基本逻辑器件,【例】两输入端或门的描述,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT(a,b:IN STD_LOGIC; so,co:OUT STD_LOGIC); END h_adder; ARCHITECTURE example2 OF h_adder IS BEGIN so=a XOR b; co=a AND b; END example2;,25,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,用VHDL描述基本逻辑器件,【例】
16、半加器的描述,LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL ENTITY mux21 IS PORT(a,b:IN STD LOGIC; s:IN STD LOGIC; y:OUT STD LOGIC); END mux21; ARCHITECTURE example3 OF mux21 IS BEGIN y=a WHEN s=0 ELSE b; END ARCHITECTURE example3;,26,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,用VHDL描述基本逻辑器件,【例】2选1数据选择器的描述,27,第十讲 组合逻辑电路的VHDL描述、竞争与冒险,用VHDL描述基本逻辑器件,例:四选一电路,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT(inp