当前位置:文档之家› vhdl语言的基本知识点罗列.doc

vhdl语言的基本知识点罗列.doc

vhdl语言的基本知识点罗列.doc
vhdl语言的基本知识点罗列.doc

VHDL语言的基本知识点罗列

1 VHDL语言的标识符

VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下法则:

a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。

任何标识符必须以英文字母开头。λ

末字符不能为下划线。λ

b)不允许出现两个连续下划线。

标识符中不区分大小写字母。λ

VHDL定义的保留子或称关键字,不能用作标识符。λ

c) VHDL中的注释由两个连续的短线(--)开始,直到行尾。

以下是非法标识符:

-Decoder —起始不能为非英文字母

3DOP —起始不能为数字

Large#number —“#”不能成为标识符的构成符号

Data__bus —不能有双下划线

Copper_ —最后字符不能为下划线

On —关键字不能用作标识符。

注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。

标识符表示的几种数据对象的详细说明如下:

1) 常数(Constant )

常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一被赋值就不能在改变。一般格式:

CONSTANT 常数名:数据类型:=表达式;

例:CONSTANT Vcc: REAL: =5.0;

—设计实体的电源电压指定

常数所赋得值应与定义的数据类型一致。

常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。

2) 变量(Variable)

变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。用作局部数据存储。在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。

一般格式:

VARIABLE 变量名数据类型约束条件:=表达式;

例:VARIABLE x,y:INTEGER; —定义x,y为整数变量

VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围

变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。

变量赋值语句的语法格式如下:

目标变量:=表达式;

变量赋值符号是“:=”。赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。变量不能用于硬件连线和存储元件。

3) 信号(Signal)

信号是描述硬件系统的基本数据对象,它类似于连接线,它除了没有数据流动方向说明以外,其它性质与实体的端口(Port)概念一致。变量的值可以传递给信号,而信号的值不能传递给变量。信号通常在构造体、包集合和实体中说明。信号说明格式为:

SIGNAL 信号名:数据类型;

信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。

1.变量

变量只能在进程、函数和过程中使用,一旦赋值立即生效。

例:VARIABLE x, y: INTEGER;

VARIABLE count: INTEGER RANGE 0 TO 255:=10;

2.信号

信号除了没有方向的概念以外几乎和端口概念一致。

例:SIGNAL sys_clk: BIT:=’0’;

SIGNAL ground: BIT:=’0’

在程序中,信号值输入信号时采用代入符”<=”,而不是赋值符“:=”,同时信号可以附加延时。信号传送语句:

s1<=s2 AFTER 10ns

信号是一个全局量,可以用来进行进程之间的通信

3.信号与变量的区别:

信号赋值可以有延迟时间,变量赋值无时间延迟;

信号除当前值外还有许多相关值,如历史信息等,变量只有当前值;

进程对信号敏感,对变量不敏感;

信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见;

信号可以看作硬件的一根连线,但变量无此对应关系。

2 VHDL语言的数据类型

VHDL语言提供了许多标准的数据类型,用户也可自定义数据类型,这样使VHDL语言的描述能力和自由度进一步提高。但VHDL语言的数据类型的定义相当严格,不同类型之间的数据不能直接代入。而且相同数据类型,但位长不同的也不能直接代入,否则EDA工具在编译综合时会报告类型错。因此,为了熟练地使用VHDL 语言编写程序,必须很好的理解各种数据意义。

2.1. VHDL标准的数据类型

1) 整数(Integer)

整数类型的数代表正整数、负整数和零,表示的范围-(231-1)~(231-1),它与算术整数相似,可进行“+”,“-”,“*”,“/”等算术运算,不能用于逻辑运算。

2) 实数(Real)

实数类型也类似于数学上的实数,或称浮点数,表示范围为-1.0E38~1.0E38.

3) 位(Bit)

在数字系统中信号通常采用一个位来表示,取值值能是1获0。

4) 位矢量(Bit_Vector)

位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位宽。

例如:SIGNALa:BIT_VEVCTOR(7to0)

信号a被定义为一个具有8位位宽的矢量,最左位为a(7),最右位为a(0)。

5) 布尔量(Boolean)

一个布尔量具有两个状态:“真”或“假”。布尔量不属于数值,因此不能用于运算,它只能通过关系运算符获得。一般这一类型的数据初始值总为FALSE.

6) 字符(Character)

字符也是一种数据类型,字符类型通常用单引号引起来,如‘A’。字符类型区分大小写,如‘B’不同于‘b’。

7) 字符串(String)

字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组。常用于程序的提示和说明,如“STRING”等。

8) 时间(Time)

时间是一个物理数据。完整的时间类型包括整数和单位两部分;整数与单位之间至少留一个空格,如55 ms,2 ns。在包集合STANDARD中给除了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。

在系统仿真时,时间数据很有用,可用它表示信号延时,从而使模型系统能更逼近实际系统的运行环境。

9) 错误等级(Severity Level)

在VHDL仿真器中,错误等级用来指示设计系统的工作状态,它有四种:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。在仿真过程中,可输出这四种状态以提示系统当前的工作状态。

10) 自然数(Natural)和正整数(Positive)

自然数是整数的一个子类型,非负的整数,即为零和正整数。而Positive只能为正整数。

2.2. IEEE预定义标准逻辑位与矢量

在IEEE库的程序包STD_LOGIC1164中,定义了两个重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR,使得STD_LOGIC数据可以具有如下的9种不同的值:

“U”—初始值

“0”—0

“Z”—高阻

“L”—弱信号0

“X ”—不定

“1”—1

“W”—弱信号不定

“H”—弱信号1

“_”—不可能情况

注意在使用该类型数据时,在程序中必须写出库说明语句和使用包集合的说明语句。

3 VHDL语言的运算操作符

在VHDL语言中共用4类操作符,可以分别进行逻辑运算(Logic)、关系运算(Relational)、

