工学第章 VHDL设计初步

上传人:dus****log 文档编号:158247114 上传时间:2022-10-03 格式:PPT 页数:116 大小:1.52MB
收藏 版权申诉 举报 下载
工学第章 VHDL设计初步_第1页
第1页 / 共116页
工学第章 VHDL设计初步_第2页
第2页 / 共116页
工学第章 VHDL设计初步_第3页
第3页 / 共116页
资源描述:

《工学第章 VHDL设计初步》由会员分享,可在线阅读,更多相关《工学第章 VHDL设计初步(116页珍藏版)》请在装配图网上搜索。

1、第第3章章 VHDLVHDL设计初步设计初步 电子设计自动化电子设计自动化EDA第第3章章VHDL设计初步设计初步殷伟凤Tel:651273浙江传媒学院电子信息学院第第3章章 VHDLVHDL设计初步设计初步 第第3章章VHDL设计初步设计初步第第3章章 VHDLVHDL设计初步设计初步 概述概述 HDL:Hardware Description Language VHSIC:Very High Speed Integrated Circuit 硬件描述语言 可以描述硬件电路的功能、信号连接关系及定时关系的语言第第3章章 VHDLVHDL设计初步设计初步 第第3章章 VHDLVHDL设计初步设

2、计初步 第第3章章 VHDLVHDL设计初步设计初步 常用硬件描述语言简介常用硬件描述语言简介 常用硬件描述语言有VHDL、Verilog和ABEL语言。VHDL起源于美国国防部的VHSIC,Verilog起源于集成电路的设计,ABEL则来源于逻辑器件的设计。第第3章章 VHDLVHDL设计初步设计初步 三者比较三者比较(1)逻辑描述层次:行为级、RTL级和门电路级。VHDL适合于行为级和RTL级的描述,最适合于描述电路的行为;Verilog和ABEL适用于RTL级和门电路级的描述,最适合描述门电路级。(2)设计要求:使用VHDL进行电子系统设计时可以不了解电路的内部结构,设计者所做的工作较少

3、;使用Verilog和ABEL语言进行电子系统设计时需了解电路的详细结构,设计者需做大量的工作。(3)综合过程:VHDL语言源程序的综合通常要经过行为级RTL级门电路级的转化,几乎不能直接控制门电路的生成。Verilog语言和ABEL语言源程序的综合过程较为简单,经经过RTL级门电路级的转化,易于控制电路资源。(4)对综合器的要求:VHDL语言对综合器性能要求较高;Verilog和ABEL对综合器的性能要求较低。第第3章章 VHDLVHDL设计初步设计初步 VHDL语言和其它高级语言的区别语言和其它高级语言的区别(1)高级语言描述的是数字模型(算法)和控制动作,控制行为。而VHDL语言所描述的

4、是硬件电路的功能:接口信号 电路行为和功能 电路与电路之间的连接关系(2)高级语言最终目的是实现希望的控制流而VHDL语言最终目的是要造成硬件电路。(3)VHDL语言的语句很多是并发语句。据此,尽管VHDL语言很多地方与高级语言相似,但它们之间却有较大差异。第第3章章 VHDLVHDL设计初步设计初步 VHDL的特点的特点 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。具有丰富的仿真语句和库函数,在设计早期可进行仿真。可利用EDA工具进行逻辑综合和优化,并自动转变成门级网表。对设计的描述具有相对独立性。描述与工艺无关。第第3章章 VHDLVHDL设计初步设计初步 VHDL入门入门

5、第第3章章 VHDLVHDL设计初步设计初步 例:2选1选择器设计ab mux21 ys第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY mux21 IS PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE one OF mux21 IS BEGIN y=a WHEN s=0 ELSE b WHEN S=1;END one;IEEE库使用说明器件mux21的外部接口信号说明,PORT相当于器件的引脚,这一

6、部分称为实体器件mux21的内部工作逻辑描述,即为实体描述的器件功能结构,称为结构体第第3章章 VHDLVHDL设计初步设计初步 例:锁存器设计 LATCHD QENA第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Latch ISPORT(D:IN STD_LOGIC;ENA:IN STD_LOGIC;Q:OUT STD_LOGIC);END latch;ARCHITCTURE one OF latch ISSIGNAL sig_save:STD_LOGIC;BEGIN PROCESS(D,ENA)

