if语句 根据逻辑条件的判断构成程序分支结构 if布尔表达式then顺序语句 判断条件> end if 当布尔表达式为true时, 顺序语句 执行then后面的顺序语句 为fse时,执行cnd[后续语句 以后的语句 if布尔表达式then顺序语句1 else顺序语句2 判断条件 end if; 当布尔表达式为tme时,[顺序语句1顺序语句2 执行then后面的顺序语句1 后续语句 为 false时,执行顺序语句2 if布尔表达式1then顺序语句1 elseif布尔表达式2then顺序语句2 nd if 当布尔表达式1为tue时,执行顺序语句1:布尔表达式 2为true时,执行顺序语句2; 各布尔表达式必须互斥,在同一时刻,必须有一个为true 也只能有一个为true
if 语句 根据逻辑条件的判断构成程序分支结构 if 布尔表达式 then 顺序语句 end if; 当布尔表达式为 true 时, 执行 then 后面的顺序语句; 为 false 时,执行 end if 以后的语句; if 布尔表达式 then 顺序语句 1 else 顺序语句 2 end if; 当布尔表达式为 true 时, 执行 then 后面的顺序语句 1; 为 false 时,执行顺序语句 2; if 布尔表达式 1 then 顺序语句 1 elseif 布尔表达式 2 then 顺序语句 2 end if; 当布尔表达式 1 为 true 时,执行顺序语句 1;布尔表达式 2 为 true 时,执行顺序语句 2; 各布尔表达式必须互斥,在同一时刻,必须有一个为 true, 也只能有一个为 true;
if布尔表达式1then顺序语句1 elseif布尔表达式2then顺序语句2 else顺序语句3 nd if 当布尔表达式1为true时,执行顺序语句1 布尔表达式2为true时,执行顺序语句2; 所有布尔表达式都为 false时,执行顺序语句3; 例 表458 质数检测器的行为设计(采用i语句) 并进行数据类型转换 library ieee use ieee std logic 1164. all; use ieee std logic unsigned. all entity prime is port(n: in std logic vector(3 downto 0); f: out std logic); architecture beh of prime is process(n) variable ni: integer ni:=conv integer(n); if ni=l or ni=2 then f<='1' elsif ni=3 or ni=5 or ni=7 or ni=ll or ni=13 then f<='1 else f<=0t end if
if 布尔表达式 1 then 顺序语句 1 elseif 布尔表达式 2 then 顺序语句 2 else 顺序语句 3 end if; 当布尔表达式 1 为 true 时,执行顺序语句 1; 布尔表达式 2 为 true 时,执行顺序语句 2; 所有布尔表达式都为 false 时,执行顺序语句 3; 例:p.292 表 4-58 质数检测器的行为设计(采用 if 语句) 并进行数据类型转换 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity prime7 is port (n: in std_logic_vector (3 downto 0); f: out std_logic); end prime7; architecture beh of prime7 is begin process(n) variable ni : integer; begin ni := conv_integer(n); if ni=1 or ni=2 then f<= '1'; elsif ni=3 or ni=5 or ni=7 or ni=11 or ni=13 then f<='1'; else f<= '0'; end if; end process;
case 语句 与if语句类似,用于表达逻辑语句的条件选择; 如果与代入语句对比,if语句可以对应于条件代入,case 语句对应于选择代入;case语句适应性更广,综合也更为容 易 case表达式is when选择值1=顺序语句1; when选择值2=>顺序语句2 end case: 选择值应互斥,并覆盖表达式所有的可能值 case表达式is when选择值1=顺序语句1; when选择值2=>顺序语句2; when others=>顺序语句3; 没有列出的选择值都归入 others; 例:p.293质数检测器的行为设计(采用CASE语句) 并进行数据类型转换 prime8可与 prime3对比 use ieee std logic 1164. all use ieee std logic unsigned. all entity prime& is
end beh; case 语句 与 if 语句类似,用于表达逻辑语句的条件选择; 如果与代入语句对比,if 语句可以对应于条件代入,case 语句对应于选择代入;case 语句适应性更广,综合也更为容 易; case 表达式 is when 选择值 1 => 顺序语句 1; when 选择值 2 => 顺序语句 2; end case; 选择值应互斥,并覆盖表达式所有的可能值; case 表达式 is when 选择值 1 => 顺序语句 1; when 选择值 2 => 顺序语句 2; when others => 顺序语句 3; end case; 没有列出的选择值都归入 others; 例:p.293 质数检测器的行为设计(采用 CASE 语句) 并进行数据类型转换 prime8 可与 prime3 对比 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity prime8 is
port(n: in std logic vector(3 downto 0); f: out std logic) d primes architecture beh of primes is process(n) case conv integer(n)is when12→f<="1' when3s73→f="; when others =>f<='O end process lo0p语句 循环语句,可以反复执行若干顺序语句:每个循环语句 可以加以编号 有限循环(指定循环次数): 编号:for循环变量in范围loop 顺序语句; end loop编号; 循环变量为整数类型,不需要说明;范围的数据类型也 必须为整数 循环变量从范围最左边的值开始;每进行一次循环,指 标右移1位:直到全部循环完毕
port (n: in std_logic_vector (3 downto 0); f: out std_logic); end prime8; architecture beh of prime8 is begin process(n) begin case conv_integer(n) is when 1|2 => f<= '1'; when 3|5|7|11|13 => f<= '1'; when others => f<= '0'; end case; end process; end beh; loop 语句 循环语句,可以反复执行若干顺序语句;每个循环语句 可以加以编号; 有限循环(指定循环次数): 编号:for 循环变量 in 范围 loop 顺序语句; end loop 编号; 循环变量为整数类型,不需要说明;范围的数据类型也 必须为整数; 循环变量从范围最左边的值开始;每进行一次循环,指 标右移 1 位;直到全部循环完毕;
条件循环 编号: while布尔表达式loop 顺序语句; end loop编号; 不指定循环次数:每次循环前检测布尔表达式的值;当 布尔表达式为真时,执行循环;为假时,不进行循环;在循 环体内,应有语句能够改变布尔表达式中变量的值,避免无 限循环。 无条件循环: 编号:loop 顺序语句; end loop编号; 通常内部设置有跳出循环的语句;只要不满足跳出条件, 就会一直循环下去 跳出循环的语句 next编号when布尔表达式; 执行到此语句时,检测布尔表达式,若为true,则转为执 行编号所表示的语句(跳出本循环);若为 false,则继续进行 循环 若没有编号,则当布尔表达式为true时,直接跳出本次 循环,开始下一次循环;
条件循环: 编号:while 布尔表达式 loop 顺序语句; end loop 编号; 不指定循环次数;每次循环前检测布尔表达式的值;当 布尔表达式为真时,执行循环;为假时,不进行循环;在循 环体内,应有语句能够改变布尔表达式中变量的值,避免无 限循环。 无条件循环: 编号: loop 顺序语句; end loop 编号; 通常内部设置有跳出循环的语句;只要不满足跳出条件, 就会一直循环下去; 跳出循环的语句 next 编号 when 布尔表达式; 执行到此语句时,检测布尔表达式,若为 true,则转为执 行编号所表示的语句(跳出本循环);若为 false,则继续进行 循环; 若没有编号,则当布尔表达式为 true 时,直接跳出本次 循环,开始下一次循环;