算术运算(Arithmetic)和并置运算(Concatenation)。被操作符所操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。需要注意的是,各家EDA综合软件对运算操作符支持程序各不相同,使用时应参考综合工具说明。

1) 逻辑运算符

运算符在VHDL语言中逻辑运算符有6种,他们分别为:

NOT(非)

OR(或)

AND(与)

NOR(或非)

NAND(与非)

XOR(异或)

2) 关系运算符

关系运算符它们分别是:

=(等于)

/=(不等于)

<(小于)

<=(小于等于)

>(大于)

>=(大于等于)

3) 算术运算符

+(加)

/(除)

SLL(逻辑左移)

ROR(逻辑循环右移)

-(减)

MOD(求模)

SRL(逻辑右移)

ABS(取绝对值)

*(乘)

REM(取余)

SLA(算术左移)

4) 其他运算符

<=(信号赋值)

:=(信号赋值)

-(负)

+ (正)& (并置运算符,用于位的连接)

=>(并联运算符,在元件例化时可用于形参倒实参的映射)

4 VHDL语言的结构

VHDL语言主要组成构件有设计实体(Entity)、结构体(Architecture)、子程序(Function Procedure )、集合包(Package)和库(Library),前四种称为可编译的设计单元。一个VHDL 设计就是有这四种构件的组成,编译之后将它们放在制定的库中共享。其中,实体用于描述设计的接口界面信号,它规定端口数目,端口方向和端口类型。它与硬件电路设计中

的符号相对应。而结构体指定设计的真实行为,性能和结构,与硬件电路设计中的原理图相对应。子程序是可被调用的执行某一特定功能算法的集合。集合包则是为了使常用的数据类型、常数和子程序对于其他设计块可用而集中充放的一批设计单元和约定。

4.1 设计实体

实体的定义语法为:

ENTITY 实体名IS

[端口说明];

END 实体名;

端口说明书写格式如下:

PORT(端口名{,端口名}:方向数据类型名;

……

……

……

端口名{,端口名}:方向数据类型名);

例如,一个二选一路数据选择器的设计实体可描述如下:

ENTITY selection IS

PORT(a, b, sel: IN BIT;

C : OUT BIT );

END selection;

4.2 构造体

用于描述系统内部的结构和行为。构造体部分定义了设计单元的具体功能(行为)。

1. 构造体句法如下:

ARCHITECTURE 构造体名OF 实体名IS

[定义语句]内部信号,常数,数据类型,函数等的定义;

BEGIN

[并行处理语句];

END 构造体名;

例如:ARCHITECTURE dataflow OF selection IS

BEGIN

q<=(a AND set) OR (NOT sel AND d1);

END dataflow;

4.2.1 构造体的子结构描述

在规模较大的电路设计中,全部电路都用唯一的一个模块来描述是非常不方便的。为此,电路设计者总希望将整个电路分成若干个相对比较大的模块来进行电路的描述。这样,一个构造体可以用几个子结构,既相对比较独立的几个模块来构成。VHDL语言可以有以下三种形式的子结构描述语句:

1) 子程序:

VHDL提供两种子程序:函数(FUNCTION)和过程(PROCEDURE)

函数

函数的定义形式如下:

FUNCTION<函数名称><接口表>RETURN<数据类型>IS

[定义语句];

BEGIN

<函数语句部分>;

END 函数名称;

.下面是一个比较器的例子:FUNCTION max(a, b: INTEGER) RETURN INTEGER IS BEGIN

IF (a>=b)THEN RETURN a;

ELSE RETURN b;

END IF;

END max;

一个函数定义好后,可以在其它地方调用。

过程

过程的定义形式如下:

PROCEDURE<过程名称><接口表> IS

BEGIN

<过程语句部分>;

END 过程名称;

.下面是一个比较器的例子:

FUNCTION max(a, b, c: INTEGER) IS

BEGIN

IF (a>=b)THEN c<= a;

ELSE c<=b;

END IF;

END max;

2) BLOCK语句

采用BLOCK语句描述局部电路的书写格式如下:

块结构名:

BLOCK

BEGIN

END BLOCK 块结构名;

3) 进程语句(PROCESS)

采用PROCESS语句描述局部电路的书写格式如下:

[进程名]:PROCESS:(信号1,信号2…)

BEGIN

END PROCESS

4.3 包集合、库及配置

除实体和构造体外,包集合、库及配置是VHDL语言和另外3个可以各自独立进行编译的源设计单元。

1. 库(LIBRARY)

一个库中可以包含包集合,公用的设计实体和公用的机构体等。当需要引用一个库时,首先需要对库名进行说明,其格式为:

LIBRARY 库名

这时就可以使用库中已经编译好的设计。对库中集合包的访问必须再经由USE语句才能打开。其格式为:

USE 程序包名

IEEE库是IEEE制定的一个VHDL的最常用标准库,其中包括标准逻辑程序包Sed_logic_1164,标准数学程序包Math等。我们可以使用它的数据类型和函数。用法:LIBRARY IEEE。

STD库也是VHDL的标准库。

2. 包集合(Package)

包集合(Package)说明像C语言中的include语句一样,用来单纯的罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等。使用包集合时用USE语句说明。如USE IEEE.STD_logic_1164.ALL;

3. 配置(Configuration)

配置语句描述层于层之间的连接关系以及实体与结构之间的连接关系。设计者可以利用这种配置语句来选择不同的构造体,使其与要设计的实体相对应。

配置语句的格式:

CONFIGURATION 配置名OF 实体名IS

[语句说明];

END 配置名;

5 VHDL常用顺序语句

VHDL语句是并发语言,大部分语句是并发执行的。但在进程、过程、块语句和子程序(包括函数)中,还有许多顺序执行语句,按出现的次序执行各条语句。下面以常用的两种语句为例,其他的语句请参考其他书。

