第4章_VHDL基础_第1页
第4章_VHDL基础_第2页
第4章_VHDL基础_第3页
第4章_VHDL基础_第4页
第4章_VHDL基础_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

1、第第 4 章章VHDL基础基础VHDL结构结构VHDL要要素素VHDL常用语句常用语句基本逻辑电路设计基本逻辑电路设计什么是什么是VHDL? VHDL是超高速集成电路硬件描述语言是超高速集成电路硬件描述语言 (Very High Speed Integrated Circuit Hardware Description Language)的英文缩写。的英文缩写。4.2VHDL结构结构1. VHDL1. VHDL基本结构基本结构库(Library)程序包(Package)实体(Entity)结构体(Architecture)配置(Configuration)-以下为两输入与门的以下为两输入与门的

2、VHDL代码代码library ieee;use ieee.std_logic_1164.all;entity and2 isport (a, b : in bit; y : out bit);end and2;architecture a1 of and2 isbegin y = a and b;end a1;-每条语句以分号结束每条语句以分号结束程序包实体结构体库and2.vhd在在Quartus II中,该程中,该程序的文件名与实体名序的文件名与实体名一致。一致。 2. 2. 库和程序包库和程序包 (1 1)IEEEIEEE库:库:包括包括STD_LOGIC_1164、STD_LOGIC

3、_ARITH、 STD_LOGIC_SIGNED、STD_LOGIC_UNSIGNED 等等4个常用程序包;个常用程序包; (2 2)STDSTD库:库:包括包括STANDARD和和TEXTIO等程序包;等程序包; (3 3)WORKWORK库:库:用户库;用户库; (4)VITALVITAL库:库:仿真库。仿真库。 库:是用于存放预先编译好的程序包。库:是用于存放预先编译好的程序包。程序包:定义基本的常数,数据类型,元件及子程序等。程序包:定义基本的常数,数据类型,元件及子程序等。 预先编译预先编译std_logicstd_logic_vector被隐形打开被隐形打开库和程序包的语法:库和程

4、序包的语法: library ;use .all ; 一般一般VHDL代码中库和程序包的调用语句:代码中库和程序包的调用语句:library ieee ;use ieee.std_logic_1164.all ; use ieee.std_logic_arith.all; use ieee.std_logic_signed.all;use ieee.std_logic_unsigned.all;-最常用 -计数器常用 3. 3. 实体实体 实体作为一个设计实体作为一个设计对象的表层设计单元,对象的表层设计单元,其功能其功能是对这个设计对象与外部电路进行接口描述,是设计是对这个设计对象与外部电路

5、进行接口描述,是设计对象对外的一个通信界面。对象对外的一个通信界面。实体的语句格式:实体的语句格式:entity e_name is port ( p_name : port_m data_type; . p_name : port_m data_type );end entity e_name; entity 实体名 is port( a : in bit; b : in bit; y : out bit);end 实体名; 端口名端口名 数据类型数据类型 端口模式端口模式aby? 端口模式端口模式有以下几种类型:(方框代表一个设计实体) in out buffer inout4. 4. 结

6、构体结构体 结构体用于描述设计对象的内部结构以及实体端结构体用于描述设计对象的内部结构以及实体端口间的逻辑关系。口间的逻辑关系。结构体的语句格式:结构体的语句格式:architecture arch_name of e_name is 说说明明语语句句begin 功能描述功能描述语语句句end architecture arch_name ; 进程语句(PROCESS)块语句(BLOCK)体体结结构构说说明明语语句句功功能能描描述述语语句句元件例化语句子程序调用语句信号赋值语句常数说明数据类型说明信号说明例化元件说明子程序说明并行语句并行语句5. 5. 配置配置 配置配置主要把特定的结构体指定

7、给一个确定的实体。主要把特定的结构体指定给一个确定的实体。利用配置使仿真器为同一实体找到较合适的结构体描述利用配置使仿真器为同一实体找到较合适的结构体描述方式并优化设计。方式并优化设计。配置语句的一般格式如下:配置语句的一般格式如下:configuration 配置名配置名 of 实体名实体名 is for 结构体名结构体名 end for;end 配置名配置名; 4.3VHDL要素要素标识符的书写要遵守以下规则:标识符的书写要遵守以下规则:(1 1)标识符由字母、数字和下划线组成,如)标识符由字母、数字和下划线组成,如a7_a7_;(2 2)标识符中不区分大小写,)标识符中不区分大小写,ab

