【精品】VHDL语言精品ppt课件.ppt
《【精品】VHDL语言精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】VHDL语言精品ppt课件.ppt(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VHDL语言 I I 数据选择器数据选择器VHDLVHDL描述描述一、2选选1多路选择器设计多路选择器设计absmux21ya,b分别是两个数据输入端的端口名,s:通道选择控制信号输入端的端口名,y:输出端口名y=a s +b s(若s=0则y=a;若s=1则 y=b)ENTITY mux21 ISPORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21;ARCHITECTURE one OF mux21 ISBEGIN y=(a AND (NOT s)OR (b AND s);END ARCHITECTURE one;VHDL 大小写不敏感大小
2、写不敏感实体结构体文件名和实体名一致每行;结尾关键字begin关键字end后跟实体名关键字end后跟构造体名Mux21.vhd-数据选择器注释行一个可综合的vhdl描述的基本逻辑结构中:实体和结构体实体和结构体是必需的v实体(entity)说明描述外部接口信息v结构体(architecture)说明描述内部逻辑功能 例例4-4-22ENTITY mux21 ISENTITY mux21 ISPORT(a,b:IN BIT;PORT(a,b:IN BIT;s:IN BIT;s:IN BIT;y:OUT BIT);y:OUT BIT);END ENTITY mux21;END ENTITY mux
3、21;ARCHITECTURE one OF mux21 ISARCHITECTURE one OF mux21 ISSIGNAL d,e:BIT;SIGNAL d,e:BIT;BEGINBEGINd=a AND (NOT S);d=a AND (NOT S);e=b AND s;e=b AND s;y=d OR e;y=d OR e;END ARCHITECTURE ONE;END ARCHITECTURE ONE;二、VHDL相关语法说明1、实体表达、实体表达ENTITY e_name IS PORT (p_name:port_m data_type;p_name i:port_m dat
4、a_type);END ENTITY e_name;一个基本单元设计的实体说明以“Entity 实体名 IS”开始至“END Entity 实体名”结束。2、实体名、实体名 MAX+PLUS II要求文件名必须与实体名一致。上例中的e_name是实体名,具体取名由设计者自定,最好根据相应电路来确定,如count4b(4位二进制计数器)等。实体名由字母、数字和下划线字母、数字和下划线组成。必须由字母开头(数字、下划线不可以开头)。不可以用EDA工具库中已定义的元件名作实体名。3、PORT语句和端口信号名语句和端口信号名 描描述述电电路路的的端端口口及及其其端端口口信信号号必必须须用用端端口口语语
5、句句PORT();引导。引导。上例中上例中p_name即为端口信号名。即为端口信号名。实体端口说明格式:PORT(端口名:端口模式(端口名:端口模式 数据类型;数据类型;端口名:端口模式端口名:端口模式 数据类型);数据类型);端口名:设计者为实体的每一对外通道所取的名字。端口模式通道上的数据流动方式输入输入(In)数据通过此端口被单向读入实体;输出输出(Out)数据通过此端口从实体向外流出;双向双向(Inout):可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口;缓冲缓冲(Buffer):与Out类似,但允许该管脚名作为一些逻辑的输入信号(即允许反馈)。4、端口模式O
6、ut与与Buffer的区别的区别 ENTITY test1 IS PORT(a:in std_logic;b,c:out std_logic);END ENTITY test1;architecture a of test1 is begin b=not(a);c=b;-Error end architecture a;ENTITY test2 IS PORT(a:in std_logic;b:buffer std_logic;c:out std_logic );END ENTITY test2;architecture a of test2 is begin b=not(a);c=b;end
7、 architecture a;上例中的data_type是数据类型名;BIT数据类型的信号规定的取值范围是逻辑位1和0;逻辑位0和1的表达必须加单引号,否则作为整数数据(INTEGER)处理;BIT型数据可参与算术运算或逻辑运算;数据类型的定义包含在相应的程序包中。5 5、数据类型、数据类型 BIT BIT6、结构体表达、结构体表达结构体将具体实现一个实体;每个实体可具有多个结构体,结构体间的地位是同等的;同一结构体不能为不同的实体所拥有;结构体不能单独存在,必须有一个实体;综合后的可映射与硬件电路的设计实体中,一个实体只能对应一个结构体;ARCHITECTURE 结构体名 OF 实体名 I
8、S说明语句-内部信号,常数,数据类型,函数等的定义;BEGIN功能描述语句;-并行处理语句END ARCHITECTURE 结构体名;结构体的一般格式结构体的一般格式 对结构体的功能描述语句中将要用到的信号信号(SIGNALSIGNAL)数据类型数据类型(TYPETYPE)常数常数(CONSTANTCONSTANT)元件元件(COMPONENTCOMPONENT)函数函数(FUNCTIONFUNCTION)过程过程(PROCEDUREPROCEDURE)等)等加以说明。注意:说明语句的作用范围说明语句的作用范围只只作用于该结构体。作用于该结构体。结构体说明语句结构体说明语句说明语句功能描述语句
9、结构块语句(BLOCK)结构体(ARCHITECTURE)进程语句(PROCESS)信号赋值语句子程序调用语句元件例化语句功能描述语句结构功能描述语句结构VHDLVHDL程序设计基本结构程序设计基本结构库、程序包库、程序包实体实体(ENTITY)结构体结构体(ARCHITECTURE)进程进程或其它并行结构配置(CONFIGURATION)设计设计实体实体7、信号传输(赋值)符号和数据比较符号、信号传输(赋值)符号和数据比较符号赋值语句的功能赋值语句的功能是将一个值或一个表达式的运算结果传递给某一个数据对象。信号、变量及其信号、变量及其组成的数组组成的数组 VHDL设计实体内的数据传递以及对端
10、口外部数据的读写都必须通过赋值语句的运行来实现。信号赋值语句格式:信号赋值目标 =赋值源;注意:赋值符号两边的信号的数据类型必须一致。注意:赋值符号两边的信号的数据类型必须一致。布尔数据不是数值,只能用于逻辑操作或条件判断。布尔数据不是数值,只能用于逻辑操作或条件判断。用用于于条条件件语语句句的的判判断断表表达达式式可可以以是是一一个个值值,也也可可以以是是更复杂的逻辑或运算表达式。更复杂的逻辑或运算表达式。如:IF a THEN -a的数据类型必须是布尔型 IF (s1=0)AND(s2=1)OR(cb+1)THEN 数据比较符号:数据比较符号:“=”“=”如 y=a WHEN s=0 EL
11、SE b;条件判断语句通过测定表达式s=0的比较结果,以确定由哪一端向y赋值,其输出结果的数据类型是布尔类型BOOLEAN.8、逻辑操作符VHDL共有七种基本逻辑操作符:AND OR NAND NOR XOR XNOR NOT信号在这些操作符的作用下,可构成组合电路;信号在这些操作符的作用下,可构成组合电路;逻逻辑辑操操作作符符所所要要求求的的操操作作数数(操操作作对对象象)的的数数据据类类型型:BIT 、BOOLEAN、STD_LOGIC三种。三种。9 9、IF_THEN IF_THEN 条件语句条件语句IF 条件句 Then 顺序语句;ELSE 顺序语句;END IF;语句格式:赋值目标
12、=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE 表达式;其功能与进程中的IF语句相同;条件信号赋值语句将第一个满足关键词WHEN后的赋值条件所对应的表达式中的值,赋给赋值目标信号。10、WHEN_ELSE条件信号赋值语句条件信号赋值语句例:Z=a when p1 =1 elseb when p2 =1 elsec;注意条件测试的顺序性,第一子句具有最高赋值优先级,若P1和P2同时为1时,Z 获得的赋值为 a。11、PROCESS进程语句和顺序语句进程语句和顺序语句进程语句由顺序语句组成,进程语句本身是并进程语句由顺序语句组成,进程语句本身是并行语句行语句。综合后的
13、进程语句对应的硬件模块,工作方式可以是组合逻辑方式,也可以是时序逻辑方式。进程中,若无时钟信号检测语句,一般综合为组合逻辑电路;若有时钟信号检测语句,综合为时序逻辑电路。进程语句结构进程语句结构 PROCESS(D,ENA)begin顺序语句END PROCESS敏感信号表中D或ENA发生变化,引发执行一遍整个进程的顺序语句后,便返回进程的起始端,进入等待状态,直到下一次敏感信号表中的某一信号发生变化才再次进入“启动-运行”状态。v 顺序语句的特点顺序语句的特点:1、按照程序中书写的顺序执行各语句;2、在结构层次中前面语句的执行结果会直接影响后面各语句的执行结果。v 顺序语句在程序中的位置:顺
14、序语句在程序中的位置:只能出现在进程(process)和子程序中(function、procedure)。1212、文件取名和存盘、文件取名和存盘 MAX+plusII规定文件名必须与该程序的实体名一致;文件名后缀扩展名必须是.vhd;文件名不分大小写;文件名最好能体现出电路的某些信息,使人一看便知。II 寄存器描述及其寄存器描述及其VHDL语言现象语言现象D:数据输入端口Q:数据输出端口一、一、D触发器的触发器的VHDL描述描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 isPORT(CLK:IN STD_LOGIC;D:IN S
15、TD_LOGIC;Q:OUT STD_LOGIC);END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1:STD_LOGIC;BEGIN PROCESS(clk)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;Q=Q1;END PROCESS;END ARCHITECTURE bhv;信号赋值语句 SIGNAL 进程语句结构PROCESS(D,ENA)END PROCESS.敏感信号表(CLK发生变化,引发进程执行)该程序与例4-4相比,多了下列三部分:由LIBRARY引导的库的说明部分;使用了另一种
16、数据类型STD_LOGIC;使用了一种新的条件判断表达式.VHDL电电路路描描述述与与设设计计平平台台和和硬硬件件实实现现对对象象(无无论论是组合电路还是时序电路)无关。是组合电路还是时序电路)无关。二、二、D触发器触发器VHDL描述的语言现象说明描述的语言现象说明IEEE1164标准中预定义了一个枚举类型Type std_logic is(U,X,0,1,Z,W,L,H,-);该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bit。BIT数据类型定义:TYPE BIT IS(0,1);Signal a:std_logic;注意:注意:单引号中的大小写是敏感的1
17、.标准逻辑位STD_LOGIC数据类型2.设计库和标准程序包 库库:经编译后的数据的集合,存放程序包定义、实体定义、结构体定义和配置定义。库中放置程序包,程序包中放置子程序,子程序中包含函数、过程、设计实体(元件)等基础设计单元;VHDL语言的库分为两大类:设计库(WORK)和资源库;VHDL允许在一个设计实体中同时打开多个互相独立的库。IEEE库:IEEE中常见的程序包:STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED、STD_LOGIC_UNSIGNED.IEEE库中的程序包并非都符合IEEE标准(上述后三个程序包),符合IEEE标准不一定符合
18、VHDL标准(如STD_LOGIC_1164)。1)库的种类:库的语句格式:LIBRARY 库名;库名;库语句一般与USE语句同时使用。USE语句指明库中的程序包,一旦说明了库和程序包,整个设计实体都可以进入访问或调用,其作用域仅限于所说明的设计实体。STD库:两个标准程序包:STANDARD程序包、TEXTIO程序包;只要在VHDL环境中,可随时调用这两个程序包中的所有内容,不必显式表达。如:LIBRARY STD;USE STD.STANDARD.ALL;不必要的库使用语句 但在使用TEXTIO包集合时,应先说明库和包集合名:LIBRARY IEEE;USE STD.TEXTIO.ALL;
19、用于测试VHDL标准中规定标准库标准中规定标准库STD和工作库和工作库WORK是默认打开的是默认打开的WORK库:用户VHDL设计的现行工作库,用于存放用户设计和定义的设计单元和程序包。WORK库自动满足VHDL语言标准。不可在根目录进行项目设计。VITAL库:仅在VHDL仿真器中使用,包含时序程序包VITAL_TIMING和VITAL_PRIMITIVES,VITAL库中的程序包已经成为 IEEE标准,已并入IEEE库中。2)库的用法USE语句的两种使用格式:USE 库名库名.程序包名程序包名.项目名项目名;-向本设计实体开放指定库中的特定程序包内所选定的项目。USE 库名库名.程序包名程序
20、包名.ALL;-向本设计实体开放指定库中的特定程序包内所有内容。如:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.LOGIC_UNSIGNED.ALL;3.VHDL数据对象(Data Objects)数据对象(Data objects)类似于一种容器,接受不同数据类型的赋值。数据对象有三类:变量(VARIABLE)、常量(CONSTANT)、信号(SIGNAL)从硬件电路角度看,变量和信号相当于组合电路系统中门与门间的连接线及其连线上的信号值;常量相当于电路中的恒定电平。SIGNAL 信号名:数据类型;如 SIGNAL Q1:STD_LOG
21、IC;内部节点信号内部节点信号Q1不必定义端口模式。不必定义端口模式。定定义义Q1的的目目的的是是为为了了在在设设计计更更大大的的电电路路是是使使用用由由此此引入的时序电路信号。引入的时序电路信号。4.信号属性函数EVENTProcess(d,clk)begin if(clkevent and clk=1)then q=d;end if;end process;Process(d,clk)begin if(clk=1)then q=d;end if;end process;D触发器触发器缓冲器缓冲器上升沿上升沿5.不完整条件语句与时序电路PROCESS(clk);BEGIN IF CLKEVE
22、NT AND CLK=1 THEN Q1=D;END IF;Q=Q1;END PROCESS;当当时时钟钟信信号号clk发发生生变变化化时时,进进程程语语句句被被启启动动,IF语语句句将将测测定定条条件件表表达达式式是是否否满满足足(即即clk的的上上升升沿沿是是否否到到来来),如如果果为为“true”,则执行,则执行Q1=D,结束结束IF语句语句,最后执行最后执行Q=Q1。若若clk没没有有发发生生变变化化,或或者者IF语语句句不不满满足足条条件件,则则跳跳过过赋赋值语句值语句Q1b1 THEN q1=1;ELSE q1b1 THEN q1=1;ELSIF a1b1 THEN q1=0;EN
23、D IF;END PROCESS;END;-未提及当未提及当a1=b1时,时,q1作何操作,为不作何操作,为不-完整条件语句完整条件语句实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式前面通过表达式CLKEVENT AND CLK=1来检测CLK的上升沿,从而实现边沿触发寄存器的设计。严格来说,如果信号CLK的数据类型是STD_LOGIC,则它可能的取值有9种,当CLKEVENT AND CLK=1为真时,并不能推定CLK在时刻前是0,从而不能肯定是上升沿的跳变。要准确的描述一次脉冲上升沿,可采用如下条件判断语句:CLKEVENT AND (CLK=1)AND (CLKLAST_V
24、ALUE=0)预定义信号属性LAST_VALUE,表示最近一次事件发生前的值。注意:vhdl综合器未必都对此支持。测定CLK上升沿函数:Rising_edge(clk)函数只能用于STD_LOGIC信号(必须打开STD_LOGIC _1164程序包)。注意!注意!BIT型的clock,对上升沿的判断采用:clockevent and clock =1;STD_LOGIC的clock,对上升沿的判断采用:RISING_EDGE(CLOCK)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 isPORT(CLK:IN STD_LOGIC;D:
25、IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1:STD_LOGIC;BEGIN PROCESS(clk)BEGIN -IF not clkstable and clk=1THEN -BIT型clk -IF CLKEVENT AND CLK=1 THEN -BIT型clk -if rising_edge(clk)then -STD_LOGIC型clk -if(clkevent and clklast_value=0)and clk=1 then -部分综合器不支持Q1=D;END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 VHDL 语言 ppt 课件
限制150内