chapter3 VHDL Syntax Fundamentals
第3章VHDL语法基础77页PPT

例2:用IF语句描述图示硬件电路。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
此处的库、程序包使用 说明是否必要
ENTITY EXAMPLE IS
PORT (A,B,C: IN BOOLEAN;OUTPUT:OUT BOOLEAN);
A
OUTPUT
B
对应的硬件电路
END ARCHITECTURE ART;
例3: 由两个2选1多路选择器构成的电路逻辑描述如图所示, 其中,当P1和P2为高电平时下端的通道接通。
P1
P2 S
B
B
S
B
C
A
Z
A
AHale Waihona Puke MUX21MUX21
SIGNA A,B,C,P1,P2,Z: BIT; ... IF (P1=‘1’) THEN
例:WHILE COUNTER <=100 LOOP IF COUNTER>50 THEN REPORT "THE COUNTER IS OVER 50"; END IF; … END LOOP;
END IF;
END LOOP; --当I=1时返回LOOP语句继续比较
#金
四、REPORT语句
语句格式: [标号] REPORT “输出字符串” [SEVERIY 出错级别]
REPORT语句不增加硬件的任何功能,仿真时可用该语句提 高可读性。
REPORT语句等价于断言语句。 出错级别默认为NOTE。
4. EXIT- LOOP语句 EXIT [LOOP 标号] [WHEN 条件表达式];
EXIT语句用来结束LOOP语句。分四种控制: ① 单独EXIT时,无条件结束LOOP语句的执行。 ② EXIT [LOOP 标号],跳转到指定的LOOP标号处。 ③ EXIT [WHEN 条件],条件值=TRUE,跳出LOOP语句;条件
VHDL程序设计教程第3章 VHDL语言的程序结构

2020/7/3
山东大学 曾繁泰
18
3.2 结构体
结构体的一般书写格式为: ARCHITECTURE 结构体名 OF 实体名 IS 结构体说明部分 BEGIN 结构体语句 END ARCHITECTURE结构体名;
2020/7/3
山东大学 曾繁泰
19
3.2.1 结构体命名
结构体名由设计者自由命名,是结构体的唯一名称。OF关 键字后面的实体名表明该结构体属于哪个设计实体。有些
……
BEGIN
……
END structural;
[例3-4]程序分析:这是一个VHDL程序片段,给出了结构体设计的模 板。
2020/7/3
山东大学 曾繁泰
23
3.2.3 结构体语句
结构体语句描述了结构体的内部组织结构和数据操作。结 构体语句应为并行语句。各个语句之间没有顺序关系。 1.若一个结构体的描述用的是结构描述方式,则并行语句表 达了结构体的内部元件之间的互连关系。 2.若一个结构体是用进程语句来描述的,并且这个结构体含 有多个进程,则各进程之间是并行的。但每个进程内部的 语句是有顺序的,不是并行的。 3.若一个结构体用模块化结构描述,则各模块间是并行的。
(1)行为描述法:采用进程语句,顺序描述设计实体的行为。
(2)数据流描述法:采用进程语句,顺序描述数据流在控制流 作用下被加工、处理、存储的全过程。
(3)结构描述法:采用并行处理语句描述设计实体内的结构组 织和元件互连关系。
(4)采用多个进程(Process)、多个模块(Blocks)、多个 子程序(Subprograms)的方法。
2020/7/3
山东大学 曾繁泰
15
3.1.4 实体语句部分
2第3章VHDL基础课稿PPT课件

❖ port(a,b,c:in std_logic;
❖
y:out std_logic);
❖ End nand3_gate1;
❖ Architecture ab of nand3_gate1 is
❖ Begin
❖
y<=not(a and b and c);
❖ End ab;
❖ (程序中的英文不区分大小写)
.
24
实体(三输入与非门程序)
❖ Entity nand3_gate1 is
❖ port(a,b,c:in std_logic;
❖
y:out std_logic);
❖ End nand3_gate1;
实体开始 的关键字
实体名称,也是程 序的存盘名
.
25
实体(三输入与非门程序)
❖ Entity nand3_gate1 is
.
15
2选1数据选择器
❖ 给出2选1数据选择器的VHDL程序 ❖ 加深对程序结构的理解
❖ Library ieee;
❖ Use ieee.std_logic_1164.all;
❖ Entity mux21b is
❖ port(a,b,s:in std_logic;
❖
y:out std_logic);
❖ port(a,b,c: in std_logic;
❖
y:out std_logic);
端口数据类型
❖ End nand3_gate1;
❖ End nand3_gate1;
❖ Architecture ab of nand3_gate1 is
❖ Begin
❖
y<=not(a and b and c);
第3章VHDL基础