7、BEGIN IF ENA=1 THEN sig_save=D;END IF;Q=sig_save;END PROCESS;END one;锁存器的实体,定义了此器件的输入输出引脚及其信号属性定义信号进程语句结构,描述逻辑的时序方式结构体第第3章章 VHDLVHDL设计初步设计初步 例:全加器设计1位半加器1位全加器H_ADDERa cob soH_ADDERa cob soH_ADDERa cob soF_ADDERain coutbin sumcinainbinain a c bu1u2u3sumcoutdef第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE I

8、EEE.STD_LOGIC_1164.ALL;ENTITY or2 IS PORT(A,B:IN STD_LOGIC;c:OUT STD_LOGIC);END or2;ARCHITECTURE ful OF or2 IS BEGIN c=a OR b;END fu1;第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END h_adder;ARCHITECTURE fh1 OF h_adder I

9、SBEGIN so=a XOR b;co=a AND b;END fh1;第第3章章 VHDLVHDL设计初步设计初步 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 f_adder;ARCHITECTURE fd1 OF f_adder ISBEGIN COMPONENT h_adder PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END COMPONENT;COMP

10、ONENT or2 PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;SIGNAL d,e,f:STD_LOGIC;BEGIN u1:h_adder PORT MAP(ain,bin,d,e);u2:h_adder PORT MAP(e,b,f,sum);u3:or2 PORT MAP(d,f,cout);END fd1;元件调用声明元件连接第第3章章 VHDLVHDL设计初步设计初步 3.1 组合电路的组合电路的VHDL描述描述ab mux21a ys3.1.1 2选1多路选择器及其VHDL描述1第第3章章 VHDLVHDL设计初步设计

11、初步 ENTITY mux21 IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21;ARCHITECTURE one OF mux21 IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE one;器件mux21的外部接口信号说明,PORT相当于器件的引脚,这一部分称为实体器件mux21的内部工作逻辑描述,即为实体描述的器件功能结构,称为结构体【例例3-1】第第3章章 VHDLVHDL设计初步设计初步 4.2VHDL语言的基本单元及其构成语言的基本单元及其构成 一个完整的VHDL程序包括4个基本组

12、成部分:库、程序包使用说明 实体说明 与实体对应的结构体说明 配置语句说明第第3章章 VHDLVHDL设计初步设计初步 VHDL语言程序的基本结构语言程序的基本结构第第3章章 VHDLVHDL设计初步设计初步 4.2.1VHDL语言设计的基本单元及其构成语言设计的基本单元及其构成 基本单元 门 微处理器 系统 基本单元构成 实体说明:规定了设计单元的输入输出接口信号或引脚。结构体:定义了设计单元的具体构造和操作(行为)。第第3章章 VHDLVHDL设计初步设计初步 基本单元构成基本单元构成ENTITY 名称 IS接口信号说明END 名称;ARCHITECTURE 结构体名 OF 实体名 ISB

13、EGIN功能描述END 结构体名;d0d1d2q&d0qseld1第第3章章 VHDLVHDL设计初步设计初步 一个基本设计单元的构成一个基本设计单元的构成二选一电路二选一电路实体说明ENTITY mux2 ISGENERIC(m:TIME:=1ns);PORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;构造体ARCHITECTURE connect OF mux2 ISSIGNAL tmp:BIT;实体:外部特性描述第第3章章 VHDLVHDL设计初步设计初步 一个基本设计单元的构成(续)一个基本设计单元的构成(续)二选一电路二选一电路 BEGIN;PROCE

14、SS(d0,d1,sel);VARIABLE tmp1,tmp2,tmp3:BIT;BEGIN;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;tmp=tmp3;q=tmp AFTER m;END PROCESS;END connect;构造体:内部特性描述,即功能描述第第3章章 VHDLVHDL设计初步设计初步 1、实体表达 实体在电路描述中主要是说明该电路的输入输出关系。此外,实体还定义电路名称及结构体中所使用的参数等。实体描述的一般书写格式如下:ENTITY 实体名 IS 类属参数说明;端口说明 ENDENTITY 实体名;第

15、第3章章 VHDLVHDL设计初步设计初步 实体语句结构 实体描述从“ENTITY 实体名 IS”开始,至“END 实体名”结束。实际上,对VHDL语言而言,大写和小写都一视同仁,不加区分。这里这样规定仅仅是为了增加程序的可读性而已。建议将VHDL的标识符或基本语句关键词以大写方式表示,而由设计者添加的内容可以以小写方式来表示。第第3章章 VHDLVHDL设计初步设计初步 2、实体名、实体名 电路的名称,可以大、小英文字母,但第一个字母一定要用英文字母。为使结构更突出,便于阅读,常用小写命名。不能用中文 不能拿与EDA软件库中已定义好的元件名一样 第第3章章 VHDLVHDL设计初步设计初步

