8.VHDL基本语句和函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4)
格式
IF
条件1 THEN 条件1 顺序语句1 顺序语句1; 条件2 ELSIF 条件2 THEN 顺序语句2 顺序语句2; …… 条件n ELSIF 条件n THEN 顺序语句n; 顺序语句n; ELSE 顺序语句n+1; 顺序语句n+1; IF; END IF;
注意
这类语句可以实现不同类型电路的描述。 这类语句可以实现不同类型电路的描述。 其任一分支顺序语句的执行条件是以上各分支 条件相与, 条件相与,即语句中顺序语句的执行条件具有 向上相与的功能。 向上相与的功能。
注意ቤተ መጻሕፍቲ ባይዱ
•条件句中的选择值必须在表达式的取值范围内; 条件句中的选择值必须在表达式的取值范围内; 条件句中的选择值必须在表达式的取值范围内 •CASE语句中每一条件句的选择只能出现一次,相同 CASE语句中每一条件句的选择只能出现一次 CASE语句中每一条件句的选择只能出现一次, 选择值的条件语句不能重复出现; 选择值的条件语句不能重复出现; •所有表达式的值都必须穷举,不能穷举的值用 所有表达式的值都必须穷举, 所有表达式的值都必须穷举 OTHERS表示 表示。 OTHERS表示。
Library ieee; use ieee.std_logic_1164.all; entity test_06 is port( d: in std_logic; x: out std_logic); end test_06; architecture test_06 of test_06 is signal a: std_logic_vector(3 downto 0); signal b: std_logic_vector(2 downto 0); begin process begin a<="1010"; b<="111"; if(a>b) then x<=d; else x<='0'; end if; end process; end test_06;
5、EXIT语句 EXIT语句 EXIT语句用于强制退出循环, EXIT语句用于强制退出循环,去执行循环之 语句用于强制退出循环 后的语句。 后的语句。
格式
EXIT [循环标号] [WHEN条件表达式]; 循环标号] [WHEN条件表达式 条件表达式] 当有“[WHEN条件] 时 当有“[WHEN条件]”时,条件满足方可退 条件 若无此项,则无条件退出。 出。若无此项,则无条件退出。
注意
这是一种完整的IF语句, 这是一种完整的IF语句,通常用于 IF语句 产生组合电路。 产生组合电路。
格式
2) IF
条件 THEN 顺序语句1 顺序语句1; ELSE 顺序语句2 顺序语句2; IF; END IF;
注意
这是一种完整的IF语句, 这是一种完整的IF语句,通常用于 IF语句 产生组合电路。 产生组合电路。
顺序语句
• 正确 • signal A,B,C: BIT_VECTOR(3 downto 0); • signal D,E,F,G: BIT_VECTOR(1 downto 0); • signal H,I,J,K: BIT; • A<=B and C; • D<=E or F or G; • H<=(I nand J) nand K; • 错误: 错误: • A<=B and E; --数组操作数必须大小相同; • H<=I and J or K; --需括号;
IF语句 语句
将boolean型信号转换到 bit型 function b12bit(a: Boolean) return BIT is begin if a then return '1'; else return '0'; end if; end b12bit;
格式
3) IF
条件 THEN IF 条件 THEN 顺序语句; 顺序语句; IF; END IF; IF; END IF;
说明
7、NULL语句 NULL语句
LOOP语句 语句
2)WHILE模式的LOOP语句 WHILE模式的LOOP语句 模式的LOOP
格式
[循环标号]:WHILE 循环标号]
条件 LOOP 顺序语句; 顺序语句; 循环标号] END LOOP [循环标号]
说明
WHILE后面的条件是一个布尔表达式,它 WHILE后面的条件是一个布尔表达式, 后面的条件是一个布尔表达式 的返回值为boolean类型。 boolean类型 的返回值为boolean类型。 顺序语句用来描述LOOP语句的具体功能。 LOOP语句的具体功能 顺序语句用来描述LOOP语句的具体功能。 条件表达式的控制变量i需要事先定义, 条件表达式的控制变量i需要事先定义, 即控制变量i需要显式地进行说明; 即控制变量i需要显式地进行说明;同时变 量递增也需要在顺序语句中进行操作。 量递增也需要在顺序语句中进行操作。
顺序语句完全按照程序中出现的顺序执行各条语句在结构层次中前面语句的执行结果可能直接影响后面语句的结果而并行语句中仅仅执行被激活的语句而不是所有的语句
一、VHDL的基本语句 VHDL的基本语句 二、VHDL的子程序 VHDL的子程序
VHDL的顺序语句 一、VHDL的顺序语句 顺序语句用来定义进程、 顺序语句用来定义进程、过程或函数 的行为。 的行为。 顺序语句完全按照程序中出现的顺序 顺序语句完全按照程序中出现的顺序 按照程序中 执行各条语句 各条语句, 执行各条语句,在结构层次中前面语句的 执行结果可能直接影响后面语句的结果, 执行结果可能直接影响后面语句的结果, 而并行语句中仅仅执行被激活的语句, 而并行语句中仅仅执行被激活的语句,而 不是所有的语句. 不是所有的语句.
结果:在编译时, 结果:在编译时, b增添一位 ,比较 增添一位0, 增添一位 结果为: 结果为:a>b。 。
2、CASE语句 CASE语句
格式
CASE 条件表达式 IS 选择值1 =〉顺序语句1 WHEN 选择值1 =〉顺序语句1; 选择值2 =〉顺序语句2 WHEN 选择值2 =〉顺序语句2; …… 顺序语句n WHEN OTHRES =〉顺序语句n; CASE; END CASE;
格式
1) IF
条件 THEN 顺序语句; 顺序语句; IF; END IF;
注意
这是一种不完整的IF语句, 这是一种不完整的IF语句,通常用 IF语句 于产生时序电路。 于产生时序电路。
格式
2) IF
条件 THEN 顺序语句1 顺序语句1; ELSE 顺序语句2 顺序语句2; IF; END IF;
CASE语句 语句
entity MUX4 is port(A,B,I0,I1,I2,I3: in std_logic; Q : out std_logic); end MUX4; architecture MUX4 of MUX4 is signal sel:INTEGER range 0 to 3; begin process(A,B,I0,I1,I2,I3) …… CASE sel IS WHEN 0=> Q<=I0; WHEN 1=> Q<=I1; WHEN 2=> Q<=I2; WHEN 3=> Q<=I3; END CASE; end process; end mux4;
顺序语句包括: 顺序语句包括: 1、IF语句 IF语句 2、CASE语句 CASE语句 3、LOOP语句 LOOP语句 4、NEXT语句 NEXT语句 5、EXIT语句 EXIT语句 6、RETURN语句 RETURN语句 7、NULL语句 NULL语句
1、IF语句 IF语句 IF语句是VHDL语言中最常见 语句是VHDL语言中最常见﹑ IF语句是VHDL语言中最常见﹑最基础的语 IF语句有四种形式 语句有四种形式。 句。IF语句有四种形式。
EXIT 语句
6、RETURN语句 RETURN语句 语句是一段子程序结束后, RETURN 语句是一段子程序结束后,返回主程序 的控制语句。 的控制语句。
格式
RETURN [表达式]; 表达式] RETURN用于函数和过程体内, RETURN用于函数和过程体内,用来结 用于函数和过程体内 束最内层函数或过程体的执行。 束最内层函数或过程体的执行。前者中的 RETURN语句必须有条件表达式 而后者则无。 语句必须有条件表达式, RETURN语句必须有条件表达式,而后者则无。
说明
signal A,B: BIT_VECTOR(1 downto 8); signal A_LESS_THAN_B: boolean; …… A_LESS_THAN_B<=FALSE; …… for I in 1 downto 0 loop if(A(I) ='1' and B(I)='0') then A_LESS_THAN_B<=FALSE; exit; elsif(A(I) ='0' and B(I)='1') then A_LESS_THAN_B<=TRUE; exit; else null; end if; end loop;
WHILE模式的 模式的LOOP语句 模式的 语句
*例: i:=1; sum:=0; sbcd: while ( i < 10) loop sum:= i+sum; i:=i +1; end loop sbcd;
4、NEXT语句 NEXT语句
格式
NEXT
[循环标号] 循环标号]
[WHEN条件表达式] [WHEN条件表达式]; 条件表达式
*例1:asum: for i in 1 to 9 loop sum := i+sum; end loop asum; *例2: signal A,B: BIT_VECTOR(1 to 3); …… for I in 1 to 3 loop A(I)<=B(I); end loop; …… A(1)<=B(1); A(2)<=B(2); A(3)<=B(3); 以上两段等价。 *例3: variable A,B:BIT_VECTOR(1 to 10); …… for I in A' range loop A(I):=not B(I); end loop;
3、LOOP语句 LOOP语句
VHDL语言中的LOOP语句有两种形式。 VHDL语言中的LOOP语句有两种形式。 语言中的LOOP语句有两种形式 FOR循环变量形成的LOOP语句 循环变量形成的LOOP 1)FOR循环变量形成的LOOP语句 循环标号] [循环标号]:FOR 循环变量 IN 循环范围 LOOP 格式 顺序语句; 顺序语句; LOOP[循环标号] END LOOP[循环标号];
说明
循环标号是一个可选项,它是用来表示LOOP语句的 LOOP语句的 循环标号是一个可选项,它是用来表示LOOP 唯一标识符; 唯一标识符; 循环变量是一个属于LOOP语句的局部的、 LOOP语句的局部的 循环变量是一个属于 LOOP 语句的局部的 、 临时的 变量,该变量无需说明即可使用, 变量,该变量无需说明即可使用,但它只能作为赋值 源; 循环范围规定了LOOP语句的具体执行次数; LOOP语句的具体执行次数 循环范围规定了LOOP语句的具体执行次数; 顺序语句用来描述LOOP语句的具体功能, LOOP语句的具体功能 顺序语句用来描述 LOOP 语句的具体功能 , 循环变 量每取一个值就要执行一次循环体中的顺序语句。 量每取一个值就要执行一次循环体中的顺序语句。
注意
这是一种多重IF语句嵌套式条件句, 这是一种多重IF语句嵌套式条件句, IF语句嵌套式条件句 可以产生较为丰富的条件描述, 可以产生较为丰富的条件描述,既可以产 生组合电路,又可以产生时序电路, 生组合电路,又可以产生时序电路,或者 产生两者的混合。在使用该语句时应注意, 产生两者的混合。在使用该语句时应注意, IF结束句的个数应该与嵌入条件句数 END IF结束句的个数应该与嵌入条件句数 量一致。 量一致。
说明
循环标号表示下一次循环的起始位置。 循环标号表示下一次循环的起始位置。 若无循环标号就转到当前循环的尾部。 若无循环标号就转到当前循环的尾部。 [WHEN条件表达 条件表达] WHEN语句的执行条 [WHEN条件表达]是WHEN语句的执行条 若无此项,NEXT语句立即无条件跳出 件,若无此项,NEXT语句立即无条件跳出 循环。 循环。
相关文档
最新文档