VHDL的主要描述语句课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《VHDL的主要描述语句课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 主要 描述 语句 课件
- 资源描述:
-
1、VHDLVHDL的主要描述语句的主要描述语句 INDEXINDEX顺序语句数据类型及运算符并行语句其它语句VHDLVHDL语言客体及分类语言客体及分类l信号 Signal 信号名:数据类型 约束条件:=表达式l变量 variable 变量名:数据类型 约束条件:=表达式l常数 constant 常数名:数据类型 约束条件:=表达式VHDLVHDL语言客体及分类语言客体及分类客体类别含义说明场合信号信号说明全局量ARCHITECTURE;PACKAGE;ENTITY变量变量说明局部量PROCESS;FUNCTION;PROCEDURE常数常数说明全局量上面两种场合均可存在VHDLVHDL语言标准
2、数据类型语言标准数据类型数据类型数据类型含义含义描述方式描述方式整数整数整数整数3232位位integerinteger实数实数浮点数浮点数realreal位位逻辑逻辑“0”0”或或“1”1”bitbit位矢量位矢量位矢量位矢量bit_vectorbit_vector布尔量布尔量逻辑假或真逻辑假或真booleanboolean字符字符ASCIIASCII字符字符charactercharacter时间时间时间单位时间单位fsfs,psps,nsns等等timetime错误等级错误等级notenote,warningwarning,errorerror,failurefailureseverit
3、y levelseverity level自然数、正整数自然数、正整数整数的子集整数的子集NaturalNatural,PositivePositive字符串字符串字符矢量字符矢量StringString 说明:描述方式为在写数据类型时出现的形式说明:描述方式为在写数据类型时出现的形式VHDLVHDL语言运算符号(一)语言运算符号(一)优先级顺序优先级顺序操作符类型操作符类型操作符操作符功能功能逻辑运算符号逻辑运算符号ANDAND逻辑与逻辑与OROR逻辑或逻辑或NANDNAND逻辑与非逻辑与非NORNOR逻辑或非逻辑或非XORXOR逻辑异或逻辑异或关系运算符关系运算符=等号等号/=/=不等号不
4、等号 大于大于=大于等于大于等于算术运算符号算术运算符号+加加-减减&并置并置优先级顺序优先级顺序操作符类型操作符类型操作符操作符功能功能正负运算符正负运算符+正正-负负乘法运算符乘法运算符*乘法乘法/除法除法MODMOD求模求模REMREM取余取余*指数指数ABSABS取绝对值取绝对值NOTNOT取反取反VHDLVHDL语言运算符号(二)语言运算符号(二)INDEXINDEX顺序语句数据类型及运算符并行语句其它语句 顺序语句是指完全按照程序中书写的顺序执行各语顺序语句是指完全按照程序中书写的顺序执行各语句,并且在结构层次中前面的语句执行结果会直接影句,并且在结构层次中前面的语句执行结果会直接
5、影响后面各语句的执行结果。响后面各语句的执行结果。顺序描述语句只能出现在顺序描述语句只能出现在进程或子程序中,用来定义进程或子程序的算法。顺进程或子程序中,用来定义进程或子程序的算法。顺序语句可以用来进行算术运算、逻辑运算、信号和变序语句可以用来进行算术运算、逻辑运算、信号和变量的赋值、子程序调用等,还可以进行条件控制和迭量的赋值、子程序调用等,还可以进行条件控制和迭代。代。注意,这里的顺序是从仿真软件的运行和顺应注意,这里的顺序是从仿真软件的运行和顺应VHDLVHDL语语法的编程逻辑思路而言的,其相应的硬件逻辑工作方法的编程逻辑思路而言的,其相应的硬件逻辑工作方式未必如此。应该注意区分式未必
6、如此。应该注意区分VHDLVHDL语言的软件行为与描语言的软件行为与描述综合后的硬件行为的差异。述综合后的硬件行为的差异。VHDLVHDL顺序语句顺序语句VHDLVHDL顺序语句主要包括顺序语句主要包括变量赋值语句(变量赋值语句(Variable Evaluate)信号赋值语句(信号赋值语句(Signal Evaluate)WAIT语句语句IF 语句语句 CASE 语句语句LOOP 语句语句 NEXT 语句语句 EXIT 语句语句RETURN 语句语句NULL 语句语句过程调用语句(过程调用语句(Procedure Call)断言语句(断言语句(Assert)REPORT 语句语句 VHDLV
7、HDL顺序语句顺序语句1.变量赋值语句变量赋值语句变量赋值语句语法格式为:变量赋值语句语法格式为:变量赋值目标变量赋值目标 :=:=赋值表达式赋值表达式 例例:VARIABLEVARIABLE s s:BIT BIT :=:=00;PROCESSPROCESS(s s)VARIABLE VARIABLE countcount:INTEGER INTEGER :=:=0 0 -变量说明变量说明 BEGINBEGIN count count:=:=s+1 s+1 -变量赋值变量赋值 END PROCESS;END PROCESS;2.2.信号赋值语句信号赋值语句在在VHDLVHDL语言中,用符号语
8、言中,用符号“=”为信号赋值。为信号赋值。信号赋值语句的规范书写格式如下:信号赋值语句的规范书写格式如下:目的信号量目的信号量 =TRANSPORTINERTIAL TRANSPORTINERTIAL信号变量表达式;信号变量表达式;其中其中 TRANSPORTTRANSPORT 表示传输延迟,表示传输延迟,INERTIALINERTIAL 表示惯性延迟。表示惯性延迟。要求要求“=”=”两边两边的信号变量类型和位长度应该一致。的信号变量类型和位长度应该一致。例例1:1:s s =TRANSPORTTRANSPORT t t AFTER 10ns;AFTER 10ns;d=d=INERTIALIN
9、ERTIAL 2 2 AFTER 3ns,AFTER 3ns,1 1 AFTER 8ns;AFTER 8ns;例例2 2:s s=a NOR a NOR(b AND cb AND c););3 3个敏感量个敏感量a a,b b,c c中任何一个发生变化,该语句都将被执行。中任何一个发生变化,该语句都将被执行。WAIT WAIT语句在进程中起到与敏感信号一样重要的作用,语句在进程中起到与敏感信号一样重要的作用,敏敏感信号触发进程的执行感信号触发进程的执行,WAITWAIT语句同步进程的执行语句同步进程的执行,同步,同步条件由条件由WAITWAIT语句指明。进程在仿真运行中处于执行或挂起语句指明。
10、进程在仿真运行中处于执行或挂起两种状态之一。当进程执行到等待语句时,就将被挂起并两种状态之一。当进程执行到等待语句时,就将被挂起并设置好再次执行的条件。设置好再次执行的条件。WAITWAIT语句可以设置语句可以设置4 4种不同的条件:种不同的条件:无限等待、时间到、条件满足以及敏感信号量变化无限等待、时间到、条件满足以及敏感信号量变化。这几。这几类类WAITWAIT语句可以混合使用。现分别介绍如下:语句可以混合使用。现分别介绍如下:3.3.WAITWAIT语句语句.WAITWAIT -无限等待语句无限等待语句这种形式的这种形式的WAITWAIT语句在关键字语句在关键字“WAIT”WAIT”后面
11、不带任何后面不带任何信息,是无限等待的情况。信息,是无限等待的情况。.WAIT ON WAIT ON 信号表信号表 -敏感信号等待语句敏感信号等待语句 这种形式的这种形式的WAITWAIT语句使进程暂停,直到敏感信号表语句使进程暂停,直到敏感信号表中某个信号值发生变化。中某个信号值发生变化。WAIT ONWAIT ON语句后面跟着的信号语句后面跟着的信号表,在敏感信号表中列出等待语句的敏感信号。当进程表,在敏感信号表中列出等待语句的敏感信号。当进程处于等待状态时,其中敏感信号发生任何变化都将结束处于等待状态时,其中敏感信号发生任何变化都将结束挂起,再次启动进程。挂起,再次启动进程。例例AAPR
12、OCESSPROCESSBEGINBEGINy=a AND by=a AND b;WAIT ON WAIT ON a a,b b;END PROCESSEND PROCESS;例例BBPROCESSPROCESS(a a,b b)BEGINBEGINy=a AND by=a AND b;END PROCESSEND PROCESS;在在例例AA中执行所有语句后,进程将在中执行所有语句后,进程将在WAITWAIT语句处被语句处被挂起挂起,直到,直到a a或或b b中中任何一个信号发生变化,进程才重新开始。任何一个信号发生变化,进程才重新开始。例例AA与与例例BB是等价的。是等价的。需要注意的是需
13、要注意的是,在使用,在使用WAIT ONWAIT ON语句的进程中,语句的进程中,敏感信号量应写在进程中的敏感信号量应写在进程中的WAIT ONWAIT ON语句后面;而在不语句后面;而在不使用使用WAIT ONWAIT ON语句的进程中,敏感信号量应在开头的关语句的进程中,敏感信号量应在开头的关键词键词PROCESSPROCESS后面的敏感信号表中列出。后面的敏感信号表中列出。VHDLVHDL规定,已规定,已列出敏感信号表的进程不能使用任何形式的列出敏感信号表的进程不能使用任何形式的WAITWAIT语句。语句。.WAIT UNTIL WAIT UNTIL 条件条件 -条件等待语句条件等待语句
14、这种形式的这种形式的WAITWAIT语句使进程暂停,直到预期的条件为真。语句使进程暂停,直到预期的条件为真。WAIT UNTILWAIT UNTIL后面跟的是布尔表达式,在布尔表达式中隐后面跟的是布尔表达式,在布尔表达式中隐式地建立一个敏感信号量表,当表中任何一个信号量发式地建立一个敏感信号量表,当表中任何一个信号量发生变化时,就立即对表达式进行一次测评。如果其结果生变化时,就立即对表达式进行一次测评。如果其结果使表达式返回一个使表达式返回一个“真真”值,则进程脱离挂起状态,继值,则进程脱离挂起状态,继续执行下面的语句。即续执行下面的语句。即WAIT UNTILWAIT UNTIL语句需满足以
15、下条件:语句需满足以下条件:在条件表达式中所含的信号发生了变化;在条件表达式中所含的信号发生了变化;此信号改变后,且满足此信号改变后,且满足WAIT UNTILWAIT UNTIL语句中表达式的条件语句中表达式的条件。这两个条件缺一不可,且必须按照上述顺序来完成。这两个条件缺一不可,且必须按照上述顺序来完成。WAIT UNTILWAIT UNTIL语句有以下三种表达方式:语句有以下三种表达方式:WAIT UNTIL WAIT UNTIL 信号信号 =VALUE=VALUE;WAIT UNTIL WAIT UNTIL 信号信号EVENT ANDEVENT AND信号信号 =VALUE=VALUE
16、;WAIT UNTIL WAIT UNTIL 信号信号STABLE ANDSTABLE AND信号信号 =VALUE=VALUE;例如:例如:WAIT UNTIL clock=“1”WAIT UNTIL clock=“1”;WAIT UNTIL rising_edgeWAIT UNTIL rising_edge(clkclk););WAIT UNTIL clk=1AND clkWAIT UNTIL clk=1AND clk EVENT EVENT;WAIT UNTIL NOT clk STABLE AND clkWAIT UNTIL NOT clk STABLE AND clk=“1”=“1”
17、;一般的,在一般的,在一个进程中使用了一个进程中使用了WAITWAIT语句后,综合器会综合产语句后,综合器会综合产生时序逻辑电路。生时序逻辑电路。时序逻辑电路的运行依赖时序逻辑电路的运行依赖WAIT UNTILWAIT UNTIL表达表达式的条件,同时还具有数据存储的功能。式的条件,同时还具有数据存储的功能。例如:例如:WAIT FOR 40 nsWAIT FOR 40 ns;在该语句中,时间表达式为常数在该语句中,时间表达式为常数40ns40ns,当进程执行到,当进程执行到该语句时,将等待该语句时,将等待40ns40ns,经过,经过40ns40ns之后,进程执行之后,进程执行WAIT FOR
18、WAIT FOR的后继语句。的后继语句。例如:例如:WAIT FORWAIT FOR(a a*(b+cb+c););在此语句中,(在此语句中,(a a*(b+cb+c)为时间表达式,)为时间表达式,WAIT FORWAIT FOR语句在执行时,首先计算表达式的值,然后将计算结语句在执行时,首先计算表达式的值,然后将计算结果返回作为该语句的等待时间。果返回作为该语句的等待时间。.WAIT FOR WAIT FOR 时间表达式时间表达式-超时等待语句超时等待语句4.IF4.IF语句语句 在在VHDLVHDL语言中,语言中,IFIF语句的作用是根据指定的条件来确定语句的执行顺语句的作用是根据指定的条
19、件来确定语句的执行顺序。序。IFIF语句可用于选择器、比较器、编码器、译码器、状态机等的设计,语句可用于选择器、比较器、编码器、译码器、状态机等的设计,是是VHDLVHDL语言中最常用的语句之一。语言中最常用的语句之一。IFIF语句按其书写格式可分为以下语句按其书写格式可分为以下3 3种。种。.IF-THEN IF-THEN 控制语句控制语句这类语句书写格式为:这类语句书写格式为:IF IF 条件条件 THENTHEN 顺序语句顺序语句 END IFEND IF;当程序执行到这种控制型当程序执行到这种控制型IFIF语句时,首先判断语句中所指定的条件是否语句时,首先判断语句中所指定的条件是否成立
20、。如果条件成立,则程序继续执行成立。如果条件成立,则程序继续执行IFIF语句中所含的顺序处理语句;如果语句中所含的顺序处理语句;如果条件不成立,程序将跳过条件不成立,程序将跳过IFIF语句所包含的顺序处理语句,而向下执行语句所包含的顺序处理语句,而向下执行IFIF的后的后继语句。继语句。LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ENTITY dffdff IS ISPORTPORT(clkclk,d d:IN STD_LOGICIN STD_LOGIC;q q
21、:OUT STD_LOGIC);OUT STD_LOGIC);ENDEND dff dff;ARCHITECTURE ARCHITECTURE rtlrtl OF OF dff dff IS IS BEGIN BEGIN PROCESS(PROCESS(clkclk)BEGIN BEGIN IF(IF(clkclkEVENTEVENT AND AND clkclk=1)THEN=1)THEN q=d;q=d;END IF;END IF;END PROCESS;END PROCESS;END END rtlrtl;例例:利用利用IFIF语句引入语句引入D D触发器触发器 这种语句的书写格式为:这
22、种语句的书写格式为:TF TF 条件条件 THENTHEN 顺序语句顺序语句 ELSEELSE 顺序语句顺序语句 END IFEND IF;当当IFIF条件成立时,程序执行条件成立时,程序执行THENTHEN和和ELSEELSE之间的顺序语句部分;之间的顺序语句部分;当当IFIF语句的条件得不到满足时,程序执行语句的条件得不到满足时,程序执行ELSEELSE和和END IFEND IF之间的顺序之间的顺序处理语句。即依据处理语句。即依据IFIF所指定的条件是否满足,程序可以进行两条不所指定的条件是否满足,程序可以进行两条不同的执行路径。同的执行路径。.二选一控制语句二选一控制语句ARCHITE
23、CTURE ARCHITECTURE rtlrtl OF OF mux2mux2 IS ISBEGIN BEGIN PROCESS(PROCESS(a a,b b,s s)BEGIN BEGIN IF(IF(s s=1)THEN=1)THEN c c=a a;ELSE ELSE c c=b b;END IF;END IF;END PROCESS;END PROCESS;END END rtlrtl;例例:二选一电路结构体的描述二选一电路结构体的描述这种语句的书写格式为:这种语句的书写格式为:IFIF 条件条件 THENTHEN 顺序语句顺序语句 ELSEIFELSEIF 顺序语句顺序语句 EL
24、SEIFELSEIF 顺序语句顺序语句 ELSEELSE 顺序语句顺序语句 END END IFIF;.多选择控制语句多选择控制语句 这种多选择控制的这种多选择控制的IFIF语句,实际上就是条件嵌套。它设置了语句,实际上就是条件嵌套。它设置了多个条件,当满足所设置的多个条件之一时,就执行该条件后的多个条件,当满足所设置的多个条件之一时,就执行该条件后的顺序处理语句。当所有设置的条件都不满足时,程序执行顺序处理语句。当所有设置的条件都不满足时,程序执行ELSEELSE和和END IFEND IF之间的顺序处理语句。之间的顺序处理语句。例例:利用多选控制语句设计的四选一多路选择器利用多选控制语句设
25、计的四选一多路选择器LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITYENTITY mux4 mux4 IS IS PORT PORT(inputinput:IN STD_LOGIC_VECTOR(3 DOWNTO 0)IN STD_LOGIC_VECTOR(3 DOWNTO 0);selsel:IN STD_LOGIC_VECTOR(1 DOWNTO 0)IN STD_LOGIC_VECTOR(1 DOWNTO 0);y y:OUT STD_LOGIC);OUT ST
展开阅读全文