欢迎进入万兴电子官网
购物车图片 我的购物车 ( )

VHDL硬件描述语言(一)

发布时间: 2019-03-12
浏览次数: 3

VHDL硬件描述语言是一种用于电路设计的硬件语言。出现在在80年代的后期,最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种设计语言 。VHDL主要用于描述数字系统的结构,行为,功能和接口。

VHDL语言是用来设计FPGA/PLD硬件的。VHDL语言是基于行为描述的。更加重要的是VHDL语言设计是于硬件电路无关的,它能在任意厂家的FPGA芯片上进行设计。

通常一个完整的VHDL语言包含五个部分,分别是:库,程序包,实体,结构体,配置文件。

实体(ENTITY)

实体的作用是给出实际电路的外部视图(引脚的数目,引脚的作用等),它描述了电路的封装结构。一般一个实体的结构大致如下所示:

ENTITY 实体名 IS

    PORT(端口名1:端口输入输出方向 端口数据类型;

         端口名2:端口输入输出方向 端口数据类型;

         端口名3:端口输入输出方向 端口数据类型;

         ......

         端口名n:端口输入输出方向 端口数据类型);

END 实体名;

多个输入输出方向相同以及数据类型相同的端口可以放在同一行进行描述。注意最后一行的端口描述结束没有分号。VHDL语言并不区分大小写,但是习惯是将关键字写作大写,用户定义的使用小写。

端口(PORT)

在VHDL语言里的端口指的就是电路引脚,而非普通软件程序设计语言意义上的进程所拥有的端口。例如:一个2输入与门两个输入引脚,一个输出引脚就是端口。端口语句正如上面实体上定义的一样。

PROT(端口名称:端口输入输出方向 端口数据类型;);

在VHDL语言中,端口输入输出方向有4中,分别是IN,OUT,INOUT,BUFFER。

IN表示端口是用来输入的;

OUT表示端口是用来输出的;

INOUT表示端口是一个双向口;

BUFFER表示端口是一个准双向口。

一个文件只能有一个实体,并且部分编程环境要求文件名与实体名相同。

下面用一个例子来实际体验一下实体。

LIBRARY IEEE; --在VHDL语言中使用'--'开始一行注释,这一行打开IEEE库

USE IEEE.STD_LOGIC_1164.ALL; --调用1164程序包

ENTITY and2 IS

PORT(in1,in2:IN STD_LOGIC; --定义两个标准逻辑类型的输入端口

out1:OUT STD_LOGIC); --定义一个标准逻辑类型的输出端口

END and2;

结构体(ARCHITECTURE)

结构体的作用是具体描述一个实体的行为(描述实体所描述的电路的功能),元件以及元件内部的连接关系。一般一个结构体的形式如下:

ARCHITECTURE 结构体名 OF 实体名 IS

BEGIN

功能描述语句;

END 结构体名;

下面用结构体来描述上面的2输入与门电路。

ARCHITECTURE behavior_and2 OF and2 IS --表示该结构体是描述名为and2的实体的功能

BEGIN

out1 <= in1 AND in2; --in1与上in2的结果赋值给out1.

END behavior_and2;

结构体和实体,前者用来描述电路的行为(或者说是功能),后者用来描述电路的结构。一个具有实际意义的VHDL程序至少需要结构体和实体才能组成。

库(LIBRARY)

VHDL语言的库和普通的软件程序设计语言的库并没有什么大的区别。一个库的用法正如上面在实体中展示的那样。

LIBRARY 库名;

这样就能在你的VHDL程序中打开这个库了。在VHDL语言中,常用的库主要是IEEE,WORK以及STD这三种库。其中STD是VHDL语言自带的库,默认是打开的。WORK是用户库,让用户自定义自己的库。WORK库也是默认打开的。我们在使用的时候只需要打开IEEE库即可。例如:

LIBRARY IEEE

程序包(PACKAGE)

通常在我们的VHDL程序中,需要调用的程序包大多数是IEEE库的。一般我们在调用程序包的时候有下面两种形式:

USE 库名.程序包名.项目名;

USE 库名.程序包名.ALL;

这是我们在调用系统或者厂商提供给我们的程序包的方式。硬件开发者本身也是可以定义自己的程序包的。一个程序包可以分为两个部分,程序包首+程序包体,一般定义格式如下:

PACKAGE 程序包名 IS --程序包首

程序包首说明部分;

END 程序包名;

PACKAGE BODY 程序包名 IS     --程序包体

