已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硬件描述语言及器件,主讲教师:苏淑靖,12/13学年第1学期,教材:侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.,教学安排,第1讲:VHDL概述及其基本结构第2讲:VHDL的基本元素第3讲:VHDL的结构体描述,进程第4讲:VHDL的顺序语句第5讲:VHDL的并行语句第6讲:基本逻辑电路设计第7讲:计数器和状态机,VHDL主要描述语句,并行语句:(进程信号赋值子程序元件例化)描述模块之间连接关系,语句之间并行;某一信号变化时,受此信号触发的所有语句同时执行,第4讲顺序处理语句,顺序语句:只能出现在进程(process),函数(Function),过程(Procedure)中。像高级语言一样,按其出现的先后顺序执行;用于描述复杂的逻辑关系及逻辑运算。,常用的顺序语句:,信号代入语句变量赋值语句CASE语句IF语句LOOP语句,1信号代入语句,信号代入语句格式,格式:目标信号量=信号量表达式;目标信号量=信号量表达式after10ns;,注意:信号代入语句两边的信号量的数据类型及位长度必须一致;延时只在仿真时起作用,逻辑综合时被忽略;既可用作并行语句,也可用作顺序语句。在进程、过程和函数之外时,为并行语句,否则为顺序语句。,2变量赋值语句,变量赋值语句格式,格式:变量:=表达式;,注意:变量是局部量,只能在所定义的进程、过程、函数中使用;变量赋值是立即发生的,不能加延时;在进程中描述逻辑关系计算法时最好使用变量,以免出错;进程结束时,变量的结果只能由信号带出。,q,变量赋值语句举例,Temp,a,b:std_logic类型一致,变量结果由信号带出进程,2变量赋值语句,3变量与信号的区别,赋值方式的不同:变量:=表达式;信号=表达式;硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。有效范围的不同:信号:程序包、实体、结构体;全局量。变量:进程、子程序;局部量。赋值行为的不同:信号赋值延迟更新数值、时序电路;变量赋值立即更新数值、组合电路。,信号的多次赋值一个进程:最后一次赋值有效;多个进程:不能对同一信号赋值。,-信号在结构体中进程外声明,-变量在进程中声明,3变量与信号的区别,变量与信号的区别举例,architecturertlofexissignala:std_logic;beginprocess()begina=b;a=c;endprocess;endrtl;,architecturertlofexissignala:std_logic;beginprocess()begina=b;endprocess;process()begina=c;.endprocess;endex;,例:信号的多次赋值,3变量与信号的区别,变量与信号的区别举例,信号赋值:architecturertlofsigissignala,b:std_logic;-定义信号beginprocess(a,b)beginac=1;when11or12=c=2;whenothers=c=2;Endcase;第一个when语句的意思是当sel的值从1到9中任一数值时,信号c取值1;第二个when语句的意思是当sel的值从11或12时,信号c取值2;第三个when语句的意思是当sel的值不为前面两种情况时,信号c取值3;,When条件选择值可以有四种表达式:单个普通数值,如when选择值=顺序语句;并列多个值或,如when值|值|值=顺序语句;数值选择范围,when值to值=顺序语句;Whenothers=顺序语句;,4CASE语句,5IF语句,IF语句:根据指定的条件执行相应的顺序语句,IF语句隐含有优先级的关系,可用来设计具有优先权的电路。,例:门闩控制if(enaeventandena=1)thenq=d;endif;,综合后生成锁存器,IF语句(举例:二选一电路),architecturertlofmux2isbeginprocess(a,b,sel)beginif(sel=1)theny=a;elsey=b;endif;endprocess;endrtl;,5IF语句,libraryieee;useieee.std_logic_1164.all;entitymux41isport(d0,d1,d2,d3:instd_logic;s:instd_logic_vector(1downto0);x:outstd_logic);endmux41;architecturearchmuxofmux41isbeginprocess(s,d0,d1,d2,d3)beginifs=00thenx=d0;elsifs=01thenx=d1;elsifs=10thenx=d2;elsex=d3;endif;endprocess;endarchitecturemux;,IF语句(举例:四选一数据选择器),IF语句中的条件是顺序处理的,即先处理起始条件(高优先级),如果不满足,再处理下一条件,5IF语句,LOOP语句:能使程序进行有规则的循环,循环的次数受迭代算法的控制,常用来描述迭代电路的行为。LOOP语句包含重复执行的一组顺序语句,LOOP语句的书写格式有两种:FOR-LOOP语句格式:标号:FOR循环变量IN离散范围LOOP顺序语句;EDDLOOP标号;循环变量:是LOOP内部声明的局部量,只在LOOP内可见,循环次数只能用具体数值表达,否则不可综合,其值在每次循环中都发生变化。离散范围:表示循环变量在循环过程中依次取值的范围。必须是可计算的整数范围。,6LOOP语句,6LOOP语句,LOOP语句-FOR循环,.TO.DOWNTO.从初值开始,每执行完一次后递增(递减),直到终值为止。,LOOP语句-FOR循环,i是循环整数变量,取值范围是0to7.,6LOOP语句,LOOP语句-WHILE循环,WHILE-LOOP语句格式:标号:WHILE条件表达式LOOP顺序语句;ENDLOOP标号;,注意:循环控制条件没有直接给出循环次数,可以是任何条件表达式,条件为“真”,进行循环,条件为“假”,退出循环。条件表达式需要初始化。,6LOOP语句,LOOP语句-WHILE循环举例,6LOOP语句,7NEXT语句,NEXT语句:NEXT语句主要用在LOOP语句执行中有条件或无条件转向控制,跳向LOOP语句的起点。,NEXT语句格式:NEXT标号WHEN条件表达式;,三种情况:NEXT;无条件终止当前的循环,跳回到本次循环LOOP语句开始处,开始下次循环。NEXT标号;当有多重LOOP语句嵌套时,无条件终止当前的循环,跳转到指定标号的LOOP语句开始处,重新开始执行循环操作。NEXT标号WHEN条件表达式;当条件表达式的值为true,则执行next语句,进入跳转操作,否则继续向下执行。,LOOP语句的标号,8EXIT语句,EXIT标号WHEN条件表达式;,三种情况:EXIT;无条件终止当前循环,跳出LOOP语句,执行LOOP语句后的语句。EXIT标号;无条件终止当前循环,跳到标号所致的语句执行。EXIT标号WHEN条件表达式;当条件表达式为真,终止当前循环,跳到标号所致的语句执行;,EXIT语句:EXIT语句主要用在LOOP语句执行中有条件或无条件内部转向控制,跳向LOOP语句的终点,用于退出循环。当程序需要处理保护、出错和警告状态时,语句能提供一个快捷、简便的方法。EXIT语句格式:,9WAIT语句,WAIT语句:在进程或过程中执行到WAIT语句时,程序将被挂起,并设置好再次执行的条件。,进程状态的变化受wait语句或敏感信号量变化的控制。wait语句可设置4种不同的条件:wait-无限等待,永久挂起;waiton-敏感信号等待语句,敏感信号的变化将结束挂起,再次启动进程。waituntil-条件表达式中隐含信号变化,当满足WAIT语句所设条件,则结束挂起,再次启动进程。waitfor-超时等待语句,从执行当前的WAIT语句开始,在此时间段内,进程处于挂起状态,超过这一时间段后,程序自动恢复执行。,WAITON信号表UNTIL条件表达式FOR时间表达式;,WAIT句格式,WAITON语句格式:WAITON信号,信号;-等待信号量发生变化,只要发生变化,进程就接收挂起状态继续执行WAITON后的语句。例:以下两种描述是完全等价的敏感信号量列表和WAIT语句只能选其一,不能同时使用。,process(a,b)beginy=aandb;endprocess;,processbeginy=aandb;waitona,b;endprocess;,注意敏感量的位置,9WAIT语句,WAIT句格式,WAITUNTIL语句(可综合)格式:WAITUNTIL表达式;当表达式的值为“真”时,进程被启动,否则进程被挂起。WAITUNTIL语句的三种表达方式:WAITUNTIL信号=value;WAITUNTIL信号eventand信号=value;WAITUNTILnot(信号stable)and信号=value;,9WAIT语句,WAIT句应用,用WAITUNTIL语句的三种表达方式对时钟信号clk的上升沿的描述:waituntilclk=1;waituntilrising_edge(clk);-调用IEEE程序包的一个函数rising_edge(clk)waituntilclkeventandclk=1;由以上描述可实现相同的硬件电路结构。,9WAIT语句,10数据对象属性(attribute)描述,属性:是某一对象的特征表示,是一个内部定义函数。格式为:,对象名属性标识符用符号“”隔开对象名及其属性,综合器支持的属性有:left表示数组的左边界;right表示数组的右边界;low表示数组的下边界;high表示数组的上边界;length表示数组的长度;event、stable,如:SignalA:std_logic_vector(7downto0);SignalB:std_logic_vector(0to3);则这两个信号的属性值分别为:Aleft=7;Aright=0;Alow=0;Ahigh=7;Alength=8;Bleft=0;Bright=3;Blow=0;Bhigh=3;Blength=4;,属性event,对当前的一个极小的时间段内的事件进行检测。如发生了事件,则返回true,否则返回false。发生事件:信号电平发生变化。clockevent,process(clock)beginifclockeventandclock=1thenq=data;endif;endprocess;,10数据对象属性(attribute)描述,属性stable,属性stable的测试功能与event刚好相反,信号在时间段内无事件发生,则返回true,否则返回false。以下两语句的功能相同:clockeventandclock=1not(clockstable)andclock=1,10属性(attribute)描述,并行处理语句:结构体是描述一个设计实体内部的详细内容,其中,顺序语句用来实现这个详细内容的算法,而并行语句用来表示这个详细内容的内部连接关系。并行语句的书写顺序并不代表其执行的顺序,它们是并行执行的。常用的并行语句:,第5讲并处理语句,进程(process)语句;并行信号代入语句;块(block)语句;并行过程调用语句;元件例化语句;生成语句;,在用原理图描述一个较复杂电路时,为了便于设计和调试,设计者往往会把整个电路分成若干个相对独立的模块进行描述。在用VHDL设计时,设计者同样也是将一个结构体分成若干个相对独立的模块来描述。模块可以用四种不同的形式来描述,即:一系列的顺序语句;块(BLOCK)语句;进程(PROCESS)语句;子程序(SUBPROGRAM)语句(包含过程(PROCEDURE)语句和函数(FUNCTION)语句);也就是说,模块既可以用顺序语句来描述,也可以用并发语句来描述。然而,用多个进程(PROCESS)语句是结构体最基本的表示方法。,第5讲并处理语句,1进程(prosess)语句,进程(prosess)语句格式:,进程名:process(敏感信号1,敏感信号2,)说明区begin语句语句endprocess进程名;,顺序语句,可以说明数据类型、子程序和变量,注意:进程语句本身是并行语句,进程内部是顺序语句;一个进程中敏感表和WAIT语句只能出现其一;同一结构体重可以有多个进程,他们之间是并行关系,进程之间通过信号传递信息;,2信号代入语句,信号代入语句格式与举例,进程中出现的代入语句称为信号代入语句;,结构体中进程外出现的代入语句称为并发信号代入语句;同时执行,3条件信号代入语句,条件信号代入语句格式:,注意:else不能省略,只有最后语句才有“;”;有优先级关系,条件一优先级最高,依此类推;功能与进程中的if语句相同,但用法不同;,3条件信号代入语句,条件信号代入语句举例,3条件信号代入语句,条件信号代入语句举例,Libraryieee;Useieee.std_logic_1164.all;Entityxor2isPort(x,y:instd_logic;z:outstd_logic);Endxor2;Architectureaofxor2isBeginz=1when(x=0andy=1)else1when(x=1andy=0)else0;Enda;,4选择信号代入语句,选择信号代入格式:,WITH选择表达式SELECT赋值目标信号=表达式1WHEN选择值1,表达式2WHEN选择值2,表达式nWHENOTHERS;,目的信号是根据表达式的当前值来进行表达式的代入;选择值要覆盖所有可能情况,若不能一一指定,用OTHERS为其它情况找个出口;选择值必须互斥,不能出现条件重复或重叠的情况;功能类似于顺序语句中的CASE语句,但是并行语句,没有优先级。,注意:结束为“,”不是“;”,4选择信号代入语句,选择信号代入语句举例,Libraryieee;Useieee.std_logic_1164.all;Entityxor2isPort(x,y:instd_logic;z:outstd_logic);Endxor2;Architectureaofxor2issignaltmp:std_logic_vector(1downto0);Begintmp=x,4选择信号代入语句,选择信号代入语句举例,4X1多路选择器,5块(block)语句,块(block)语句:模块化设计的一种方式。,格式:块标号:Block数据对象定义部分Begin块描述部分EndBlock;,块(block)语句举例,5块(block)语句,libraryieee;useieee.std_logic_1164.all;entityexam1isport(a,b,c:instd_logic;d,e:outstd_logic);endexam1;architecturem1ofexam1isbeginBlock_1:BlockBegindD2,b=D3,s=S0,y=B);,元件例化语句所描述的关联关系有两种方式:,还可以用混合关联,6元件例化语句,元件例化语句(举例:用二选一实现四选一数据选择),底层文件:,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux2ISPORT(a,b,s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDmux2;ARCHITECTUREexample13OFmux2ISBEGINyD2,b=D3,s=S0,y=B);U3:mux2PORTMAP(A,B,S1,y=Y);ENDexmple13;,-元件例化-元件定义,-位置关联方式-名称关联方式-混合关联方式,6元件例化语句,7生成(GENERATE)语句,生成(GENERATE)语句功能应用场合,生成(GENERATE)语句具有复制功能,可以对有规律设计结构的逻辑描述进行简化。当设计一个由多个相同单元模块组成的电路时,只要根据设计条件,设计好一个元件,就可以用生成语句复制一组完全相同的并行元件或设计单元来组成电路。,生成(GENERATE)语句格式,生成语句有两种格式:,标号:FOR循环变量IN取值范围GENERATE说明部分BEGIN并行语句;ENDGENERATE标号;,标号:IF条件GENERATE说明部分BEGIN并行语句;ENDGENERATE标号;,7生成(GENERATE)语句,重复结构的描述,描述一个结构中的例外。当执行到该语句时首先进行条件判断,如果条件为“TRUE”才会执行生成语句中的并行处理语句;如果条件为“FALSE”,则不执行该语句。,生成(GENERATE)语句组成,生成语句的格式由四部分组成:使用FOR语句或IF语句结构,来规定重复生成并行语句的方式;通过说明部分,对元件数据类型、子程序、数据对象进行局部的说明;并行语句主要用生成语句来复制一组相同的并行元件,其语句包括所有的并行语句,甚至生成语句本身,可实现嵌套式生成结构;标号是可选择项,在嵌套式生成结构中起着十分重要的作用。,7生成(GENERATE)语句,生成(GENERATE)语句:描述用D触发器组成的八位移位寄存器,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYff_dISPORT(d,cp:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDff_d;ARCHITECTUREexample14OFff_dISBEGINPROCESS(cp)BEGINIFcpEVENTANDcp=1THENq=d;ENDIF;ENDPROCESS;ENDexample14;,描述D触发器的源程序,7生成(GENERATE)语句,用元件例化描述移位寄存器,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshift_reg_8ISPORT(Din,CLK:INSTD_LOGIC;Dout:OUTSTD_LOGIC);Q:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);ENDshift_reg_8;ARCHITECTUREexample14OFshift_reg_8ISCOMPONENTff_d;PORT(d,cp:INSTD_LOGIC;q:INSTD_LOGIC);ENDCOMPONENT;SIGNALd:STD_LOGIC_VECTOR(0TO8);BEGINd(0)=Din;u1:ff_dPORTMAP(d(0),CLK,d(1);u2:ff_dPORTMAP(d(1),CLK,d(2);u3:ff_dPORTMAP(d(2),CLK,d(3);u4:ff_dPORTMAP(d(3),CLK,d(4);u5:ff_dPORTMAP(d(4),CLK,d(5);u6:ff_dPORTMAP(d(5),CLK,d(6);u7:ff_dPORTMAP(d(6),CLK,d(7);u4:ff_dPORTMAP(d(7),CLK,d(8);Q(0)=d(1);Q(1)=d(2);Q(2)=d(3);Q(3)=d(4);Q(4)=d(5);Q(5)=d(6);Q(6)=d(7);Q(7)=d(8);Dout=d(8);ENDexample14;,-元件定义,-产生8个D触发器元件,-9条并发信号赋值语句将内部信号与输入输出端口连接起来,用生成语句描述移位寄存器,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshift_reg_8ISPORT(Din,CLK:INSTD_LOGIC;Dout:OUTSTD_LOGIC);Q:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);ENDshift_reg_8;ARCHITECTUREexample14OFshift_reg_8ISCOMPONENTff_d;PORT(d,cp:INSTD_LOGIC;q:INSTD_LOGIC);ENDCOMPONENT;SIGNALd:STD_LOGIC_VECTOR(0TO8);BEGINd(0)=Din;gen2:FORnIN0TO7GENERATEfx:ff_dPORTMAP(d(n),CLK,d(n+1);ENDGENERATE;Q(0)=d(1);Q(1)=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025四川内江汉江教育管理有限公司招聘工作人员1人笔试考试备考题库及答案解析
- 2025学院健身教练聘用合同模板
- 2025兖矿新疆能化有限公司权属企业社会招聘笔试考试备考题库及答案解析
- 2025海南五指山市招聘教师3人(第1号)考试笔试备考题库及答案解析
- 2025区域销售代理合同书
- 2025农民禽畜交易合同
- 铁路行车理论考试题库及答案
- 2025福建三明市人力资源和社会保障局“扬帆绿都圆梦三明”事业单位紧缺急需人才专场招聘活动24人考试笔试备考试题及答案解析
- 中医入职医院笔试题目及答案
- 铁路知识考试题库及答案
- 第六课-实现人生的价值-课件-高中政治统编版必修四哲学与文化-
- 砂石料场租赁协议
- 第15届全国海洋知识竞赛参考试指导题库(含答案)
- 收养申请书模板
- 干部人才培养与医院管理
- 公共基础知识复习资料梳理版
- 《SEM基础知识培训》课件
- 农村耕地承包权永久转让合同
- 【MOOC】数字逻辑与数字系统设计-中国矿业大学 中国大学慕课MOOC答案
- Unit4 Body Language Using Language 说课稿-2024-2025学年高中英语人教版(2019)选择性必修第一册
- 医疗机构信息系统安全防护预案
评论
0/150
提交评论