8、ab和和ABAB是一样的;是一样的;(3 3)第一个字符必须是字母,如)第一个字符必须是字母,如a666a666;(4 4)不允许有两个连续的下划线,如)不允许有两个连续的下划线,如a_ _ba_ _b错误;错误;(5 5)末尾不能是下划线,如)末尾不能是下划线,如mname_mname_错误;错误;(6 6)标识符不能和关键字相同)标识符不能和关键字相同, ,如如entity,isentity,is等。等。标识符标识符数据类型数据类型1. 布尔布尔(BOOLEAN)类型类型 TYPE BOOLEAN IS (FALSE,TRUE);-库中该数据类型的定义语句 2. 位位(BIT) 和和位矢量

9、位矢量(BIT_VECTOR)类型类型 TYPE BIT IS (0,1); TYPE BIT_VECTOR IS ARRAY (Natural Range ) OF BIT; 例:signal a ,b : bit; signal x : bit_vector(0 to 7); variable y : bit_vector(3 downto 0); 例:signal f1 : integer range 0 to 15;3. 整数整数(INTEGER)类型:类型: -(231-1) (231-1) (范围)(范围)例:signal a : std_logic;例:variable y :

10、std_logic_vector(3 downto 0); 4. 标准逻辑位标准逻辑位( STD_LOGIC )类型类型 TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);各值的含义是:U-未初始化的,X-强未知的,0-强0,1-强1,Z-高阻态,W-弱未知的,L-弱0,H-弱1, -忽略。 5. 标准逻辑矢量标准逻辑矢量(STD_LOGIC_VECTOR)类型类型 TYPE STD_LOGIC_VECTOR IS ARRAY ( NATURAL RANGE ) OF STD_LOGIC;6. 字符字符(CHARACTER)和字符串和字符串(STRING)类型类型7.

11、 实数实数(REAL)类型:类型:只能仿真不能综合只能仿真不能综合8. 时间时间(TIME)类型:类型:只能仿真不能综合只能仿真不能综合9. 文件文件(FILES)类型类型:一般用于仿真一般用于仿真VHDLVHDL类型转换函数类型转换函数函数名函数名功能功能程序包程序包: STD_LOGIC_1164to_stdlogicvector(A)由由bit_vector类型的类型的A转换为转换为std_logic_vectorto_bitvector(A)由由std_logic _vector转换为转换为bit_vectorto_stdlogic (A)由由bit转换成转换成std_logicto_