16、类属参数说明(以后再讲)类属参数说明(以后再讲)必须放在端口说明之前,用于指定参数。GERERIC(常数名:数据类型:设定值);如上例中的GENERIC(m:TIME=1 ns)。该语句指定了构造体内m的值为1 ns。这样,语句q=tmp AFTER m;表示tmp经 1 ns延迟才送到q。在这个例子中,GENERIC利用类属参数为q建立一个延迟值。第第3章章 VHDLVHDL设计初步设计初步 3.端口说明端口说明 是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称,数据类型和输入、输出方向的描述。其一般书写格式如下:PORT(端口名,端口名:端口模式 数据类型名;端口名

17、,端口名:端口模式数据类型名);第第3章章 VHDLVHDL设计初步设计初步 端口名 每个外部引脚的名称,通常用一个或几个英文字母或者用英文字母加数字命名。4、端口模式:表示信号传递方向。IN输入,只读模式 OUT输出,单向赋值模式 INOUT双向,可以读或写 BUFFER具有读功能的输出模式,可以读或写,只能有一个驱动源 5、数据类型 在VHDL语言中有10种数据类型,但在逻辑电路设计中只用到两种:BIT和BITVECTOR。第第3章章 VHDLVHDL设计初步设计初步 Out与与Buffer的区别的区别Entity test1 is port(a:in std_logic;b,c:out

18、std_logic );end test1;architecture a of test1 is begin b=not(a);c=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;第第3章章 VHDLVHDL设计初步设计初步 练习练习my_designd11:0oeclkad11:0a11:0intas第第3章章 VHDLVHDL设计初步设计初步

19、 练习答案练习答案my_designd11:0oeclkad11:0a11:0intas第第3章章 VHDLVHDL设计初步设计初步 6、结构体表达结构体表达结构体:描述设计实体的结构或行为,即描述一个实体的功能,把设计实体的输入和输出之间的联系建立起来。ARCHITECTURE 结构体名 OF 实体名 IS定义语句内部信号,常数,数据类型,函数等的定义;BEGIN并行处理语句;END ARCHITECTURE 结构体名;第第3章章 VHDLVHDL设计初步设计初步 (1)结构体的一般语句格式结构体的一般语句格式 ARCHITECTURE 结构体名 OF 实体名 IS定义语句内部信号,常数,数

20、据类型,函数等的定义;BEGIN功能描述语句;END ARCHITECTURE结构体名;结构体名结构体名:英文字母、数字、结构体的名称可以由设计者自由命名。但是在大多数的文献和资料中,通常把构造体的名称命名为behavioral(行为),dataflow(数据流)、rtl(寄存器传输)或者structural(结构)当一个实体具有多个结构体时,结构体的取名不可相重。第第3章章 VHDLVHDL设计初步设计初步 (2)结构体说明语句结构体说明语句位置在ARCHITECTURE和BEGIN之间。对用于构造体内部所使用的信号、常数、数据类型和函数等进行定义例:SIGNALcont:STDLOGICV

21、ECTOR(3DOWNTO0);SIGNALco_1:STDLOGIC;CONSTANTm:TIME:=2ns;TYPESTATEIS(INIT,DAD,ADC,SRF,FRF);第第3章章 VHDLVHDL设计初步设计初步 (3)功能描述语句功能描述语句位置:处于语句BEGIN和END之间所有的并行处理语句都可以写在这里面。并行处理语言在仿真时是并发工作的,和前后次序无关,从而描述了构造体内部逻辑电路的并发功能。有5种语句结构 块语句(BLOCK)进程语句(PROCESS)信号赋值语句 子程序调用语句 元件例化语句都是并行语句内部可能包含顺序第第3章章 VHDLVHDL设计初步设计初步 VH

22、DL语言基本单元构成语言基本单元构成ENTITY实体名ISGENERIC(常数名:数据类型:设定值);PORT(端口名,端口名:端口模式数据类型名;端口名,端口名:端口模式数据类型名);END实体名;ARCHITECTURE结构体名OF实体名IS定义语句内部信号,常数,数据类型,函数等的定义;BEGIN功能描述语句;ENDARCHITECTURE结构体名;第第3章章 VHDLVHDL设计初步设计初步 举例举例 ENTITY mux2 ISPORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;ARCHITECTURE connect OF mux2 IS SIGNA

