VHDL入门知识学习(一) VHDL程序基本结构

  • 简介
  • VHDL程序基本结构

简介

概念:

  • HDL—Hardware Description Language—硬件描述语言—描述硬件电路的功能、信号连接关系及定时关

系的语言。

  • VHDL—Very High Speed Integrated Circuit Hardware Description Language—超高速集成电路硬件

描述语言

特点:

  • 工艺无关
  • 共享复用
  • 不支持描述模拟电路

规定:

  • 在VHDL中,字母的大、小写没有区别(单引号内的字符常数和双引号内的字符串除外);
  • 以分号“;”作为语句结束的标志;
  • 注释行以双短线“- -”开始;
  • 各种名称的命名规则:
    • 名称由字母、数字和下划线组成;
    • 名称的第一个字符必须是字母;
    • 名称的最后一个字符不能是下划线,也不能连用下划线;
    • 命名不能与VHDL的保留字或关键字相同。

VHDL程序基本结构

例:1位全加器

ENTITY adder IS
PORT( a, b,cin : IN BIT;
s ,co : OUT BIT);
END adder;//实体说明
ARCHITECTURE a OF adder IS
BEGIN
s<=a XOR b XOR cin;
co<=((a XOR b) AND cin) OR (a AND b);
END a;//结构体说明

实体说明:描述了一个设计对外的输入、输出接口以及一些用于结构体的参数定义。

结构体说明:描述的是设计实体的行为和结构。

实体(Entity )

ENTITY <实体名> IS

	[类属参数说明]

	[端口说明]

END <实体名>;
ENTITY adder IS
PORT(
a, b,cin : IN BIT;
s ,co : OUT BIT);
END adder;

实体名: 对实体的命名,在MAXPLUSII中要求实体名必须与存盘文件名相同。

类属参数说明:用来为设计实体指定参数,如定义端口宽度、器件延时等。

端口说明:描述端口的名称、模式和数据类型。

PORT(端口名[,端口名]:模式 数据类型;

端口名[,端口名]:模式 数据类型);

端口名称: 对端口的命名,是端口的标识符。

端口模式: 说明端口信号的流动方向。

① 输入模式(IN)

② 输出模式(OUT)

③ 双向模式(INOUT)

④ 缓冲模式(BUFFER)

⑤ LINKAGE模式

端口: 实体的每一个输入、输出信号称为端口,对应于硬件电路图或芯片的一个'引脚'。

数据类型:说明经过端口的信号的数据类型。

  • VHDL是一种强类型语言,有10种标准的数据类型,还可以由用户自定义数据类型。
  • BIT(位,可取值为‘0’或‘1’ )类型是VHDL的预定义类型,使用此类型时无需特别说明。
  • 当使用非预定义的数据类型时,必须用库和程序包调用语句来为程序的编译指明所使用的数据类型的定义在哪里。

库和数据包的调用

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY adder IS
PORT( a, b,cin : IN STD_LOGIC;
s ,co : OUT STD_LOGIC);
END adder;

结构体

ARCHITECTURE <结构体名> OF <实体名> IS
[结构体说明部分];
BEGIN
<并行处理语句>;
END结构体名;
ARCHITECTURE a OF adder IS
BEGIN
s<=a XOR b XOR cin;
co<=((a XOR b) AND cin) OR (a AND b);
END a;

结构体名:对本结构体的命名。

结构体说明部分:对结构体内部所使用的'信号'、'常数'、数据类型和函数进行定义;

并行处理语句:具体描述了结构体的行为和结构。

VHDL程序五大部分

1、实体(Entity )

描述所设计的系统的外部接口信号。

2、结构体(Architecture Body)

描述系统内部的结构和行为。

3、程序包(Package)

存放各个设计模块都能共享的数据类型、信号和常数的定义以及函数和过程的定义等。

4、库(Library)

存放已经编译的实体、结构体、程序包和配置的定义。

5、配置(Configuration)

