ⅤHDL的语句特点 并行语句顺序语句 体现电路硬件的特点:各元件/信号相互影响,同时发生变化 体现设计人员的思路:现象的因果关系、局部与整体的关系 并行语句 模拟结构体中电路硬件的变化特点 结构体中的任何语句都是并行语句 并行语句的种类有 赋值类语句;数据流描述(逻辑函数的运算) 元件类语句:结构描述(逻辑符号的连接) 进程语句; 行为描述(电路功能的流程) 并行语句的执行特点 所有语句在同一时刻执行; 在仿真时刻零点执行 在任一输入信号出现变化时执行; 仿真虚拟过程(对并行语句的执行过程): 仿真开始-执行全部并行语句(耗时△t) 执行过程中不改变信号值 执行完毕,根据执行结果为信号赋值: 检查上述过程有没有输入信号发生变化
VHDL 的语句特点 并行语句 顺序语句 体现电路硬件的特点:各元件/信号相互影响,同时发生变化 体现设计人员的思路:现象的因果关系、局部与整体的关系 并行语句 模拟结构体中电路硬件的变化特点 结构体中的任何语句都是并行语句; 并行语句的种类有: 赋值类语句; 数据流描述 (逻辑函数的运算) 元件类语句; 结构描述 (逻辑符号的连接) 进程语句; 行为描述 (电路功能的流程) 并行语句的执行特点: 所有语句在同一时刻执行; 在仿真时刻零点执行; 在任一输入信号出现变化时执行; 仿真虚拟过程(对并行语句的执行过程): 仿真开始---执行全部并行语句(耗时∆t); 执行过程中不改变信号值; 执行完毕,根据执行结果为信号赋值; 检查上述过程有没有输入信号发生变化;
若有变化,则立即开始下一次执行 (重复上述过程,可能n次,占用时间n△t); 直到电路进入稳定状态: 若一次执行后没有任何输入信号发生变化,则等待 输入信号的变化,或程序中与时间有关的语句发生作用 若经过足够多次执行(例如上千次),电路仍然不能 稳定,则提示错误,并随机停留在某一状态 赋值类语句:数据流描述 以基本信号为基础,描述信号间的相互关系(函数关系); 也称为“寄存器传输描述方式”:认为各信号随时存放于 各寄存器中,信号的变化只是经过适当操作后在寄存器之间 的传递 数据流描述方式的结构体形式: Architecture d of实体名is 类型说明; 常量说明; 信号说明; 函数定义; begin 赋值类语句;(并行语句,为信号赋值,表达信号输
若有变化,则立即开始下一次执行; (重复上述过程,可能 n 次,占用时间 n∆t); 直到电路进入稳定状态; 若一次执行后没有任何输入信号发生变化,则等待 输入信号的变化,或程序中与时间有关的语句发生作用。 若经过足够多次执行(例如上千次),电路仍然不能 稳定,则提示错误,并随机停留在某一状态; 赋值类语句:数据流描述 以基本信号为基础,描述信号间的相互关系(函数关系); 也称为“寄存器传输描述方式”:认为各信号随时存放于 各寄存器中,信号的变化只是经过适当操作后在寄存器之间 的传递; 数据流描述方式的结构体形式: Architecture d of 实体名 is 类型说明; 常量说明; 信号说明; 函数定义; begin 赋值类语句; (并行语句,为信号赋值,表达信号输
入/输出关系) 直接赋值语句 信号名<=信号值(表达式); 要点 赋值式双方应为相同类型 当采用一种类型时,表达式涉及的运算应与该类型相容; 实际数字电路中,信号的类型通常为“ STD LOGIO”,对 应的运算通常为逻辑运算 24译码器(采用赋值语句 library ieee td logic 1164. all entity decoder 24 is port(a: in std logic vector(I downto 0); f: out std logic vector(3 downto 0)); end decoder 24 architecture d of decoder 24 is f(o)<=not a(l)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 d; 直接赋值语句: 信号名<= 信号值(表达式); 要点: 赋值式双方应为相同类型; 当采用一种类型时,表达式涉及的运算应与该类型相容; 实际数字电路中,信号的类型通常为“STD_LOGIC”,对 应的运算通常为逻辑运算; 例: 2-4 译码器(采用赋值语句) library ieee; use ieee.std_logic_1164.all; entity kdecoder24 is port (a: in std_logic_vector (1 downto 0); f: out std_logic_vector (3 downto 0) ); end kdecoder24; architecture d of kdecoder24 is 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 d;
条件赋值语句: 信号名<=表达式1when布尔表达式else 表达式 n when布尔表达式 n else 表达式(n+1); 要点: 可以用于表达信号的控制传输;通常采用多个2选1数 据选择器形成串接形式 布尔表达式采用的运算只能是关系运算,结果为“tue” 时执行when之前的表达式,结果为“ false”的时候执行else之 后的语句 <=既是赋值符号,又是小于等于符号,在使用时应注意 场合和意义 例:4选1数据选择器(采用条件赋值语句 library ieee use ieee std logic 1164. all IS port(a: in std logic vector(I downto 0) d: in std logic vector(3 downto 0) f: out std logic); end klux 4 1 architecture d of kmux4 1 is be f<=d(o) when a=00"else
条件赋值语句: 信号名<=表达式 1 when 布尔表达式 1 else …… 表达式 n when 布尔表达式 n else 表达式(n+1); 要点: 可以用于表达信号的控制传输;通常采用多个 2 选 1 数 据选择器形成串接形式; 布尔表达式采用的运算只能是关系运算,结果为“true” 时执行 when 之前的表达式,结果为“false”的时候执行 else 之 后的语句; <= 既是赋值符号,又是小于等于符号,在使用时应注意 场合和意义; 例:4 选 1 数据选择器(采用条件赋值语句) library ieee; use ieee.std_logic_1164.all; entity kmux4_1 is port (a: in std_logic_vector (1 downto 0); d: in std_logic_vector (3 downto 0); f: out std_logic); end kmux4_1; architecture d of kmux4_1 is begin f<= d(0) when a="00" else
d(1)when a=01"else d(2) when a="l0°else 选择赋值语句: with选择表达式 select 信号名<=表达式when选择值; 表达式 when others; 要点 选择赋值语句根据选择表达式当前所取的不同选择值 对信号进行不同赋值 语句应用与条件赋值语句类似,用于信号的控制传输 通常采用多路数据选择器方式实现 4位质数检测器(采用选择赋值语句) library ieee use ieee std logic 1164. all entity prime port(n: in std logic vector(3 downto 0); f: out std logic) architecture d of prime is
d(1) when a="01" else d(2) when a="10" else d(3); end d; 选择赋值语句: with 选择表达式 select 信号名<=表达式 when 选择值; …… 表达式 when others; 要点: 选择赋值语句根据选择表达式当前所取的不同选择值, 对信号进行不同赋值; 语句应用与条件赋值语句类似,用于信号的控制传输; 通常采用多路数据选择器方式实现; 例 4 位质数检测器(采用选择赋值语句) library ieee; use ieee.std_logic_1164.all; entity prime is port (n: in std_logic_vector (3 downto 0); f: out std_logic); end prime; architecture d of prime is begin with n select
f<="l'when"0001", when"0010" I' when001110101101ll I when1011"1101 0 when others. end d 时间延迟语句 数据在传输过程中必然出现时间延迟,为了表达信号的 延时,可以在赋值语句中加上对于延迟时间的说明 信号名<=表达式 after k ns; 各信号之间的传输时间可以表达门电路的延迟,也可以 表达传输线的延迟,可以根据实验的结果来不断修改 在基本门电路的设计时,可以为上升沿和下降沿分别设 定不同的延迟时间; after语句只是对电路物理性质的一种模拟描述,可以方 便于仿真检查,但对于电路综合不会产生任何影响 作业: 采用直接赋值语句为2-4线译码器进行设计 2采用选择赋值语句设计4选MUX 要求:程序应包括:库和包集合说明、实体和结构体 对所设计器件进行功能仿真,以波形图形式表明该器件能够 实现设计要求
f<= '1' when "0001", '1' when "0010", '1' when "0011"|"0101"|"0111", '1' when "1011"|"1101", '0' when others; end d; 时间延迟语句 数据在传输过程中必然出现时间延迟,为了表达信号的 延时,可以在赋值语句中加上对于延迟时间的说明; 信号名<=表达式 after k ns; 各信号之间的传输时间可以表达门电路的延迟,也可以 表达传输线的延迟,可以根据实验的结果来不断修改; 在基本门电路的设计时,可以为上升沿和下降沿分别设 定不同的延迟时间; after 语句只是对电路物理性质的一种模拟描述,可以方 便于仿真检查,但对于电路综合不会产生任何影响; 作业: 1 采用直接赋值语句为 2-4 线译码器进行设计; 2 采用选择赋值语句设计 4 选 1MUX; 要求:程序应包括:库和包集合说明、实体和结构体。 对所设计器件进行功能仿真,以波形图形式表明该器件能够 实现设计要求