欢迎来到天天文库
浏览记录
ID:48796224
大小:1.32 MB
页数:56页
时间:2020-01-27
《VHDL基本语句与基本设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章VHDL基本语句与基本设计EDA技术与VHDL设计7.1顺序语句并行语句VHDL组合逻辑电路设计VHDL时序逻辑电路设计7.27.37.4VHDL基本语句与基本设计顺序语句的执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺序语句只能用于进程和子程序中,被用来描述组合逻辑和时序逻辑。常用的顺序描述语句有:赋值语句、IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、子程序、RETURN语句、WAIT语句和NULL语句。7.1顺序语句信号赋值语句:7.1.1赋值语句赋值目标<=赋值源;变量赋值语
2、句:赋值目标:=赋值源;根据语句所设条件,if语句有选择地执行指定的语句,其语法格式由简单到复杂可以分为三种:(1)具有开关控制的IF语句(2)具有二选择控制的IF语句(3)具有多选择控制的IF语句7.1.2IF语句一般格式:if条件then顺序语句;endif;当条件成立,执行顺序语句,否则跳过语句。具有开关控制的IF语句if(EN=’1’)thenA<=B;--当条件EN=1时,A随B变化;否则,该语句不执行endif;具有开关控制的IF语句举例一般格式:if条件then顺序语句;else顺序语句;endif;条件
3、成立执行then后顺序语句;否则执行else后的顺序语句。具有二选择控制的IF语句ifOE=‘0’thenY<=notx;elseY<=‘Z’;--高阻符号“Z”要大写endif;用IF语句描述三态非门一般格式:if条件then顺序语句;elsif条件then顺序语句;[elsif条件then顺序语句;][else顺序语句;]endif;具有多选择控制的IF语句case语句根据表达式的取值直接从多组顺序语句中选择一组执行,其语句格式为:case表达式iswhen选择值=>顺序语句;when选择值=>顺序语句;.....
4、.whenothers=>顺序语句;endcase;7.1.3CASE语句一般格式:(1)关键词others只能出现一次,且只能作为最后一种条件取值。使用others的目的是为了使条件句中的所有选择值能涵盖表达式的所有取值,以免综合器会插入不必要的锁存器。使用CASE语句注意事项一般格式:(2)条件句中的选择值必须在表达式的取值范围内。(3)case语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现。(4)case语句执行必须选中,且仅能选中所列语句中的一条。使用CASE语句注意事项(1)WHEN取值
5、=>顺序语句:(2)WHEN取值
6、取值
7、…
8、取值=>顺序语句:(3)WHEN取值TO取值=>顺序语句;(4)WHEN取值DOWNTO取值=>顺序语句;(5)WHENOTHERS=>顺序语句;CASE语句中WHEN字句书写格式d0<=‘0’;d1<=‘0’;d2<=‘0’;d3<=‘0’;CASEselISWHEH“00”=>d0<=d;WHEN“01”=>d1<=d;WHEN“10”=>d2<=d;WHENOTHERS=>d3<=d;ENDCASE;CASE语句应用举例LOOP语句与其它高级语言中的循环语句相似,它可以
9、使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。LOOP语句有三种格式:(1)无限LOOP语句(2)FOR_LOOP语句(3)WHILE_LOOP语句7.1.4LOOP语句[标号:]LOOP顺序语句EXIT标号;ENDLOOP;举例:L2:LOOPa:=a+1;EXITL2WHENa>10;ENDLOOPL2;无限LOOP语句[标号]:FOR循环变量IN离散范围LOOP顺序处理语句;ENDLOOP[标号];注意:(1)循环变量是LOOP内部自动声明的局部量,仅在LOOP内可见。(2)离散范围必须是可
10、计算的整数范围。循环次数范围规定LOOP语句中的顺序语句被执行的次数。FOR_LOOP语句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;BEGINtmp:=’1’;FO
11、RiIN0TO7LOOPtmp:tmpxora(i);ENDLOOP;y<=tmp;ENDPROCESS;END;用FORLOOP语句描述8位奇偶校验电路[标号]:WHILE循环条件LOOP顺序处理语句;ENDLOOP[标号];例:sum:=0;i:=0;abcd:WHILE(i<10)LOOPsum:=sum+i;i:=i+1;
此文档下载收益归作者所有