前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一周掌握 FPGA VHDL Day 2

一周掌握 FPGA VHDL Day 2

作者头像
FPGA技术江湖
发布2020-12-30 14:51:01
4770
发布2020-12-30 14:51:01
举报
文章被收录于专栏:FPGA技术江湖FPGA技术江湖
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

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

VHDL的基本结构

二、VHDL的基本结构

  • 实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中所有的输入和输出端口;
  • 结构体 (Architecture):描述系统内部的结构和行为;
  • 包集合 (Package):存放各设计模块能共享的数据类型、常数和子程序等;
  • 配置 (Configuration):指定实体所对应的结构体;
  • 库 (Library):存放已经编译的实体、结构体、包集合和配置。

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

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
ENTITY 实体名 IS
[ GENERIC(常数名:数据类型:设定值)] 

PORT
( 端口名1:端口方向 端口类型;
端口名2:端口方向 端口类型;
..
端口名n:端口方向 端口类型 );

END [实体名];

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

  • 类属说明

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

格式:

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

例如:

代码语言:javascript
复制
GENERIC(wide:integer:=32);--说明宽度为32
GENERIC(tmp:integer:=1ns);--说明延时1 ns
  • 端口方向:IN, OUT,INOUT,BUFFER

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

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

  • 同方向、同类型的端口可放在同一个说明语句中。
代码语言:javascript
复制
ENTITY Full_adder IS
PORT( a, b, c: IN BIT;sum, carry: OUT BIT
);
END Full_adder;

2.2 结构体(Architecture)

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

代码语言:javascript
复制
ARCHITECTURE 结构体名 OF 实体名 IS
[声明语句] BEGIN
功能描述语句
END [结构体名];

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

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

  • 一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方式。同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿真或综合。
  • 在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。
代码语言:javascript
复制
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;
代码语言:javascript
复制
IF rising_edge(Clock) THEN
    Clk<=NOT Clk;
END IF;

表示顺序语句;

代码语言:javascript
复制
PROCESS(Clock)
BEGIN
    IF rising_edge(Clock) THEN
        Clk<=NOT Clk;
    END IF;
END PROCESS;

表示进程;

代码语言:javascript
复制
BEGIN
  PROCESS(Clock)
BEGIN
  IF rising_edge(Clock) THEN
    Clk<=NOT Clk;
  END IF;
END PROCESS;
  Clkout<=Clk;
END;

表示功能描述语块。

2.3 库、程序包的调用

代码语言:javascript
复制
LIBRARY 库名; USE 库名.程序包名.项目名;
LIBRARY IEEE; 
USE IEEE.Std_Logic_1164.ALL;//调用此程序包中所有的资源
代码语言:javascript
复制
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语句相关内容。

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档