12、bit(A)由由std_logic转换成转换成bit程序包程序包: STD_LOGIC_ARITHconv_std_logic_vector(A, 位长位长)将整数将整数integer转换成转换成std_logic_vector类型,类型,A是整数是整数conv_integer(A)将将std_logic_vector转换成整数转换成整数integer程序包程序包: STD_LOGIC_UNSIGNEDconv_integer(A)由由std_logic_vector转换成转换成integerIEEE库类型转换函数表库类型转换函数表 数据对象数据对象1. 1. 常量(常量( CONSTANTC

13、ONSTANT) CONSTANT CONSTANT 常数名:数据类型常数名:数据类型 := := 表达式表达式 ;-常数定义常数定义 constant fbt: std_logic_vector(0 to 5):= 010110 ; - 标准逻辑矢量类型标准逻辑矢量类型 constant datain : integer := 15 ; - 整数类型整数类型 常量范围取决于它被定义的位置常量范围取决于它被定义的位置类似于一种容器,它接受不同数据类型的赋值。类似于一种容器,它接受不同数据类型的赋值。2. 2. 变量变量 ( VARIABLE VARIABLE ) VARIABLE VARIAB

14、LE 变量名变量名 : : 数据类型数据类型 := := 初始值初始值 ; ; -变量定义变量定义variable a : std_logic := 1; -变量变量a定义为标准逻辑位数据类型定义为标准逻辑位数据类型,初始值是初始值是1 目标变量名目标变量名 := := 表达式表达式 ; ; -变量赋值变量赋值 variable x,y : integer range 0 to 15 ; -分别定义变量分别定义变量x和和y为整数类型为整数类型 variable a,b : std_logic_vector(7 downto 0) ; x := 11 ; y := 2 + x ; a := b

15、- b向向a赋值赋值a(0 to 5) := b(2 to 7) ; 局部变量(局部变量(只能在进程和子程序中使用)只能在进程和子程序中使用)3. 3. 信号信号(SIGNAL)-连接线连接线 SIGNAL SIGNAL 信号名:信号名: 数据类型数据类型 := := 初始值初始值 ;-信号定义信号定义 目标信号名目标信号名 = = 表达式表达式; ; -信号赋值信号赋值signal a,b,c,y,z: integer ; .process (a,b,c)begin y = a + b ; z = c a ; y = b ;end process ; 具有硬件特征的特殊具有硬件特征的特殊数据

16、对象数据对象4. 4. 信号与变量的区别信号与变量的区别 信号信号SIGNAL变量变量VARIABLE基本用法基本用法用于作为电路中的信号连线用于作为电路中的信号连线用于作为进程中局部数据存储单元用于作为进程中局部数据存储单元适用范围适用范围在整个结构体内的任何地方都能适用在整个结构体内的任何地方都能适用,不允许在进程或子程序中定义不允许在进程或子程序中定义所定义的进程、函数和过程中使用所定义的进程、函数和过程中使用行为特性行为特性在进程的最后才对信号赋值在进程的最后才对信号赋值立即赋值立即赋值 信号与变量赋值语句功能的比较信号与变量赋值语句功能的比较 赋值符号赋值符号 = := 逻辑操作符逻

17、辑操作符(Logical Operator) 关系操作符关系操作符(Relational Operator) 算术操作符算术操作符(Arithmetic Operator) 符号操作符符号操作符(Sign Operator) 重载操作符重载操作符(Overloading Operator) VHDLVHDL操作符操作符类类 型型操作符操作符功功 能能操作数数据类型操作数数据类型算术操作符算术操作符 + +加加 整数整数 减减 整数整数 & &并置并置 一维数组一维数组 * *乘乘 整数和实数整数和实数( (包括浮点数包括浮点数) ) / /除除 整数和实数整数和实数( (包括浮

18、点数包括浮点数) )MOD取模取模 整数整数 REM取余取余 整数整数 SLL逻辑左移逻辑左移 BIT或布尔型一维数组或布尔型一维数组 SRL逻辑右移逻辑右移 BIT或布尔型一维数组或布尔型一维数组 SLA算术左移算术左移 BIT或布尔型一维数组或布尔型一维数组 SRA算术右移算术右移 BIT或布尔型一维数组或布尔型一维数组 ROL逻辑循环左移逻辑循环左移 BIT或布尔型一维数组或布尔型一维数组 ROR逻辑循环右移逻辑循环右移 BIT或布尔型一维数组或布尔型一维数组 *乘方乘方 整数整数 ABS取绝对值取绝对值 整数整数类类 型型操作符操作符功功 能能操作数数据类型操作数数据类型关系操作符关系

19、操作符 = =等于等于任何数据类型任何数据类型 /= /=不等于不等于任何数据类型任何数据类型 大于大于枚举与整数类型,及对应的一维数组枚举与整数类型,及对应的一维数组 = = =大于等于大于等于枚举与整数类型,及对应的一维数组枚举与整数类型,及对应的一维数组逻辑操作符逻辑操作符 AND与与BIT,BOOLEAN,STD_LOGIC OR或或BIT,BOOLEAN,STD_LOGIC NAND与非与非BIT,BOOLEAN,STD_LOGIC NOR或非或非BIT,BOOLEAN,STD_LOGIC XOR异或异或BIT,BOOLEAN,STD_LOGIC XNOR异或非异或非BIT,BOOL

20、EAN,STD_LOGIC NOT非非BIT,BOOLEAN,STD_LOGIC符号操作符符号操作符 +正正 整数整数 负负 整数整数运算符运算符优先级优先级NOT,ABS,* 最高优先级最高优先级* ,/ ,MOD, REM+(正号正号), (负号负号) + , , & SLL, SLA, SRL, SRA, ROL, ROR =, /=, , , = AND, OR, NAND, NOR, XOR, XNOR最低优先级最低优先级VHDL操作符优先级操作符优先级 4.4VHDL常用语句常用语句VHDL语句顺序语句顺序语句(Sequentia Statements)并行语句并行语句(C

21、oncurrent Statements)顺序语句顺序语句 顺序语句只能出现在进程顺序语句只能出现在进程(Process)和子程和子程序(函数和过程)中。序(函数和过程)中。在VHDL中,一个进程是由一系列顺序语句构成的,在同一设计实体中,所有的进程是并行执行的。然而任一给定的时刻内,在每一个进程内,只能执行一条顺序语句。VHDL有如下六类基本顺序语句:有如下六类基本顺序语句:赋值语句、转赋值语句、转向控制语句、等待语句、子程序调用语句、返回向控制语句、等待语句、子程序调用语句、返回语句和空操作语句。语句和空操作语句。1. 顺序赋值语句顺序赋值语句 顺序赋值语句的功能顺序赋值语句的功能就是将一

22、个值或一个表达式的运算结果传递给某一数据对象,如信号或变量,或由此组成的数组。VHDL设计实体内的数据传递以及对端口界面外部数据的读/写都必须通过赋值语句的运行来实现。 顺序赋值语句包括信号赋值语句和变量赋值语句。顺序赋值语句包括信号赋值语句和变量赋值语句。 变量变量:= 赋值源;赋值源; 信号信号= 赋值源;赋值源; 在信号赋值中,需要注意的是,当在同一进当在同一进程中,同一信号赋值目标有多个赋值源时,信号赋程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的赋值值目标获得的是最后一个赋值源的赋值,其前面相同的赋值目标则不作任何变化。 process (a,b,c,d)

23、begin d=a; x=b+d; d=c; y=b+d; end process; 结果:结果: x=b+a; y=b+c;process (a,b,c) variable d:std_logic_vector(3 downto 0);begin d:=a; x=b+d; d:=c; y=b+d;end process;结果:结果: x=b+a;y=b+c;2. IF语句语句 if 条件句条件句 then 顺序语句顺序语句 end if ; 1if 条件句条件句 then 顺序语句顺序语句elsif 条件句条件句 then 顺序语句顺序语句 .else 顺序语句顺序语句end if; 3if

24、 条件句条件句 then 顺序语句顺序语句 else 顺序语句顺序语句 end if ; 2if 条件句条件句 then if 条件句条件句 then . end if; end if; 4IF语句的语句格式有如下四种:语句的语句格式有如下四种: 【例例3】 library ieee; use ieee.std_logic_1164.all; entity control_stmts is port (a, b, c: in boolean; output: out boolean); end control_stmts; architecture example of control_stm

25、ts is begin process (a, b, c) variable n: boolean; begin if a then n := b; else n := c; end if; output = n; end process; end example; 2选选1数据选择器数据选择器3. CASE语句语句 CASE语句的语句格式:语句的语句格式: CASE IS WHEN = ; . ; ; WHEN = ; . ; ; . WHEN OTHERS = ;END CASE ; 选择值选择值 :单个普通数值:单个普通数值:如如6。数值选择范围:数值选择范围:如如(2 TO 4)(2

26、TO 4),表示取值为,表示取值为2 2、3 3或或4 4。并列数值:并列数值:如如3 3 5 5,表示取值为,表示取值为3 3或者或者5 5。 混合方式:混合方式:以上三种方式的混合。以上三种方式的混合。 【例4-26】用CASE语句描述2选1多路选择器。library ieee;use ieee.std_logic_1164.all;entity mux21 is port( s :in std_logic; a,b :in std_logic; y : out std_logic);end entity mux21;architecture art of mux21 isbeginpro

27、cess(s, a, b,)begin case s is when 0=yyy=x; end case; end process;end art;IF语句和语句和CASE语句,对比?语句,对比?CASE语句中条件并行执行,耗用更多硬件资源,语句中条件并行执行,耗用更多硬件资源,有些逻辑无法描述,但可读性较好。有些逻辑无法描述,但可读性较好。4. LOOP语句语句 LOOP标号标号: LOOP 顺序语句顺序语句 END LOOP LOOP标号标号; LOOP标号:标号: FOR 循环变量循环变量 IN 循环次数范围循环次数范围 LOOP 顺序语句顺序语句 END LOOP LOOP标号标号;

28、【例例】signal a, b, c : std_logic_vector (1 to 3);.for n in 1 to 3 loopa(n) = b(n) and c(n);end loop;此段程序等效于顺序执行以下三个信号赋值操作:此段程序等效于顺序执行以下三个信号赋值操作:a(1)=b(1) and c(1);a(2)=b(2) and c(2); a(3)=b(3) and c(3); 5. NEXT语句:跳出本次循环,开始下一次循环语句:跳出本次循环,开始下一次循环 NEXT; - 第一种语句格式第一种语句格式NEXT LOOP标号;标号; - 第二种语句格式第二种语句格式NEX

29、T LOOP标号标号 WHEN 条件表达式;条件表达式; - 第三种语句格式第三种语句格式 6. EXIT语句语句 :跳出整个循环:跳出整个循环EXIT; - 第一种语句格式第一种语句格式EXIT LOOP标号;标号; - 第二种语句格式第二种语句格式EXIT LOOP标号标号 WHEN 条件表达式;条件表达式; - 第三种语句格式第三种语句格式 7. WAIT语句语句 WAIT; - 第一种语句格式(永远挂起)第一种语句格式(永远挂起)WAIT ON 信号表;信号表; - 第二种语句格式(敏感信号等待语句)第二种语句格式(敏感信号等待语句) WAIT UNTIL 条件表达式;条件表达式; -

30、 第三种语句格式(条件等待语句)第三种语句格式(条件等待语句)WAIT FOR 时间表达式;时间表达式; - 第四种语句格式(超时等待语句)第四种语句格式(超时等待语句) 注意:只有第三种语句格式能综合,其他只能仿真。 WAIT UNTIL clock =1; WAIT UNTIL rising_edge(clock) ; WAIT UNTIL NOT clockSTABLE AND clock =1; WAIT UNTIL clockEVENT AND clock =1; 8. RETURN语句语句 RETURN; - 第一种语句格式第一种语句格式( (过程过程) )RETURN 表达式;表

31、达式; - 第二种语句格式(函数)第二种语句格式(函数) 9. 空操作语句空操作语句 NULL; 相对于传统的软件描述语言,并行语句结构是最具VHDL特色的。在VHDL中,并行语句具有多种语句格式,各种并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。在执行中,并行语句之间可以有信息往来,也可以是相互独立、互不相关的。 并行语句并行语句 结构体中的并行语句模块 生成语句条件信号赋值语句元件例化语句并行信号赋值语句块语句进程语句并行过程调用语句信号信号信号信号信号信号ARCHITECTUREEND ARCHITECTURE并行语句在结构体中的使用格式如下:并行

32、语句在结构体中的使用格式如下:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句说明语句BEGIN 并行语句并行语句END ARCHITECTURE 结构体名结构体名; 1. 并行信号赋值语句并行信号赋值语句 并行信号赋值语句有三种形式:简单信号简单信号赋值语句、条件信号赋值语句和选择信号赋值赋值语句、条件信号赋值语句和选择信号赋值语句。语句。 这三种信号赋值语句的共同点是:赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体内的执行是同时发生的,与它们的书写顺序和是否在块语句中没有关系。 (1)简单信号赋值语句)简单信号赋值语句 赋值目标赋值目标 = 表

