吉林大学数字电路设计基础课程 — VHDL 2_第1页
吉林大学数字电路设计基础课程 — VHDL 2_第2页
吉林大学数字电路设计基础课程 — VHDL 2_第3页
吉林大学数字电路设计基础课程 — VHDL 2_第4页
吉林大学数字电路设计基础课程 — VHDL 2_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、一、vhdlvhdl概述概述 vhdl是超高速集成电路硬件描述语言是超高速集成电路硬件描述语言 ( (very high speed integrated circuit hardware description language)的英文缩写。的英文缩写。 语法和风格语法和风格:(1 1)类似与现代高级编程语言,如)类似与现代高级编程语言,如c语言。语言。(2)vhdl描述的是硬件,它包含许多硬件特描述的是硬件,它包含许多硬件特有的结构。有的结构。u vhdl语言的程序结构语言的程序结构 library(use)- 库库 package - 程序包集合程序包集合 entity - 实体实体

2、 architecture - 结构体结构体 configuration - 配置语句配置语句一、一、vhdl概述概述端口端口逻辑关系逻辑关系一、一、vhdl概述概述include “stdio.h”; include “math.h”;int main(void) int a,b,c; a=8; b=9; c=a+b; return c; library std; use std.standard.all;entity and2 is port( a,b : in bit;c : out bit);end and2;architecture a1 of and2 is begin c = a

3、 and b; end a1;vhdl程序程序 c程序程序 “实体实体”and2结构体结构体a1package (程序包)包含很多子元件,相当于子程序。(程序包)包含很多子元件,相当于子程序。 library(库)是(库)是package(程序包)的集合。(程序包)的集合。作用:声明在实体和结构体定义中将用到的作用:声明在实体和结构体定义中将用到的 数据类型、元件或子程序等。数据类型、元件或子程序等。声明格式:声明格式: library ieee; use ieee.std_logic_1164.all一、一、vhdl概述概述(1)library和和package部部分分 作用:作用: ent

4、ity(实体)用于定义电路的(实体)用于定义电路的外观,即外观,即i/o端口的类型和数量。端口的类型和数量。 定义格式:定义格式:entity 实体名实体名 is port( a : in bit; b : in bit; c : out bit);end 实体名实体名; ;(2)entity定义区定义区一、一、vhdl概述概述端口名端口名数据类型数据类型端口模式端口模式端口模式(端口模式(mode)有以下几种类型)有以下几种类型: in ;out;inout ;buffer 端口模式可用下图说明:(黑框代表一个端口模式可用下图说明:(黑框代表一个“设计实体设计实体”或模或模块)块) in o

5、ut buffer inout一、一、vhdl概述概述(3)architecture定义区定义区实体的实现。即说明电路执行什么动作或实现功能。实体的实现。即说明电路执行什么动作或实现功能。定义格式:定义格式: architecture 结构体名结构体名 of 实体实体名名 is 声明语句;声明语句; begin 并行描述语句;并行描述语句;end 结构体名结构体名;一、一、vhdl概述概述(内部信号、变量、常数等声明内部信号、变量、常数等声明)程序的核心部分程序的核心部分(4)configuration部分部分 作用:作用: 当实体有多个结构体时,利用当实体有多个结构体时,利用configur

6、ation语句来为实体选择一个结构体,语句来为实体选择一个结构体,作为内部电路结构。作为内部电路结构。定义格式:定义格式:configuration 配置名配置名 of 实体名实体名 isfor 选用的结构体名选用的结构体名end for;end configuration 配置名配置名 ;一、一、vhdl概述概述实体实体 (a,b,c)结构体结构体a1结构体结构体a2configuration a1库声明库声明程序包声明程序包声明结构框图workingabc结构体结构体a1一、一、vhdl概述概述u 标识符的定义原则:标识符的定义原则:(1)标识符由)标识符由字母字母、数字数字和和下划线下划