ain
u1 h_adder
d
h_adder
a
or2a c
cout
ain
A
co
A
co f b
bin
f_adder
cout
bin
B
so
e
B
so
u3sum cin来自sumcinu2
图3-9 全加器f_adder电路图及其实体模块
I113
3.3 全加器的VHDL描述
3.3.1 半加器描述
co
a
and2
b
so
SIGNAL Q1 : STD_LOGIC;
BEGIN
PROCESS (CLK)
BEGIN
IF rising_edge(CLK) -- 必须打开STD_LOGIC_1164程序包
THEN Q1 <= D ;
END IF;
END PROCESS ;
Q <= Q1 ;
--在此,赋值语句可以放在进程外,作为并行赋值语句
not
xnor2
a b so co
00
0
0
01
1
0
10
1
0
11
0
1
图3-10 半加器h_adder电路图及其真值表
3.3 全加器的VHDL描述
3.3.1 半加器描述
【例3-15】 LIBRARY IEEE;
--半加器描述(1):布尔方程描述方法
USE IEEE.STD_LOGIC_1164.ALL;
3U短标识符 vHDL的短标识符遵守以F规则的字符序列: ([)有效字符:英文宁母(’al—”z“, fA’。’Zl)、数字(”o”—’9r) (2)必须以英义字蚂打头。 (3)下划线(”)的前后都必须有英文字母dZ数字。 (4)短标识符不区分大小4。
EDA 第3章 VHDL语言 3.3全加器的VHDL描述

3.3 全加器的VHDL描述
3.3.2 CASE语句
1. CASE语句
CASE <表达式> IS When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ; When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ; ...
WHEN OTHERS => <顺序语句>;
component元件名port端口名表endcomponent文件名33vhdl333例化语句在组件映射部分其中的端口名是在元件组件定义语句中的端口名表中已定义好的元件端口的名字或者说是顶层文件中待连接的各个元件本身的端口名
3.3 全加器的VHDL描述
目的:进一步学习VHDL的语法
重点:1、CASE语句的用法
3.3 全加器的VHDL描述
【例3-17】 LIBRARY IEEE ; --或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c <= a OR b ; END ARCHITECTURE one ;
3.3 全加器的VHDL描述
3.3.1 半加器描述 –真值表描述方法
【例3-16】 LIBRARY IEEE; --半加器描述(2):真值表描述方法 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ; --定义标准逻辑位矢量数据类型 BEGIN abc <= a & b ; --a相并b,即a与b并置操作 PROCESS(abc) BEGIN CASE abc IS --类似于真值表的CASE语句 WHEN "00" => so<='0'; co<='0' ; WHEN "01" => so<='1'; co<='0' ; WHEN "10" => so<='1'; co<='0' ; WHEN "11" => so<='0'; co<='1' ; WHEN OTHERS => NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ;
VHDL第三章

VHDL语言程序要包含实体(ENTITY),结构体(ARCHITECTURE),配置(CONFIGURATION),程序包(PACKAGE),库声明(LIBRARY)5部分。
实体:应以语句“ENTITY实体名IS”开始,以语句“END ENTITY实体名;”结束,其中的实体名可以由设计者自己添加。
实体:Entity <实体名> is[类属说明;][端口说明;][实体说明部分;][实体语句部分;]End [entity]<实体名>;类属为设计实体和外部环境通讯的静态通信提供通道。
可以定义端口大小、元件数目及定时特性等IEEE076标准库中定义了以下常用的端口模式:IN:输入,只可以读;OUT:输出,只可以写;BUFFER:缓冲输出;INOUT双向,可以读或者写。
注意:当端口被定义为BIT时,该端口的信号取值只能是二进制数“1”和“0”。
实体说明部分:用于定义设计实体接口中的公共信息,如定义新的数据类型和常量等实体语句部分:是设计实体接口的共同部分。
只能由并行断言语句、并行过程调用语句、被动进程语句组成,且不能在语句中给信号赋值。
标识符的定义原则:1标识符有字母,数字和下划线组成;2在标识符不区分大小写字母;第一个字符必须是字母;4不允许有两个连续的下划线;5末尾不能是下划线;6标识符不能喝关键字相同。
结构体:architecture <结构体名> of <实体名> is[结构体说明语句;]Begin<功能描述语句;>End [architecture]<结构体名>;构造体说明语句:定义本构造体内部使用的信号、常数、数据类型和函数功能描述语句:具体描述构造体的行为和结构。
功能描述语句是并行执行的,并不以语句的书写顺序为执行顺序。
配置:一个实体可以拥有多个不同的构造体,而每个构造体在实体中的地位是相同的。
可以利用配置语句为实体指定一个构造体。
3.+Fundmentals+of+VHDL+(3)

Attributes statements
Attributes:
Data attributes
Return information (a value) regarding a data vector;
Signal attributes
Serve to monitor a signal (return TRUE or FALSE)
Sequential statements
Sequential statements
Wait statement: Process cannot have a sensitivity list WAIT FOR
Intended for simulation only Waveform generation for testbenches
Other parts of VHDL
Procedure: Similar to FUNCTION. Return more than one value.
Syntax:
declaration
body
Other parts of VHDL
Procedure:
Attention:
Parameter needs a specified mode. Input signals (mode IN), the default is CONSTANT. Output signals (mode OUT or INOUT), the default is VARIABLE
Description syntax (‘ apostrophe): object'attribute_name
Outline
Brief introduction Structure of VHDL Program Basic parts of VHDL program VHDL data types and operators VHDL data objects Basic VHDL statements Testbench Other parts of VHDL
第三章VHDL语言的数据类型及运算.ppt

24.03.2019
p1:process(a) is variable vtmp:integer:=0; begin vtmp:=vtmp+1; a1<=vtmp; a=1 0 a2<=a1; vtmp=0 1 end process p1; a1=50 1 p2: process(a) is a2=51 50 begin b1<=a1; b1=60 50 b2<=a2; b2=61 51 end process p2; end architecture example; 24.03.2019
block
24.03.2019
4
• 电子电路设计中,信号、变量、常数、文件四类客体的 物理含义: • 信号对应物理设计中的某一条硬件连接线; 常数对应数字电路中的电源和地等; 变量的对应关系不太直接,通常用于暂时数据的局部存 储,用于硬件特性的高层次描述的建模计算。 文件没有直接物理对应关系,它可用参数向子程序传递 数据,通过子程序对文件进行读、写操作。(93版)
e.
f. g.
可显式说明,如BIT’(‘1’);
位数据与布尔数据不同,可以用转换函数来转换; 可进行逻辑运算,结果仍为bit型。
26
24.03.2019
4) 位矢量(Bit_vector)
a. 位矢量是基于位类型的数组,是用双引号括起来 的一组位数据; b. 位矢量可表示总线状态; c. 使用 bit_vector 时,要注明数组中的元素个数和 排列方向。 如: signal a: bit_vector(0 to 7);
constant 常数名:数据类型:=表达式;
24.03.2019 6
3) 举例: constant vcc:real:= 5.0; constant delay:time:= 100 ns; constant fbus:bit_vector:=“0101”;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Library Declaration (库声明):
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
18
Entity(实体) just like a device symbol
26
Architecture(结构体)
Be used to describe the internal structure of design entity and the logic relationship between entity ports, that equivalents the internal structure of the circuit. Be composed of signal declaration and function description. Signal declaration:Declare signal name and type that will be used in the architecture;
13
3.1.2 Program Structure
库声明 LIBRARY … 包声明 USE … ENTITY 实体名 IS PORT(端口名1:端口模式 数据类型; 实体 … ); END 实体名; ARCHITECTURE 结构体名 OF 实体名 IS 结构体 结构体说明 BEGIN 并行语句; END 结构体名; 配置 14 configuration;
Chapter 3 VHDL Syntax Fundamentals
Introduction 3.1 Program Structure (基本结构) 3.2 Language Element (语言要素) 3.3 Concurrent Statement (并行语句) 3.4 Sequential Statement (顺序语句)
文件名、 实体名 一致
每行;结尾 关键字 end后跟 实体名
构造体
architecture dataflow of eqcomp4 is begin equal <= ‗1‘ when a=b else ‗0‘; End dataflow;
关键字 end后跟 构造体名
15
Library、Package(库、程序包)
“Black-Box”
ENTITY entity_name is [ GENERIC( generic_declarations类属参数 说明) ; ] [ PORT( port_declarations端口说明) ; ] END entity_name ;
19
A[3..0]
equal B[3..0]
VHDL 大小写不敏感 库 包 实体
eqcomp4.vhd
--eqcomp4 is a four bit equality comparator Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; USE IEEE. std_logic_UNSIGNED.ALL; entity eqcomp4 is port(a, b:in std_logic_vector(3 downto 0); equal :out std_logic); end eqcomp4;
GENERIC( constant_name : type [ := value ] );
e.g. GENERIC(m:TIME:=1 ns); q<=tmp AFTER m; GENERIC 利用类属参数为tmp建立1ns延迟值
★灵活地改变参数以满足实际设计中的要求, 是GENERIC语句的关键用途
23
Port Format
24
注意:
双向(Inout)可代替所有其他模式,但降低了 程序的可读性,一般用于与CPU的数据总线接口。 如计算机PCI总线的地址/数据复用总线,DMA 控制器数据总线等纯双向的信号。
25
Differences between OUT and BUFFER
Entity test1 is port(a: in std_logic; b,c: out std_logic ); end test1; architecture a of test1 is begin b <= not(a); c <= b; --Error end a;
1
Introduction HDL Description
VHDL
Verilog
2
Introduction
3
Introduction
4
Introduction
5
Introduction
6
VHDL History
1980
- The USA Department of Defense (DoD)
21
Entity -- Port Format
PORT------the input/output of a block Name Mode Type PORT (端口名 :端口模式 数据类型; 端口名 :端口模式 数据类型; … …);
22
Port Format
Port MODE indicates the direction that data is transferred
7
VHDL History
1987
- The DoD mandated that all digital circuits were described by VHDL. - IEEE-1076
- The F22 advanced tactical fighter aircraft. 1993
Function description:Describe logic behavior of entity.
27
ARCHITECTURE architecture_name OF entity_name is {architecture_declarative_item } BEGIN { concurrent_statement并行处理语句} END [ architecture_name ] ;
Describe the Input/Output ports of a block (Port) In structural design, PORT is interface between modules ; In chip-level design, PORT represents specific pin of chips.
- IEEE 1076-1993
8
VHDL History
1996
- Both commercial synthesis and simulation tools were available adhering to the IEEE 1076-1993 standard.
- A VHDL package for use with synthesis tools ( IEEE 1076.3) - IEEE 1076.4(VITAL): ASIC and FPGA library.
IN: Data goes into the entity only OUT: Data goes out of the entity only (and is not used internally) INOUT: Data is bi-directional (goes into and out of the entity) BUFFER: Data that goes out of the entity (and is also fedback internally)
Efficiency in design cycle time
Flexibility to adapting to design changes
Reuse of designs and package
Easy of various architectures and implementations Design verification and auto-regression tests
Entity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b <= not(a); c <= b; end a;
11
3.1 Program Structure (语法结构) 3.1.1 Syntax Rule 语法规则 3.1.2 Program Structure
12
3.1.1 Syntax Rule 语法规则
Identifiers & comment & spaces
Not case-sensitive 不区分大小写 The semicolon(;) is used to indicate termination of a statement. ;作为结束符 Two dashes („--‟) are used to indicate the start of a comment. --表示注释 Identifiers must begin with a letter, subsequent characters can be alphanumeric, number or ‗_‘ (underscore). 标识符中第一个字符必须是字母,之后 可以由字母、数字、单个下划线组成 ‘_‘ (underscore) can‟t follow ‗_‘ (underscore) . 下划线不可以连续 Space can be used everywhere and can‟t affect the circuit function.