




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、:每一条顺序语句的执行(指仿真执行):每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致。只能出现在顺序是与它们的书写顺序基本一致。只能出现在进程或子程序中。进程或子程序中。 :各种并行语句的执行是同步的,与书:各种并行语句的执行是同步的,与书写的顺序无关。写的顺序无关。语句从语句从地描述梳子系统的地描述梳子系统的,包括通信方式、信号的赋值、多层次,包括通信方式、信号的赋值、多层次的元件例化等。的元件例化等。l赋值语句赋值语句l转向控制语句转向控制语句l等待语句等待语句l子程序调用语句子程序调用语句l返回语句返回语句l空操作语句空操作语句顺序描述语句顺序描述语句 用在进程用在进程
2、或子程序中,用来定义或子程序中,用来定义进程或子程序的进程或子程序的行为行为 。顺序描述语句的特点顺序描述语句的特点 :每一条语句的执行(指每一条语句的执行(指仿真执行)都是按语句仿真执行)都是按语句排列的次序执行的。排列的次序执行的。l信号代入语句信号代入语句l变量赋值语句变量赋值语句lIF语句语句门闩控制的门闩控制的IF语句的语法格式为:语句的语法格式为:IF 条件条件 THEN 顺序处理语句;顺序处理语句; END IF; IF语句是一种条件语句语句是一种条件语句。其语句结构有以下三种其语句结构有以下三种: 1) 门闩控制的门闩控制的IF语句;语句; 2) 2选择控制的选择控制的IF语句
3、;语句; 3) 多选择控制的多选择控制的IF语句。语句。设计设计D触发器。触发器。LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY dff ISPORT(clk, d: INSTD_LOGIC; q: OUT STD_LOGIC);END dff;ARCHITECTURE rtl OF dff ISBEGINPROCESS (clk)BEGINIF (clkevent and clk=1) THEN q=d;END IF;END PROCESS ;END rtl;门闩控制的门闩控制的IF语句语句选择控制的选择控制的IF语句的语法格式为:语句的语法格
4、式为: IF 条件条件 THEN 顺序处理语句顺序处理语句 l; ELSE 顺序处理语句顺序处理语句 2; END IF; 2)选择控制的)选择控制的IF语句语句设计设计2选选1的数据选择器。的数据选择器。ARCHITECTURE rtl OF mux2_1 ISBEGINPROCESS(a,b,sel)BEGINIF (sel=1) THENc=a;ELSEc=b;END IF; END PROCESS;END rtl;多选择控制的多选择控制的IF语句的语法格式为:语句的语法格式为: IF 条件条件1 THEN 顺序处理语句顺序处理语句1; ELSIF 条件条件2 THEN 顺序处理语句顺序
5、处理语句2; ELSIF 条件条件n THEN 顺序处理语句顺序处理语句n; ELSE 顺序处理语句顺序处理语句n+l; END IF;3) 多选择控制的多选择控制的IF语句语句 设计设计4选选1的多路选择器的多路选择器ENTITY mux4_1 ISPORT(d : INSTD_LOGIC_VECTOR(3 DOWNTO 0); sel : INSTD_LOGIC_VECTOR(1 DOWNTO 0); y : OUT STD_LOGIC);END mux4_1;ARCHITECTURE rtl OF mux4_1 ISBEGINPROCESS (d, sel)BEGINIF (sel=00
6、) THEN y=d(0);ELSIF (sel=01) THEN y=d(1);ELSIF (sel=10) THEN y=d(2);ELSE y顺序处理语句;顺序处理语句; WHEN 选择值选择值=顺序处理语句;顺序处理语句; END CASE; CASE语句是无序的,所有表达式的值都是语句是无序的,所有表达式的值都是并行处理并行处理的;的; CASE语句所有表达式的值都语句所有表达式的值都必须穷举必须穷举 ,且,且不能重复不能重复 , 不能穷尽的值用不能穷尽的值用 OTHERS 表示表示 ; CASE语句中语句中至少要包含一个条件语句至少要包含一个条件语句。 对对任意项任意项 输入输入的
7、条件表达式,的条件表达式, VHDL不支持。不支持。 (即条件表达式的值不能含有(即条件表达式的值不能含有X) 设计设计4选选1的多路选择器的多路选择器ENTITY mux4_1 ISPORT(d : INSTD_LOGIC_VECTOR(3 DOWNTO 0); sel : INSTD_LOGIC_VECTOR(1 DOWNTO 0); y : OUT STD_LOGIC);END mux4_1;ARCHITECTURE rtl OF mux4_1 ISBEGINPROCESS (d, sel)BEGINCASE sel IS WHEN 00”=yyyyy= X;END CASE;END P
8、ROCESS;END rtl;lLOOP语句的书写格式一般有两种:语句的书写格式一般有两种:1)FOR 循环变量形成的循环变量形成的LOOP语句,其一般格式为:语句,其一般格式为: 循环标号循环标号:FOR 循环变量循环变量 IN 循环范围循环范围 LOOP 顺序处理语句;顺序处理语句; END LOOP 循环标号循环标号; 3、LOOP语句语句2)FOR 循环变量形成的循环变量形成的LOOP语句,其一般格式为:语句,其一般格式为: 循环标号循环标号:WHILE 循环控制条件循环控制条件 LOOP 顺序处理语句;顺序处理语句; END LOOP 循环标号循环标号; 循环变量循环变量是一个临时变
9、量,属于局部变量。循环变量只能作是一个临时变量,属于局部变量。循环变量只能作为赋值源,不能被赋值,它由为赋值源,不能被赋值,它由LOOP语句语句自动定义。自动定义。 循环变量循环变量是一个整数变量,不用事先说明。是一个整数变量,不用事先说明。 循环范围循环范围是指循环变量在循环中依次取值的范围。是指循环变量在循环中依次取值的范围。ENTITY P_CHECK ISPORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0 ); Y:OUT STD_LOGIC);END P_CHECK;ARCHITECTURE ART OF P_CHECK ISSIGNAl TMP: STD_
10、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;FORLOOP语句的使用语句的使用(8位奇偶校验逻辑电路位奇偶校验逻辑电路的的VHDL程序程序)ENTITY P_CHECK ISPORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0 ); Y:OUT STD_LOGIC);END P_CHECK;ARCHITECTURE ART OF P_CHECK ISBEGIN PROCESS(A) B
11、EGINVARIABLE 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;FORLOOP语句的使用语句的使用(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
12、BEGINPROCESS (A) ISVARIABLE B: BIT;BEGINB:=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;举例:举例:l在在LOOP语句中,用语句中,用语句语句跳出并结束跳出并结束整个循环状整个循环状态(而不是仅跳出本次循环),继续执行态(而不是仅跳出本次循环),继续执行LOOP语句后语句后继的语句。继的语句。EXIT语句的书写格式为: 标号 条件; 当当 “条件条件”为真时,跳出为真时,跳出至程序标号处。至程序标号处。
13、如果如果后面无后面无“标号标号”和和“ 条件条件”,则程序执,则程序执行到行到 该语句时即无条件从该语句时即无条件从语句跳出,结束循环状态,继语句跳出,结束循环状态,继 续执行后继语句。续执行后继语句。 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 LOOPIF (A(I)=1 AND B(I)=0) THENA_LESS _B=FALSE;EXIT;ELSIF (A(I)=0 AND B(I)=
14、1) THENA_LESS _B=TRUE; -ABEXIT; ELSE NULL;END IF;END LOOP; -当当I=1时返回时返回LOOP语句继续比较语句继续比较举例:举例:6、WAIT语句语句WAIT语句有以下四种形式:语句有以下四种形式: WAIT -无限等待无限等待 WAIT ON 敏感信号表;敏感信号表; -敏感信号量变化,进程启动敏感信号量变化,进程启动 WAIT UNTIL 条件表达式;条件表达式; -表达式成立时,进程启动表达式成立时,进程启动 WAIT FOR 时间表达式;时间表达式; -时间到,进程启动时间到,进程启动2. 敏感信号等待语句,即敏感信号一旦敏感信号
15、等待语句,即敏感信号一旦发生变化将结束挂起,再次启动进程发生变化将结束挂起,再次启动进程。VHDL规定,已列出敏感信号表的规定,已列出敏感信号表的进程中不能使用任何形式的进程中不能使用任何形式的WAIT语语句。一般,句。一般, WAIT语句可用于进程中语句可用于进程中的任何地方。的任何地方。3. 条件等待语句。被此语句挂起的进程需条件等待语句。被此语句挂起的进程需满足如下两个条件才能结束挂起状态,满足如下两个条件才能结束挂起状态,重新启动:重新启动:条件表达式中所含信号发生了变化;条件表达式中所含信号发生了变化;此信号改变后,且满足此信号改变后,且满足WAIT语句所设语句所设的条件。的条件。
16、两条件缺一不可,且必须依照以上顺序两条件缺一不可,且必须依照以上顺序完成。完成。4. 超时等待语句(此语句不超时等待语句(此语句不可综合,故不再讨论)。可综合,故不再讨论)。例例 1:利用利用WAIT语句设计与非门电路。语句设计与非门电路。 nandx: PROCESS BEGIN y=a NAND b; WAIT ON a,b;END PROCESS nandx;PROCESS ISBEGINWAIT UNTI CLK= 1;AVE=A;WAIT UNTI CLK= 1;AVE=AVE+A;WAIT UNTI CLK= 1;AVE=AVE+A;WAIT UNTI CLK= 1;AVE=(AV
17、E+A)/4;END PROCESS;四个脉冲求四个四个脉冲求四个数的平均值数的平均值举例:举例:PROCESS ISBEGIN 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; -无复位信号,执行赋值操作无复位信
18、号,执行赋值操作 END LOOP L1;END PROCESS; 举例:举例:lRETURN语句语句 RETURN语句语句是一段子程序结束后,返回主程序的控制语句。是一段子程序结束后,返回主程序的控制语句。 返回语句的两种语法格式:RETURN; RETURN 条件表达式条件表达式; RETURN 用于函数和过程体内,用来结束最内层函数或过程体用于函数和过程体内,用来结束最内层函数或过程体的执行。的执行。 第一种语法格式只能用于过程,它只是结束过程,并不返回任第一种语法格式只能用于过程,它只是结束过程,并不返回任何值。何值。 用于函数中的用于函数中的RETURN语句必须有条件表达式,并且必须
19、返回语句必须有条件表达式,并且必须返回一个值。每一个函数一个值。每一个函数必须至少包含一个返回语句必须至少包含一个返回语句,也可以拥有多个,也可以拥有多个返回语句,但在函数调用时返回语句,但在函数调用时只有其中一个返回语句可以将值带出只有其中一个返回语句可以将值带出。 PROCEDURE RS(SIGNAL S,R:IN STD_LOGIC; SIGNAL Q,NQ:INOUT STD_LOGIC) ISBEGINIF(S=1AND R=1)THENREPORT“FORBIDDEN STATE:S AND R ARE EQUA TO1”;RETURN;ELSE Q=S AND NQ AFTER
20、 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 SIG
21、NALS S AND R ARE EQUA TO1 SEVERITY ERROR;断言语句断言语句语句格式是:语句格式是: ASSERT 条件表达式条件表达式REPORT 字符串字符串SEVERITY 错误等级错误等级 SEVERITY_LEVEL;NOTE:可以用在仿真时传递信息。可以用在仿真时传递信息。WARNING:用在非平常的情形,此时仿真过程仍可继:用在非平常的情形,此时仿真过程仍可继续,但结果可能是不可预知的。续,但结果可能是不可预知的。ERROR:用在仿真过程继续执行下去已经不可能的情况。:用在仿真过程继续执行下去已经不可能的情况。FAILURE:用在发生了致命错误,仿真过程必须
22、立即停:用在发生了致命错误,仿真过程必须立即停止的情况。止的情况。错误等级错误等级REPORT语句类似于语句类似于ASSERT语句,区别是它没有条件。其语句,区别是它没有条件。其语句格式如下:语句格式如下: REPORT 字符串;字符串; REPORT字符串字符串 SEVERITY SEVERITY_LEVEL;WHILE COUNTER 50 THEN REPORT THE COUNTER IS OVER 50;END IF;END LOOP;REPORT语句语句 决断决断(RESOLUTION)函数定义了当一个信号有多函数定义了当一个信号有多个驱动源时,以什么样的方式将这些驱动源的值决断个
23、驱动源时,以什么样的方式将这些驱动源的值决断为一个单一的值。决断函数用于声明一个决断信号。为一个单一的值。决断函数用于声明一个决断信号。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 ISBEGIN FOR I IN DATA
24、 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 ISPORT(X,Y:IN BIT; Z:OUT RESOLVED_BIT);END ENTITY WAND_VHDL;ARCHITECTURE ART OF WAND_VHD ISBEGIN Z=X; Z OUTPUT OUTPUT OUTPUT OUTPUTL-TIME,GB2=S-TIME)
25、-局部端口参量设定局部端口参量设定 PORT (PB1:IN BIT;PB2:INOUT BIT); -块结构中局部端口定义块结构中局部端口定义POTR MAP(PB1=B1,PB2=A1); -块结构端口连接说明块结构端口连接说明CONSTANT DELAY:TIME:=1 ms; -局部常数定义局部常数定义SIGNA S1:BIT; -局部信号定义局部信号定义BEGINS1=PB1 AFTER DELAY; PB2=S1 AFTER GB1,B1 AFTER GB2; END BLOCK BLK1; END ARCHITECTURE ART;2)条件信号代入语句条件信号赋值语句的格式为:
26、目标信号目标信号 = 表达式表达式1 WHEN 条件条件1 ELSE 表达式表达式2 WHEN 条件条件2 ELSE 表达式表达式n; 3.5.3 并行信号赋值语句并行信号赋值语句1)简单信号赋值语句信号赋值目标信号赋值目标=表达式;表达式; 每条信号赋值语句相当于一个进程,语句中任何每条信号赋值语句相当于一个进程,语句中任何信号的变化,将启动相关并行语句的赋值操作。信号的变化,将启动相关并行语句的赋值操作。3)选择信号赋值语句选择信号赋值语句的格式为: WITH 条件表达式条件表达式 SELECT 目标信号目标信号 = 表达式表达式1 WHEN 条件条件1, 表达式表达式2 WHEN 条件条
27、件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 ISBEGINSIGNA INSTRUCTION:STD_LOGIC_VECTOR(2 DOWNTO 0);INSTRUCTION =C & B & A; WITH INSTRUCTION SELECT DATAOUT =DATA1 AND DATA2
28、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 并行过程调用语句并行过程调用语句 并行过程调用语句可以作为一个并行语句直接出现并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效在结
29、构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。于包含了同一个过程调用语句的进程。PROCEDURE CHECK(SIGNA A:IN STD_LOGIC_VECTOR; -在调用时再定位宽 SIGNAN ERROR:OUT BOOLEAN) IS VARIABLE FOUND_ONE:BOOLEAN:=FALSE; -设初始值例例3.5.16:BEGINFOR I IN ARANGE LOOP -对位矢量对位矢量A的所有的位元素进行循环检测的所有的位元素进行循环检测IF A(I)=1THEN -发现发现A中有中有1IF FOUND_ONE THEN -FOUND_
30、ONE为为TRUE,则表明发现了一个以上的,则表明发现了一个以上的1 ERROR=TRUE; -发现了一个以上的发现了一个以上的1,令,令FOUND_ONE为为TRUE RETURN; -结束过程结束过程END IF;FOUND_ONE:=TRUE; -在在A中已发现了一个中已发现了一个1END IF; END LOOP; -再测再测A中的其他位中的其他位ERROR 实参);实参);其中,其中,实参实参是设计中连接到端口的实际信号;是设计中连接到端口的实际信号;形参形参是指元件的是指元件的对外接口信号。对外接口信号。 例如:例如:u0: xnor2 PORT MAP (in1=a(0), in
31、2=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语句语句用来产生多个相同的结构,适合于生成存储用来产生多个相同的结构,适合于生成存储器阵列和寄存器阵列。器阵列和寄存器阵
32、列。 GENERATE语句语句有两种格式:有两种格式:格式1:标号名:标号名:FOR 变量变量 IN 范围范围 GENERATE 并发处理语句并发处理语句; END GENERATE 标号名标号名; FOR-GENERATE语句在形式上与语句在形式上与FOR-LOOP语句相象,语句相象,但结构中前者是并发处理,后者是顺序处理。故但结构中前者是并发处理,后者是顺序处理。故FOR-GENERATE语句结构中不能使用语句结构中不能使用EXIT和和NEXT语句。语句。 在在FOR-GENERATE语句中,变量语句中,变量 i 不需要事先定义。不需要事先定义。3.5.6 GENERATE语句语句格式2:
33、 标号名:标号名:IF 条件条件 GENERATE 并发处理语句并发处理语句; END GENERATE 标号名标号名 ; IF-GENERATE语句在形式上与语句在形式上与IF语句语句相象,但结构中没有相象,但结构中没有ELSE项。项。 IF-GENERATE语句是并发处理的,只有当条件为语句是并发处理的,只有当条件为“真真”时时才执行结构内的语句才执行结构内的语句。OENLATCHLATCHLATCHLATCHLATCHLATCHLATCHLATCHQQQQQQQQQQQQQQQQENADDENADDDENADDENADDENADDENADDENADDENADGD8D7D6D5D4D3D2D1OT11OT11OT11OT11OT11OT11OT11Q8Q7Q6Q5Q4Q3Q2Q1OT11-1位锁存器位锁存器LATCH的逻辑描述的逻辑描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论