33、达式表达式; ; ARCHITECTURE curt OF bc1 ISSIGNAL s1, e, f, g, h : STD_LOGIC ;BEGIN output1 = a AND b ; output2 = c + d ; g = e OR f ; h = e XOR f ; s1 = g ;END ARCHITECTURE curt; (2)条件信号赋值语句)条件信号赋值语句 赋值目标赋值目标 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE . 表达式表达式 ; 【例例】 ENTITY mux IS PORT ( a,b,c

34、: IN BIT ; p1,p2 : IN BIT ; z : OUT BIT ); END; ARCHITECTURE behv OF mux IS BEGIN z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c WHEN OTHERS ; END; (3)选择信号赋值语句)选择信号赋值语句 WITH 选择表达式选择表达式 SELECT 赋值目标信号赋值目标信号 = 表达式表达式 WHEN 选择值选择值, 表达式表达式 WHEN 选择值选择值, . 表达式表达式 WHEN 选择值选择值; 【例例】LIBRARY IEEE;USE IEEE.STD_LOGI

35、C_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder IS PORT ( a, b, c : IN STD_LOGIC; data1,data2 : IN STD_LOGIC; dataout : OUT STD_LOGIC );END decoder;ARCHITECTURE concunt OF decoder IS SIGNAL instruction : STD_LOGIC_VECTOR(2 DOWNTO 0) ; BEGIN instruction = c & b & a ; WITH instructio