7、线组成,组成,a7_;(2)在标识符)在标识符不区分大小写不区分大小写,ab和和ab是一是一样的;样的;(3)第一个字符第一个字符必须是字母,即必须是字母,即a666;(4)不允许有)不允许有两个连续的下划线两个连续的下划线,a_b错错误;误;(5)末尾末尾不能是下划线,不能是下划线,mname_错误;错误;(6)标识符不能和关键字相同)标识符不能和关键字相同,如如entity,is等。等。一、一、vhdl概述概述u 设计范例:设计范例:2输入与门输入与门abc电路真值表电路真值表abc000100010111一、一、vhdl概述概述library ieee;use ieee.std_logi

8、c_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity and2 is port( a : in bit; b : in bit; c : out bit);end and2;-实体定义结束。实体定义结束。 双减号双减号-为为vhdl程序的程序的注释符,类似注释符,类似c语言中的语言中的/注释符。注释符。一、一、vhdl概述概述architecture na of and2 is begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0 e

9、lse 0 when a=0 and b = 1 else 1; - 符号符号=为信号直接赋值符。为信号直接赋值符。 end na; - 结构体结构体na architecture nb of and2 is begin c = a and b; - and 为逻辑与操作为逻辑与操作end nb; -结构体结构体nb一、一、vhdl概述概述configuration s1 of and2 isfor naend for;end configuration s1;-结构体配置结束。结构体配置结束。一、一、vhdl概述概述二、二、vhdl数据类型与数据对象数据类型与数据对象在在vhdl程序中,我们

10、经常会遇到这样的语句:程序中,我们经常会遇到这样的语句:signal a : std_logic;variable b : std_logic_vector(7 downto 0); constant c : integer;数据对象类型数据对象类型数据类型数据类型数据对象名数据对象名u 数据对象数据对象常常 量量信信 号号变变 量量(data objects)二、二、vhdl数据类型与数据对象数据类型与数据对象 信号信号定义格式定义格式signal 信号名称信号名称: 数据类型数据类型 :=初始值初始值;信号相当于电路内部元件之间的物理连线信号相当于电路内部元件之间的物理连线, ,因因此信号

11、的赋值有一定的延迟时间此信号的赋值有一定的延迟时间. .二、二、vhdl数据类型与数据对象数据类型与数据对象l信号赋值的语法格式为:信号赋值的语法格式为:信号名信号名 = 表达式;表达式;如:如:signal s1 : std_logic_vector(3 downto 0); s1 = “0000”;u 数据对象数据对象常常 量量信信 号号变变 量量(data objects)二、二、vhdl数据类型与数据对象数据类型与数据对象端端 口口当做当做“操作变操作变量量” 使用使用u vhdl语言中的基本数据类型语言中的基本数据类型逻辑类型逻辑类型数值类型数值类型布尔代数布尔代数(boolean)

12、位位 (bit)标准逻辑标准逻辑 (std_logic)整数整数 (integer)实数实数 (real)二、二、vhdl数据类型与数据对象数据类型与数据对象n 逻辑数据逻辑数据类型类型type bit is (0, 1); type boolean is (false, true) ;二、二、vhdl数据类型与数据对象数据类型与数据对象 标准逻辑类型标准逻辑类型type std_logic is ( u, -undefined x , -forcing unknown 0 , -forcing 0 1 , -forcing 1 z , -hign impedance w, -weak unk

13、nown l , -weak 0; h , -weak 1;- , -dont care;)二、二、vhdl数据类型与数据对象数据类型与数据对象 标准逻辑类型对数字逻辑电路的逻辑特性描述更加完整,真实,因此在vhdl程序中,对逻辑信号的定义通常采用标准逻辑类型l 逻辑序列逻辑序列位位序列 (bit_vector)标准逻辑标准逻辑序列 (std_logic_vector)二、二、vhdl数据类型与数据对象数据类型与数据对象多个多个bit类型的类型的“组合组合”signal d: std_logic_vector( 7 downto 0);signal s: bit_vector ( 0 to 3

14、);序列的范围大小声明方式:序列的范围大小声明方式:to(序号升),(序号升), downto(序号降)(序号降)l 序列的使用序列的使用二、二、vhdl数据类型与数据对象数据类型与数据对象可表示一个可表示一个8位二进制数位二进制数d7d6d5d4d3d2d1d0可表示一个可表示一个4位开关变量位开关变量s0s1s2s3l 序列的分解与合成序列的分解与合成signal a: std_logic_vector( 3 downto 0);signal b: std_logic_vector( 0 to 3);signal c: std_logic_vector( 0 to 1);signal d:

