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. Scikit-learn数据变换

    转载自:https://blog.csdn.net/Dream_angel_Z/article/details/49406573 本文主要是对照scikit-learn的preprocessing章节 ...

  2. aircrack-ng无线破解实验

    查看无线网卡 airmon-ng 开启网卡监听模式 airmon-ng start wlan0 扫描附近的wifi airodump-ng wlan0mon 停止扫描: ctrl c 使用airodu ...

  3. python清空列表的方法

    1.大数据量的list,要进行局部元素删除,尽量避免用del随机删除,非常影响性能,如果删除量很大,不如直接新建list,然后用下面的方法释放清空旧list. 2.对于一般性数据量超大的list,快速 ...

  4. rest_framework_api规范

    目录 一.什么是RESTful 二.什么是API 三.RESTful API规范 四.基于Django实现API 五.基于Django Rest Framework框架实现 一. 什么是RESTful ...

  5. git push remote: User permission denied

    这种错误因为本地保存了一个错误的账号密码,只需要重新编辑成正确的账号密码 直接上方法

  6. js备忘录3

    JavaScript也有类型转换 js中的获取指定位数的方法 +和-的转换方向不同 在JavaScript中首先给变量赋值数字,然后再给变量赋值字符串是合法的 这点和Java有些区别 在函数体内声明变 ...

  7. console.log() 替代函数

    var log = console.log.bind(console); log('d')

  8. CentOs6.5中安装和配置vsftp简明教程[转]

    CentOs6.5中安装和配置vsftp简明教程 林涛 发表于:2017-3-17 10:10 分类:WebServer 标签: 101次 一.vsftp安装篇 复制代码代码如下: # 安装vsftp ...

  9. PHP使用Sublime Text3技巧

    1 下载安装 2 安装Package Control 3 安装插件 4 快捷键 5 项目管理 6 设置代理 PHP开发时,笔者用过EditPlus3.Nodpad++.Vi.Vim和Netbeans, ...

  10. BugPhobia展示篇章:学霸在线系统Alpha阶段展示

    0x00:序言 1 universe, 9 planets, 204 countries,809 islands, 7 seas, and i had the privilege to meet yo ...