36、n SELECT dataout = data1 AND data2 WHEN 000 , data1 OR data2 WHEN 001 , data1 NAND data2 WHEN 010 , data1 NOR data2 WHEN 011 , data1 XOR data2 WHEN 100 , data1 XNOR data2 WHEN 101 , Z WHEN OTHERS ; END concunt ; 2. 进程语句进程语句(1 1)PROCESSPROCESS语句结构的一般表达格式如下:语句结构的一般表达格式如下: 进程标号进程标号: : PROCESSPROCESS (

37、( 敏感信号参数表敏感信号参数表 ) ) ISIS 进程说明部分进程说明部分 BEGINBEGIN 顺序语句顺序语句 END PROCESSEND PROCESS 进程标号进程标号; ; 最具最具VHDL特特色的语句色的语句(2 2)进程结构组成)进程结构组成 进程说明部分顺序描述语句部分敏感信号参数表(3 3)进程要点)进程要点 1. PROCESS为一无限循环语句为一无限循环语句 2. PROCESS中的顺序语句具有明显的顺序中的顺序语句具有明显的顺序/并行运行双重性并行运行双重性 3. 进程必须由敏感信号的变化来启动进程必须由敏感信号的变化来启动 4. 进程语句本身是并行语句进程语句本身

38、是并行语句 5. 信号是多个进程间的通信线信号是多个进程间的通信线 6. 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑一个进程中只允许描述对应于一个时钟信号的同步时序逻辑 【例例】ENTITY mul IS PORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT );END mul;ARCHITECTURE ex OF mul IS SIGNAL temp : BIT;BEGINp_a : PROCESS (a, b, selx) BEGIN IF (selx = 0) THEN temp = a; ELSE temp = b; E