15、 std_logic_vector( 1 downto 0);分解:分解:c= a( 2 downto 1); -分解符分解符“to” “downto”合成:合成:b= a(3) & d & 1; -合成符合成符 &二、二、vhdl数据类型与数据对象数据类型与数据对象l vhdl中的运算符中的运算符二、二、vhdl数据类型与数据对象数据类型与数据对象 算术运算符:算术运算符: +加加-减减*乘乘/除除*乘方乘方mod 求模求模 rem 求余求余 abs求绝对值求绝对值 逻辑运算:逻辑运算: and 逻辑与逻辑与or逻辑或逻辑或nand与非与非nor 或非或非xor 异或

16、异或xnor同或同或not 逻辑非逻辑非关系运算符:关系运算符: = 等于等于/= 不等于不等于小于小于大于大于= 大于或等于大于或等于注:其中注:其中=操作符也操作符也用于表示信号的赋值用于表示信号的赋值操作。操作。 &连接符连接符,将两个数将两个数据对象或矢量连接成维据对象或矢量连接成维数更大的矢量,它可给数更大的矢量,它可给代码书写带来方便。代码书写带来方便。 例如:例如: vabc=a & b & c;如果如果a=1 , b=0 , c=1 ,则则 vabc=“101” 。二、二、vhdl数据类型与数据对象数据类型与数据对象三、三、vhdl命令语句命令语句并列语

17、句并列语句顺序语句顺序语句vhdl命令语句命令语句并列语句并列语句 并列语句一般处于进程(并列语句一般处于进程(process)的外)的外部。所有并列语句都是并行执行的,即与部。所有并列语句都是并行执行的,即与它们出现的先后次序无关。它们出现的先后次序无关。 并列语句有三个特点:并列语句有三个特点:a. 所有语句的执行是并行的;所有语句的执行是并行的;b. 每条语句的执行和其所在的位置无关;每条语句的执行和其所在的位置无关;c. 并列语句的输出仅仅依赖于输入,没有其并列语句的输出仅仅依赖于输入,没有其它的限制条件。它的限制条件。 并列语句并列语句(1)直接赋值语句直接赋值语句:= 赋值运算符赋

18、值运算符(2)条件赋值语句条件赋值语句:when-else(3)选择赋值语句选择赋值语句:with-select-when(4) process(进程)语句(5) block(块)语句(6) 函数调用语句(后面章节讲)(7) component(元件)例化语句(8)for-generate语句直接赋值语句直接赋值语句直接赋值语句的格式:直接赋值语句的格式:signal_name=expression;如:如:signal a,b: std_logic_vector(7 downto 0); a=”0000000”; b=”1000000”; b= a;when-else条件赋值语句条件赋值语句

19、语法格式为:语法格式为:label: signal_name= expression1 when logic_expression1 else expression2 when logic_expression2 else expressionn;例如:例如:f=1 when (x1=x2) else 0;with-select-when选择式赋值选择式赋值label:with expression selectsignal_name=expression1 when constant_value1 , expression2 when constant_value2 ;signal tmp

20、: std_logic_vector(1 downto 0);begintmp=x&y;with tmp selectz= 1 when “01”, 1 when 10, 0 when others;end a;with-select-when选择式赋值选择式赋值四、设计实例四、设计实例(1)数据选择器)数据选择器4选选1 mux abcdzs0s1library ieee;use ieee.std_logic_1164.all;entity mux41 is port(a,b,c,d: in std_logic; sel : in std_logic_vector(1 downto 0); dout : out std_logic);end mux41;architecture archmux of mux41 is begin dout=a when sel=00 else b when sel=01 else c when sel=“10 else d when others;end archmux; (2)译码器)译码器a. 38译码器译码器38译码器译码器a6a7a5a4a3a2a1a0y2y1y0enlibrary ieee;use ie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论