描述实体与结构体之间的连接关系,或者在分层设计中描述层与层之间的连接关系。

PS:MAXPLUSII自动选择几何位置排列在最后的结构体作为当前结构体进行编译。

参考

书籍:《VHDL入门·解惑·经典实例·经验总结》

毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构的更多相关文章

  1. Delphi之DLL知识学习5---在Delphi应用程序中使用DLL

    首先说明一下:同一个动态库(DLL)被多个的程序加载的话,那么将会在每次加载的时候都会重新分配新的独立的内存空间,绝对不是共用一个,所以当一个DLL被多次加载的时候,其会在内存中“复制”多份,不会互相 ...

  2. 04 入门 - ASP.NET MVC应用程序的结构

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 用Visual Studio创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录. 如图所示: ...

  3. Web前端入门知识

    第一阶段:理论知识 第一章:协议理解 第二阶段:了解知识 第二章:前端简介 第三阶段:入门知识 第三章:标签结构 第四章:常用标签 第四阶段:样式搭配 第五章:样式初见 第六章:属性选择 第七章:属性 ...

  4. learning armbian steps(1) ----- armbian 入门知识基础学习

    第一问: armbian是什么? Armbian是轻量级的Debian系统和为ARM开发板专门发行并重新编译的Ubuntu系统. 第二问:  什么场景下会用到armbian系统? 一个带有arm编译器 ...

  5. Vmware Vsphere WebService SDK开发(第一讲)-基本知识学习

    刚开始这方面开发的时候,不知道如何下手,能够查到的资料特别少,而且看到很多网友和我一样也在找这方面的资料.接下来的一段时间我就结合自己所参与的项目,完成关于Vmware Vsphere WebServ ...

  6. 移动H5开发入门知识,CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  7. H5移动端开发入门知识以及CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  8. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  9. 初学者福音——10个最佳APP开发入门在线学习网站

    根据Payscale的调查显示,现在的APP开发人员的年薪达到:$66,851.这也是为什么那么多初学的开发都想跻身到APP开发这行业的主要原因之一.每当你打开App Store时候,看着琳琅满目的A ...

随机推荐

  1. DICOM 协议学习笔记之 What is DICOM

    什么是DICOM? Dicom (Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052 ...

  2. docker入门使用教程

    Docker概念 Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台.使用Linux容器部署应用程序称为容器化.容器不是新的,但它们用于轻松部署应用程序. 容器化越来越受欢迎, ...

  3. day13 内置函数

    参考资料: https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac 内置函数: 作⽤域相关: locals()     返回当前作用域 ...

  4. c++文件对齐

    头文件#include <iomanip> 关键词:setw(n),std::left,std::right 实例:输出一个0-4的12*12方阵,要求数字宽度为4,居左对齐,右下角输出出 ...

  5. NuGet 让程序集版本变得混乱

    之前引用的 System.Net.Http.Formatting ,是依赖于   System.Net.Http 2.0的. 更新引用后它是依赖于  System.Net.Http 4.0 的.而且一 ...

  6. Python基础_内置函数

        Built-in Functions     abs() delattr() hash() memoryview() set() all() dict() help() min() setat ...

  7. 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

    一.题目: n给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. n要求: n写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数.例如 f(12)  ...

  8. Struct2笔记②--完善登陆代码

      上节课的代码 写完整 登陆成功在页面上显示用户名和密码: username:${requestScope.username }<br> password:${requestScope. ...

  9. hihocoder #1388 : Periodic Signal fft

    题目链接: https://hihocoder.com/problemset/problem/1388 Periodic Signal 时间限制:5000ms内存限制:256MB 问题描述 Profe ...

  10. NABCD(校园包车)

    广州商学院包车 N(need) 各个高校包车需求量大,然而校园内包车信息太散乱,售票地点不确定,有些老师.学生特别是新生,甚至不知有校园包车这一回事, 随着信息网络的发展,为了给师生带来校园更多的方便 ...