23、L tmp1,tmp2,tmp3:BIT;BEGIN;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;qtmp3;END connect;并发执行并发执行第第3章章 VHDLVHDL设计初步设计初步 7、赋值符号和数据比较符号、赋值符号和数据比较符号 在语句中,符号“=”表示传送(或代入)的意思,即将逻辑运算结果送q输出。代入 语句只要代入符号右边信号有变化就启动一次。“=”是数据比较符号,没有赋值或数据传输的含义。第第3章章 VHDLVHDL设计初步设计初步 8、WHEN_ELSE条件信号赋值语句条件信号赋值语句 目的信号量=表达

24、式 1 WHEN 条件 1 ELSE 表达式 2 WHEN 条件 2 ELSE 表达式 3 WHEN 条件 3 ELSE ELSE 表达式n;第第3章章 VHDLVHDL设计初步设计初步 是一种并行赋值语句。每一“赋值”条件是按书写的先后关系逐项测定的。y=a WHEN s=0 ELSEb;第第3章章 VHDLVHDL设计初步设计初步 例:用条件信号代入语句设计四选例:用条件信号代入语句设计四选 一电路一电路ENTITY mux4 IS PORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF

25、 mux4 IS SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN sel=b&a;q=i0 WHEN sel=00 ELSE i1 WHEN sel=01“ELSE i2 WHEN sel=10 ELSE i3 WHEN sel=11 ELSE X;END rtl;第第3章章 VHDLVHDL设计初步设计初步 小测验小测验 基本单元必须包含哪两部分?各有什么作用?端口说明中的方向有哪几种,其中BUFFER和OUT有何区别?BUFFER和INOUT有何区别?第第3章章 VHDLVHDL设计初步设计初步 9、关键字 10、标识符 11、规范的程序书写格式

26、 12、文件取名和存盘 文件后缀名必须为.vhd 程序的文件名与该程序的模块名(实体名)一致 VHDL程序必须存入某文件夹中(要求非中文文件夹名),不要存在根目录内或桌面上。第第3章章 VHDLVHDL设计初步设计初步 3.1.2 2选选1多路选择器及其多路选择器及其VHDL描述描述2&aysbLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux2 ISPORT(a,b,s:IN STD_LOIC;y:OUT STD_LOGIC);END mux2;ARCHITECTURE connect OF mux2 ISSIGNAL e,d:STD_LO

27、IC;BEGIN;e=a AND s;d=b AND(NOT s);y=e OR d;END connect;ed第第3章章 VHDLVHDL设计初步设计初步 1、逻辑运算符、逻辑运算符 VHDL共有七种基本逻辑操作符 AND与 OR或 NAND与非 NOR或非 XOR异或 XNOR同或 NOT取反AND2instNAND2inst1NOR2inst2NOTinst3OR2inst4XNORinst5XORinst6逻辑操作符所要求的操作数的数据类型有三种:BIT、BOOLEAN和STD_LOGIC第第3章章 VHDLVHDL设计初步设计初步 2、标准逻辑位数据类型、标准逻辑位数据类型STD_

28、LOGIC BIT数据类型有两种值:0、1 STD_LOGIC取值有9种:U、X、0、1、Z、W、L、H、-初始值 不定 高阻 弱信号不定 弱信号0 弱信号1 不可能情况STD_LOGIC型数据可综合的只有X(或-)、0、1和z,其他类型只能用于仿真第第3章章 VHDLVHDL设计初步设计初步 3、设计库和标准程序包、设计库和标准程序包(1)IEEE库 (2)STD库 (3)WORK库 (4)VITAL库 (5)用户定义库 库的用法:LIBRARY 库名 包的使用:USE库名程序包名项目名;USE库名程序包名ALL;常用的预定义的程序包有4种。STD_LOGIC_1164程序包 STD_LOG

29、IC_ARITH程序包STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包 STANDARD和TEXTIO程序包LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL第第3章章 VHDLVHDL设计初步设计初步 4、信号定义和数据对象、信号定义和数据对象在VHDL中,凡是可以赋予一个值的对象就称为数据对象。数据对象有三类:信号(SIGNAL)、变量(VARIABLE)和常量(CONSTANT)信号是电子电路内部硬件连接的抽象。信号通常在构造体、包集合和实体中说明。信号说明语句格式为:SIGNAL 信号名:数据类型 约束条件=表达式;例如:SIG

30、NAL sys_clk:BIT=0;SIGNAL ground:BIT=0;第第3章章 VHDLVHDL设计初步设计初步 3.1.3 2选选1多路选择器及其多路选择器及其VHDL描述描述3 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a ISPORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END ENTITY mux21a;第第3章章 VHDLVHDL设计初步设计初步 ARCHITECTURE rtl OF mux21a IS BEGINPROCESS(a,b,s)BEGINIF s=0 THEN

