- 1
- 0
- 约4.99千字
- 约 49页
- 2023-11-20 发布于广东
- 举报
4.1 并行语句(Concurrent Statements);
ARCHITECTURE 结构体名OF 实体名IS
说明语句
BEGIN
并行语句
END ARCHITECTURE 结构体名
;并行语句说明;1.简单信号赋值语句;2.选择信号赋值语句
( With_Select_When )语法格式:; 所有的“WHEN”子句必须是互斥的
一般用“When Others”来处理未考虑到的情况
每一子句结尾是逗号,最后一句是分号;signal_name = 表达式1 WHEN 赋值条件1 ELSE
表达式2 WHEN 赋值条件2 ELSE
...
表达式n WHEN 赋值条件n ELSE
表达式;;根据指定条件对信号赋值,条件可以为任意逻辑表达式。
根据条件出现的先后次序,ELSE子句有优先权(按优先顺序逐条测试条件)
最后一个 ELSE子句隐含了所有未列出的条件
每一子句结尾没有标点,只有最后一句有“;”;4.1.2 进程语句;进程语句说明;
[进程名称:] PROCESS(敏感信号1,敏感信号,……)
[声明区]
BEGIN 顺序语句
END PROCESS [进程名称];;3.进程工作原理;4.进程与时钟;5.进程实例;元件例化就是将以前设计的实体当作本次设计的一个元件,并且用VHDL语言将元件之间的连接关系描述出来。元件例化是原理图输入的文本形式,包括两部分
1.元件定义:将现成的实体定义为 本设计的元件
2.元件映射:描述元件的连接关系,在结构体BEGIN和END之间
;举例:应用元件例化语句描述全加器,由半加器和或门构成的全加器设计实现。
底层设计或门VHDL描述; 底层设计半加器VHDL描述
;顶层设计全加器,由半加器和或门构成的全加器; SIGNAL d,e,f:STD_LOGIC; --定义3各个信号为内部连接
BEGIN
u1 : h_adder PORT MAP(a=ain, b=bin, co=d, so=e);--例化语句
u2 : h_adder PORT MAP(a=e, b=cin, co=f, so=sum);
u3 : or2a PORT MAP(a=d, b=f, c=cout);
END fd1;;4.2 顺序语句(Sequential Statements);4.2.1 赋值语句
信号赋值语句 变量赋值语句
1.信号赋值语句在进程与子程序之外是并行语句,在进程与子程序之内则为顺序语句。变量赋值语句只存在进程与子程序中。
2.进程中,信号的赋值并不是立即发生,它发生在进程结束时;而变量是立即赋值.
4.2.2流程控制语句
1.IF语句
2.CASE语句
3.LOOP循环语句
4.空操作语句
;IF 条件句 Then
顺序语句
END IF;;格式1:判断条件式是否成立。若条件成立,则执行THEN与END IF之间的顺序语句;若条件不成立,则跳过不执行,IF语句结束。
格式2:判断条件式是否成立。若条件成立,则执行THEN与END IF之间的顺序语句;若条件不成立,则执行ELSE与END IF之间的顺序语句。
格式3:自上而下逐一判断条件式是否成立。若条件成立,则执行相应的顺序语句,并不再判断其他条件式,直接结束IF语句的执行。其执行流程与WHEN-ELSE相似。用于具有优先级的条件判断,如果判断条件无优先级,建议采用CASE语句。
;此描述的典型电路是二选一电路:
architecture rtl of mux2 is
begin
process(a, b, sel)
begin
if (sel = ‘1’) then
y = a ;
else
y = b ;
end if ;
end process ;
end rtl ;;典型电路是多选一(四选一)电路。; if_then_elsif 语句中隐含了优先级别的判断,最先出现的条件优先级最高,可用于设计具有优先级的电路。如8-3优先级编码器。
library ieee;
use ieee.std_logic_1164.all;
entity coder is
port(input: in std_logic_vector(7 downto 0);
output: out std
原创力文档

文档评论(0)