vhdl语言学习总结-read

vhdl语言学习总结-read

ID:33963786

大小:182.01 KB

页数:6页

时间:2019-03-02

vhdl语言学习总结-read_第1页
vhdl语言学习总结-read_第2页
vhdl语言学习总结-read_第3页
vhdl语言学习总结-read_第4页
vhdl语言学习总结-read_第5页
资源描述:

《vhdl语言学习总结-read》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、VHDL语言学习总结jackhuan@163.net(初学VHDL,欢迎批评指正)1VHDL的程序结构一个VHDL程序包含实体entity、结构体architecture、配置configuration、包集package和库library五部分。实体,用于描述设计系统的外部接口信号;结构体,用于描述系统的行为,系统数据的流程或系统组织结构形式;实体+结构体=设计实体;实体是设计实体的表层设计单元,其功能是对这个设计实体与外部的电路接口进行描述,它规定了设计单元的输入、输出接口信号和引脚,是设计实体与外界的一个通信界面;结构体是用于描述设计实体的内部结构以及

2、实体端口间的逻辑关系,结构体具体实现一个实体。一个电路系统的程序设计只有一个实体,可以有多个结构体。在实体中类属说明放在端口说明上端,而其他说明类型说明如数据的定义说明则放在端口定义的下面。配置一般用来为实体指定结构体,由于在设计中没有用到配置,故没有做深入研究。包集是库的一部分,用来存放库中具有类似功能或在某一个部件中使用的元件、函数或过程。库是一个设计中封装所有元器件的总和。2VHDL与C++的结构类比上述部分可以和C++的工程管理方式做一简单比较。C++中有类的声明部分(一般为.H文件)和实现部分(一般为.CPP文件)。在程序的编写过程中,我们首先在一

3、个.H文件中将类的成员变量和成员函数做定义,然后在.CPP中使用具体的代码实现它。这样在应用这个类的其他程序代码中,一般在引用文件的开始加入如下语句:#include“***.h”//***代表我们要包含的文件名称就可以随意使用其内部的类和函数了。VHDL有类似之处。首先我们编写了*.VHD文件,内有实体entity和结构体architecture,开始还要引入库library和包package。在我们使用其他元件时,通常在architecture中做元件例化。例如要在myexp中例化元件myand,则:Architecturebehaveofmyexpis

4、Signalmysig1:bit_vector(7downto0);…componentmyandport(din1:inbit;din2:inbit;dout:outbit);endcomponent;begin…p1:myandportmap(din1,din2,dout);1…endbehave;实际上元件例化就是对元件的包含,相当于在C++中#include的功能。有时不在myexp中做元件例化,但还是要引用这些软件,就用到库和包的概念了。在工程中建立一个vhd文件,如mylib.vhd,在里面定义包mypkg,包内包含元件例化语句。具体如下:pac

5、kagemypkgiscomponentmycomp1port(…);endcomponent;componentmycomp2port(…);endcomponent;…endmypkg;需要指出的是,元件mycomp1和mycomp2的设计实体必须在当前工程下。然后在myexp.vhd中加入:librarymylib;usemylib.mypkg.all;就不必在architecture中做元件例化说明了,直接做端口映射就可以了。因此上面的两句语句就等同于C++中的头文件引用#include了。如果编程者熟悉C++,则使用上述的类比,就对一般的FPGA开

6、发软件环境有清楚了了解了,实际上QuartusII和ISE与VisualStudio是何等的类似啊!3结构体的三种描述方法行为描述:对设计实体按算法的路径来描述,行为描述在EDA工程中称为高级描述;数据流描述:描述数据流程的运动路径,运动方向和运动结果等。数据流描述一般为并行语句,顺序语句不可以作数据流描述,但数据流描述不能实现同步的功能。结构化描述:对于一个负责的电子系统可以分解为诸多子系统,每个子系统再分解为模块。在多层次设计中,每个层次都可以作为一个元件,再构成一个模块,进而构成子系统,最后构成一个大的系统。每个元件可以分别作功能、时序仿真,然后再进行

7、整体调试。4关于进程process在进程process中的敏感表中,其信号必须为输入,这些信号无论哪个发生变化都将启动进程process,进程一旦启动,其中的代码将从上至下顺序执行一遍。多个进程并行执行,只要敏感信号发生变化,进程就会并行触发。在一个进程中,一般使用一个if…endif;注意,这里的if是一个整体,内部当然还可以套用其他的if…endif;但是所有的if语句必须是一体的(或顺序的),不能是并行的。例如不能是如下格式:process(…)ifa=bthenc<=d;endif;ifa=4then2c<=d+1;endif;endprocess;

8、这一般是不允许的,容易出现多驱动源的情况。注意,条件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。