【FPGA学习笔记】VHDL语言(五)语言风格描述:行为描述,数据流描述,结构化描述

一、行为描述

只描述电路的行为和功能没有直接指明涉及的硬件结构。通常是指含有进程的非结构化描述。
在程序中不存在任何与硬件选择相关的语句,不存在任何有关硬件连线的语句。仅仅做了功能描述
eg:

--10的加法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY cnt IS
	PORT(reset,vlk IN STD_LOGIC ;
		q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END cnt;

ARCHITECTURE behav OF cnt IS
	SIGNAL q0 : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
	PROCESS (clk,reset,q0)
	BEGIN
		IF reset = '0' THEN
			q0 <= "0000";
		ELSIF (clk'EVENT AND clk = '1') THEN
			IF q0 = "1001" THEN 
				q0 <= "0000";
			ELSE
				q0 <= q0 + 1;
			END IF;
		END IF;
		q = q0;
	END PROCESS;
END behav;

二、数据流描述(RTL描述)

真正可以进行逻辑综合的描述方式。
【FPGA学习笔记】VHDL语言(五)语言风格描述:行为描述,数据流描述,结构化描述_第1张图片

--二选一多路选择器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL
ENTITY mux2_1 IS
	port (d0 ,d1,sel : IN STD_LOGIC ;
		 q : out STD_LOGIC);
END mux2_1;

ARCHITECTURE rtl OF mux2_1 IS
	SIGNAL tmp1,tmp2,tmp3 : STD_LOGIC;
BEGIN
	tmp1 <= d0 AND sel;
	tmp2 <= d1 AND (NOT sel);
	tmp3 <= tmp1 OR tmp2;
	q <= tmp3;
END rtl;

三、结构化描述

高层次设计模块调用低层次设计模块。用门电路设计单元构成复杂的逻辑电路的方法。
步骤:
a.元件说明 : 说明元件的调用,描述元件的接口。
b.元件例化 :指定元件的安放位置,确定与其他元件的连接关系。
c.元件配置 :指定元件使用的设计实体,如一个实体有多个结构体,配置来决定使用哪个结构体。

1、元件说明(component)

component 语句指定了 结构体中所调用的模块哪一个现成 的逻辑模块

--元件说明语句
COMPONENT component_name 
	GENERIC                      --类属性说明
	(
		parameter_name : STRING := default_value;
		parameter_name : INTEGER := default_value
	);
	PORT                         --端口说明
	(
		input_name : IN STD_LOGIC;
		bidir_name : IN STD_LOGIC;
		output_name :OUT STD_LOGIC
	);
END COMPONENT;

GENERIC用于参数的代入和赋值;
PORT用于说明元件的输入、输出、端口信号。
位置:ARCHITECTURE \ PACKAGE \ BLOCK

2、元件例化

将元件的信号映射成高层次电路中的信号。

instance_name : component_name --instance_name:例化名   component_name:元件名
	PORT MAP
	(
		component_port => connect_name;
		...
	);
--结构化描述例子
ENTITY mux2_1 IS
	port (d0,d1,sel : IN BIT;
		q : out BIT );
END mux2_1;

ARCHITECTURE struct OF mux2_1 IS
	COMPONENT AND2         --元件AND2说明
		PORT (a,b : IN BIT
			c : OUT BIT);
	END COMPONENT;
	COMPONENT OR2		   --元件OR2说明
		PORT(a,b : IN BIT 
			c : OUT BIT);
	END COMPONENT;
	COMPONENT INV		   --元件INV说明
		PORT(a : IN BIT;
			b : OUT BIT);
	END COMPONENT;

	SIGNAL aa,ab,nsel : BIT;
BEGIN 
	u1 : INV  PORT MAP(a =>sel,b => nsel);        --元件例化
	u2 : AND2 PORT MAP(a =>nsel,b => d1,c => ab); --元件例化
	u3 : AND2 PORT MAP(a => d0,b => d1, c => aa); --元件例化
	u4 : OR2  PORT MAP(a => aa,b => ab, c => q);  --元件例化
END struct;

对一个设计进行结构化描述,就是描述它由那些子元件构成,以及子元件之间的互联关系。

你可能感兴趣的:(FPGA)