31、y=a;ELSE y=b;ENDIF;END PROCESS;END ARCHITECTURE trl;第第3章章 VHDLVHDL设计初步设计初步 1、条件语句、条件语句IF 条件 THEN 顺序处理语句END IF;IF 条件 THEN 顺序处理语句;ELSE 顺序处理语句;END IF;IF 条件 THEN顺序处理语句;ELSIF 条件 THEN顺序处理语句;ELSIF 条件 THEN顺序处理语句;ELSE顺序处理语句;END IF;第第3章章 VHDLVHDL设计初步设计初步 2、进程语句和顺序语句、进程语句和顺序语句 Process语句的一般书写结构、组织形式为:进程名:PROCES

32、S敏感信号表 变量说明语句:BEGIN 顺序描述语句 ENDPROCESS进程名;第第3章章 VHDLVHDL设计初步设计初步 进程语句进程语句 通常要求将进程中所有的输入信号都放在敏感信号表中。PROCESS的执行依赖于敏感信号的变化。当某一敏感信号从10或从01,都将启动此进程语句。于是在PROCESS中的所有语句被执行一次,然后返回进程的起始端,进入等待状态,直到下一次的敏感信号变化。所有的顺序语句都必须放入进程语句中。进程语句是并行语句,在一个结构体中可以包含任意个进程语句结构。第第3章章 VHDLVHDL设计初步设计初步 上讲主要内容上讲主要内容 实体ENTITY 结构体ARCHIT