1. IF语句

IF语句是根据所制定的条件来确定执行那些语句的,其格式由三种:

第一种

IF 条件THEN 顺序语句

END IF

第二种

IF语句二选择控制,其书写格式为:

IF 条件THEN

顺序处理语句;

ELSE

顺序处理语句;

END IF;

第三种

IF语句的多选择控制又称IF语句的嵌套,其书写格式为:

IF 条件THEN

顺序处理语句;

ELSE

顺序处理语句;

……

ELSEIF 条件THEN

顺序处理语句;

ELSE

顺序处理语句;

END IF;

2. CASE语句

CASE语句常用来描写总线行为、编码器和译码器的结构。与IF语句表可读性好,非常简洁。其书写格式为:

CASE 表达式IS

WHEN 条件表达式=>顺序处理语句;

END CASE;

条件句中的“=>”不是操作符,只相当于“THEN”作用。

6 VHDL中的一些重要信号

6.1. 时钟信号和复位信号

1)时钟信号的描述

* 若进程的敏感信号是时钟信号,这时时钟信号出现在PROCESS后的括号中.

例: process (clock_signal)

begin

if (clock_edge_condition) then

signal_out<=signal_in

:

其它语句

:

end if;

end process;

* 在进程中用WAIT ON语句等待时钟

这样的电路没有敏感信号,进程通常停留在WAIT ON 语句上,只有时钟信号到来且满足一定条件时,其余语句才能执行.

例:

process

begin

wait on (clock_signal) until (clock_edge_condition)

signal_out<=signal_in;

其它语句

end process;

* 敏感表中只能有一个时钟信号

* wait on 语句只能放在进程的最前面或者最后面

* 时钟的边沿描述

描述时钟一定要指明是上升沿还是下降沿

上升沿到来的条件:

IF clk=’1’ AND clk’LAST_VALUE=’0’ AND clk’EVENT

下降沿到来的条件:

IF clk=’0’ AND clk’LAST_VALUE=’1’ AND clk’EVENT

关于时钟信号的总结:

IF clock_signal=current_value AND

clock_signal’LAST AND

clock_siganl’EVENT

可以简单写为:

IF clock_signal=clock_siganl’EVENT AND current_value

6.2. 复位信号

*同步复位

当复位信号有效且在给定的时钟边沿到来时,触发器才被复位.

例1:

process (clock)

begin

if (clock_edge_condition) then

if (reset_condition) then

signal_out<=reset_value;

else

signal_out=signal_in;

:

其它语句

:

end if;

end if;

end process;

例2:

process(clock)

if (clock’event and clock=’1’) then

if reset=’1’ then

count<=’0’;

else

count<=count+1;

end if;

end if;

end process;

此例中,敏感表中只有时钟信号,因为只有时钟到来时才能复位.

* 异步复位

只要复位信号有效,触发器就被复位,所以敏感表中除时钟信号外,还需要复位信号

例1:

process(reset_signal,clock_signal)

begin

if (reset_signal) then

signal_out<=reset_value;

elsif (clock_event and clock_edge_condition) then signal_out<=signal_in;

:

其它语句

:

end if;

end process;

例2:

process(clock,reset)

begin

if reset=’1’ then

count<=’0’;

elsif c lock’event and clock=’1’ then

count<=count+1;

end if;

end process;

vhdl基本语法