39、ND IF; END PROCESS p_a;p_b: PROCESS(temp, c, sely) BEGIN IF (sely=0) THEN data_out = temp; ELSE data_out = c; END IF; END PROCESS p_b;END ARCHITECTURE ex; 【例例】ENTITY mul IS PORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT );END mul;ARCHITECTURE ex OF mul IS SIGNAL temp : BIT;BEGINp_a : PROCESS

40、 (a, b, selx) BEGIN IF (selx = 0) THEN temp = a; ELSE temp = b; END IF; END PROCESS p_a;p_b: PROCESS(temp, c, sely) BEGIN IF (sely=0) THEN data_out = temp; ELSE data_out y y= 1 ; end case; end process;end behavior;2.数据流描述数据流描述 也称也称RTL描述,认为数据是从输入到输出的观点。描述,认为数据是从输入到输出的观点。比较直观地表述底层逻辑行为。比较直观地表述底层逻辑行为。数据

41、流描述风格是建立在并行信号赋值语句描述基础上的。数据流描述风格是建立在并行信号赋值语句描述基础上的。【例4-19】三输入或门(数据流描述)library ieee;use ieee.std_logic_1164.all;entity gate3or is port(a,b,c:in std _logic y:out std_logic);end gate3or;architecture dataflow of gate3or is begin process(a,b,c) variable temp : std_logic; begintemp:=a or b;y= temp or c; en

