一周掌握 FPGA VHDL Day 2

今天给大侠带来的是一周掌握 FPGA VHDL Day 2,今天开启第二天,带来VHDL的基本结构,话不多说,上货。每日十分钟,坚持下去,量变成质变。

 

 

 

 

VHDL的基本结构

 

 

 

二、VHDL的基本结构

  • 实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中所有的输入和输出端口;

  • 结构体 (Architecture):描述系统内部的结构和行为; 

  • 包集合 (Package):存放各设计模块能共享的数据类型、常数和子程序等;

  • 配置 (Configuration):指定实体所对应的结构体;

  • 库 (Library):存放已经编译的实体、结构体、包集合和配置。

 

VHDL的基本设计单元结构:程序包说明、实体说明和结构体说明三部分。

LIBRARY IEEE; -- 库、程序包的说明调用 USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider IS -- 实体声明 PORT(Clock: IN Std_logic;Clkout: OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS -- 结构体定义SIGNAL Clk:Std_Logic;BEGIN  PROCESS(Clock)BEGIN  IF rising_edge(Clock) THEN    Clk<=NOT Clk;  END IF;END PROCESS;Clkout<=Clk;END;

 

 

 

 

 

2.1 实体(Entity)

实体描述了设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。

ENTITY 实体名 IS[ GENERIC(常数名:数据类型:设定值)] PORT( 端口名1:端口方向 端口类型;端口名2:端口方向 端口类型;..端口名n:端口方向 端口类型 );END [实体名];

 

实体名由设计者自由命名,用来表示被设计电路芯片的名 称,但是必须与VHDL程序的文件名称相同。要与文件名一致;

一周掌握 FPGA VHDL Day 2_第1张图片

一周掌握 FPGA VHDL Day 2_第2张图片

 

  • 类属说明

类属为设计实体与外界通信的静态信息提供通道,用来规定端口的大小、实体中子元件的数目和实体的定时特性等。

格式:

GENERIC(常数名:数据类型:设定值;∶常数名:数据类型:设定值)

例如:

GENERIC(wide:integer:=32);--说明宽度为32GENERIC(tmp:integer:=1ns);--说明延时1 ns

 

  • 端口方向:IN, OUT,INOUT,BUFFER

一周掌握 FPGA VHDL Day 2_第3张图片

一周掌握 FPGA VHDL Day 2_第4张图片

“OUT”和“BUFFER”都可定义输出端口;

一周掌握 FPGA VHDL Day 2_第5张图片

若实体内部需要反馈输出信号,则输出端口必须被 设置为“BUFFER”,而不能为“OUT”。

 

  • 同方向、同类型的端口可放在同一个说明语句中。

一周掌握 FPGA VHDL Day 2_第6张图片

ENTITY Full_adder ISPORT( a, b, c: IN BIT;sum, carry: OUT BIT);END Full_adder;

 

 

 

 

 

2.2 结构体(Architecture)

结构体定义了设计单元具体的功能,描述了该基本设计单元的行为、元件和内部的连接关系。

ARCHITECTURE 结构体名 OF 实体名 IS[声明语句] BEGIN功能描述语句END [结构体名];

[声明语句]--用于声明该结构体将用到的信号、数据类型、常数、子程序和元件等。声明的内容是局部的。

功能描述语句--具体描述结构体的功能和行为。

 

  • 一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方式。同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿真或综合。

  • 在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。

 

ARCHITECTURE Behavior OF FreDevider IS -- 结构体定义SIGNAL Clk:Std_Logic; --信号声明 BEGIN  PROCESS(Clock)BEGIN  IF rising_edge(Clock) THEN    Clk<=NOT Clk;  END IF;END PROCESS;  Clkout<=Clk;END;

 

IF rising_edge(Clock) THEN    Clk<=NOT Clk;END IF;

表示顺序语句;

 

PROCESS(Clock)BEGIN    IF rising_edge(Clock) THEN        Clk<=NOT Clk;    END IF;END PROCESS;

表示进程;

 

BEGIN  PROCESS(Clock)BEGIN  IF rising_edge(Clock) THEN    Clk<=NOT Clk;  END IF;END PROCESS;  Clkout<=Clk;END;

表示功能描述语块。

 

 

 

 

 

 

2.3 库、程序包的调用

LIBRARY 库名; USE 库名.程序包名.项目名;LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;//调用此程序包中所有的资源

 

LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;USE IEEE.Std_Logic_Arith.ALL;USE IEEE.Std_Logic_Unsigned.ALL;

 

 

 

 

 

 

Day 2 就到这里,Day 3 继续开始VHDL语句相关内容。

你可能感兴趣的:(FPGA学习系列)