VHDL 基础语法篇——VHDL VHDL硬件描述语言 1.1 VHDL概述 1.1.1 VHDL的特点 VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于 VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原 语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下: 1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下 (top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。 2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设 计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数 据传送。利用单元(componet)、块(block)、过程(procure)和函数(function)等语句, 用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文 档资料的保存和广泛使用。 3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL 的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数 据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类 型语言。 4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行 和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构 和行为状态。 1.1.2 VHDL语言的基本结构 VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级 语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字 逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。但是VHDL毕竟是一种描述 数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的 语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者 感到枯燥无味,不得要领。较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整 体的程序结构,再逐步介绍程序中的语法概念。 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路, 或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含程序包、实体和结构体三个部分。实体给出电路单元的外部输入输出接口信号和引脚信 息,结构体给出了电路单元的内部结构和信号的行为特点, 程序包定义在设计结构体和实体 中将用到的常数、数据类型、子程序和设计好的电路单元等。 一位全加器的逻辑表达式是: S=A⊕B⊕Ci Co=AB+ACi+BCi 全加器的VHDL程序的文件名称是fulladder.VHD,其中VHD是VHDL程序的文件扩展名, 程序如下: LIBRARY IEEE; --IEEE标准库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fulladder IS -- fulladder是实体名称 PORT( A, B, Ci : IN STD_LOGIC; --定义输入/输出信号 Co, S : OUT STD_LOGIC ); END fulladder; ARCHITECTURE addstr OF fulladder IS --addstr是结构体名 BEGIN S <= A XOR B XOR Ci; Co <= (A AND B) OR (A AND Ci) OR (B AND Ci); END addstr; 从这个例子中可以看出,一段完整的VHDL代码主要由以下几部分组成: 第一部分是程序包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体

vhdl语法格式(1)

上篇基础元素 目录:数据类型数据对象运算符语句基本程序结构电路描述方式 数据类型 预定义类型 bit bit_victor integer std_logic std_logic_victor 自定义类型 枚举类型 type 新数据类型 is (元素1, 元素2, ...) 例定义 type state_type is (s1, s2, s3. s4); -- 定义一个新类型state_type 引用 signal state : state_type; -- 定义一个信号state,类型为state_type 数组类型 type 数组 is array (范围) of 数据类型; 例定义 type byte is array (7 downto 0) of bit; -- 定义一个8bit的数组 type word is array (31 downto 0) of bit; -- 定义一个32bit的数组 数据对象 端口声明端口 : in | out 数据类型; -- 端口在特性上等同于信号,但赋值在entity的port中赋值端口 <= 表达式; 信号声明signal 信号 : 数据类型; 赋值信号 <= 表达式; 变量声明varable 变量 : 数据类型; 赋值变量 := 表达式; 常数声明常数 : 数据类型 := 数值; 运算符 算术运算 +, -, * 并置运算 & 关系运算 =, /=, <, <=, >, >= 逻辑运算 and, or, not, nand, nor, xor, xnor 语句 并行语句 ⑴信号赋值语句 简单信号赋值语句信号 <= 表达式; 选择信号赋值语句 with 选择表达式 select

VHDL语言快速入门必读

一·1.数据类型BIT与STD_LOGIC有什么区别。 BIT类型的取值只能是0或1,没有不定状态X,也没有高阻态。 STD_LOGIC类型可以有9种不同的值,包括U-初始值,X-不定,0-0,1-1,Z-高阻态,W-弱信号不定,L-弱信号0,H弱信号1.‘—’不可能情况。 2.信号和变量的异同。 信号是全局量,只要在结构体中已经定义,就可以在结构体中的所有地方使用,信号的赋值符号是”<=”,信号带入时可以附加延时,信号实际带入过程和带入语句的处理时分开进行的。 变量是局部量,只能在进程,子程序内部定义和使用,变量的赋值符号是“:=”,变量的赋值是立即执行的,不能附加延时。 3.VHDL语言的基本顺序语句和并行语句有哪些? 双性语句:信号带入语句 顺序语句:WHAT语句,断言语句,变量赋值语句,IF语句,CASE语句,LOOP语句,NEXT语句,EXIT语句,过程调用语句,NULL语句。 并行语句:进程(PROCESS)语句,条件带入语句,选择信号带入语句,并发过程调用语句,块语句。 4.用VHDL语言进行硬件设计的流程是什么? 1.分析实际的需求2确定芯片的功能3.用VHDL 语言描述改元件4.编译,如果有错误修改后再编译直至编译通过。5.仿真,如果仿真不符合设计要求,修改程序直至仿真通过。6.测试7.综合,8.下载到实际的芯片上。 5.基本的硬件描述语言的种类有哪些? 美国国防部开发的VHDL。 Verilog公司开发的Verilog-HDL. 日本电子工业振兴协会开发的UDL/I语言。 6.VHDL语言中包含的库的种类有哪些?库:是经编译后的数据的集合,它存放包集合定义,实体定义,构造体定义,和配置定义。库的种类:1.IEEE库,2.STD库,3.面向ASIC 的库,4.WORK库,5.用户定义库 7.IEEE库中所包含的基本类型转换函数有 1.包含程序所用的库 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; 2.实体声明 ENTITY fp IS PORT(); END ENTITY fp; 3.结构体,具体功能的实现 ARCHITECTURE a OF fp IS BEGIN END ARCHITECTURE a; 9.VHDL的程序子结构有哪些? 进程(PROCESS)顺序语句,块(BLOCK)并行语句,过程(PROCEDURE)顺序语句,函数(顺序语句)。 10.简述when-else和if-else的区别? If-else是顺序语句所以只能在进程内部使用,可以没有else语句,可以进行嵌套。有自身值带入的描述,能组成锁存电路。 When-else是并行语句,在结构体内使用,必须要有else语句,不能进行嵌套,没有自身值带入的描述,不能组成锁存电路。 11.什么是ASIC,ASIC的特点是什么?ASIC是Application Specific Integrated Circuit 的英文缩写,在集成电路界被认为是一种为专门目的而设计的集成电路。 ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。 12.逻辑电平有哪些?

VHDL硬件描述语言实验报告

硬件描述语言实验附录 姓名:xxx 学号:xxx 指导教师:xxx 目录 硬件描述语言实验附录 (1) 实验1.三输入与门电路实验 (2) 实验2. 三—八译码器实验 (3) 实验3. D触发器实验 (4) 实验4. 分频器实验 (5) 实验5. 状态机实验 (8)

实验1.三输入与门电路实验 --三输入与门电路threeinput --姓名:王定 --学号:1306034248 --中北大学 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL;--库文件 -------------------------------------------------------------- ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入 B: IN STD_LOGIC; --输入端口,个位写入使能 C: IN STD_LOGIC; --输入端口,十位写入使能 CO: OUT STD_LOGIC); --输出端口,溢出标志 END ENTITY threeinput; --结束端口定义 -------------------------------------------------------------- ARCHITECTURE RTL OF threeinput IS--定义结构体 BEGIN PROCESS(A,B,C) IS --开始,必须带上 BEGIN CO<=A AND B AND C ; END PROCESS; END ARCHITECTURE RTL; --结束结构体 表1. 三输入与门电路VHDL实验代码 图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出

硬件描述语言VHDL大总结

VHDL大总结 一、填空题 1.两种标识符 短、扩展 2.4种基本数据类型 常量、变量、信号、文件 3.常量说明格式 constant 常数名: 数据类型:=表达式; 4.三种数据变换方法? 函数转换、常数转换、类型标记 5.四种运算操作符? 逻辑、关系、算术、并置 6.如何启动进程? (1).必须包含一个显示的敏感信号变量 (2).或者包含一个wait语句 7.五种基本结构? 库(library)、包集合(package)、实体(entity)、结构体(architecture)、配置(configuration) 8.信号与变量代入? (1).<= (2).:= 9.列举可编程逻辑器件? PROM→PLA→PAL→CPLD→FPGA→EPROM→EEPROM→GAL 10.数据类型 整数、位、位矢量、符号、布尔量、时间、错误等级、标准逻辑 11.四种端口模式? IN—OUT—INOUT—BUFFER 12.三种子结构描述语句?BLOCK—PROCESS—SUBPROGRAMS

