版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 硬件描述语言硬件描述语言VHDL第4章 硬件描述语言VHDL4.1 概述4.2 VHDL的基本结构4.3 VHDL的基本知识4.4 VHDL的基本语句4.5 VHDL设计举例4.6 VHDL程序设计进阶4.7 设计实例4.8 其它硬件描述语言简介第四章第四章 硬件描述语言硬件描述语言VHDL4.1 概述概述 VHDL(VHSIC Hardware Description Language)是一种用于数)是一种用于数字系统的设计和测试的硬件描述语言字系统的设计和测试的硬件描述语言,是超高速集成电路硬件描述语是超高速集成电路硬件描述语言。言。 VHDL已成为电路设计的文档记录、设计描
2、述的逻辑综合、电路仿已成为电路设计的文档记录、设计描述的逻辑综合、电路仿真的标准,主要优点如下。真的标准,主要优点如下。1是是IEEE的一种标准,语法比较严格,便于使用、交流和推广。的一种标准,语法比较严格,便于使用、交流和推广。2具有良好的可读性,既可以被计算机接受,也容易被人们所理解。具有良好的可读性,既可以被计算机接受,也容易被人们所理解。3可移植性好。对于综合与仿真工具采用相同的描述,对于不同的平可移植性好。对于综合与仿真工具采用相同的描述,对于不同的平台也采用相同的描述。台也采用相同的描述。4描述能力强,覆盖面广。支持从逻辑门层次的描述到整个系统的描描述能力强,覆盖面广。支持从逻辑门
3、层次的描述到整个系统的描述。述。5是一种高层次的、与器件无关的设计。设计者没有必要熟悉器件内是一种高层次的、与器件无关的设计。设计者没有必要熟悉器件内部的具体结构。部的具体结构。第四章第四章 硬件描述语言硬件描述语言VHDL简介背景美国国防部在美国国防部在80年代初提出了年代初提出了VHSIC(Very High Speed Integrated Circuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。万门级以上的设计,建立一项新的描述方法。1981
4、年提出了一种新的年提出了一种新的HDL,称之为,称之为VHSIC Hardware Description Language,简称为,简称为VHDL,这种语言的成就有两个方面:,这种语言的成就有两个方面:描述复杂的数字电路系统描述复杂的数字电路系统成为国际的硬件描述语言标准成为国际的硬件描述语言标准第四章第四章 硬件描述语言硬件描述语言VHDLVHDL的优点用于设计复杂的、多层次的设计。支持设计库和设计的重复使用用于设计复杂的、多层次的设计。支持设计库和设计的重复使用与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的
5、硬件细节。多的硬件细节。有丰富的软件支持有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设的综合和仿真,从而能在设计阶段就能发现设计中的计中的Bug,缩短设计时间,降低成本。,缩短设计时间,降低成本。更方便地向更方便地向ASIC过渡过渡VHDL有良好的可读性,容易理解。有良好的可读性,容易理解。第四章第四章 硬件描述语言硬件描述语言VHDLVHDL与计算机语言的区别运行的基础运行的基础计算机语言是在计算机语言是在CPURAM构建的平台上运行构建的平台上运行VHDL设计的结果是由具体的逻辑、触发器组成的设计的结果是由具体的逻辑、触发器组成的数字电路数字电路执行方式执行方式计算机语言
6、基本上以串行的方式执行计算机语言基本上以串行的方式执行VHDL在总体上是以并行方式工作在总体上是以并行方式工作验证方式验证方式计算机语言主要关注于变量值的变化计算机语言主要关注于变量值的变化VHDL要实现严格的时序逻辑关系要实现严格的时序逻辑关系第四章第四章 硬件描述语言硬件描述语言VHDL4.2 VHDL的基本结构的基本结构第四章第四章 硬件描述语言硬件描述语言VHDL-eqcomp4 is a four bit equality comparatorLibrary IEEE;use IEEE.std_logic_1164.all;entity eqcomp4 isport(a, b:in
7、std_logic_vector(3 downto 0); equal :out std_logic);end eqcomp4;architecture dataflow of eqcomp4 isbegin equal = 1 when a=b else 0;End dataflow;VHDL 大小写不敏感大小写不敏感eqcomp4.vhd包包实体实体构造体构造体文件名和实体文件名和实体名一致名一致每行;结尾每行;结尾关键字关键字begin关键字关键字end后跟后跟实体名实体名关键字关键字end后跟后跟构造体名构造体名库库第四章第四章 硬件描述语言硬件描述语言VHDL 4.2.1 库(库(L
8、ibrary) 库是专门存放预编译程序包(库是专门存放预编译程序包(Package)的地方。)的地方。库的使用方法是:在每个设计的开头声明选用的库名,用库的使用方法是:在每个设计的开头声明选用的库名,用USE语句声明所选中的逻辑单元。语句声明所选中的逻辑单元。 库的一般格式为库的一般格式为Library 库名;库名;USE 库名库名.逻辑体名;逻辑体名;第四章第四章 硬件描述语言硬件描述语言VHDL例:例:Library IEEE; -选用选用IEEE标准库标准库USE IEEE.std_logic_1164.ALL; -程序包名程序包名 USE IEEE.std_logic_unsigned
9、.ALL; -ALL表示使用库表示使用库/程序包中的所有定义程序包中的所有定义第四章第四章 硬件描述语言硬件描述语言VHDL 4.2.2 实体(实体(ENTITY) 实体用来描述设计的输入实体用来描述设计的输入/输出信号。实体类似于原理图输出信号。实体类似于原理图中的符号(中的符号(Symbol),并不描述模块的具体功能。),并不描述模块的具体功能。 实体的一般格式为实体的一般格式为ENTITY 实体名实体名 IS GENERIC (类属参数说明);(类属参数说明); PORT(端口说明);(端口说明);END 实体名;实体名;注意:实体名可由设计者根据标识符的规则自由命名,但必注意:实体名可
10、由设计者根据标识符的规则自由命名,但必须与须与VHDL程序的文件名相同。方括号中的项表示可以省程序的文件名相同。方括号中的项表示可以省略。略。第四章第四章 硬件描述语言硬件描述语言VHDL1类属参数说明类属参数说明类属参数说明主要用于指定参数。类属参数说明主要用于指定参数。类属说明的一般格式为类属说明的一般格式为GENERIC (常数名:数据类型:设定值;(常数名:数据类型:设定值; 常数名:数据类型:设定值);常数名:数据类型:设定值);例如:例如:GENERIC (wide:int:=32; -说明宽度为说明宽度为32 tmp:int:=5ns);); -说明延迟为说明延迟为5ns第四章第
11、四章 硬件描述语言硬件描述语言VHDL2端口说明端口说明端口说明的一般格式为端口说明的一般格式为PORT(端口名:端口模式(端口名:端口模式 数据类型;数据类型;端口名:端口模式端口名:端口模式 数据类型);数据类型);(1)端口名)端口名 每个外部引脚的名称,在实体中必须是唯一的。每个外部引脚的名称,在实体中必须是唯一的。(2)端口模式)端口模式 用来决定信号的流动方向。端口模式共有输入(用来决定信号的流动方向。端口模式共有输入(IN)、输)、输出(出(OUT)、双向()、双向(INOUT)和缓冲()和缓冲(BUFFER)四种类型,其默)四种类型,其默认(缺省)模式为输入模式。认(缺省)模式
12、为输入模式。 (3)端口类型)端口类型 即端口名的数据类型。在即端口名的数据类型。在VHDL语言中有多种数据类型,语言中有多种数据类型,但在逻辑电路中一般只用到以下几种:但在逻辑电路中一般只用到以下几种:BIT和和BIT_VECTOR、STD_LOGIC和和STD_LOGIC_VETOR 。第四章第四章 硬件描述语言硬件描述语言VHDLOut与Buffer的区别Entity test1 is port(a: in std_logic; b,c: out std_logic ); end test1; architecture a of test1 is begin b = not(a); c
13、= b;-Error end a;Entity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b = not(a); c = b; end a;第四章第四章 硬件描述语言硬件描述语言VHDL例例 全加器的端口如图所示,则其端口的全加器的端口如图所示,则其端口的VHDL语言描述如语言描述如下。下。 ENTITY Full_adder ISPORT( a,b,c: IN BIT ; sum,carry: OUT
14、BIT ); END Full_adder; 全加器的端口图全加器的端口图第四章第四章 硬件描述语言硬件描述语言VHDL 4.2.3 结构体(结构体(ARCHITECTURE) 结构体用来描述设计的具体内容。此时可将实体视为“黑盒子”(Black Box),即只知道其外貌却不明确其内部逻辑。结构体则具体描述实体的功能以及如何实现这些功能。结构体是设计描述的核心。 结构体的一般格式为ARCHITECTURE 结构体名 OF 实体名 IS 定义语句;BEGIN 功能描述语句;END 结构体名;第四章第四章 硬件描述语言硬件描述语言VHDL结构体(Architecture)描述实体的行为结构体有三种
15、描述方式行为描述(behavioral)数据流描述(dataflow)结构化描述(structural)第四章第四章 硬件描述语言硬件描述语言VHDL结构体行为描述Architecture behavioral of eqcomp4 is begincomp: process (a,b) beginif a=b then equal = 1; else equal =0;end if; end process comp;end behavioral ;高层次的功能描述,不必考虑在电路中到底是怎样实现的。第四章第四章 硬件描述语言硬件描述语言VHDL结构体数据流描述描述输入信号经过怎样的变换得到
16、输出信号Architecture dataflow1 of eqcomp4 is begin equal = 1 when a=b else 0;end dataflow1;Architecture dataflow2 of eqcomp4 is beginequal = not(a(0) xor b(0) and not(a(1) xor b(1) and not(a(2) xor b(2) and not(a(3) xor b(3);end dataflow2;当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐第四章第四章 硬件描述语言硬件描述语言VHDL结构体结构化描述a
17、rchitecture struct of eqcomp4 isbegin U0:xnor2 port map(a(0),b(0),x(0); U1:xnor2 port map(a(1),b(1),x(1); U2:xnor2 port map(a(2),b(2),x(2); U3:xnor2 port map(a(3),b(3),x(3); U4:and4 port map(x(0),x(1),x(2),x(3),equal);end struct;类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。一般用于大规模电路的层次化设计时。第四章第四章 硬件描述语言硬件
18、描述语言VHDL三种描述方式的比较描述方式优点缺点适用场合结构化描述连接关系清晰,电路模块化清晰电路不易理解、繁琐、复杂电路层次化设计数据流描述布尔函数定义明白不易描述复杂电路,修改不易小门数设计行为描述电路特性清楚明了进行综合效率相对较低大型复杂的电路模块设计第四章第四章 硬件描述语言硬件描述语言VHDL例 全加器的结构体描述。 ARCHITECTURE adder OF Full_adder IS BEGIN sum=a XOR b XOR c; carry=(a AND b) OR (b AND c) OR (a AND c); END adder;注意:结构体名由设计者根据标识符规则自
19、由命名。第四章第四章 硬件描述语言硬件描述语言VHDL4.3 VHDL的基本知识的基本知识 4.3.1 标识符(标识符(Identifiers) 标识符用来为常量、变量、信号、端口、子程序或参数标识符用来为常量、变量、信号、端口、子程序或参数等命名。由英文字母、数字、下划线组成,并必须遵守以等命名。由英文字母、数字、下划线组成,并必须遵守以下规则。下规则。1标识符的第一个字符必须是字母。标识符的第一个字符必须是字母。2英文字母不区分大小写,也可大小写混用。英文字母不区分大小写,也可大小写混用。3最后一个字符不能是下划线,且不允许连续出现两个下最后一个字符不能是下划线,且不允许连续出现两个下划线
20、。划线。4关键字(保留字)不能用作标识符。关键字(保留字)不能用作标识符。5标识符最长可以是标识符最长可以是32个字符。个字符。第四章第四章 硬件描述语言硬件描述语言VHDL 4.3.2 关键字(关键字(Keyword) 关键字(保留字)是VHDL语言中具有特别意义的单词,只能用作固定的用途,用作标识符时会发生编译错误。 第四章第四章 硬件描述语言硬件描述语言VHDL 4.3.3 数据对象(数据对象(Data Objects) VHDL的数据对象主要有常量、变量、信号和文件四种类型,必须“先说明,后使用”。 第四章第四章 硬件描述语言硬件描述语言VHDL 4.3.4 数据类型(数据类型(Ddt
21、d Types)第四章第四章 硬件描述语言硬件描述语言VHDL 类型变换函数 第四章第四章 硬件描述语言硬件描述语言VHDL 4.3.5 运算符运算符 VHDL语言定义了丰富的运算操作符,主要有关系运算符、算术运算符、逻辑运算符、赋值运算符、关联运算符和其他运算符等 第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL4.3.6 属性(属性(Attributes)属性是关于实体、结构体、类型、信号等的特性。一个对象可以同时具有多个属性,利用属性可以使程序更加简明。属性的一般格式为 项目名属性标识符第四章第四章 硬件描述语言硬件描述语言VHDL4.4 VH
22、DL语言的基本语句语言的基本语句 4.4.1 顺序语句 4.4.2 并行语句第四章第四章 硬件描述语言硬件描述语言VHDL 4.4.1 顺序顺序(Sequential)语句语句1. IF语句语句2CASE语句语句3LOOP语句语句4NEXT语句语句5EXIT语句语句6等待(等待(WAIT)语句)语句7空操作(空操作(NULL)语句)语句第四章第四章 硬件描述语言硬件描述语言VHDL1.IF语句IF语句是根据所指定的条件来确定执行哪些语句,通常有以下三种类型。(1)用作门阀控制时的IF语句书写格式为IF (条件) THEN 顺序处理语句;END IF;第四章第四章 硬件描述语言硬件描述语言VHD
23、L(2)用作二选择控制时的IF语句书写格式为 IF (条件) THEN 顺序处理语句1; ELSE 顺序处理语句2; END IF;第四章第四章 硬件描述语言硬件描述语言VHDL(3)用作多选择控制时的IF语句书写格式为 IF 条件1 THEN 顺序处理语句1; ELSIF 条件2 THEN 顺序处理语句2; ELSIF 条件N-1 THEN 顺序处理语句N-1; ELSE 顺序处理语句N; END IF;第四章第四章 硬件描述语言硬件描述语言VHDL例例: 使用使用IF语句描述如图所示的语句描述如图所示的2选选1电路电路 LIBRARY IEEE;USE IEEE.STD_LOGIC_116
24、4.ALL;ENTITY mux2 IS PORT(a,b,en:IN BIT; c:OUT BIT );END mux2;ARCHITECTURE aa OF mux2 ISBEGIN PROCESS(a,b) BEGIN c=b; IF (en=1) THEN c=a; END IF; END PROCESS; END aa;第四章第四章 硬件描述语言硬件描述语言VHDL例例:用用IF-THEN-ELSE语句描述同样的语句描述同样的2选选1电路电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux2 IS PORT(a,b,en:IN B
25、IT; c:OUT BIT);END mux2;ARCHITECTURE aa OF mux2 ISBEGIN PROCESS(a,b) BEGIN IF (en=1) THEN c=a; ELSE c=b; END IF; END PROCESS;END aa;第四章第四章 硬件描述语言硬件描述语言VHDL例例: 用用IF-THEN-ELSIF-THEN-ELSE语句描述如图所示的语句描述如图所示的4选选1电路电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT( input:IN STD_LOGIC_VECTOR(3
26、DOWNTO 0); en:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC);END mux4;ARCHITECTURE aa OF mux4 ISBEGIN PROCESS(input,en) BEGIN IF (en=00) THEN y=input(0); ELSIF (en=01) THEN y=input(1); ELSIF (en=10) THEN y=input(2); ELSE y=input(3); END IF; END PROCESS;END aa; 第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言
27、硬件描述语言VHDL例例:用用CASE语句描述如图语句描述如图4.6所示的所示的4选选1电路。电路。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(a,b,i0,i1,i2,i3:IN STD_LOGIC; q:OUT STD_LOGIC);END mux4;ARCHITECTURE bb OF mux4 IS SIGNAL sel:INTEGER RANGE 0 TO 3;BEGIN PROCESS(a,b,i0,i1,i2,i3) BEGIN sel=0; IF (a=1) THEN sel=sel+1; END I
28、F; IF (b=1) THEN selqqqq=i3; END CASE; END PROCESS; END bb; 第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL7空操作(空操作(NULL)语句)语句NULL语句是一种只占位置的空处理操作,执行到该句只是语句是一种只占位置的空处理操作,执行到该句只是使程序走到下一条语句。使程序走到下一条语句。NULL语句的一般格式
29、为语句的一般格式为NULL;第四章第四章 硬件描述语言硬件描述语言VHDL 4.4.2 并行(并行(Concurrent)语句)语句 并行语句又称为并发语句,并行语句又称为并发语句,VHDL语言中的基本并行语句有进程语言中的基本并行语句有进程语句、并行信号赋值语句、条件信号赋值语句、选择信号赋值语句、语句、并行信号赋值语句、条件信号赋值语句、选择信号赋值语句、并行过程调用语句、块语句、元件例化语句和生成语句等,其中最重并行过程调用语句、块语句、元件例化语句和生成语句等,其中最重要的是进程语句。要的是进程语句。 1进程(进程(PROCESS)语句)语句 2并行信号赋值(并行信号赋值(Concur
30、rent Signal Assignment)语句)语句 3条件信号赋值语句(条件信号赋值语句(WHEN-ELSE) 4选择信号赋值(选择信号赋值(Selective Signal Assignment)语句)语句 5块语句(块语句(BLOCK) 6元件例化语句元件例化语句 7生成语句生成语句 8并行过程调用语句并行过程调用语句第四章第四章 硬件描述语言硬件描述语言VHDL 1进程(进程(PROCESS)语句)语句 个个PROCESS语句之间是并行执行的,而进程内部语句语句之间是并行执行的,而进程内部语句之间是顺序执行的。进程语句的一般格式为之间是顺序执行的。进程语句的一般格式为 进程名称:进
31、程名称: PROCESS (敏感信号表)(敏感信号表) 说明部分;说明部分; BEGIN 顺序语句;顺序语句; END PROCESS 进程名称进程名称;第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL例例: 用用WITH SELECT-WHEN语句描述语句描述4选选1数据选择器如下。数据选择器如下。LIBRARY IEEE
32、;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4_1 IS PORT(a,b,c,d:IN STD_LOGIC; s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC );END mux4_1;ARCHITECTURE ee OF mux4_1 ISBEGIN WITH s SELECT y实参表达式实参表达式,形参名形参名=实参表达实参表达式式); 实参表达式可以是一个具体的数值,也可以是一个标识符,实参表达式可以是一个具体的数值,也可以是一个标识符,形参名是当前欲调用的过程中已说明的参数(过程名后跟形参名是当前
33、欲调用的过程中已说明的参数(过程名后跟的括号内)。与元件例化语句相似,形参与实参之间的对的括号内)。与元件例化语句相似,形参与实参之间的对应关系有位置关联和名字关联。应关系有位置关联和名字关联。 当过程调用语句出现在进程语句中时,此时它作为顺序语句当过程调用语句出现在进程语句中时,此时它作为顺序语句执行;直接出现在结构体或块语句中时,按并行语句执行。执行;直接出现在结构体或块语句中时,按并行语句执行。第四章第四章 硬件描述语言硬件描述语言VHDL4.5 VHDL设计举例设计举例略第四章第四章 硬件描述语言硬件描述语言VHDL46 VHDL程序设计进阶程序设计进阶 4.6.1 子程序、程序包及配
34、置子程序、程序包及配置 4.6.2 VHDL的结构描述方法的结构描述方法第四章第四章 硬件描述语言硬件描述语言VHDL 4.6.1 子程序、程序包及配置子程序、程序包及配置 1子程序(SUBPROGRAM) 2程序包(PACKAGE) 3配置(CONFIGURATION) 第四章第四章 硬件描述语言硬件描述语言VHDL1子程序(SUBPROGRAM)子程序是由一组顺序语句组成,并能将处理结果返回主程序的程序模块,可反复调用。VHDL语言提供了过程(PROCEDURE)和函数(FUNCTION)两种子程序。过程和函数的区别在于过程调用是一个语句,而函数调用是一个表达式。函数只能用于计算数值,而不
35、能用于改变与参数相关的值,参数只能是IN的信号或常数,过程可以改变与参数相关的值,参数为IN、OUT、INOUT方式的信号、变量或常数。第四章第四章 硬件描述语言硬件描述语言VHDL2程序包(PACKAGE)VHDL语言提供了程序包结构,在程序包中定义的类型、元件、函数、过程及说明,可以供其它设计单元调用。程序包通常由说明和可选的包体两部分组成。程序包说明用来声明包中的类型、元件、函数和子程序,包体用来存放说明中的函数和子程序。程序包说明的一般格式为 PACKAGE 程序包名 IS 说明部分; END 程序包名;程序包包体的一般格式为 PACKAGE BODY 程序包名 IS 说明部分; EN
36、D 程序包名;第四章第四章 硬件描述语言硬件描述语言VHDL3配置(CONFIGURATION)配置也叫组态,用于描述层与层之间的连接关系、实体与结构体之间的连接关系。在仿真设计中,利用配置语句来选择不同的结构体,以便进行性能比较。配置就像网线,将所需的结构体连接到每一个实体中。配置的方法有体内配置、体外配置和默认配置3种形式。在VHDL语言中,若没有配置语句,则系统回默认所配置的结构体为WORK库中当前的结构体。体外配置语句的一般格式为 CONFIGURATION 配置名 OF 实体名 IS FOR 结构体名 END FOR; 配置语句; END 配置名;第四章第四章 硬件描述语言硬件描述语
37、言VHDL4.6.2 VHDL的结构描述方法的结构描述方法1行为(行为(BEHAVIOR)描述)描述 2数据流(DATAFLOW)描述3结构(STRUCTURE)描述第四章第四章 硬件描述语言硬件描述语言VHDL1行为(BEHAVIOR)描述行为描述表示输入与输出之间的转换的行为,不包括任何结构信息。例4.6.1 对于图4.1所示的全加器,其行为描述如下。LIBRARY IEEE;USE IEEE.SD_LOGIC_1164.ALL;ENTITY full_aTdder1 IS PORT(a,b,c:IN BIT; sum,carry:OUT BIT);END full_adder1;ARCH
38、ITECTURE behavior OF full_adder1 ISBEGIN PROCESS(a,b,c) BEGIN sum=a XOR b XOR c; carry=(a AND b) OR (b AND c) OR (a AND c); END PROCESS;END behavior; 第四章第四章 硬件描述语言硬件描述语言VHDL2数据流(DATAFLOW)描述例4.6.2 对图4.1所示的一位全加器,其数据流描述如下。 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY full_adder1 IS PORT(a,b,c:IN BIT
39、; sum,carry:OUT BIT);END full_adder1;ARCHITECTURE dataflow OF full_adder1 ISBEGIN sum=a XOR b XOR c; carry=100) THEN A:=1; LUC:=0; ELSE A:=0; END IF; 图4.22 计费模块(JIFEI) 第四章第四章 硬件描述语言硬件描述语言VHDLIF (LC200) THEN NULL; ELSIF (CHEFEI=2000 AND A=1) THEN CHEFEI:=CHEFEI+360; END IF; END IF; FARE=CHEFEI; DISTA
40、NCE=LC; END PROCESS;END AA; 第四章第四章 硬件描述语言硬件描述语言VHDL(2) 转换模块(TRANS)转换模块如图4.23所示。DCLK的频率要比CLK快得多。输入端口ASCORE、BSCORE代表车费和路程,输出端口A0A3(B0B3)分别代表车费(路程)的个、十、百、千。第四章第四章 硬件描述语言硬件描述语言VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY TRANS IS PORT(D
41、CLK:IN STD_LOGIC; ASCORE,BSCORE:IN INTEGER RANGE 0 TO 8000; A0,A1,A2,A3,B0,B1,B2,B3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END TRANS;ARCHITECTURE MIX OF TRANS ISSIGNAL COM1:INTEGER RANGE 0 TO 8000;BEGIN PROCESS(DCLK,ASCORE) VARIABLE COM1A,COM1B,COM1C,COM1D:STD_LOGIC_VECTOR(3 DOWNTO 0); 第四章第四章 硬件描述语言硬件描述语言
42、VHDLBEGIN IF (DCLKEVENT AND DCLK=1)THEN IF(COM1ASCORE)THEN IF(COM1A=9 AND COM1B=9 AND COM1C=9)THEN COM1A:=0000; COM1B:=0000; COM1C:=0000; COM1D:=COM1D+1; ELSIF(COM1A=9 AND COM1B=9)THEN COM1A:=0000; COM1B:=0000; COM1C:=COM1C+1; COM1=COM1+1; 第四章第四章 硬件描述语言硬件描述语言VHDLELSIF(COM1A=9)THEN COM1A:=0000; COM1B
43、:=COM1B+1; COM1=COM1+1; ELSE COM1A:=COM1A+1; COM1=COM1+1; END IF; ELSE A0=COM1A; A1=COM1B; A2=COM1C; A3=COM1D; COM1=0; COM1A:=0000; COM1B:=0000; COM1C:=0000; COM1D:=0000; END IF; END IF; END PROCESS; 第四章第四章 硬件描述语言硬件描述语言VHDLPROCESS(DCLK,BSCORE) VARIABLE COM2:INTEGER RANGE 0 TO 8000; VARIABLE COM2A,CO
44、M2B,COM2C,COM2D:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF (DCLKEVENT AND DCLK=1)THEN IF(COM2BSCORE)THEN IF(COM2A=9 AND COM2B=9 AND COM2C=9)THEN COM2A:=0000; COM2B:=0000; COM2C:=0000; COM2D:=COM2D+1; ELSIF(COM2A=9 AND COM2B=9)THEN COM2A:=0000; COM2B:=0000; COM2C:=COM2C+1; COM2:=COM2+1; 第四章第四章 硬件描述语言硬件描述
45、语言VHDLELSIF(COM2A=9)THEN COM2A:=0000; COM2B:=COM2B+1; COM2:=COM2+1; ELSE COM2A:=COM2A+1; COM2:=COM2+1; END IF; ELSE B0=COM2A; B1=COM2B; B2=COM2C; B3D=A0;DPD=A1;DPD=A2;DPD=A3;DPD=B0;DPD=B1;DPD=B2;DPD=B3;DPNULL; END CASE; END PROCESS;END MIX; 第四章第四章 硬件描述语言硬件描述语言VHDL(4) 选择模块(SE)第四章第四章 硬件描述语言硬件描述语言VHDLL
46、IBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SE IS PORT(CLK:IN STD_LOGIC; A:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END SE;ARCHITECTURE MIX OF SE ISBEGIN PROCESS(CLK) 第四章第四章 硬件描述语言硬件描述语言VHDLVARIABLE B:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF(CLKEVENT AND CLK=1)THEN IF(B=111)
47、THEN B:=000; ELSE B:=B+1; END IF; END IF; ) A=B; END PROCESS;END MIX; 第四章第四章 硬件描述语言硬件描述语言VHDL(5) 字形显示模块(DI)第四章第四章 硬件描述语言硬件描述语言VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DI ISPORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END DI;ARC
48、HITECTURE MIX OF DI ISBEGIN 第四章第四章 硬件描述语言硬件描述语言VHDLWITH D SELECT Q=1111110 WHEN 0000, 0110000 WHEN 0001, 1101101 WHEN 0010, 11 11001 WHEN 0011, 0110011 WHEN 0100, 1011011 WHEN 0101, 1011111 WHEN 0110, 1110000 WHEN 0111, 1111111 WHEN 1000, 1111011 WHEN 1001, 0000000 WHEN OTHERS;END MIX; 第四章第四章 硬件描述语言
49、硬件描述语言VHDL3.7.2 数字秒表数字秒表1功能数字秒表显示时、分、秒,能显示0.01s的时间。2总体框图由9个模块组成:100进制计数器(BAI)、秒计数器(CNT_60)、分计数器(CNT_60)、时计数器(CNT_24)、选择模块(SE)、数据选择模块(MUX8_1)、消抖动模块(DOU)、启停模块(QIT)、字形显示模块(DI)。模块BAI为100进制计数器,输出的数值为0.01s和0.1s。模块CNT_60为60进制计数器,用于秒、分的计数。模块CNT_24为24进制计数器,用于小时的计数。模块DOU为同步消抖动电路。模块SE产生数码管的片选信号。模块MUX8_1根据不同的片选
50、信号,送出不同的要显示的数据。模块DI为七段译码器,显示09的字形。模块QIT控制表的计数。第四章第四章 硬件描述语言硬件描述语言VHDL第四章第四章 硬件描述语言硬件描述语言VHDL(1) 100进制计数器模块(BAI)第四章第四章 硬件描述语言硬件描述语言VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BAI IS PORT(CLR,CLK:IN STD_LOGIC; BAIH,BAIL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OU
51、T STD_LOGIC);END BAI;ARCHITECTURE AA OF BAI ISBEGIN CO=1 WHEN(BAIH=1001 AND BAIL=1001) ELSE 0; PROCESS(CLR,CLK) 第四章第四章 硬件描述语言硬件描述语言VHDLBEGIN IF (CLR=0)THEN BAIH=0000; BAIL=0000; ELSIF (CLKEVENT AND CLK=1) THEN IF (BAIL=1001)THEN BAIL=0000; IF (BAIH=1001) THEN BAIH=0000; ELSE BAIH=BAIH+1; END IF; ELS
52、E BAIL=BAIL+1; END IF; END IF; END PROCESS;END AA; 第四章第四章 硬件描述语言硬件描述语言VHDL(2) 模块CNT_60第四章第四章 硬件描述语言硬件描述语言VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT_60 IS PORT(CLR,CLK,EN:IN STD_LOGIC; QH,QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END CNT_60
53、;ARCHITECTURE AA OF CNT_60 ISBEGIN CO=1 WHEN (QH=0101 AND QL=1001 AND EN=1) ELSE 0; PROCESS(CLR,CLK) BEGIN 第四章第四章 硬件描述语言硬件描述语言VHDLIF (CLR=0) THEN QH=0000; QL=0000; ELSIF (CLKEVENT AND CLK=1) THEN IF (EN=1) THEN IF (QL=1001) THEN QL=0000; IF (QH=0101)THEN QH=0000; ELSE QH=QH+1; END IF; ELSE QL=QL+1;
54、END IF; END IF; END IF; END PROCESS;END AA; 第四章第四章 硬件描述语言硬件描述语言VHDL(3) 模块CNT_24第四章第四章 硬件描述语言硬件描述语言VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT_24 IS PORT(CLR,CLK,EN:IN STD_LOGIC; QH,QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT_24;ARCHITECTURE AA OF CNT_24
55、 ISBEGIN PROCESS(CLR,CLK) BEGIN IF (CLR=0) THEN QH=0000; QL=0000; 第四章第四章 硬件描述语言硬件描述语言VHDLELSIF (CLKEVENT AND CLK=1) THEN IF (EN=1) THEN IF (QH=0010 AND QL=0011) THEN QH=0000; QL=0000; ELSIF (QL1001) THEN QL=QL+1; ELSE QL=0000; QH=QH+1; END IF; END IF; END IF; END PROCESS;END AA; 第四章第四章 硬件描述语言硬件描述语言V
56、HDL(4) 模块DOULIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dou IS PORT(din,clk:IN std_logic; dout:OUT std_logic);END dou;第四章第四章 硬件描述语言硬件描述语言VHDLARCHITECTURE aa OF dou ISSIGNAL x,y:std_logic;BEGIN PROCESS(clk) BEGIN IF clkevent and clk=1 THEN x=din; y=x; END IF; dout=x and (not y); END PROCESS;END a
57、a; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;第四章第四章 硬件描述语言硬件描述语言VHDLENTITY dou IS PORT(din,clk:IN std_logic; dout:OUT std_logic);END dou;ARCHITECTURE aa OF dou ISSIGNAL x,y:std_logic;BEGIN PROCESS(clk) BEGIN IF clkevent and clk=1 THEN x=din; y=x; END IF; 第四章第四章 硬件描述语言硬件描述语言VHDLdout=x and (not y); END
58、 PROCESS;END aa; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dou IS PORT(din,clk:IN std_logic; dout:OUT std_logic);END dou;ARCHITECTURE aa OF dou ISSIGNAL x,y:std_logic;BEGIN PROCESS(clk) BEGIN IF clkevent and clk=1 THEN x=din; y=x; END IF; 第四章第四章 硬件描述语言硬件描述语言VHDLdout=x and (not y); END PROCESS;
59、END aa; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dou IS PORT(din,clk:IN std_logic; dout:OUT std_logic);END dou;ARCHITECTURE aa OF dou ISSIGNAL x,y:std_logic;BEGIN PROCESS(clk) BEGIN IF clkevent and clk=1 THEN x=din; y=x; END IF; dout=x and (not y); END PROCESS;END aa; 第四章第四章 硬件描述语言硬件描述语言VHDL(
60、5) 模块SE第四章第四章 硬件描述语言硬件描述语言VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SE IS PORT(CLK:IN STD_LOGIC; A:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END SE;ARCHITECTURE MIX OF SE ISBEGIN PROCESS(CLK) 第四章第四章 硬件描述语言硬件描述语言VHDLVARIABLE B:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF(CL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026安徽面试题型及答案
- 巷道维修现场安全检查培训课件
- 《物联网概论》课件 5.3传感网与EPC系统
- 高一期末高效复习规划
- 汽车测评与选购(项目七任务三、四)
- 2026福建中考语文作文考前专项练习(题目+范文)
- 京东业务受理外包合同
- 2025高考云南卷生物真题
- 宜春保险从业冲刺押题
- 2025年房地产金融与投资考试试题及答案详解
- GB/T 8539-2000齿轮材料及热处理质量检验的一般规定
- GB/T 6175-20162型六角螺母
- 新奥法、新意法及洞口施工
- 智商、情商和逆商与生涯发展课件
- 基础物理实验课件-非线性电路中的混沌现象
- 电动机检修保养记录表
- 基于单片机的智能火灾报警系统毕业论文
- 培训道路运输从业考试系统
- 中医眼科学复习重点整理
- 行动研究法(课堂PPT)
- SL19-2014水利基本建设项目竣工财务决算编制规程
评论
0/150
提交评论