4.2顺序语句 只能出现在进程、过程和函数中,用以定义在进程、过程和函数中所执行的算法; 按照程序中语句出现的顺序来执行各条语句。 主要顺序语句: (1)顺序赋值语句; (2)wai语句; (3)i语句 4)case语句; (5)loop语句; 6)next语句; (7)exit语句; (8)null语句 (9) return语句 (10)顺序断言语句; (11) report语句 (12)顺序过程调用语句
4.2 顺序语句 只能出现在进程、过程和函数中,用以定义在进程、过程和函数中所执行的算法; 按照程序中语句出现的顺序来执行各条语句。 主要顺序语句: (1)顺序赋值语句; (2)wait语句; (3)if语句; (4)case语句; (5)loop语句; (6)next语句; (7)exit语句; (8)null语句; (9)return语句; (10)顺序断言语句; (11)report语句; (12)顺序过程调用语句
4.2.1顺序赋值语句 赋值语句:就是将一个值或一个表达式的运算结果传递给某一个数据对象; 作用:实现设计实体内的数据传递;对端口界面外部数据的读写; 分类:变量赋值语句;信号赋值语句 4.2.2wait语句 进程的工作状态:等待状态;执行状态 取决于敏感信号表中的信号或者是否有敏感信号激励; 敏感信号的激励: 由wait, wait for, wait until和 wait on后面的条件表达式和时间表达式激励 Wai语句的4中基本格式: wait 无限等待; wait on敏感信号变化; wait until-条件表达式; wait for时间表达式 wait on语句 书写格式: wait on敏感信号[,敏感信号…]; 如: wait on a,b;“等待a,b信号发生变化
4.2.1顺序赋值语句 赋值语句:就是将一个值或一个表达式的运算结果传递给某一个数据对象; 作用:实现设计实体内的数据传递;对端口界面外部数据的读写; 分类:变量赋值语句;信号赋值语句 4.2.2 wait语句 进程的工作状态:等待状态;执行状态 取决于敏感信号表中的信号或者是否有敏感信号激励; 敏感信号的激励: 由wait, wait for, wait until和wait on后面的条件表达式和时间表达式激励 wait语句的4中基本格式: wait --无限等待; wait on --敏感信号变化; wait until --条件表达式; wait for --时间表达式 ⚫wait on 语句 书写格式: wait on 敏感信号 [,敏感信号……]; 如: wait on a, b; --等待a,b信号发生变化
(2) waituntil语句 书写格式: wait until条件表达式; 条件表达式为布尔表达式,当返回值为真时才能再次启动进程 to: wait until a'event and a=1,: (3) wait for语句 书写格式: wait for时间表达式; 当时间表达式规定的时间到时进程才脱离等待状态而进入执行状态 如: wait for10ns; 例:RS触发器 触发器:是构成时序逻辑电路的基本单元,常用于数据暂存、延时、计数 分频和波形产生电路 RS RS触发器的真值表 输入 输出 s R01 Q0 r q S1010 0 保持 保持 RS触发器的电路符号 0 不定 不定
(2)wait until语句 书写格式: wait until 条件表达式; 条件表达式为布尔表达式,当返回值为真时才能再次启动进程。 如:wait until a’event and a=‘1’; (3)wait for 语句 书写格式: wait for 时间表达式; 当时间表达式规定的时间到时进程才脱离等待状态而进入执行状态 如: wait for 10ns; 例:RS触发器 触发器:是构成时序逻辑电路的基本单元,常用于数据暂存、延时、计数、 分频和波形产生电路 输入 输出 R S Q 0 1 0 1 1 0 1 0 1 1 保持 保持 0 0 不定 不定 RS触发器的真值表 RS触发器的电路符号 RS r s qn q Q
S-set置位端 R- reset复位端 Q、Qn-输出端 低电平输入有效的RS触发器波形图 ●原理图输入法 RS触发器原理图
S R Q Q 低电平输入有效的RS触发器波形图 S –set 置位端 R – reset 复位端 Q、Qn – 输出端 ⚫原理图输入法 NAND2 inst NAND2 inst1 VCC S INPUT VCC R INPUT OUTPUT Q OUTPUT Qn RS触发器原理图
●文本编辑法 library ieee useieee.std_logic_1164.all; useieee. std _logic_unsigned. all; entity rsis port(r, s in std _logic q, qn: out std lo gic) end rs: architecture one ofrs is signal q1, qn1: std logic; begin gin q1<-s nand qn qn1 <=rand q1; q<=q1 gns=gn end one;
⚫文本编辑法 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity RS is port(r,s:in std_logic; q, qn: out std_logic); end RS; architecture one of RS is signal q1,qn1: std_logic; begin q1<=s nand qn1; qn1 <= r nand q1; q<=q1; qn <= qn1; end one;
例:JK触发器(边沿触发) J-K触发器的真值表 输入 输出 R0 Q Qn s10011 JXxx00 0 0 状态不可用 保持 保持 个一个个个↓ 011111 Kxxx0101 0 0 1 翻转 翻转 X X 保持 保持 JK S-set置位端 R-rese复位端 k Q、Qn-输出端 n k一信号输入端 cp cp-时钟信号 JK触发器的电路符号
例:J-K触发器(边沿触发) 输入 输出 CP R S J K Q Qn X 0 1 X X 0 1 X 1 0 X X 1 0 X 0 0 X X 状态不可用 ↑ 1 1 0 0 保持 保持 ↑ 1 1 0 1 0 1 ↑ 1 1 1 0 1 0 ↑ 1 1 1 1 翻转 翻转 ↓ 1 1 X X 保持 保持 J-K触发器的真值表 JK触发器的电路符号 JK j k r s cp qn q S –set 置位端 R – reset 复位端 Q、Qn – 输出端 j、k – 信号输入端 cp – 时钟信号
library ieee; use ieee std logic_1164.all elsif cp event and cp='1 then use ieee std_logic_unsigned ifj="0′andk= en temp<=0 entity jKis qn-temp<=‘1 port(, k,r, s, cp: in std logic; elsifj=‘1andk=“0’tho en g, qn: out std_logic) q-temp<=‘1 djK; qn-temp<= 0 architecture one ofJKis elsifj=1 and k= 1then signal g-temp, qn_temp: stdlogic g_temp<-=not -temp; gin qn_temp<=not qn_temp; process〔, s,j, k, cp) end if be‘0ands=‘1then end if: nd process; q-temp< 0 qs=q-temp elsifr=1 ands=0 then qn<=gn_temp; g-_temp<= 1; end one; qr elsifr='0 temps=q-temp; p<=qn__temp;
library ieee ; use ieee.std_logic_1164.all ; use ieee.std_logic_unsigned.all ; entity JK is port(j,k,r,s,cp:in std_logic ; q, qn:out std_logic); end JK; architecture one of JK is signal q_temp, qn_temp: std_logic ; begin process(r,s,j,k,cp) begin if r=‘0’ and s=‘1’ then q_temp<=‘0’; qn_temp<=‘1’; elsif r=‘1’ and s=‘0’ then q_temp<=‘1’; qn_temp<=‘0’; elsif r=‘0’ and s=‘0’ then q_temp<=q_temp; qn_temp<=qn_temp; elsif cp’event and cp=‘1’ then if j=‘0’ and k=‘1’ then q_temp<=‘0’; qn_temp<=‘1’; elsif j=‘1’ and k=‘0’ then q_temp<=‘1’; qn_temp<=‘0’; elsif j=‘1’ and k=‘1’ then q_temp<=not q_temp; qn_temp<=not qn_temp; end if; end if; end process; q<=q_temp; qn<=qn_temp; end one;
4.23if语句 书写格式 [f标号]fthen ; [ elsifthen ;] elsifthen ;] else ;] end if[i标号]; 三种常用形式 (1) ifthen形式的语句 匝f标号Jfthen ; endf[i标号;
4.2.3 if 语句 书写格式: [if标号:]if then ; [elsif then ;] [elsif then ;] …… [else ;] end if [if标号]; 三种常用形式: (1) if then 形式的if语句 [if标号:]if then ; end if [if标号];
(2) if then else形式的避语句 [if标号班fthen 顺序语句> else ; end if lif标号; (3) if then elsif else形式的语句 匠if标号]fthen elsifthen ;] [ elsifthen ;] else ;] end if[i标号];
(2) if_then_else形式的if语句 [if标号:]if then ; else ; end if [if标号]; (3)if_then_elsif_else形式的if语句 [if标号:]if then ; [elsif then ;] [elsif then ;] …… [else ;] end if [if标号];
4.2.4case语句 书写格式: caseis when=> When三>; When=> when=>; end case 例:D触发器 D触发器的真值表 输入 輸出 CP R s on X 1 X 011 0 DXXx01 0 保持 保持 0
4.2.4 case语句 书写格式: case is when => ; when => ; when => ; …… when => ; end case; 例:D触发器 输入 输出 CP R S D Q Qn X 0 1 X 0 1 X 1 0 X 1 0 ↓ 1 1 X 保持 保持 ↑ 1 1 0 0 1 ↑ 1 1 1 1 0 D触发器的真值表