13.结构体三种描述方式 寄存器传输(RTL)--数据流、结构描述、行为描述14.标识符规则? (1).不以数字靠头 (2).下划线不连续 (3).不与保留字重复 (4).下划线前后必须有英文字母或者数字 (5).最后一个不能使用下划线(连字符) 15.扩展标识符 \12@+\ 16.赋值? (1).信号、变量可以多次赋值 (2).常量只能定义时赋值(进程内部,子函数内部)17.高阻、不定态? 'Z'------------'X' 18.进程位置? 结构体内部 19.变量位置? 进程内部---包内部----子程序内部 20.进程执行机制? 敏感信号发生跳变 21.优先级? if语句之间具有不同优先级 22.时序电路的去驱动信号? 时钟 23.时序电路在何时发生变化? 时钟信号的边沿 24.两种状态机? (1).moore-----f(现状) (2).mealy-----f(现状,输入)

VHDL语言的基本知识点罗列

VHDL语言的基本知识点罗列 1 VHDL语言的标识符 VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下法则: a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。 任何标识符必须以英文字母开头。λ 末字符不能为下划线。λ b)不允许出现两个连续下划线。 标识符中不区分大小写字母。λ VHDL定义的保留子或称关键字,不能用作标识符。λ c) VHDL中的注释由两个连续的短线(--)开始,直到行尾。 以下是非法标识符: -Decoder —起始不能为非英文字母 3DOP —起始不能为数字 Large#number —“#”不能成为标识符的构成符号 Data__bus —不能有双下划线 Copper_ —最后字符不能为下划线 On —关键字不能用作标识符。 注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。 标识符表示的几种数据对象的详细说明如下: 1) 常数(Constant ) 常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一被赋值就不能在改变。一般格式: CONSTANT 常数名:数据类型:=表达式; 例:CONSTANT Vcc: REAL: =5.0; —设计实体的电源电压指定 常数所赋得值应与定义的数据类型一致。 常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。 2) 变量(Variable) 变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。用作局部数据存储。在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。 一般格式: VARIABLE 变量名数据类型约束条件:=表达式; 例:VARIABLE x,y:INTEGER; —定义x,y为整数变量 VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围 变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。 变量赋值语句的语法格式如下:

vhdl基本语法(简略共34页)

