数字电路与逻辑设计(孙彩堂)时序电路-06B-基础语法-顺序语句.ppt
文本预览下载声明
* * * * * * * 一、时序逻辑电路分析 6-4 VHDL时序逻辑电路分析及设计 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL; ENTITY counter IS PORT( clk: in STD_LOGIC; q: buffer STD_LOGIC_vector(3 downto 0)); END counter; 例1.试分析下述VHDL时序电路功能 ARCHITECTURE a OF counter IS BEGIN process(clk) begin if (clkevent and clk=1) then q = q+1; end if; end process; END a; 顺序语句 (1)Process语句 (2)If-Else语句 (3)Case-When语句 (4)Null语句 (5)For-Loop语句 (6)Wait until语句 (7)变量赋值语句 (8) Procedure(过程)调用语句 并列语句 语句的顺序不影响代码的含义。 例如:When…else;With—Select; 顺序语句 语句的顺序可能影响代码的含义。 例如:if—else;case语句; 因此,为了在代码段中区分顺序语句,VHDL 规定顺序语句一定要放在Process语句内部; 1.Process 语句格式 [进程代号:]Process[(敏感信号列表)] [变量声明] Begin [if 语句] [case … when语句] [直接赋值语句] [Procedure调用语句 ] [wait until 语句] [变量赋值语句] End Process; entity abc is Port( w0,w1,s:in std_logic; f : out std_logic); end abc; architecture bh of abc is begin proc1:process(w0,w1,s) begin f= w0; --语句A if s=1 then f=w1; end if; -- 语句B end process; end bh; 进程语句Process的语义 敏感表: 每当任何信号的逻辑值发生变化时,进程就会有效。 只要进程有效:进程中的语句就会顺序执行。 在进程内部所有语句执行完毕之前,进程内部的信号赋值对于进程外部都不可见。如果对相同信号进行了多次赋值,那么只有最后一次赋值在进程外部可见。 敏感表(Sensitivity list)包括进程的一些信号,当敏感表中的某个信号变化时进程才被激活,进程内的顺序语句被执行。 当进程结束时,进程内的输出信号值被更新,进程进入等待(睡眠)状态,直到敏感表中的某一信号发生变化,进程被再次激活。 进程语句Process的语义 Process语句常见结构 Process() begin If-else End process; Process() begin Case-when End process; 2. 条件语句IF-ELSE If expression1 Then statement1; [statement;] Else statement2; [statement;] End if; If-else语句 选择分支语句:从多个条件中选择一个满足条件的子句执行;如果条件都不满足则无动作; 条件的排列方式有两种基本形式: 1. 并列; 2. 嵌套(分层); 每个if-else语句都有明确的语句控制域: 控制域以“if”开始,以“end if”结束。 If…else语句块—常用样式 If……then 子句1 End if; If……then 子句1 else 子句2 End if; If……then if …..then 子句1 else 子句2 End if; else 子句3 End if; If……then 子句1 elsif …..then 子句2
显示全部