VHDL详细语法教程

合集下载

第3章VHDL语法基础共77页文档

第3章VHDL语法基础共77页文档

END ENTITY EXAMPLE;
ARCHITECTURE ART OF EXAMPLE IS
BEGIN
PROCESS(A,B,C) IS
VARIABLE N: BOOLEAN;
BEGIN
C
IF A THEN N:=B;
ELSE N:=C; END IF; OUTPUT <=N; END PROCESS;
条件值是布尔型(TRUE或FALSE)。 条件=TRUE,执行THEN后顺序语句,条件全为FALSE时,
才会执行ELSE后顺序语句或结束语句END IF。
根据大括号和方括号部分可选情况,共有三种结构。
例1: IF (A>B)THEN OUTPUT<=‘1 ’;
END IF; 说明:若条件(A>B)检测结果为TRUE,则向信号OUTPUT赋值
END CASE; END PROCESS; END ARCHITECTURE ART;
S1 S2 D C B A
‘X’--强未知的
S2 S1
D C
Z B A
注意:本例的第五个条件名是必需的,因为对于定义 STD_LOGIC_VECTOR数据类型的S,在VHDL综合过程中,它 可能的选择值除了00、01、10和11外,还可以有其他定义于 STD_LOGIC的选择值。
ELSIF(SR (3)=‘0’) THEN SC <="001";
ELSIF(SR (2)=‘0’) THEN SC <="101";
ELSIF(SR (1)=‘0’) THEN SC <="011";
ELSE SC <="111";

VHDL语言的基本语法

VHDL语言的基本语法

B:二进制基数符号,表示二进制数位0或1。 二进制基数符号,表示二进制数位0 O:八进制基数符号。 八进制基数符号。 X:十六进制基数符号(0~F) 。 十六进制基数符号(0~ (0 例如: 1_1101_1110 1_1101_1110” 例如:B“1_1101_1110 --二进制数数组,位矢数组长度是9 --二进制数数组,位矢数组长度是9 二进制数数组 AD0 X“AD0” AD --十六进制数数组,位矢数组长度是12 --十六进制数数组,位矢数组长度是12 十六进制数数组
4、下标名及下标段名 下标名用于指示数组型变量或信号的某一 下标名用于指示数组型变量或信号的某一 元素, 元素,如:a(2) , b(n) 下标段名则用于指示数组型变量或信号的 下标段名则用于指示数组型变量或信号的 某一段元素,其语句格式如下: 某一段元素,其语句格式如下:
数组类型信号名或变量名(表达式 表达式2]); 数组类型信号名或变量名 表达式1 [TO/DOWNTO 表达式 ; 表达式
信号的使用和定义范围是实体、结构体和程序包 信号的使用和定义范围是实体、结构体和程序包.
在程序中: 在程序中 (1) 信号值的代入采用“<=”代入符,而且信号 信号值的代入采用“ ”代入符, 代入时可以附加延时。 代入时可以附加延时。 (2) 变量赋值时用“:=”,不可附加延时。 变量赋值时用“ ” 不可附加延时。 (3) 信号的初始赋值符号仍是“:=”。 信号的初始赋值符号仍是“ ” 例: X<=Y AFTER 10 ns; ; --X,Y都是信号,且Y的值经过 都是信号, 的值经过10ns延 , 都是信号 的值经过 延 时以后才被代入X。 时以后才被代入 。
(1) 赋值语句右方的表达式必须是一个与目标变量有相同 数据类型的数值。 数据类型的数值。 (2) 变量不能用于硬件连线和存储元件。 变量不能用于硬件连线和存储元件。 (3) 变量的适用范围仅限于定义了变量的进程或子程序中。 变量的适用范围仅限于定义了变量的进程或子程序中。 (4) 若将变量用于进程之外,必须将该值赋给一个相同的 若将变量用于进程之外, 类型的信号,即进程之间传递数据靠的是信号。 类型的信号,即进程之间传递数据靠的是信号。

VHDL语法PPT课件

VHDL语法PPT课件
C<=A(2 DOWNTO 1); B<=A(3)&D&'1';
11
2020/10/13
Example
Entity exam1 is Port(
a: in b: in c: out ); End exam1;
std_logic_vector(3 downto 0); std_logic_vector(3 downto 0); std_logic_vector(7 downto 0)
12
2020/10/13
Architecture a of exam1 is Begin c(0)<=not a(0); c(2 downto 1)<=a(2 downto 1)and b(2 downto 1); c(3)<='1'xor a(3); c(7 downto 4)<="1111"when(a/=b)else"0000"; End a;
顺序语句(一)
Process If-else Wait
23
2020/10/13
Process- - 进程
语法格式: [进程名:]Process(敏感量1,敏感量2,…) Begin
… End process[进程名];
24
2020/10/13
Example- - -process,if-else
13
2020/10/13
数据类型(二)
列举数据类型 …
14
2020/10/13
列举数据类型
定义语法: Type 列举名称 is (元素1,元素2,…); Attribute enum_encoding of 列举名称:type is “元素1,元素2,…”

VHDL基本语法

VHDL基本语法

一、数据类型A. 标准数据类型1)整数类型(INTEGER)VARIBLE A:INTEGER RANGE -128 TO 128范围-(231-1)~ +(231-1)2#11111111# --binary,=255D8#377#16#FF#2)实数类型和浮点类型(REAL & FLOATING)实数范围-1.0E+38 ~ +1.0E+38大多数EDA工具不支持浮点类型16#0F#E+016#FF.FF#E-13)位类型(BIT)TYPE BITIS(‘0',‘1')4)位矢量类型(BIT_VECTOR)位矢量(bit_vector)类型实际上就是位(bit)的一位数组,它的表示方法是用双引号将一组位数据括起来。

例如:"11010111"。

不难看出,采用位矢量可以很方便地表示电路描述中的总线状态,这在VHDL程序中经常用到。

B"1111-1100" --长度为8X"FBC" --长度为12,=B"1111-1011-1100"O"371" --长度为9,=B"011-111-001"5)布尔类型(BOOLEAN)6)字符类型(CHARACTER)‘A',‘a',‘B',大小写不敏感。