VHDL硬件描述语言 1.1 VHDL概述 1.1.1 VHDL的特点 VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于 VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原 语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下: 1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下 (top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。 2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设 计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数 据传送。利用单元(componet)、块(block)、过程(procure)和函数(function)等语句, 用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文 档资料的保存和广泛使用。 3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL 的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数 据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类 型语言。 4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行 和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构 和行为状态。 1.1.2 VHDL语言的基本结构 VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级 语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字 逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。但是VHDL毕竟是一种描述 数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的 语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者 感到枯燥无味,不得要领。较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整 体的程序结构,再逐步介绍程序中的语法概念。 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路, 或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含程序包、实体和结构体三个部分。实体给出电路单元的外部输入输出接口信号和引脚信 息,结构体给出了电路单元的内部结构和信号的行为特点, 程序包定义在设计结构体和实体 中将用到的常数、数据类型、子程序和设计好的电路单元等。 一位全加器的逻辑表达式是: S=A⊕B⊕Ci Co=AB+ACi+BCi 全加器的VHDL程序的文件名称是fulladder.VHD,其中VHD是VHDL程序的文件扩展名, 程序如下: LIBRARY IEEE; --IEEE标准库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fulladder IS -- fulladder是实体名称 PORT( A, B, Ci : IN STD_LOGIC; --定义输入/输出信号 Co, S : OUT STD_LOGIC ); END fulladder; ARCHITECTURE addstr OF fulladder IS --addstr是结构体名 BEGIN

VHDL语言的基本要素(大全)

VHDL语言的基本要素 一、数据对象 VHDL语言的主要数据对象有信号,变量,常量。 信号—信号是电路中的物理量,对应于电路的连线、节点;信号说明全局量,用于描述中的构造体(Architecture), 实体(Intity),程序包(package)。 变量—变量是程序运算中的中间量,并不对应电路中的物理量。变量说明局部量,用于进程语句(process), 函数(Function), 过程(procedure)。 常量—常数也不对应电路中的物理量,当常量说明全局量,在构造体(Architecture), 实体(Intity),程序包(package),进程语句(process), 函数(Function), 过程(procedure)中均可使用。数据对象的定义格式: signal 信号名:数据类型,约束条件,表达式 Variable 变量名:数据类型,约束条件:=表达式 Constant 常量名:数据类型,约束条件:=表达式 例如:Variable count:INTEGER RANGE 0 TO 255:=10 Constant Daly:Time:=100ns 信号代入和变量赋值的区别:两者形式不同,操作过程也不相同。变量赋值符“:=”,信号的代入符“<=”。 在变量的赋值语句中,该语句一当执行,其值立即将赋予变量;而信号的代入,其语句执行后不会立即使信号发生代入,在下条语句

执行时,仍使用原来的信号值,如进程语句中的敏感表的信号代入就是如此。 二、数据类型 VHDL语言中的数据类型,一般而言可分为:标量类型和组合类型。在实际使用中,也可分成予定义类型和用户定义类型。VHDL语言是强类型的语言,主要可按如下分类和变换处理。 ①标准数据类型 ⑴整数⑵实数(浮点数)-1.0E+38~+1.0E38 ⑶位bit (0,1) ⑷位矢量⑸布尔量,“假”,“真”⑹字符(ASCⅡ)字符 ⑺时间 ⑻错误等级⑼自然数(大于等于0的整数)⑽字符串 (字符矢量) ②用户定义的数据类型 TYPE 数据类型名{数据类型名} 数据类型定义 ⑴枚举类型⑵整数类型⑶实数类型⑷数组类型 ⑸存取类型⑹文件类型⑺记录类型⑻时间类型③用户定义子类型 SUBTUPE 子类型名IS 数据类型名[范围] 例:SUBTYPE digit is INTEGER RANGE 0 TO 9 ④数据类型转换 数据类型的变换函数通常由“STD_LOGIC_1164”,

03 第三章 VHDL语言基础 习题答案

填空题 1、一个标准的VHDL语言程序由库、实体和结构体组成。 2、个完整的VHDL语言描述是以对一个功能元件的完整描述为基础的 3、实体相当于电路图中一个器件符号。 4、端口说明(PORT)是对设计实体与外部接口的描述,也可以说是设计实体的外部引脚的名称,它为实体与外部环境的动态通信提供通道 5、缓冲(BUFFER)端口描述模式和INOUT双向模式的区别在于只能接受一个驱动源,不允许多重驱动。 6、VHDL语言的结构体的这些子结构互相之间是并行的。 7、将VHDL语言的行为描述语句转换为门级描述由VHDL开发工具自动完成,是VHDL语言综合器的任务。 8、数据流描述也称为RTL(寄存器传输级)描述方式,它类似于布尔方程,它既表示某种行为,又隐含结构信息,主要指非结构化的并行语句描述。 9、在结构描述中,元件间的连接是通过定义的端口界面来实现的。 10、结构描述的缺点是程序表示的是电路的结构连接关系,不能直观的得到设计电路的逻辑功能。 综述题 1、写出实体的结构。 答案: ENTITY 实体名IS [GENERIC(类属表);] [PORT(端口表);] END ENTITY 实体名; 2、在IEEE库中定义了哪四种VHDL语言的端口模式? 答案: ●IN:输入。 ●OUT:输出。 ●INOUT:双向,输入输出。 ●BUFFER:缓冲,其实质也是双向的,但是只能接受一个驱动源。 3、写出结构体的结构。

?2 ? 答案: ARCHITECTURE 结构体名OF 实体名IS [说明语句] BEGIN [功能描述语句] END ARCHITECTURE 结构体名; 4、写出结构体的功能性描述语句的5种子结构。 答案: 块语句、进程语句、子程序调用语句、信号赋值语句和元件例化语句。 5、VHDL有哪四种描述风格? 答案: 行为描述、数据流描述、结构描述以及由前三种组合的混合描述。 实验题 实验【一】编写一个实体 实验目的:熟悉实体的编写方法。 实验任务:在Quartus II中建立一个VHDL语言文件,编写一个实体,该实体要求如下: 实体名:TEST。 输入端口:INPUTA,INPUTB,数据类型为BIT。 输出端口:OUTPUT,数据类型为BIT。 没有类属说明。 答案: ENTITY TEST IS --实体 PORT( INPUTA,INPUTB: in bit; --2个输入引脚,类型BIT OUTPUT: out bit); --1个输出引脚,类型BIT END TEST; 实验【二】编写一个结构体 实验目的:熟悉结构体的编写方法。

VHDL常用语法列表

VHDL常用语法列表 1 VHDL语言的标识符 VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下法则: a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。 任何标识符必须以英文字母开头。 末字符不能为下划线。 b)不允许出现两个连续下划线。 标识符中不区分大小写字母。 VHDL定义的保留子或称关键字,不能用作标识符。 c) VHDL中的注释由两个连续的短线(--)开始,直到行尾。 以下是非法标识符: -Decoder —起始不能为非英文字母 3DOP —起始不能为数字 Large#number —“#”不能成为标识符的构成符号 Data__bus —不能有双下划线 Copper_ —最后字符不能为下划线 On —关键字不能用作标识符。 注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。 2 VHDL的数据对象 标识符表示的几种数据对象的详细说明如下: 1) 常数(Constant ) 常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一被赋值就不能在改变。一般格式: CONSTANT 常数名:数据类型:=表达式; 例:CONSTANT Vcc: REAL: =5.0;--设计实体的电源电压指定 常数所赋得值应与定义的数据类型一致。 常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。 2) 变量(Variable) 变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。用作局部数据存储。在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。 一般格式: VARIABLE 变量名数据类型约束条件:=表达式; 例:VARIABLE x,y:INTEGER; —定义x,y为整数变量 VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围 变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。

VHDL的基本描述语句

VHDL的基本描述语句有并行语句(Concurrent Statements)和顺序语句(Sequential Statements)两大类(如表8-3所示)。在系统设计中,这些基本描述语句从不同侧面完整地描述了数字系统的硬件结构和基本逻辑功能。 表8-3VHDL的并行语句和顺序语句 并行语句用于表示算法模块间的连接关系,相互之间无次序关系,它们是并行执行的,与书写顺序无关。VHDL的结构体由若干相互联系的并行描述语句组成,如图8-3所示。 并行描述语句在结构体中的语法格式如下: ARCHITECTURE 结构体名OF 实体名IS {说明语句} BEGIN {并行语句} END ARCHITECTURE 结构体名; 并行描述语句主要有:并行信号赋值语句(Concurrent Signal Assignments)、进程语句(Process Statements)、块语句(Block Statements) 、元件例化语句(Component Instantiations)、生成语

