§23结构体 是实体设计的具体描述,包括实体硬件的结构、硬件的类型和功能、元件的 互连关系、信号的传输和变换以及动态行为 结构 architecture结构体名of实体名is [结构体说明语句 egin 功能描述语句; end[ architecture]结构体名 结构体名:是对本结构体的命名,是该结构体的唯一标识符 结构体说明语句 对结构体内部所使用的信号、常数、数据类型和函数等进行定义 结构体功能描述语句: 描述结构体的行为和结构。 特点:功能描述语句是并行描述语句,不以语句的书写顺序为执行语句 包含5种类型的并行语句 块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句
§2.3 结构体 是实体设计的具体描述,包括实体硬件的结构、硬件的类型和功能、元件的 互连关系、信号的传输和变换以及动态行为 ➢结构: architecture 结构体名of 实体名 is [结构体说明语句;] begin 功能描述语句; end [architecture] 结构体名; ➢结构体名:是对本结构体的命名,是该结构体的唯一标识符 ➢结构体说明语句: 对结构体内部所使用的信号、常数、数据类型和函数等进行定义 ➢结构体功能描述语句: 描述结构体的行为和结构。 特点:功能描述语句是并行描述语句,不以语句的书写顺序为执行语句 包含5种类型的并行语句: 块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句
例:采用原理图编辑法和文本编辑法设计二输入与非门电路 二输入与非门的真值表 输入 输出 NAND2 A 0011 B0101 1110 文本编辑法 library ieee; use ieee std_logic_1164.all; entity nand 2is port(a, b: in std_logic, c:out std_logic) end nand 2 architecture cai of nand 2 is begin c<=anand b: end cai:
例:采用原理图编辑法和文本编辑法设计二输入与非门电路 NAND2 inst 二输入与非门的真值表 输 入 输 出 A B Y 0 0 1 0 1 1 1 0 1 1 1 0 文本编辑法 library ieee; use ieee.std_logic_1164.all; entity nand_2 is port(a,b:in std_logic; c: out std_logic); end nand_2; architecture cai of nand_2 is begin c<=a nand b; end cai;
例:采用原理图编辑法和文本编辑法设计二输入或非门电路 二输入或非门的真值表 输入 输出 NOR A inst 0011 B0101 1000 文本编辑法 library ieee useieee. std_ logic 1164.all entity nor 2is port(a, b: in std_logic; c:out std_logic) end nor 2 architecture cai of nor 2 is begin C<=anor b end cal;
例:采用原理图编辑法和文本编辑法设计二输入或非门电路 NOR2 inst 二输入或非门的真值表 输 入 输 出 A B Y 0 0 1 0 1 0 1 0 0 1 1 0 文本编辑法 library ieee; use ieee.std_logic_1164.all; entity nor_2 is port(a,b:in std_logic; c: out std_logic); end nor_2; architecture cai of nor_2 is begin c<=a nor b; end cai;
例:采用原理图编辑法和文本编辑法设计二输入异或门电路 二输入异或门的真值表 输入 输出 NOR A inst 0011 B0101 Y0110 文本编辑法 library ieee useieee. std_ logic 1164.all entity xor 2is port(a, b: in std_logic; c:out std_logic) end xor 2: architecture cai of xor 2 is begin C<=a xor b end cal;
例:采用原理图编辑法和文本编辑法设计二输入异或门电路 NOR2 inst 二输入异或门的真值表 输 入 输 出 A B Y 0 0 0 0 1 1 1 0 1 1 1 0 文本编辑法 library ieee; use ieee.std_logic_1164.all; entity xor_2 is port(a,b:in std_logic; c: out std_logic); end xor_2; architecture cai of xor_2 is begin c<=a xor b; end cai;
§24结构体的三种子结构 子结构:将一个设计分成几个模块 目的:提高设计的条理性和VHDL程序的可读性。 三种子结构:块( block语句结构、进程( process语句结构和子程序结构 241块语句结构 块标号:] block保护表达式 类属子句[类属接口表;] 端口子句[端口接口表;];] 块说明部分;] begin 块语句部分 end block[块标号]; 类属子句:用于参数的定义; 端口子句:用于信号的定义 块说明部分:对该块要用到的信号、常数、元件和子程序等进行说明; 块语句部分:对模块功能进行描述,各个语句是并行执行
§2.4 结构体的三种子结构 子结构:将一个设计分成几个模块 目的:提高设计的条理性和VHDL程序的可读性。 三种子结构:块(block)语句结构、进程(process)语句结构和子程序结构 2.4.1 块语句结构 [块标号:]block[保护表达式] [类属子句[类属接口表;];] [端口子句[端口接口表;];] [块说明部分;] begin 块语句部分; end block [块标号]; 类属子句:用于参数的定义; 端口子句:用于信号的定义; 块说明部分:对该块要用到的信号、常数、元件和子程序等进行说明; 块语句部分:对模块功能进行描述,各个语句是并行执行
例:采用原理图编辑法和文本编辑法设计四输入与非门电路 文本编辑法 libraryieee useieee. std_logic_1164.all entity and 4 is inst port(a, b, c, d in std _logic g: out std_logic end and 4: architecture dataflow of and 4is signal g1, 92: std_logic, 结构体说明语句 begin labell: block [块标号: Block[保护表达式 egin [类属子句[类属接口表;] q1<=a and b; 端口子句[端口接口表;];] g2 <=c and d; [块说明部分;] q<=q1 and g2; egin end blocklabel1 块语句部分; end dataflow: end block[块标号];
例:采用原理图编辑法和文本编辑法设计四输入与非门电路 AND4 inst 文本编辑法 library ieee; use ieee.std_logic_1164.all; entity and_4 is port(a,b,c,d:in std_logic; q: out std_logic); end and_4; architecture dataflow of and_4 is signal q1,q2: std_logic; --结构体说明语句 begin label1: block begin q1<= a and b; q2 <= c and d; q <= q1 and q2; end block label1; end dataflow; [块标号:]block[保护表达式] [类属子句[类属接口表;];] [端口子句[端口接口表;];] [块说明部分;] begin 块语句部分; end block [块标号];
AND2 anD2 AND2 st2 d inst1 3个2输入与门组成的4输入与门 242进程语句结构 一个结构体可包含一个或多个进程 各个进程语句之间是并发关系; ●在每一个进程种,组成这个进程的各个语句是顺序执行的。 [进程标号]poce敏感信号表] 进程语句说明部分;] begin 进程语句部分; end proce进程标号;
AND2 inst AND2 inst1 AND2 inst2 a b c d q1 q2 q 3个2输入与门组成的4输入与门 2.4.2 进程语句结构 ⚫一个结构体可包含一个或多个进程; ⚫各个进程语句之间是并发关系; ⚫在每一个进程种,组成这个进程的各个语句是顺序执行的。 [进程标号:]process[敏感信号表][is] [进程语句说明部分;] begin 进程语句部分; end process [进程标号];
(1)进程标号:是一个进程的名字标号; (2)敏感信号表:列出了进程对其敏感的所有信号,每当其中一个信号或是 多个信号发生变化时,就会引起进程内部顺序语句的执行 (3)进程语句说明部分:定义进程语句所需要的局部数据环境,主要包括: 数据类型说明、子程序说明和变量说明 (4)进程语句部分:描述一个功能独立的电路 例:釆用进程语句结构设计二输入与非门电路 library ieee: use ieee std_logic_1 164.all; entity nand 2 is port(a, b: in std_logic, c: out std_logic end nand 2
(1)进程标号:是一个进程的名字标号; (2) 敏感信号表:列出了进程对其敏感的所有信号,每当其中一个信号或是 多个信号发生变化时,就会引起进程内部顺序语句的执行 (3) 进程语句说明部分:定义进程语句所需要的局部数据环境,主要包括: 数据类型说明、子程序说明和变量说明 (4)进程语句部分:描述一个功能独立的电路 例:采用进程语句结构设计二输入与非门电路 library ieee; use ieee.std_logic_1164.all; entity nand_2 is port(a,b:in std_logic; c: out std_logic); end nand_2;
architecture one of nand 2is signal ab: std_logic__vector(1 downto0);-结构体说明语句 begin bnull; end case: end pro end one?
architecture one of nand_2 is signal ab:std_logic_vector (1 downto 0); --结构体说明语句 begin ab c c c cnull; end case; end process; end one;
例:采用进程语句结构设计二输入或非门电路 library ieee use ieeestd _logic_1164. all; entity nor_2is port(a, b: in std_logic; c: out std_logic); end nor 2. architecture one of nor 2is signal ab: std_logic_vector(1 downto o);-结构体说明语句 egin abc<=“0 when 0 when others 业l; end case; end process; end one;
例:采用进程语句结构设计二输入或非门电路 library ieee; use ieee.std_logic_1164.all; entity nor_2 is port(a,b:in std_logic; c: out std_logic); end nor_2; architecture one of nor_2 is signal ab:std_logic_vector (1 downto 0); --结构体说明语句 begin ab c c c cnull; end case; end process; end one;