42、d process; end dataflow;3. 结构描述结构描述 在多层次的设计中在多层次的设计中, ,高层次的设计可以调用低层次的设计模块高层次的设计可以调用低层次的设计模块, ,或直接用门电路设计单元来构成一个复杂逻辑电路的方法。或直接用门电路设计单元来构成一个复杂逻辑电路的方法。 【例4-20】三输入或门(结构结构描述)建模的焦点是端口及其互连关系,设计中的元件是互连的。library ieee;use ieee.std_logic_1164.all;entity gate2or isport (in1,in2,:in std_logic; out1:out std _ logic

43、);end gate2or;architecture dataflow of gate2or is begin out1 实际实际连接端口名连接端口名,.); - 元件定义语句元件定义语句- 元件例化语句元件例化语句三输入或门library ieee;use ieee.std_logic_1164.all;entity gate3or is port (a,b,c:in std_logic; y:out std _ logic); end gate3or; architecture stucture of gate3or is signal s : std_logic; begin p_a :

44、 process (a, b) begin s=a or b; end process p_a; p_b: process(s, c) begin y=s or c; end process p_b; end architecture; 11【例例】全加器的全加器的VHDLVHDL描述描述 全加器的顶层原理图全加器框图I113coasob1001010110001100cosobanotxnor2and2半加器的逻辑图半加器的真值表-半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY

45、h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = a XOR b ; co = a AND b ; END ARCHITECTURE fh1; -半加器描述半加器描述(2):真值表描述方法:真值表描述方法LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : O

46、UT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL ab : STD_LOGIC_VECTOR(1 DOWNTO 0) ; -定义标准逻辑位矢量数据类型定义标准逻辑位矢量数据类型BEGIN ab so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ; I113coasob1001010110001100cosobanotxnor2and2 -或门逻辑描述或门逻辑描述 LIBRARY

47、 IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b : IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c ain,b=bin,co=d,so=e); -元件元件例化语句例化语句 u2 : h_adder PORT MAP(a=e, co=f, b=cin, so=sum); u3 : or2a PORT MAP(d,f,cout); END ARCHITECTURE fd1; -1位二进制全加器设

48、计:进程间以信号连接位二进制全加器设计:进程间以信号连接 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder ISSIGNAL d,e,f : STD_LOGIC; -定义定义3个信号作为内部的连接线。个信号作为内部的连接线。begin u1: PROCESS (ain,bin) BEGIN e = ain

49、XOR bin ; d= ain AND bin ; END PROCESS u1;U2: PROCESS (e,cin) BEGIN sum= e XOR cin ; f = e AND cin ; END PROCESS u2;u3: PROCESS (d,f) BEGIN cout a(i), output =b(i);END GENERATE gen, . 生成语句产生的生成语句产生的8个相同的电路模块个相同的电路模块 COMPINPUTOUTPUTCOMPINPUTOUTPUTCOMPINPUTOUTPUTa0b0a1b1a7b7. . .4.4基本逻辑电路设计基本逻辑电路设计4.4

50、.1 4.4.1 组合逻辑电路设计组合逻辑电路设计 1基本门电路基本门电路 基本门电路可以使用VHDL中定义的逻辑操作符,实现与门(AND)、或门(OR)、非门(NOT) 、与非门(NAND)、或非门(NOR)、异或门(XOR)及同或门(XNOR)的逻辑,同时可构成这些基本门电路构成的逻辑函数式和逻辑图。library ieee; use ieee.std_logic_1164.all;entity xiti309 is port(a,b,c,d:in std_logic;y3,y2,y1,y0:out std_logic);end;architecture xiti309ar of xiti