33、ECTURE 数据类型:BIT、BIT_VECTOR STD_LOGIC、STD_LOGIC_VECTOR 逻辑运算符:AND、OR、NAND、NOR、XOR、XNOR、NOT 信号定义SIGNAL第第3章章 VHDLVHDL设计初步设计初步 VHDL语句语句 条件语句 IF-THEN-ELSE-END IF 并行赋值语句 =条件信号赋值语句 WHEN-ELSE 进程语句PROCESS第第3章章 VHDLVHDL设计初步设计初步 不同实现方法的比较不同实现方法的比较方法1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY mux21 IS PORT(

34、a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE one OF mux21 IS BEGIN y=a WHEN s=0 ELSE b WHEN S=1;END one;第第3章章 VHDLVHDL设计初步设计初步 方法3:ENTITY mux2 ISPORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;构造体ARCHITECTURE connect OF mux2 ISSIGNAL tmp:BIT;BEGIN;PROCESS(d0,d1,sel);BEGIN;IF sel

35、=0 THEN q=d0;ELSE q=d1;END IF;END PROCESS;END connect;进程的敏感信号表顺序执行方法2:ENTITY mux2 ISPORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;ARCHITECTURE connect OF mux2 ISSIGNAL tmp1,tmp2,tmp3:BIT;BEGIN;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;qtmp3;END connect;第第3章章 VHDLVHDL设计初步设计初步 第第3章章 VHDLVHDL设

36、计初步设计初步 设计要求设计要求设计一个能进行拔河游戏的电路。电路使用15个(或9个)发光二极管表示拔河的“电子绳”,开机后只有中间一个发亮,此即拔河的中心点。游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。第第3章章 VHDLVHDL设计初步设计初步 写出实体定义第第3章章 VHDLVHDL设计初步设计初步

37、LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY game IS PORT(reset:IN STD_LOGIC;reset1:IN STD_LOGIC;begin:OUT STD_LOGIC;in12:IN STD_LOGIC_VECTOR(1 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(15 DOWNTO 1);ms:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END game;第第3章章 VHDLVHDL设计初步设计初步 3.1.4 半加器及其

38、半加器及其VHDL的描述的描述AND2instXORinst6VCCaINPUTVCCbINPUTcoOUTPUTsoOUTPUT第第3章章 VHDLVHDL设计初步设计初步 【例例3-4】半加器的布尔函数描述方法半加器的布尔函数描述方法LIBRARY IEEE;USE IEEE。STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder ISBEGINso=a XOR b;co=a AND b;END

39、ARCHITECTURE fh1;第第3章章 VHDLVHDL设计初步设计初步 【例例3-5】半加器的真值表描述方法半加器的真值表描述方法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder ISSIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINabc so=0;coso=1;coso=1;coso=0;coNULL

40、;END CASE;END PROCESS;END ARCHITECTURE fh1;第第3章章 VHDLVHDL设计初步设计初步 1、CASE语句语句CASE语句用来描述总线或编码、译码的行为,从许多不同语句的序列中选择其中之一执行之。CASE 表达式 ISWHEN条件表达式=顺序处理语句;END CASE;上述CASE语句中的条件表达式可以有如下4种不同的表示形式:WHEN 值=顺序处理语句;WHEN 值|值|值|值=顺序处理语句;WHEN 值TO值=顺序处理语句;WHEN OTHERS=顺序处理语句;第第3章章 VHDLVHDL设计初步设计初步 例:例:2选选1电路的电路的CASE语句表

41、述语句表述Entity case_mux is port(a,b,sel:in bit;c:out bit);End case_mux;Architecture rtl of case_mux isBegin p1:process(sel,a,b)begin case sel is when 0=c c=b;end case;end process;End rtl;第第3章章 VHDLVHDL设计初步设计初步 CASE语句使用注意事项语句使用注意事项(1)WHEN中的选择值或标识符所代表的值必须在CASE的的取值范围内,且数据类型要一致。(2)所有的选择值必须覆盖CASE语句中表达式的所有取值

42、,否则必须加WHEN OTHERS语句。(3)CASE语句中的选择值只能出现一次,不允许有相同选择的条件语句出现。(4)CASE语句执行中必须选中,且只能选中所列条件语句中的一条。第第3章章 VHDLVHDL设计初步设计初步 2、标准逻辑矢量数据类型、标准逻辑矢量数据类型STD_LOGIC_VECTOR可以表达电路中并列的多通道端口或节点,或者总线BUS。在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽。B:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL A:STD_LOGIC_VECTOR(1 TO 4);二进制矢量必须加双引号。B=“011

43、00010”;B(4 DOWNTO 1)=“1101”;B(7 DOWNTO 4)=A;第第3章章 VHDLVHDL设计初步设计初步 3、并置操作符、并置操作符&并置运算符可用于位的连接,形成位矢量 并置运算符可用两位矢量的连接构成更大的位矢量 位的连接,可以用并置符连接法,也可用集合体连接法第第3章章 VHDLVHDL设计初步设计初步 使用实例使用实例 SIGNALa,b,c:STDLOGIC;SIGNALe:STD_LOGIC_VECTOR(2 DOWNTO0);e=a&b&c;e=a;是错误的 e=0&0&a;是正确的第第3章章 VHDLVHDL设计初步设计初步&ena(3)Y(0)Y(

44、4)Y(1)Y(2)Y(3)Y(7)Y(6)Y(5)a(0)a(1)a(2)b(1)b(2)b(3)b(0)Tmp_b=b AND(en&en&en&en)Y=a&tmp_b;第第3章章 VHDLVHDL设计初步设计初步 位的连接也可使用集合体的方法,即将并置符换成逗号就可以了,例如:tmp_b=(en,en,en,en);但是,这种方法不适用于位矢量之间的连接。如下的描述方法是错误的:a=(a,tmp_b);集合体也能指定位的脚标,例如上一个语句可表示为:tmp_ben,2=en,1=en,0=en);或tmp_ben);在指定位的脚标时,也可以用“OTHERS”来说明:tmp_ben);要

45、注意,在集合体中“OTHERS”只能放在最后。假若b位矢量的脚标b(2)的选择信号为“0”,其它位的选择信号均为en。那么此时表达式可写为:tmp_b0,OTHERS=en);第第3章章 VHDLVHDL设计初步设计初步 3.1.5 1位二进制全加器及其位二进制全加器及其VHDL描述描述 1位全加器可以由两个半加器和一个或门连接而成。H_ADDERa cob soH_ADDERa cob soainbinain a c bu1u2u3sumcoutdef第第3章章 VHDLVHDL设计初步设计初步 例:全加器设计1位半加器1位全加器H_ADDERa cob soH_ADDERa cob soH

46、_ADDERa cob soF_ADDERain coutbin sumcinainbinain a c bu1u2u3sumcoutdef第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2 IS PORT(A,B:IN STD_LOGIC;c:OUT STD_LOGIC);END or2;ARCHITECTURE ful OF or2 IS BEGIN c=a OR b;END fu1;【例例3-6】或门描述或门描述第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE

47、IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END h_adder;ARCHITECTURE fh1 OF h_adder ISBEGIN so=a XOR b;consel,b=d1,c=ab);第第3章章 VHDLVHDL设计初步设计初步 例:用COMPONENT语句描述二选一电路t1t2t3u0u1u2u3第第3章章 VHDLVHDL设计初步设计初步 library ieee;use ieee.std_logic_1164.all;entity mux21 is