7)字符串类型(TRING)"VHDL","MULTI_SCREEN"8)物理类型(physical)--时间类型--The physics unit time is a predefined typeTYPE time IS RANGE -1E18 TO 1E18UNITSfs; -- Femto-secondps = 1000 fs;ns = 1000 ps;us = 1000 ns;ms = 1000 us;sec = 1000ms;min = 60 sec;END UNITS--another--DISTANCE TYPETYPE distance IS RANGE 0 TO 1E16UNITSA;nm = 10A;um = 1000nm;mm = 1000um;cm = 10mm;m = 1000 mm;km = 1000m;END UNITS;9)错误类型(NOTE,WARNING,ERROR,FAILURE)10)自然数、正整数类型(NATURAL & POSITIVE)ENTITY_compare ISPORT(a,b:INTEGER RANGE 0 to 9:=0;c:out Boolean);END compare;B. 自定义数据类型1)枚举类型(ENUMERATED)TYPE PCI_BUSstate IS(Idle,busbusy,write,read,Back off); --PCI总线状态机变量TYPEstd_ulogic IS('U',‘X',‘1',‘0',‘Z',‘W',‘L',‘H',‘-‘);TYPE boolean IS(false,true);TYPE BITIS(‘0',‘1');2)整数类型(INTEGER)TYPE digit IS INTEGER RANGE -128 TO 1283)实数类型和浮点类型(REAL & FLOATING)4)数组类型(ARRAY)TYPE MYARRAY IS ARRAY(INTEGER 0 TO 9)OFstd_LOGIC5)存取类型(ACCESS)TYPE line IS ACCESS string; --Line是指向字符串的指针6)文件类型(FILES)TYPE text IS FILE OF string;TYPE input-type IS FILE OF character;7)记录类型(RECODE)--RECORD适于描写总线,通讯协议TYPE PCI_BUS IS RECORDADDR:std_LOCIG_VECTOR(31 DOWNTO 0);DATA:std_LOGIC_VECTOR(31 DOWNTO 0);END RECORD;SEGINAL DECODE1,DECODE2:PCI_BUS;PCI_DEVICE1 <= DECODE1.ADDR;PCI_DEVICE1RAM <= DECODE1.DATA;8)时间类型(TIME)9)VHDLstd_logic在VHDL中,设计人员经常使用的数据类型是枚举类型std_ulogic和它的子类型std_logic,它们都是一个九值逻辑系统。

vhdl not用法

vhdl not用法

vhdl not用法
(原创版)
目录
1.VHDL 简介
2.VHDL 中的 NOT 运算
3.NOT 运算的实现方法
4.应用实例
正文
【VHDL 简介】
VHDL(VHSIC 硬件描述语言)是一种硬件描述语言,主要用于描述数字电路和模拟混合信号电路。

它是美国国防部高级研究计划局(DARPA)为实现 VHSIC(超高速集成电路)项目而开发的。

VHDL 具有简洁、易学的特点,广泛应用于集成电路设计和验证领域。

【VHDL 中的 NOT 运算】
在 VHDL 中,NOT 运算是表示逻辑非的一种方法,用于实现与原始信号相反的输出。

NOT 运算可以应用于单一信号,也可以应用于多个信号的组合。

在 VHDL 中,NOT 运算符的语法表示为“not”。

【NOT 运算的实现方法】
在 VHDL 中,NOT 运算的实现方法主要有两种:
1.使用“not”运算符:这是最直接的实现方法。

在 VHDL 代码中,只需在需要实现逻辑非的信号前加上“not”运算符即可。

例如,对于一个输入信号 A,可以通过“not A”实现逻辑非操作。

2.使用“if...then...else”语句:这是一种基于条件判断的实现方法。

当输入信号为高电平时,输出信号为低电平;当输入信号为低电平时,
输出信号为高电平。

例如,对于一个输入信号 A,可以通过“if A then "0" else "1"”实现逻辑非操作。

【应用实例】
假设有一个 3 位二进制信号 A,其值为“110”,现需要对其进行逻辑非操作。

vhdl基本语法

vhdl基本语法

Testbench文件的编写
时间标度指令`timescale 用于说明程序中 的时间单位和仿真精度。
`timescale module reg test; set; 10ns/1ns
编译指令
程序示例

仿真和延迟时间值度量单位参数 时间单位精度参数
parameter d = 1.55; initial begin
编译指令
是被包含进当前源文件的其他文件名
条件编译指令包括`ifdef,`else,`endif
这些指令用来控制源代码程序是否参与编译:
`define a; ……… `Ifdef a: 程序段1 `else 程序段2 `endif
版板所有 © 广州周立功单片机发展有限公司 2007
//`define a; ……… `Ifdef a: 程序段1 `else 程序段2 `endif
版板所有 © 广州周立功单片机发展有限公司 2007
广州周立功单片机发展有限公司
版板所有 © 广州周立功单片机发展有限公司 2007

系统任务和编译预处理语句 仿真控制任务
系统任务
主要用在测试文件的initial模块内,配合时间延时控制仿真时间 $finish $stop
$finish: 退出仿真器,返回操作系统

$stop: 把EDA工具置成暂停模式,可以通过相应的命令使仿真继续;
$stop和$finish可以带参数,如$finish(0),根据参数的不同,
编译预处理
编译指令
同C语言的编译预处理指令一样,Verilog HDL也提供了大量的 编译语句。通过编译语句,EDA工具开发商使得用他们的工具解释 Verilog HDL 模型变得相当容易。

vhdl基本语素语法语句杨

vhdl基本语素语法语句杨
第21页/共110页
二、VHDL数据类型与数据对

• 在VHDL程序中,我们经常会遇到这样的语句:
• Port(
X: in std_logic);
• Signal
A : std_logic;
• Variable
B : std_logic_vector(7
downto 0);
• Constant
C : integer;
二、VHDL数据类型与数据对象
(3)标准逻辑(Std_logic);
• 标识关键字: Std_Logic;
• 取值空间:
•{
• ‘X’ , -----Forcing Unknown
• • • • • • •
‘0’ , ‘1’ , ‘Z’ , ‘W’, ‘L’ , ‘H’ , ‘U’,
-----------------------------------WFFHW UWooineegerradaccankeiikknnfI0Ugmgi1nnp10ekdend对 特 实 对 采标oawn,数 性 逻 用准cne字 描 辑 标因逻逻 述 信 准此辑辑 更 号 逻在类电 加 的 辑V型H路 完 定 类D(L的 整 义 型程9值逻 , 通 .序逻辑 真 常中辑,)
VHDL命令语句
并列语句 顺序语句
第56页/共110页
并列语句
• (1)直接赋值语句:<= 赋值运算符 • (2)条件赋值语句:When-Else • (3)选择赋值语句:With-Select-When • (4) Process(进程)语句 • (5) Block(块)语句 • (6) 函数调用语句(后面章节讲) • (7) Component(元件)例化语句 • (8)For-Generate语句

VHDL入门易懂教程

VHDL入门易懂教程

VHDL入门易懂教程VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字系统的行为,结构和时序。

它是一种用于设计和开发数字电路的语言,比如FPGA(Field-Programmable Gate Array)和ASIC (Application-Specific Integrated Circuit)。

本文将提供一个易懂的VHDL入门教程,以帮助初学者快速了解并上手VHDL语言。

一、VHDL概述VHDL最初是为了满足军事和航空航天领域的需求而开发的,目前已经成为了一种广泛使用的硬件描述语言。

它不仅可以用于系统级的设计,还可以用于模块级和门级的设计。

VHDL的设计思想是从高级抽象开始,逐步转化为底层的物理设计,这使得VHDL非常适合大型和复杂的设计项目。

二、VHDL语法1.声明语句在VHDL中,首先需要声明各种信号和变量,以便在后续的代码中使用。

声明语句的语法如下:```signal signal_name : signal_type := initial_value;variable variable_name : variable_type := initial_value;```其中,signal_name和variable_name为信号和变量的名称,signal_type和variable_type分别为信号和变量的类型,initial_value为信号和变量的初始值。

2.过程语句VHDL中的过程类似于程序中的函数,用于执行一系列的操作。

过程语句的语法如下:```process (sensitivity_list)begin-- codeend process;```sensitivity_list是一个由信号组成的列表,当列表中的任意一个信号发生变化时,过程会被触发执行。

过程中的代码为具体的操作。

3.结构语句VHDL中的结构语句用于描述数字系统的结构,也就是各个模块之间的连接关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL详细语法教程
VHDL(Very High Speed Integrated Circuit Hardware
Description Language)是一种硬件描述语言,用于对数字电路进行描述、建模和仿真。

它是一种用于描述数字系统结构和行为的语言,广泛用于FPGA(Field Programmable Gate Array)和ASIC(Application
Specific Integrated Circuit)设计中。

VHDL语言具有丰富的语法结构,可以描述数字系统的结构和行为,
并可以进行仿真和综合。

下面是VHDL语言的详细语法教程:
1. 实体声明(Entity Declaration):VHDL代码的第一部分是实体
声明,用于定义设计的接口和名称。

实体声明是设计的顶级结构,它包含
输入输出端口的定义。

语法格式如下:
```vhdl
entity entity_name is
port
port_name : in/out type;
port_name : in/out type;
...
end entity_name;
```
其中,entity_name为实体名称,port_name为端口名称,type为端口类型,in表示输入端口,out表示输出端口。

2. 结构体声明(Architecture declaration):在实体声明后,需要定义该实体的结构和行为。

这一部分被称为结构体声明。

语法格式如下:
```vhdl
architecture architecture_name of entity_name is
signal signal_name : type;
...
begin
...
end architecture_name;
```
3. 信号声明(Signal declaration):信号用于在VHDL代码中传输数据。

通过信号声明,可以定义存储或传输数据的变量。

信号声明需要在结构体声明的前面进行。

语法格式如下:
```vhdl
signal signal_name : type;
```
其中,signal_name为信号名称,type为信号类型。

4. 过程(Process):过程是VHDL语言中最重要的一部分,用于定
义设计的行为。

过程可以根据条件执行特定的操作。

语法格式如下:
```vhdl
process (sensitivity_list)
begin
...
end process;
```
其中,sensitivity_list为灵敏度列表,用于指定过程的触发条件。

在过程中可以进行赋值、条件判断、循环等操作。

5. 顺序结构(Sequential statements):顺序结构是指VHDL代码
在过程中按照顺序执行的语句。

常见的顺序结构包括赋值语句、条件语句、循环语句等。

赋值语句的语法格式如下:
```vhdl
signal_name <= value;
```
其中,signal_name为信号名称,value为赋值的值。

条件语句的语法格式如下:
```vhdl
if condition then
-- statements
elsif condition then
-- statements
else
-- statements
end if;
```
其中,condition为条件表达式,statements为条件满足时执行的语句。

循环语句的语法格式如下:
```vhdl
for index in range loop
-- statements
end loop;
```
其中,index为循环变量,range为循环范围,statements为每次循
环时执行的语句。

以上是VHDL语言的一些基本语法,通过这些语法可以对数字系统进
行描述和建模。

除此之外,VHDL还有其他高级语法和特性,如并行结构、综合、测试等,帮助设计者进行全面的系统设计和仿真。

希望这个简要的
教程对您有所帮助。

相关文档
最新文档