51、309 is begin y3=a or (b and c) or (b and d); y2=(a and d) or (b and (not c) and (not d); y1=(a and (not d) or (not b) and c) or (c and d); y0=(a and (not d) or (not a) and (not b) and d) or (b and c and (not d);end xiti309ar;【教材教材P153P153】84218421码转换成码转换成54215421码的码组变换电路码的码组变换电路 3210YABCBDYADBC DYAD

52、BCCDYADABDBC Dlibrary ieee;use ieee.std_logic_1164.all;entity adder is port (ai, bi, ci : in std_logic; si, co : out std_logic); end adder;architecture adder of adder is beginsi= ai xor bi xor ci;cooutpoutpoutpoutpoutpoutpoutpoutpoutp= xxxxxxxx;end case;end process;end architecture art4; 4线线-2线优先编码器

53、真值表线优先编码器真值表 注:表中的注:表中的“x”为任意,类似为任意,类似VHDL中的中的“- -”值。值。 3. 4线线-2线优先编码器线优先编码器【教材教材P179】library ieee;use ieee.std_logic_1164.all; entity encoder is port(a:in std_logic_vector(3 downto 0); y:out std_logic_vector(1 downto 0); eo:out std_logic);end encoder;architecture encoderp of encoder is beginprocess

54、(a) begin if a(3)=1 then y=11; eo=1; elsif a(2)=1 then y=10; eo=1; elsif a(1)=1 then y=01; eo=1; elsif a(0)=1 then y=00;eo=1; elsif a=0000 then y=00; eo=0; end if;end process;end encoderp; 4. 1路路-4路数据分配器路数据分配器【教材教材P182】library ieee;use ieee.std_logic_1164.all;entity mux4t1 is port ( s1, s2:in std_lo

55、gic; datain:in std_logic; a, b, c, d:out std_logic);end mux4t1;architecture one of mux4t1 issignal s:std_logic_vector( 1 downto 0 );signal dataout:std_logic_vector( 3 downto 0 );begin s dataout dataout dataout dataout dataout = zzzz;end case;end process;a=dataout(0);b=dataout(1);c=dataout(2);d=datao

56、ut(3);end architecture one;5. 4选选1数据选择器数据选择器【教材教材P185】library ieee;use ieee.std_logic_1164.all;entity mux41 isport (inp: in std_logic_vector(3 downto 0); a,b:in std_logic; y:out std_logic);end entity mux41;architecture art of mux41 is signal sel :std_logic_vector(1 downto 0);begin sel=b&a;proces

57、s(inp,sel) isbegin if(sel=00) then y=inp(0); elsif (sel=01) then y=inp(1); elsif (sel=11) then y=inp(2); else y led7 led7 led7 led7 led7 led7 led7 led7 led7 led7 led7 =0000000; -不显示不显示 end case; end process;end behv;1. 边沿边沿JK触发器触发器【教材教材P236】library ieee;use ieee.std_logic_1164.all;entity jkcfq is po

58、rt(j,k,clk:in std_logic; q,qb:out std_logic);end entity jkcfq;architecture art of jkcfq issignal q_s,qb_s:std_logic;begin process(clk,j,k) isbeginif (clkevent and clk=1) then4.4.2 4.4.2 时序逻辑电路设计时序逻辑电路设计 if(j=0 and k=1) then q_s=0; qb_s=1;elsif (j=1 and k=0) then q_s=1; qb_s=0;elsif (j=1 and k=1) the

59、n q_s=not q_s; qb_s=not qb_s; end if;end if ;q=q_s;qb=qb_s;end process;end architecture art;2. 同步复位的同步复位的D触发器触发器library ieee;use ieee.std_logic_1164.all;entity syndcfq isport(d, clk,reset:in std_logic; q:out std_logic);end entity syndcfq;architecture art of syndcfq isbegin process(clk) isbeginif(clk

60、event and clk=1) thenif(reset=0) then q=0; -时钟边沿到来且有复位信号,触发器被复位else q=d; end if;end if;end process;end architecture art;【教材教材P239】3. 异步复位异步复位/置位的置位的D触发器触发器library ieee;use ieee.std_logic_1164.all;entity asyndcfq isport(clk,d,preset,clr:in std_logic; q:out std_logic);end entity asyndcfq;architecture art of asyndcfq isbegi

温馨提示

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

最新文档

评论

0/150

提交评论