VHDL中的行为设计:进程语句 以电路功能块为基础,直接考虑信号 流程或状态变化过程 电路功能块采用进程表达,通过信号 进行功能块之间的交流;
VHDL中的行为设计:进程语句 以电路功能块为基础,直接考虑信号 流程或状态变化过程 电路功能块采用进程表达,通过信号 进行功能块之间的交流;
进程语句的格式 进程名: process(信号名,…信号名) (敏感量表) 说明语句:类型、变量、常量、函数、 过程的声明或定义 begin 顺序语句 顺序语句 end process
进程语句的格式 进程名:process(信号名,….信号名) (敏感量表) 说明语句:类型、变量、常量、函数、 过程的声明或定义 begin 顺序语句; ….. 顺序语句; end process;
进程语句的一个实例 例:2-4译码器的进程描述 a: in std logic vector(I downto 0); f: out std logic vector (3 downto O) process(a) begin f(0)<= not a(1)and not a(0); f(1)<=not a(1)and a(0) f(2)<=a(1)and not a(0) f(3)<=a(1)anda(0) end process;
进程语句的一个实例 例:2-4译码器的进程描述 a: in std_logic_vector (1 downto 0); f: out std_logic_vector (3 downto 0) ; ……… process(a) begin f(0) <= not a(1) and not a(0); f(1) <= not a(1) and a(0); f(2) <= a(1) and not a(0); f(3) <= a(1) and a(0); end process; ………
进程语句的编写特点 1进程本身为结构体内的一条并行语句,其内 部可执行部分是顺序语句 2进程可以使用结构体的各种信号作为输入和 输出,在进程中可以改变这些信号的值; 3进程内不允许定义新的信号,但可以定义 局部变量、常量、函数等;这些定义的数据对 象只在该进程内部使用
进程语句的编写特点 1 进程本身为结构体内的一条并行语句,其内 部可执行部分是顺序语句; 2 进程可以使用结构体的各种信号作为输入和 输出,在进程中可以改变这些信号的值; 3 进程内不允许定义新的信号,但可以定义 局部变量、常量、函数等;这些定义的数据对 象只在该进程内部使用;
进程语句的仿真特点 1进程通常带有敏感量表(信号名列表),当表中 任一信号值发生变化时,进程就从头到尾执行 次 2若进程的执行导致进程内部变量或信号的任何变 化,进程将立即再次执行; 3当进程的执行不再导致进程内部量发生任何变化 时,进程将停止执行,此时进程功能块处于稳定 状态
进程语句的仿真特点 1 进程通常带有敏感量表(信号名列表),当表中 任一信号值发生变化时,进程就从头到尾执行一 次; 2 若进程的执行导致进程内部变量或信号的任何变 化,进程将立即再次执行; 3 当进程的执行不再导致进程内部量发生任何变化 时,进程将停止执行,此时进程功能块处于稳定 状态
进程语句的物理模型 进程相当于一个抽象的电路功能块,其输入信 号为其敏感量表所列信号,输出信号可以是在 进程中赋值的任何信号; 进程的内部构造类似于电路(信号)流程框图 程序的执行按顺序进行,简单功能框用代入语 句、分支语句、循环语句表达,复杂的功能框 可以采用过程语句表达
进程语句的物理模型 进程相当于一个抽象的电路功能块,其输入信 号为其敏感量表所列信号,输出信号可以是在 进程中赋值的任何信号; 进程的内部构造类似于电路(信号)流程框图, 程序的执行按顺序进行,简单功能框用代入语 句、分支语句、循环语句表达,复杂的功能框 可以采用过程语句表达
VHDL中的典型顺序语句 VHDL的子结构中的执行语句都采用顺序语 句 典型的顺序语句主要分为以下几类 变量赋值语句; Wait语句 If语句;case语句 oop语句
VHDL中的典型顺序语句 VHDL的子结构中的执行语句都采用顺序语 句; 典型的顺序语句主要分为以下几类: 变量赋值语句; Wait 语句; If语句;case语句; loop语句;
VHDL中的典型顺序语句:变量赋值 变量名:=表达式 要点: 在进程中,变量赋值立即进行,具有顺序特点 写在前面的语句先进行赋值 可以采用函数进行赋值; 进程中信号与变量可以相互赋值
VHDL中的典型顺序语句:变量赋值 变量名:= 表达式 要点: 在进程中,变量赋值立即进行,具有顺序特点, 写在前面的语句先进行赋值; 可以采用函数进行赋值; 进程中信号与变量可以相互赋值;
进程的变量赋值设计实例 例:2-4译码器的进程描述 architecture d of kdec24 is egIn process(a) begin f(0)<=not a (1and not a(0); f(1)<=not a(1)and a(0) f(2)<=a(1)and not a(0); f(3)<=a(1)anda(0); end process; end d
进程的变量赋值设计实例 例:2-4译码器的进程描述 architecture d of kdec24 is begin process(a) begin f(0) <= not a(1) and not a(0); f(1) <= not a(1) and a(0); f(2) <= a(1) and not a(0); f(3) <= a(1) and a(0); end process; end d;
进程的变量赋值设计实例 素数检测器的进程设计p290表456 process(n) variable n31 n0, n31 n2l nI, n2I n1 n0, n2 nll n0: std logic; begin n3 n0 not n 3)and n(0); n31 n2I n1: = not n 3 )and not n (2)and n (1); n2I n1 n0 not n(2)and n(1)and n(O) n2 nll n0 = n(2)and not n(1)and n(O) f<=n31 n0 or n31 n2I nl or n2I nI n0 or n2 nll n0; end process
进程的变量赋值设计实例 素数检测器的进程设计 p.290 表4-56 process(n) variable n3l_n0,n3l_n2l_n1, n2l_n1_n0 ,n2_n1l_n0:std_logic; begin n3l_n0 := not n(3) and n(0); n3l_n2l_n1 := not n(3) and not n(2) and n(1); n2l_n1_n0 := not n(2) and n(1) and n(0); n2_n1l_n0 := n(2) and not n(1) and n(0); f<= n3l_n0 or n3l_n2l_n1 or n2l_n1_n0 or n2_n1l_n0; end process;