第四讲VHDL的基本描述语句_第1页
第四讲VHDL的基本描述语句_第2页
第四讲VHDL的基本描述语句_第3页
第四讲VHDL的基本描述语句_第4页
第四讲VHDL的基本描述语句_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四讲 VHDL的基本描述语句,VHDL语言的描述语句按语句执行的顺序分类,可以分为两类: )顺序(Sequential)描述语句, )并发(Concurrent)描述语句。,顺序描述语句,特点:每一条顺序语句的执行顺序与其书写顺序 对应。所谓“顺序执行”是指在仿真意义上的顺序 性,并不意味着顺序语句对应的硬件结构也有相 同的顺序性。顺序语句只能出现在进程或子程序 中(包括函数和过程)。进程是由一系列顺序语句 构成的,而进程本身是并行语句,也就是说,在 同一设计实体中,所有进程是并行执行的,而在 任一时刻,在进程内部只有一条语句被执行。,顺序描述语句的种类: WAIT 语句 顺序断言语句 顺序

2、信号代入语句 顺序变量赋值语句 IF 语句 CASE 语句 LOOP 语句 NEXT 语句 EXIT 语句 顺序过程调用语句 NULL 语句,WAIT语句,WAIT 无限等待 WAIT ON 信号列表 敏感信号量变化 WAIT UNTIL 条件表达式 条件满足 WAIT FOR 时间表达式 时间到,WAIT ON a,b; WAIT UNTIL “en=1; WAIT FOR 10ns;,WAIT ON 信号,信号; eg: Process(a,b) process begin begin y= a and b; wait on a,b; End process; y=a and b; end

3、 process;,Pay: Process(a ,b) begin wait on a,b; -错误语句(如果进程中已有敏感变量, y=a and b; 则再使用WAIT ON是错误的) End process;,WAIT UNTIL 布尔表达式; WAIT UNTIL(x*10)100);,WAIT FOR 时间表达式; WAIT FOR 20ns; WAIT FOR (a+b);,多条件WAIT 语句 WAIT ON en,a UNTIL (EN=1) or (a=true) FOR 5us; 说明:表达式的值至少包含一个信号量的值,如果都是变量,即使有新的变化, 也不会计算表达式,这样

4、就成为恒久等待语句,包含该等待语句的进程 将不能再启动。,2020/6/26,IF,IF 条件表达式 THEN 顺序语句; END IF;,IF 条件表达式 THEN 顺序语句; ELSE 顺序语句; END IF;,判断条件是否成立。若条件成立,则执行THEN 和END IF 之间的顺序语句;若条件不成立,则跳过不执行,IF 语句结束,执行后续语句。,判断条件是否成立。若条件成立,则执行THEN 和ELSE 之间的顺序语句;若条件不成立,则执行ELSE 和END IF 之间的顺序语句。,2020/6/26,IF,IF 条件表达式1 THEN 顺序语句; ELSIF 条件表达式2 THEN 顺

5、序语句; ELSE 顺序语句; END IF;,自上而下逐一判断条件是否成立。若条件成立,则执行相应的顺序语句,并不再判断其它表达式,直接结束 IF 语句的执行。 这种语法格式能够进行优先级的判断,因此各条件表达式中的条件可以重叠。,MUX4-1,Input(0),Input(1),Input(2),Input(3),Sel(0),Sel(1),q,功能表:,Eg: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX4 IS PORT (input: IN STD_LOGIC_VECTOR (3 DOWNTO 0); sel: IN ST

6、D_LOGIC_VECTOR (1 DOWNTO 0); y: OUT STD_LOGIC); END MUX4; ARCHITECTURE MUX4_ARCH OF MUX4 IS BEGIN PROCESS(sel,input) BEGIN IF(sel=“00”) THEN y=input(0); ELSIF(sel=“01”) THEN y=inpit(1); ELSIF(sel=“10”) then y 顺序语句; WHEN OTHERS =顺序语句; END CASE;,若有多个选择值,则用“|” 间隔,例如:2|3 表示2或3。 “=”相当于IF 语句中的THEN。,条件表达式的