程序包体说明部分;

END 程序包名;

在程序包首可以定义用户自定义的数据类型,元件,常量,信号,端口,函数等;程序包体内定义程序包首说明的过程体以及函数体。如果程序包首没有过程和函数,那么可以不定义程序包体。

配置(CONFIGURATION)

配置并不是一个VHDL程序必须的部分,配置语句主要用于给实体从多个结构体中选择一个去描述实体。一般的配置语句格式如下:

CONFIGURATION 配置名 OF 实体名 IS

配置说明;

END 配置名;

例如假设我对上面名为and2的电路还有另外一个结构体,现在我需要使用它来描述and2的行为,那么可以使用如下语句

CONFIGURATION cnf OF and2 IS

for behavior_and2_1 --表示使用名为behavior_and2_1的结构体来描述and2实体的行为

end behavior_and2_1;

END cnf;

--------------------- 

作者:zy010101 

来源:CSDN 

原文:https://blog.csdn.net/zy010101/article/details/88254139 

版权声明:本文为博主原创文章,转载请附上博文链接!

相关推荐 More
2019 - 03 - 12
点击次数: 12
无状态:HTTP是一种不保存状态,既无状态协议。HTTP自身不对请求和响应之间的通信状态进行保存,也就是说不做持久化处理。这是为了更快处理大量事务,确保协议的可伸缩性。随着web的不断发展,无状态也导致业务处理变得棘手,比如用户登录购物网站,在跳转到该网站其他页面后也要保存登录这个状态。不然请求不知道是哪个用户发出的。因此,引入了cookie技术。持久连接:HTTP协议初始版本中,每进行一次HTTP通信就要断开一次TCP连接。随着HTTP的普及,文档包含图片的情况多了起来,如果使用浏览器浏览一个包含多张图片的HTML页面时,在发送请求访问HTML页面资源的同时,也会请求HTML页面包含的其他资源因此,每次请求都会造成无畏的TCP连接建立和断开,增加通信量的开销通过持久连接解决了上述的TCP连接问题。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。请求头部字段Con...
2019 - 03 - 12
点击次数: 7
了解两个问题,什么是加密算法、为什么要使用加密。加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。为什么要加密,保障数据的安全和完整性防止被他人篡改。1、摘要算法数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。常用的摘要算法有MD5、SHA1、SHA256 , 加密后分别输出128bit、160bit、256bit。1.1 MD5--------------------- 作者:云度 来源:CSDN 原文:https://blog.csdn.net/seoyundu/article/details/88112861 ...
2019 - 03 - 12
点击次数: 11
MySQL 是一个最流行的关系型数据库,在互联网产品中应用比较广泛。一般情况下,MySQL 数据库是选择的第一方案,基本上有 80% ~ 90% 的场景都是基于 MySQL 数据库的。因为,需要关系型数据库进行管理,此外,业务存在许多事务性的操作,需要保证事务的强一致性。同时,可能还存在一些复杂的 SQL 的查询。值得注意的是,前期尽量减少表的联合查询,便于后期数据量增大的情况下,做数据库的分库分表。--------------------- 作者:weixin_33757911 来源:CSDN 原文:https://blog.csdn.net/weixin_33757911/article/details/88318634 版权声明:本文为博主原创文章,转载请附上博文链接!
2019 - 03 - 12
点击次数: 9
数据中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接当然,这些分类都是在连接的基础上,是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一个表里的记录要分别和另外一个表的记录匹配为一条记录,即如果表A有3条记录,表B也有三条记录,经过笛卡尔运算之后就应该有3*3即9条记录。如下表:自然连接(natural join)自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。sql语句:Select …… from 表1 natural join 表2结果:内连接(inner join)内连接基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。sql语句:Select …… ...
  • 您的姓名:
  • *
  • 公司名称:
  • *
  • 地址:
  • *
  • 电话:
  • *
  • 传真:
  • *
  • E-mail:
  • *
  • 邮政编码:
  • *
  • 留言主题:
  • *
  • 详细说明:
  • *
     
郑州市二七区祥云路1号2幢2单元1207号
0371-55030465
Copyright ©2019 - 2021 河南万兴电子科技有限公司
犀牛云提供企业云服务
X
1

QQ设置

3

积分商城

4

阿里旺旺设置

等待加载动态数据...

等待加载动态数据...

5

电话号码

  • 0371-55030465
6

二维码管理

等待加载动态数据...

等待加载动态数据...

展开