当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

电子科技大学:《电子设计自动化技术》课程教学资源(讲义课件)第十二章 if 语句

资源类别:文库,文档格式:PDF,文档页数:8,文件大小:81.19KB,团购合买
根据逻辑条件的判断构成程序分支结构 if 布尔表达式 then 顺序语句 end if; 当布尔表达式为 true 时, 执行 then 后面的顺序语句;
点击下载完整版文档(PDF)

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→ff<='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 f 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 时,直接跳出本次 循环,开始下一次循环;

本语句可以作为loop内部的循环控制 exit编号when布尔表达式; 执行到此语句时,检测布尔表达式,若为true,则转为执 行编号所表示的语句;若为 false,则继续进行循环; 若没有编号,则当布尔表达式为true时,直接跳出循环, 执行循环之后的下一条语句 本语句可以作为中止loop的语句; 注意:next和exit通常不允许在条件或选择结构中使用(难 以实现电路硬件的综合) lop语句通常用于高层次抽象设计;在电路综合时,常 被综合为多重电路结构形式,电路庞大,效率很低; 例:并入串出的移位寄存器设计 library ieee use ieee entity piso is port(clk, load: in std logic din: in std logic vector(3 downto 0) dout: out std logic) end piso, architecture beh of piso is signal q: std logic vector(3 downto 0); process(clk, load)

本语句可以作为 loop 内部的循环控制; exit 编号 when 布尔表达式; 执行到此语句时,检测布尔表达式,若为 true,则转为执 行编号所表示的语句;若为 false,则继续进行循环; 若没有编号,则当布尔表达式为 true 时,直接跳出循环, 执行循环之后的下一条语句; 本语句可以作为中止 loop 的语句; 注意:next 和 exit 通常不允许在条件或选择结构中使用(难 以实现电路硬件的综合); loop 语句通常用于高层次抽象设计;在电路综合时,常 被综合为多重电路结构形式,电路庞大,效率很低; 例:并入串出的移位寄存器设计 library ieee; use ieee.std_logic_1164.all; entity piso is port(clk,load: in std_logic; din: in std_logic_vector(3 downto 0); dout: out std_logic); end piso; architecture beh of piso is signal q: std_logic_vector(3 downto 0); begin process(clk,load) begin

if load=O' then q<=din; dout<=0 elsif clk'event and clk=l' then q(1)<=q(0) for i in 2 to 3 loop q()<=q(-1) end loop dout<=q(3) end if end 例:p294表463 质数检测器的行为设计(采用 FOR-LOOP语句) 并进行数据类型转换 library ieee use ieee std logic 1164. all use ieee std logic unsigned. all; entity prime is port(n: in std logic vector(15 downto 0); f: out std logic) nd prime 9 architecture beh of prime is process(n) ariable ni integer variable prime: boolean nl -conv prime: true, if ni=l or ni=2 then null else for i in 2 to 253 loop if ni mod i=o then prime:= false

if load='0' then q<=din; dout<='0'; elsif clk'event and clk='1' then q(1)<=q(0); for i in 2 to 3 loop q(i)<=q(i-1); end loop; dout<=q(3); end if; end process; end beh; 例:p.294 表 4-63 质数检测器的行为设计(采用 FOR-LOOP 语句) 并进行数据类型转换 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity prime9 is port (n: in std_logic_vector (15 downto 0); f: out std_logic); end prime9; architecture beh of prime9 is begin process(n) variable ni:integer; variable prime: boolean; begin ni:=conv_integer(n) ; prime:= true; if ni=1 or ni=2 then null; else for i in 2 to 253 loop if ni mod i=0 then prime:= false;

nd if if prime then f<='I; else f<=0 end if end end beh 注意: 原程序应添加 use ieee std logic unsigned. al语句, 才能进行CONVⅠ NTEGER函数运算 编译器不支持任意的MOD()运算 行为设计的特点: 行为描述方式采用进程及内部的各类顺序语句进行设计, 与传统的软件设计思路最接近,也最抽象、最灵活;通常可 以方便地进行高层次的设计;行为设计中很多语句难以直接 实现电路综合,即使能综合,效率通常也比较差。因此行为 设计主要用于高层仿真,检验设计的基本结构

end if; end loop; end if; if prime then f<='1'; else f<= '0'; end if; end process; end beh; 注意: 原程序应添加 use ieee.std_logic_unsigned.all;语句, 才能进行 CONV_INTEGER 函数运算; 编译器不支持任意的 MOD()运算; 行为设计的特点: 行为描述方式采用进程及内部的各类顺序语句进行设计, 与传统的软件设计思路最接近,也最抽象、最灵活;通常可 以方便地进行高层次的设计;行为设计中很多语句难以直接 实现电路综合,即使能综合,效率通常也比较差。因此行为 设计主要用于高层仿真,检验设计的基本结构

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有