句(Generate Statements) 及并行过程调用语句(Concurrent Procedure Calls)等六种。其中,进程语句和块语句是两种最主要、最常用的并行描述语句。 本节介绍这六种并行描述语句及其功能。 一、进程语句(TOP) 进程PROCESS语句本身是并行描述语句,但却包含一系列顺序描述语句。所以,设计中各个进程是并行执行,而各进程内的顺序描述语句却是按顺序执行。 进程与其他部分的通信,是通过从进程外的信号或端口中读取或者写入值来完成。进程语句的语法格式如下: [进程名称:]PROCESS [(敏感表)] {进程声明} BEGIN {顺序语句} END PROCESS [进程名称]; 其中,进程声明是对子程序、类型、常量和变量等的说明;敏感表(Sensitivity_list)是所有敏感信号(包括端口)的列表;敏感表的语法格式为: 信号名称{,信号名称} 所谓进程对信号敏感,是指当信号发生变化时,能够触发进程中语句的执行。这种敏感方式有两种:显式敏感表形式和WAIT语句形式。如果进程包含wait或者ifevent语句,必定包含时序组件。此时,IEEE VHDL不允许有敏感表存在。所以,进程语句也为时序算法提供一种自然的手段。 二、块语句(TOP) 块BLOCK语句把几个并行语句打包成结构体的子模块,成为结构体中的一个单独块区域。块语句由一系列并行描述语句构成。块语句的语法格式如下: [块名称:]BLOCK [(表达式)] {块声明} BEGIN {并行语句} END BLOCK [块名称]; 其中,表达式是块的保护(Guard)条件;块声明是对子程序、类型、常量、信号和组件等的说明。 三、并行信号赋值语句(TOP)

VHDL经典教程(精简快速入门版)

3 VHDL语言 VHDL: VHSIC Hardware Description Language. 3.1 VHDL语言基础 3.2 VHDL基本结构 3.3 VHDL语句 3.4 状态机在VHDL中的实现 3.5 常用电路VHDL程序 3.6 VHDL仿真 3.7 VHDL综合

HDL----Hardware Description Language 一种用于描述数字电路的功能或行为的语言。目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。 优点: HDL设计的电路能获得非常抽象级的描述。如基于RTL(Register Transfer Level)描述的IC,可用于不同的工艺。 HDL设计的电路,在设计的前期,就可以完成电路的功能级的验证。HDL设计的电路类似于计算机编程。 常用的HDL语言:VHDL 、Verilog HDL

?VHDL 是美国国防部在20世纪80年代初为实现其高速集成电路硬件VHSIC 计划提出的描述语言; ?IEEE 从1986年开始致力于VHDL 标准化工作,融合了其它 ASIC 芯片制造商开发的硬件描述语言的优点,于93年形成了标 准版本(IEEE.std_1164)。 ?1995年,我国国家技术监督局推荐VHDL 做为电子设计自动化硬件描述语言的国家标准。 VHDL 概述: VHDL VHSIC Hardwarter Description Language Very High speed integrated circuit VHSIC

VHDL优点: ?覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言; ?VHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解; ?VHDL语言可以与工艺无关编程; ?VHDL语言已做为一种IEEE的工业标准,便于使用、交流和推广。 VHDL语言的不足之处: 设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。

三VHDL语言基础

第三章VHDL语言基础 本章介绍VHDL语言的基础知识,具体容包括: 1、概述 2、VHDL程序的基本结构 库、程序包、实体说明、结构体、配置 3、VHDL的语言要素 语法规则、数据对象、数据类型、运算操作符 4、VHDL的描述语句 并行语句、顺序语句、子程序、属性语句 5、VHDL的描述方式 行为描述方式、寄存器传输级描述方式、结构描述方式 第一节概述 HDL(Hardware DescriptionLanguage):硬件描述语言,描述数字电路和系统的语言。具体来说,用于描述数字系统的结构、行为、功能和接口。 在EDA设计中,设计者利用硬件描述语言,可以描述自己的设计思想,完成设计输入的步骤。设计输入共有三种方法——原理图、文本、波形输入,其中,文本输入方式就是用硬件描述语言跟计算机交流,让计算机读懂设计者的设计。 VHDL的全称是Very-High-Speed Integrated CircuitHardware

DescriptionLanguage,译作甚高速集成电路硬件描述语言,是当前广泛使用的HDL 语言之一,并被IEEE和美国国防部采用为标准的HDL语言。 1、发展历程: 美国国防部1982年开发VHDL语言,在1987年被IEEE采用为标准硬件描述语言。在实际使用过程中,发现1987年版本的缺陷,并于1993年对87版进行了修订。因此,现在有两个版本的VHDL语言。 1)1987年的IEEE 1076(VHDL87) 2)1993年进行了修正(VHDL93) VHDL语言目前已成为,开发设计可编程逻辑器件的重要工具。 2、优点: VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: 功能强大,设计方式多样 VHDL具有功能强大的语言结构, 可用简洁明确的代码来描述十分复杂的硬件电路。 VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。 (自上而下:“上”指的是整个数字系统的功能和定义,“下”指的是组成系统的功能部件(子模块)。自上而下的设计,就是根据整个系统的功能,按照一定的原则把系统划分为若干个子模块,然后分别设计实现每个子模块,最后把这些子模块组装成完整的数字系统。)

vhdl语言基础

第1章VHDL语言基础 1.1 概述 硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述、结构描述、数据流描述的语言。目前,利用硬件描述语言可以进行数字电子系统的设计。随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。 国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来。有些HDL成为IEEE标准,但大部分是企业标准。VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司。可谓百家争鸣,百花齐放。这些不同的语言传播到国内,同样也引起了不同的影响。在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言。这两种语言已成为IEEE标准语言。 电子设计自动化(electronic design automation,EDA)技术的理论基础、设计工具、设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA 则是这些硬件配置文件的载体。当这些FPGA器件加载、配置上不同的文件时,这个器件便具有了相应的功能。在这一系列的设计、综合、仿真、验证、配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中。 以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟。在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力。HDL语言的语法语义学研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真、验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件。软件、硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐。毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力。本书从应用的角度向国内广大读者介绍VHDL编程技术,让大家掌握HDL编程,了解FPGA结构,学会使用EDA工具,为集成电路前端设计打下基础。 1.1.1 硬件描述语言的诞生 VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。HDL发展的技术源头是:在HDL形成发展之前,已有了许多程序设计语言,如汇编、C、Pascal、Fortran、Prolog等。这些语言运行

从Verilog到VHDL(上)基本语法