7、值不可重叠,例如不可同时出现 WHEN “00” | ”01” 和WHEN “00” | ”11” 。 当CASE语句的条件表达式的值无法覆盖所有情况时,要用OTHERS指出未能列出的其它所有情况的输出值。,2020/6/26,CASE,2020/6/26,CASE,2020/6/26,CASE,library ieee; use ieee.std_logic_1164.all; entity decode_3to8 is Port ( a,b,c,G1,G2A,G2B:in std_logic; y:out std_logic_vector(7 downto 0); end decode_3

8、to8; architecture dec_arch of decode_3to8 is signal indata: std_logic_vector(2 downto 0); begin indatayyyyyyyyy=XXXXXXXX; end case; else y=11111111; end if; end process; end dec_arch;,2020/6/26,LOOP,标号:FOR 循环变量 IN 循环范围 LOOP 顺序处理语句; END LOOP 标号;,循环变量是一个临时变量,仅在此LOOP语句中有效,不必事先定义。,i 不必事先定义。 不要将sum定义成信号而

9、是变量。,sum:=0; FOR i in 1 to 9 LOOP sum:=sum + i; END LOOP;,2020/6/26,LOOP,标号:WHILE 条件 LOOP 顺序处理语句; END LOOP 标号;,如果条件为真,则进行循环,如果条件为假,则结束循环。,i:=1; sum:=0; WHILE i10; END LOOP L1;,2020/6/26,EXIT,EXIT;,EXIT LOOP标号;,EXIT LOOP标号 WHEN 条件表达式,FOR i in 0 TO 7 LOOP IF (flag=TRUE) THEN EXIT; ELSE c=a and b; END

10、IF; END LOOP;,L1: FOR i in 0 TO 7 LOOP IF (flag=TRUE) THEN EXIT L1; ELSE c=a and b; END IF; END LOOP;,L1: WHILE ib , c=ab);,元件例化语句,PROCESS,归纳一下process大致有一下几个特点: 它可以与其他进程并发运行,并可存取构造体或实体 信号中所定义的信号; 进程结构中的所有语句都是按顺序执行的; 为启动进程,在进程结构中必须包含一个显式的敏感 信号量表或者包含一个WAIT语句; 进程之间的通信是通过信号量传递来实现的。,2020/6/26,并发信号代入语句,赋值

11、目标= 表达式;,在进程内部时,作为顺序语句使用;在进程外部时,作为并行语句使用。 作为并行语句使用时,表达式的值是此条语句的敏感信号,即表达式值的变化会激发语句的执行。,2020/6/26,并发信号代入语句,architecture of is begin output=input; end;,architecture of is begin process(input) begin output=input; end process; end;,条件信号代入语句与IF语句: IF语句只能在进程(PROCESS)中使用,因为它是顺序语句, 而条件语句中的ELSE不可以省略,IF中的就可以省略

12、,除此 之外重要的一点是条件信号代入语句不能嵌套。用条件信号 代入语句描述的电路与实际的逻辑电路工作情况类似,所以 需要有较多的硬件知识,掌握起来有些难度。,条件信号代入语句,BLOCK,标号:BLOCK 块头 说明语句; BEGIN 并发处理语句; END BLOCK 标号名;,块头通常用于信号的映射和参数的定义,通常通过GENERIC 语句,GENERIC_MAP 语句,PORT语句和PORT_MAP语句来实现。,说明语句和构造体的说明语句相同,BLOCK,library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH

13、.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity mux is port(d0,d1,sel:in bit; q:out bit); end mux; architecture connect of mux is signal temp1,temp2,temp3:bit; -内部信号不需要声明方向 begin cale: block begin temp1=d0 and sel; temp2=d1 and (not sel); temp3=d0 or temp2; q=temp3; end block cale; end connect;,BLOCK,library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity mux is port(d0,d1,sel:in bit; q:out bit);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论