48、port(d0,d1,sel:in std_logic;q:out std_logic);end mux21;architecture rtl of mux21 is component myand2 port(a,b:in std_logic;c:out std_logic);end component;component myor2 port(a,b:in std_logic;c:out std_logic);end component;component mynot port(a:in std_logic;c:out std_logic);end component;signal t1,

49、t2,t3:std_logic;begin u0:myand2 port map(d0,sel,t1);u1:mynot port map(sel,t2);u2:myand2 port map(d1,t2,t3);u3:myor2 port map(t1,t3,q);end rtl;第第3章章 VHDLVHDL设计初步设计初步 练习:用元件例化语句设计如下框图电路,设C1、C2为已设计好的元件第第3章章 VHDLVHDL设计初步设计初步 构造体的信号说明位置在什么地方?以下说明哪个是正确的?构造体的信号说明位置在什么地方?以下说明哪个是正确的?ARCHITECTURE connect OF m

50、ux2 ISSIGNAL tmp1,tmp2,tmp3:BIT;BEGINtmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;qtmp3;END connect;ARCHITECTURE connect OF mux2 ISBEGINSIGNAL tmp1,tmp2,tmp3:BIT;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;qtmp3;END connect;第第3章章 VHDLVHDL设计初步设计初步 练习1:已知一个设计实体的结构体程序段如下所示,试写出它的实体说

51、明(假设数据对象类型用std_logic)ARCHITECTURE rtl OF dff ISBEGIN P1:PROCESS(clk)BEGIN IF(clkevent AND clk=1)THEN q=d;qb=NOT d;END IF;END PROCESS P1;END rtl;第第3章章 VHDLVHDL设计初步设计初步 练习2:写出如下构造体所对应的实体说明:ARCHITECTURE one OF DLATCH IS SIGNAL N1,N2:STD_LOGIC;BEGIN N1=(NOT D)NAND CP;N2=D NAND CP;Q=QN NAND N1;QN=Q NAND

52、N2;END one;第第3章章 VHDLVHDL设计初步设计初步 2.根据如下的VHDL描述画出相应的原理图.ENTITY DLATCH IS PORT(D,CP:IN STD_LOGIC;Q,QN:BUFFER STD_LOGIC);END DLATCH;ARCHITECTURE one OF DLATCH IS SIGNAL N1,N2:STD_LOGIC;BEGIN N1=(NOT D)NAND CP;N2=D NAND CP;Q=QN NAND N1;QN=Q NAND N2;END one;&absy1.写出如图所示的原理图相应的VHDL的构造体.练习练习第第3章章 VHDLVHD

53、L设计初步设计初步 3.2 时序电路的时序电路的Verilog HDL描述描述 VHDL可通过对时序器件功能和逻辑行为的描述而非结构上的描述来综合出符合要求的时序电路,从而体现了VHDL的行为描述能力第第3章章 VHDLVHDL设计初步设计初步 3.2.1 边沿触发型边沿触发型D触发器及其触发器及其VHDL描述描述 D触发器:只有当时钟上升沿到来时,其输出Q的数值才会随输入D而改变,即更新。第第3章章 VHDLVHDL设计初步设计初步 【例3-8】边沿触发型边沿触发型D触发器的触发器的VHDL描述描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