从Verilog到VHDL(上)基本语法 16六 从学校里开始,我所接触的就一直是VerilogHDL而非更老牌的VHDL,而且后续接触的项目中也多半是Verilog的用户,坦白的讲,Verilog的活力也确实更足一些,从 IEEE1800-2005开始的SystemVerilog的标准化,将Verification和Design的一体化的尝试,我个人认为,是走在正确的道路上。 所以,我确实想不到,我竟然也要回头学起VHDL来了,毕竟一些老牌公司,特别是欧洲的公司,往往因为历史原因,仍然在使用VHDL,看来终究是绕不过去的了——正如一个Design Verification工程师在目前想完全的不和SpecmanE 打交道是很难的一样。 下面记载的是两种语言学习过程中的一些体会,而且更多的是从语法角度出发,算是梳理一下思路吧,而且,以前从来没有接触过VHDL,当然会存在很多非常初级的东西。 而在本文之后,打算再写一篇简单阐述下结合Cadence的IUS工具,使用SystemVerilog对VHDL进行验证的基本方

法。 起手式 从Verilog撞进VHDL的世界,有些东西要先搞清楚,否则会一头雾水: 1. 大小写敏感:Verilog是大小写敏感的,VHDL则非; 2. 注释:Verilog的行注释为//,块注释为/**/;VHDL只支持行注释–;[1. 这个算是不方便的一个地方了,不过不论是在Vim还是Emacs当中,批量做行注释也很容易实现;] 基本结构 VHDL被认为是要求更严格,更多讲究的语言,相比和C类似的Verilog,架构上更严谨一些: 1. 基本结构:从上往下为 USE定义区(调用库和包);Package定义区(自定义程序包);Entity定义区(定义电路实体外观,I/O接口的规格); [2. Entity感觉像是C的头文件定义之类的东西,而在Verilog 当中,这些其实都是被整合在Module里头一起完成 了。]Architecture定义区(描述内部功能);[3. 同上,相当于Verilog的Module内部实现。]Configuration定义区(决定那个Architecture被使用)[4. 这也许就是之所以要分开Arch和Entity的原因,类似的效果在Verilog里实现,则需

04 第四章 VHDL语言的基本要素 习题答案

填空题 1、VHDL语言的文字(Literal)主要包括数值型文字和标识符。 2、在VHDL语言的以数字基数表示的文字中,十进制计数的1582的表示方法是10#158#2。 3、在数位字符串中,B为二进制基数符号;O为八进制基数符号;X为十六进制基数符号。 4、下标用于指示数组型变量或信号的某一个元素。 5、VHDL语言的注释以--来表示。 6、VHDL语言中主要有4类基本的数据对象:常量(CONSTANT)、变量(VARIABLE)、信号(SIGNAL)和文件(FILES)。 7、在对信号进行赋初值时,使用:=表示没有延时,使用<=表示有延时。 8、VHDL是一种强类型语言,要求每一个数据对象必须具有确定的唯一的数据类型,而且只有数据类型相同的量才能互相传递和作用。 9、VHDL语言的数据类型按照数据来源来分,可以分为VHDL语言预定义的标准数据类型和用户自定义的数据类型。 10、位类型实际上是一个二值枚举型数据类型,只有两个可能的取值:0和1,用于表示逻辑0和逻辑1。 11、标准逻辑位类型是在IEEE的STD_LOGIC_1164程序包中定义的。 12、布尔类型和位类型类似,实际上是一个二值枚举型数据类型,有两个可能的取值:TRUE(真)和FALSE(假)。 13、VHDL语言中主要有4类操作符:逻辑操作符(LOGIC OPERATOR)、关系操作符(RELATION OPERATOR)、算术操作符(ARITHMETIC OPERATOR)和重载操作符(OVERLOADING OPERATOR)。 综述题 1、VHDL语言的数字型文字主要有哪几种表达方式,并且举例。 答案: ●整数型文字,如:1,123,518E2,12_345_678。 ●实数型文字,如:12.3,6.5E-2,12_23.45_32。 ●以数字基数表示的文字,如:10#158#2。 ●物理量文字,如:60s,1km。 2、VHDL语言标识符有哪些书写规范?

VHDL语法简单总结

VHDL语法简单总结 一个VHDL程序代码包含实体(entity)、结构体(architecture)、配置(configuration)、程序包(package)、库(library)等。 一、数据类型 1.用户自定义数据类型 使用关键字TYPE,例如: TYPE my_integer IS RANGE -32 TO 32; –用户自定义的整数类型的子集 TYPE student_grade IS RANGE 0 TO 100; –用户自定义的自然数类型的子集 TYPE state IS (idle, forward, backward, stop); –枚举数据类型,常用于有限状态机的状态定义 一般来说,枚举类型的数据自动按顺序依次编码。 2.子类型 在原有已定义数据类型上加一些约束条件,可以定义该数据类型的子类型。VHDL不允许不同类型的数据直接进行操作运算,而某个数据类型的子类型则可以和原有类型数据直接进行操作运算。 子类型定义使用SUBTYPE关键字。 3.数组(ARRAY) ARRAY是将相同数据类型的数据集合在一起形成的一种新的数据类型。 TYPE type_name IS ARRAY (specification) OF data_type; –定义新的数组类型语法结构 SIGNAL signal_name: type_name [:= initial_value]; –使用新的数组类型对SIGNAL,CONSTANT, VARIABLE进行声明 例如: TYPE delay_lines IS ARRAY (L-2 DOWNTO 0) OF SIGNED (W_IN-1 DOWNTO 0); –滤波器输入延迟链类型定义 TYPE coeffs IS ARRAY (L-1 DOWNTO 0) OF SIGNED (W_COEF-1 DOWNTO 0); –滤波器系数类型定义 SIGNAL delay_regs: delay_lines; –信号延迟寄存器声明 CONSTANT coef: coeffs := ( ); –常量系数声明并赋初值 4.端口数组

相关主题
文本预览
相关文档 最新文档