电子设计自动化第三章 3.4

上传人:laiq****ong 文档编号:243135032 上传时间:2024-09-16 格式:PPT 页数:59 大小:411KB
返回 下载 相关 举报
电子设计自动化第三章 3.4_第1页
第1页 / 共59页
电子设计自动化第三章 3.4_第2页
第2页 / 共59页
电子设计自动化第三章 3.4_第3页
第3页 / 共59页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,3.4 VHDL,语句,顺序,语句,:每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致。只能出现在进程或子程序中。,并,行语句,:各种并行语句的执行是同步的,与书写的顺序无关。,语句从,多侧面完整,地描述梳子系统的,硬件结构和基本逻辑功能,,包括通信方式、信号的赋值、多层次的元件例化等。,理解,顺序描述语句,赋值语句,转向控制语句,等待语句,子程序调用语句,返回语句,空操作语句,顺序描述语句,用在进程或子程序中,用来定义进程或子程序的,行为,。,顺序描述语句的特点,:每一条语句的执行(指仿真执行)都是按语句排列的次序执行的。,识记,信号代入语句,信号代入语句的语法格式为:,目的信号量,=,信号量表达式;,变量赋值语句,变量赋值语句的语法格式为:,目的变量,:=,表达式;,3.4.1,赋值语句,识记,IF,语句,门闩控制的,IF,语句的语法格式为:,IF,条件,THEN,顺序处理语句;,END IF,;,IF,语句是一种条件语句,。,其语句结构有以下三种,:,1,) 门闩控制的,IF,语句;,2,),2,选择控制的,IF,语句;,3,) 多选择控制的,IF,语句。,3.4.2,转向控制语句,识记,设计,D,触发器。,LIBRARY,ieee,;,USE,ieee.std_logic_1164.ALL;,ENTITY,dff,IS,PORT(clk, d:,IN,STD_LOGIC;,q:,OUT,STD_LOGIC);,END,dff,;,ARCHITECTURE,rtl,OF,dff,IS,BEGIN,PROCESS,(,clk,),BEGIN,IF,(,clkevent,and,clk,=1),THEN,q=d;,END,IF,;,END,PROCESS,;,END,rtl,;,门闩控制的,IF,语句,选择控制的,IF,语句的语法格式为:,IF,条件,THEN,顺序处理语句,l;,ELSE,顺序处理语句,2;,END IF,;,2,)选择控制的,IF,语句,识记,设计,2,选,1,的数据选择器。,ARCHITECTURE,rtl,OF,mux2_1,IS,BEGIN,PROCESS,(a,b,sel,),BEGIN,IF,(,sel,=1),THEN,c=a;,ELSE,c=b;,END IF,;,END PROCESS,;,END,rtl,;,多选择控制的,IF,语句的语法格式为:,IF,条件,1,THEN,顺序处理语句,1,;,ELSIF,条件,2,THEN,顺序处理语句,2,;,ELSIF,条件,n,THEN,顺序处理语句,n,;,ELSE,顺序处理语句,n+l,;,END IF,;,3,) 多选择控制的,IF,语句,识记,设计,4,选,1,的多路选择器,ENTITY,mux4_1,IS,PORT,(d :,IN,STD_LOGIC_VECTOR(3 DOWNTO 0);,sel,:,IN,STD_LOGIC_VECTOR(1 DOWNTO 0);,y :,OUT,STD_LOGIC);,END,mux4_1;,ARCHITECTURE,rtl,OF,mux4_1,IS,BEGIN,PROCESS,(d,sel,),BEGIN,IF,(,sel,=00),THEN,y=d(0);,ELSIF,(,sel,=01),THEN,y=d(1);,ELSIF,(,sel,=10),THEN,y=d(2);,ELSE,y=d(3);,END,IF,;,END,PROCESS,;,END,rtl,;,IF,语句至少应有一个条件句,条件句必须由布尔,表达式构成。,IF,语句根据条件句产生的判断结果为,true,或,false,,,有条件地选择执行其后的顺序语句。,在,IF,语句,的条件表达式中只能使用关系运算操作,(,=,、,/=,、,、,=,)及逻辑运算操作的组,合表达式。,2,、,CASE,语句,CASE,语句的一般格式为:,CASE,条件表达式,IS,WHEN,选择值,=,顺序处理语句;,WHEN,选择值,=,顺序处理语句;,END,CASE,;,CASE,语句是无序的,所有表达式的值都是,并行处理,的;,CASE,语句所有表达式的值都,必须穷举,,且,不能重复,,,不能穷尽的值用,OTHERS,表示,;,CASE,语句中,至少要包含一个条件语句,。,对,任意项 输入,的条件表达式,,VHDL,不支持。,(即条件表达式的值不能含有,X,),识记,设计,4,选,1,的多路选择器,ENTITY,mux4_1,IS,PORT,(d :,IN,STD_LOGIC_VECTOR(3 DOWNTO 0);,sel,:,IN,STD_LOGIC_VECTOR(1 DOWNTO 0);,y :,OUT,STD_LOGIC);,END,mux4_1;,ARCHITECTURE,rtl,OF,mux4_1,IS,BEGIN,PROCESS,(d,sel,),BEGIN,CASE,sel,IS,WHEN,00”=yyyyy=,X;,END,CASE,;,END,PROCESS,;,END,rtl,;,LOOP,语句的书写格式一般有两种:,1,),FOR,循环变量形成的,LOOP,语句,其一般格式为:,循环标号,:,FOR,循环变量,IN,循环范围,LOOP,顺序处理语句;,END LOOP,循环标号,;,3,、,LOOP,语句,2,),FOR,循环变量形成的,LOOP,语句,其一般格式为:,循环标号,:,WHILE,循环控制条件,LOOP,顺序处理语句;,END LOOP,循环标号,;,循环变量,是一个临时变量,属于局部变量。循环变量只能作为赋值源,不能被赋值,它由,LOOP,语句,自动定义。,循环变量,是一个整数变量,不用事先说明。,循环范围,是指循环变量在循环中依次取值的范围。,ENTITY P_CHECK IS,PORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0 );,Y:OUT STD_LOGIC);,END P_CHECK;,ARCHITECTURE ART OF P_CHECK IS,SIGNAl,TMP: STD_LOGIC;,BEGIN,PROCESS(A),BEGIN,TMP =1;,FOR N IN 0 TO 7 LOOP,TMP =,TMP,XOR A(N);,END LOOP;,Y= TMP;,END PROCESS;,END ART;,FOR,LOOP,语句的使用,(,8,位奇偶校验逻辑电路,的,VHDL,程序,),ENTITY P_CHECK IS,PORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0 );,Y:OUT STD_LOGIC);,END P_CHECK;,ARCHITECTURE ART OF P_CHECK IS,BEGIN,PROCESS(A),BEGIN,VARIABLE TMP: STD_LOGIC;,TMP :=1;,FOR N IN 0 TO 7 LOOP,TMP := TMP XOR A(N);,END LOOP;,Y= TMP;,END PROCESS;,END ART;,FOR,LOOP,语句的使用,(,8,位奇偶校验逻辑电路,的,VHDL,程序,),举例:,ENTITY LOOPEXP IS,PORT (A: IN BIT_VECTOR (0 TO 3);,OUT1:OUT BIT_VECTOR(0 TO 3);,END ENTITY LOOPEXP;,ARCHITECTURE ART OF LOOPEXP IS,BEGIN,PROCESS (A) IS,VARIABLE B: BIT;,BEGIN,B:=1;,FOR I IN 0 TO 3 LOOP,B:=A(3-I) AND B;,OUT1(I)F),;,S3,:,B(k+8):=0,;,K:=K+1,;,NEXT LOOP L2,;,NEXT LOOP L1,;,举例:,在,LOOP,语句中,用,EXIT,语句,跳出并结束,整个循环状态(而不是仅跳出本次循环),继续执行,LOOP,语句后继的语句。,EXIT,语句的书写格式为:,EXIT,标号, ,WHEN,条件,;,当 “,WHEN,条件”为真时,跳出,LOOP,至程序标号处。,如果,EXIT,后面无“标号”和“,WHEN,条件”,则程序执行到,该语句时即无条件从,LOOP,语句跳出,结束循环状态,继,续执行后继语句。,5,、,EXIT,语句,识记,SIGNA A,,,B,:,STD_LOGIC_VECTOR(1 DOWNTO 0),;,SIGNA A_LESS _B,:,BOOLEAN,;,A_LESS_THEN_B=FLASE,;,-,设初始值,FOR I IN 1 DOWNTO 0 LOOP,IF (A(I)=1 AND B(I)=0) THEN,A_LESS _B=FALSE,;,EXIT,;,ELSIF (A(I)=0 AND B(I)=1) THEN,A_LESS _B=TRUE,;,-AB,EXIT,;,ELSE NULL,;,END IF,;,END LOOP,;,-,当,I=1,时返回,LOOP,语句继续比较,举例:,6,、,WAIT,语句,WAIT,语句有以下四种形式:,WAIT,-,无限等待,WAIT ON,敏感信号表;,-,敏感信号量变化,进程启动,WAIT UNTIL,条件表达式;,-,表达式成立时,进程启动,WAIT FOR,时间表达式;,-,时间到,进程启动,WAIT,语句,是进程(含过程)的同步语句,是进程的启动点。在进程(或过程)中,当执行到,WAIT,等待语句时,运行程序将被挂起,直到满足此语句的结束挂起条件后,将重新开始执行进程(或过程)中的程序。,WAIT,作为进程体的一条语句同进程体内的其它语句顺序执行。,2.,敏感信号等待语句,即敏感信号一旦发生变化将结束挂起,再次启动进程。,VHDL,规定,已列出敏感信号表的进程中不能使用任何形式的,WAIT,语句。一般,,WAIT,语句可用于进程中的任何地方。,3.,条件等待语句。被此语句挂起的进程需满足如下两个条件才能结束挂起状态,重新启动:,条件表达式中所含信号发生了变化;,此信号改变后,且满足,WAIT,语句所设的条件。,两条件缺一不可,且必须依照以上顺序完成。,4.,超时等待语句(此语句不可综合,故不再讨论)。,例,1,:,利用,WAIT,语句设计与非门电路。,nandx,:,PROCESS,BEGIN,y=a NAND b,;,WAIT ON a,,,b,;,END PROCESS,nandx,;,识记,PROCESS IS,BEGIN,WAIT UNTI CLK= 1,;,AVE=A,;,WAIT UNTI CLK= 1,;,AVE=AVE+A,;,WAIT UNTI CLK= 1,;,AVE=AVE+A,;,WAIT UNTI CLK= 1,;,AVE=(AVE+A)/4,;,END PROCESS,;,四个脉冲求四个数的平均值,举例:,PROCESS IS,BEGIN,L1,:,LOOP,WAIT UNTI CLOCK=1 AND CLOCKEVENT,;,-,等待时钟信号,NEXT L1 WHEN (RST=1),;,-,检测复位信号,RST,X=A,;,-,无复位信号,执行赋值操作,WAIT UNTI CLOCK=1AND CLOCKEVENT,;,-,等待时钟信号,NEXT L1 WHEN (RST=1),;,-,检测复位信号,RST,Y=B,;,-,无复位信号,执行赋值操作,END LOOP L1,;,END PROCESS,;,举例:,RETURN,语句,RETURN,语句,是一段子程序结束后,返回主程序的控制语句。,返回语句的两种语法格式:,RETURN,;,RETURN,条件表达式,;,RETURN,用于函数和过程体内,用来结束最内层函数或过程体的执行。,第一种语法格式只能用于过程,它只是结束过程,并不返回任何值。,用于函数中的,RETURN,语句必须有条件表达式,并且必须返回一个值。每一个函数,必须至少包含一个返回语句,,也可以拥有多个返回语句,但在函数调用时,只有其中一个返回语句可以将值带出,。,识记,PROCEDURE RS(SIGNAL S,,,R,:,IN STD_LOGIC,;,SIGNAL Q,,,NQ,:,INOUT STD_LOGIC) IS,BEGIN,IF(S=1AND R=1)THEN,REPORT“FORBIDDEN STATE,:,S AND R ARE EQUA TO1”,;,RETURN;,ELSE,Q=S AND NQ AFTER 5 ns,;,NQ TMP := REGA AND REGB,;,WHEN “101”= TMP := REGA OR REGB,;,WHEN “110”= TMP := NOT REGA,;,WHEN OTHERS = NULL;,END CASE,;,举例:,断言,(ASSERT),语句只能在,VHDL,仿真器中使用,综合器通常忽略此语句。,ASSERT,语句判断指定的条件是否为,TRUE,,如果为,FALSE,则报告错误。,ASSERT NOT (S=1 AND R=1),REPORT BOTH VALUES OF SIGNALS S AND R ARE EQUA TO1,SEVERITY ERROR,;,断言语句,语句格式是:,ASSERT,条件表达式,REPORT,字符串,SEVERITY,错误等级,SEVERITY_LEVEL,;,了解,NOTE,:,可以用在仿真时传递信息。,WARNING,:用在非平常的情形,此时仿真过程仍可继续,但结果可能是不可预知的。,ERROR,:用在仿真过程继续执行下去已经不可能的情况。,FAILURE,:用在发生了致命错误,仿真过程必须立即停止的情况。,错误等级,了解,REPORT,语句类似于,ASSERT,语句,区别是它没有条件。其语句格式如下:,REPORT,字符串;,REPORT,字符串,SEVERITY SEVERITY_LEVEL,;,WHILE COUNTER 50,THEN REPORT THE COUNTER IS OVER 50,;,END IF,;,END LOOP,;,REPORT,语句,了解,决断,(RESOLUTION),函数定义了当一个信号有多个驱动源时,以什么样的方式将这些驱动源的值决断为一个单一的值。决断函数用于声明一个决断信号。,PACKAGE RES_PACK IS,FUNCTION RES_FUNC(DATA,:,IN BIT_VECTOR) RETURN BIT,:,SUBTYPE RESOLVED_BIT IS RES_FUNC BIT,;,END PACKAGE RES_PACK,;,PACKAGE BODY RES_PACK IS,决断函数,了解,FUNCTION RES_FUNC(DATA:IN BIT_VECTOR) RETURN BIT IS,BEGIN,FOR I IN DATA RANGE LOOP,IF DATA(I)=0THEN,RETURN 0;,END IF;,END LOOP;,RETURN 1;,END FUNCTION RES_FUNC;,END PACKAGE BODY RES_PACK;,USE WORK.RES_PACK.ALL,;,ENTITY WAND_VHD IS,PORT(X,,,Y,:,IN BIT,;,Z,:,OUT RESOLVED_BIT),;,END ENTITY WAND_VHDL,;,ARCHITECTURE ART OF WAND_VHD IS,BEGIN,Z=X,;,Z OUTPUT OUTPUT OUTPUT OUTPUTL-TIME,,,GB2=S-TIME),-,局部端口参量设定,PORT (PB1,:,IN BIT,;,PB2,:,INOUT BIT),;,-,块结构中局部端口定义,POTR MAP(PB1=B1,,,PB2=A1),;,-,块结构端口连接说明,CONSTANT DELAY,:,TIME:=1 ms,;,-,局部常数定义,SIGNA S1,:,BIT,;,-,局部信号定义,BEGIN,S1=PB1 AFTER DELAY,;,PB2=S1 AFTER GB1,,,B1 AFTER GB2,;,END BLOCK BLK1,;,END ARCHITECTURE ART,;,了解,2,)条件信号代入,语句,条件信号赋值语句的格式为:,目标信号,=,表达式,1,WHEN,条件,1,ELSE,表达式,2,WHEN,条件,2,ELSE,表达式,n,;,3.5.3,并行信号赋值语句,1,)简单信号赋值语句,信号赋值目标,=,表达式;,每条信号赋值语句相当于一个进程,语句中任何信号的变化,将启动相关并行语句的赋值操作。,识记,3,)选择信号赋值,语句,选择信号赋值语句的格式为:,WITH,条件表达式,SELECT,目标信号,=,表达式,1,WHEN,条件,1,,,表达式,2,WHEN,条件,2,,,表达式,n,WHEN,条件,n,;,识记,ENTITY DECODER IS,PORT(A,,,B,,,C,:,IN STD_LOGIC,;,DATA1,,,DATA2,:,IN STD_LOGIC,;,DATAOUT,:,OUT STD_LOGIC),;,END ENTITY DECODER,;,ARCHITECTURE ART OF DECODER IS,BEGIN,SIGNA INSTRUCTION,:,STD_LOGIC_VECTOR(2 DOWNTO 0),;,INSTRUCTION =C & B & A,;,WITH INSTRUCTION SELECT,DATAOUT =DATA1 AND DATA2 WHEN “000”,,,DATA1 OR DATA2 WHEN 001,,,DATA1 NAND DATA2 WHEN 010,,,DATA1 NOR DATA2 WHEN 011,,,DATA1 XOR DATA2 WHEN 100,,,DATA1 NXOR DATA2 WHEN 101,,,Z WHEN OTHERS,;,-,当不满足条件时,输出呈高阻态,END ARCHITECTURE ART,;,了解,3.5.4,并行过程调用语句,并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。,PROCEDURE CHECK(SIGNA A,:,IN STD_LOGIC_VECTOR,;,-,在调用时再定位宽,SIGNAN ERROR,:,OUT BOOLEAN) IS,VARIABLE FOUND_ONE,:,BOOLEAN,:,=FALSE,;,-,设初始值,例,3.5.16,:,了解,BEGIN,FOR I IN ARANGE LOOP,-,对位矢量,A,的所有的位元素进行循环检测,IF A(I)=1THEN,-,发现,A,中有,1,IF FOUND_ONE THEN,-FOUND_ONE,为,TRUE,,则表明发现了一个以上的,1,ERROR=TRUE,;,-,发现了一个以上的,1,,令,FOUND_ONE,为,TRUE,RETURN,;,-,结束过程,END IF,;,FOUND_ONE,:,=TRUE,;,-,在,A,中已发现了一个,1,END IF,;,END LOOP,;,-,再测,A,中的其他位,ERROR,实参);,其中,,实参,是设计中连接到端口的实际信号;,形参,是指元件的对外接口信号。 例如:,u0: xnor2,PORT MAP,(in1=a(0), in2=b(0), out=s(0),;,u1: xnor2,PORT MAP,(in1=a(1), in2=b(1), out=s(1),;,u2: xnor2,PORT MAP,(in1=a(2), in2=b(2), out=s(2),;,u3: xnor2,PORT MAP,(in1=a(3), in2=b(3), out=s(3),;,u4: and4,PORT,MAP,(in1=s(0), in2=s(1), in3=s(2), in4=s(3),,,out=y),;,识记,GENERATE,语句,用来产生多个相同的结构,适合于生成存储器阵列和寄存器阵列。,GENERATE,语句,有两种格式:,格式,1,:,标号名:,FOR,变量,IN,范围,GENERATE,并发处理语句,;,END GENERATE,标号名,;,FOR-GENERATE,语句在形式上与,FOR-LOOP,语句相象,但结构中前者是并发处理,后者是顺序处理。故,FOR-GENERATE,语句结构中不能使用,EXIT,和,NEXT,语句。,在,FOR-GENERATE,语句中,变量,i,不需要事先定义。,3.5.6 GENERATE,语句,识记,格式,2,:,标号名:,IF,条件,GENERATE,并发处理语句,;,END GENERATE,标号名,;,IF-GENERATE,语句在形式上与,IF,语句,相象,但结构中没有,ELSE,项。,IF-GENERATE,语句是并发处理的,只有当条件为“真”时才执行结构内的语句,。,识记,-,1,位锁存器,LATCH,的逻辑描述,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY LATCH IS,PORT(D,:,IN STD_LOGIC,;,ENA,:,IN STD_LOGIC,;,Q,:,OUT STD_LOGIC),;,END ENTITY LATCH,;,ARCHITECTURE ONE OF LATCH IS,SIGNA S0,:,STD_LOGIC,;,BEGIN,PROCESS(D,,,ENA) IS,BEGIN,IF ENA=1 THEN,S0=D,;,END IF,;,Q=S0,;,END PROCESS,;,END ARCHITECTURE ONE,;,-SN74373,的逻辑描述,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY SN74373 IS,-SN74373,器件接口说明,PORT (D,:,IN STD_LOGIC_VECTOR(8 DOWNTO 1),;,-,定义,8,位输入,OEN,:,IN STD_LOGIC,;,G,:,IN STD_LOGIC,;,Q,:,OUT STD_LOGIC_VECTOR(8 DOWNTO 1),;,-,定义,8,位输出信号,END ENTITY SN74373,;,ARCHITECTURE ONE OF SN74373 IS,COMPONENT LATCH IS,-,声明调用前面描述的,1,位锁存器,PORT(D,,,ENA,:,IN STD_LOGIC,;,Q,:,OUT STD_LOGIC ),;,END COMPONENT LATCH,;,SIGNA S1,:,STD_LOGIC_VECTOR (8 DOWNTO 1),;,BEGIN,GELATCH,:,FOR NO IN 1 TO 8 GENERATE,-,用,FOR,GENERATE,语句循环例化,8,个,1,位锁存器,LATCHX,:,LATCH PORT MAP(D(NO),,,G,,,S1(NO),;,-,位置关联,END GENERATE GELATCH,;,Q=S1 WHEN OEN=0 ELSE,-,条件信号赋值语句,ZZZZZZZZ,;,-,当,OEN=1,时,,Q(8),Q(1),输出状态呈高阻态,END ARCHITECTURE ONE,;,ARCHITECTURE TWO OF SN74373 IS,SIGNA S2,:,STD_LOGIC_VECTOR(8 DOWNTO 1),;,BEGIN,PROCESS(D,,,OEN,,,G) IS,BEGIN,IF OEN=0 THEN,-IF,语句,Q=S2,;,ELSE,Q=ZZZZZZZZ,;,END IF,;,IF G=1THEN,S2=D,;,END IF,;,END PROCESS,;,END ARCHITECTURE TWO,;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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