54、 DEF1 ISPORT(CLK,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DEF1 ISBEGINPROCESS(CLK,Q1)BEGINIF CLKEVENT AND CLK=1THEN Q=D;END IF;END PROCESS;END bhv;第第3章章 VHDLVHDL设计初步设计初步 信号属性函数信号属性函数 SEVENT:如果在当前一个相当小的时间间隔内,事件发生了,那么,函数将返回一个为“真”的布尔量;否则就返回“假”SLAST_VALUE:该属性函数将返回一个值,即该值是信号最后一次改变以前的值。第第3章

55、章 VHDLVHDL设计初步设计初步 上升沿检测上升沿检测IF(clk1)AND(clkEVENT)THENQ=d;END IF;IF(clk1)AND(clkEVENT)AND(clkLAST_VALUE=0)THENQ=d;END IF;第第3章章 VHDLVHDL设计初步设计初步 检测上升沿的函数检测上升沿的函数rising_edge()Rising_edge()是VHDL在IEEE库中标准程序包STD_LOGIC_1164内的预定义函数,只能用于STD_LOGIC类型的信号。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;IF rising_edge(

56、CLK)THENQ=D;END IF;第第3章章 VHDLVHDL设计初步设计初步 wait until语句语句 PROCESSBEGINWait until CLK=1;Q=D;END PROCESS当进程语句使用wait语句后,就不必列出敏感信号。但不推荐使用此表述方法。第第3章章 VHDLVHDL设计初步设计初步 时钟脉冲下降沿描述 IF(clkEVENT AND clk=0)THEN WAIT UNTIL clk=0;IF(clklast_value=1 AND clkevent AND clk=0)THEN IF(falling_edge(clk)THEN第第3章章 VHDLVHDL

57、设计初步设计初步 3.2.2 电平触发型锁存器及其电平触发型锁存器及其VHDL描述描述当时钟CLK为高电平时,其输出Q的数值才会随D输入的数据而改变,即更新。而当CLK为低电平时将保持其高电平时锁入的数据。【例例3-16】PROCESS(CLK,D)BEGINIF CLK=1 THENQ=D;END IF;END PROCESS;第第3章章 VHDLVHDL设计初步设计初步 异步复位的D锁存器非同步复位的D锁存器和一般D锁存器的区别是多了一个复位输入端clr。当clr=0时,其q端输出被强迫置为“0”。clr 又称清零输入端。D QCP /QRdclkclrqqb第第3章章 VHDLVHDL设

58、计初步设计初步 异步复位的D锁存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff2 ISPORT(clk,d,clr:IN STD_LOGIC;q:OUT STD_LOGIC);END dff2;ARCHITECTURE rtl OF dff2 ISBEGINPROCESS(clk,clr)BEGINIF(clr=0)THENQ=0;ELSIF(clkEVENT AND clk=1)THENq=d;END IF;END PROCESS;END rtl;第第3章章 VHDLVHDL设计初步设计初步 同步复位同步复位D锁存器锁存器 LIBRA

59、RY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff4 ISPORT(clk,clr,d:IN STD_LOGIC;q:OUT STD_LOGIC);END dff4;ARCHITECTURE rtl OF dff4 ISBEGINPROCESS(clk)BEGINIF(clkEVENT AND clk=0)THENIF(clr=0)THENq=0;ELSEq=d;END IF;END IF;END PROCESS;END rtl;第第3章章 VHDLVHDL设计初步设计初步 3.3 计数器的计数器的VHDL设计设计4位二进制加法计数器及其VHDL描述E

60、NTITY CNT4 ISPORT(CLK:IN BIT;Q:BUFFER INTEGER RANGE 15 DOWNTO 0);END;ARCHITECTURE bhv OF CNT4 ISBEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENQ=Q+1;END IF;END PROCESS;END ARCHITECTURE bhv;第第3章章 VHDLVHDL设计初步设计初步 设计说明设计说明 Q使用BUFFER类型,因为有Q=Q+1;存在反馈。注意表面上BUFFER具有双向端口INOUT的功能,但实际上其输入功能是不完整的,它只能将自己输出的信号

61、再反馈回来,并不含有端口IN的功能。VHDL规定加、减等算术操作符对应的操作数的数据类型只能是INTEGER。第第3章章 VHDLVHDL设计初步设计初步 整数类型整数类型 整数数据类型INTEGER的元素包含正整数、负整数和零。整数可用32位有符号的二进制表示,取值范围为:-21474836472147483647。在使用整数时,VHDL综合器要求必须使用关键字RANGE构成的字句为所定义的数限定范围。书写:1、35、10E3、16#D9#、8#720#、2#11010010#第第3章章 VHDLVHDL设计初步设计初步 LIBRARY IEEE;USE IEEE.STD_LOGIC_116

62、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT4;ARCHITECTURE bhv OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENQ1=Q1+1;END IF;END PROCESS;Q 0);ELSIF CLKEVENT AND CLK=1 THENIF EN=

63、1 THEN IF(LOAD=0)THEN Q:=DATA;ELSEIF Q 0);END IF;END IF;END IF;END IF;IF Q=“1001”THEN COUT=1;ELSE COUT=9 END IF:DOUT X)”d1 1);a1 0);d2 1,4=1,OTHERS=0);d1 e(3),3=e(5),OTHERS=e(1);等价于 d1 0);ELSIF CLKEVENT AND CLK=1 THENIF EN=1 THEN IF(LOAD=0)THEN Q:=DATA;ELSEIF Q 0);END IF;END IF;END IF;END IF;END PROCESSDOUT=Q;COM:PROCESS(Q)BEGIN IF Q=“1001”THEN COUT=1;ELSE COUT=9 END IF:END PROCESS;时序进程组合进程第第3章章 VHDLVHDL设计初步设计初步 作业作业 3-3 3-4 3-10 3-12

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!