第3章 VHDL语言基础
第三章 VHDL程序设计1

五、VHDL与其它硬件描述语言的比较
行为级 VHDL: 具有较强的系统级抽象描述能力,适 合行为级和 RTL级的描述。设计者可不必 了解电路细节,所作工作较少,效率高。 但对综合器的要求高,不易控制底层电路 的生成。IEEE标准,支持广泛。 RTL: Register Translate Level
其中,端口模式: in: 输入型,此端口为只读型。 out: 输出型,只能在实体内部对其赋值。 inout:输入输出型,既可读也可赋值。 buffer: 缓冲型,与 out 相似,但可读。
21
out 和 buffer 的区别:
inout 和 buffer 的区别: Inout:是一个双向引脚,它在out引脚上加入一个 22 三态输出和输入缓冲器构成的
configuration 配置名 of 实体名 is
for
选配结构体名
end for ;
end 配置名;
32
例:一个与非门不同实现方式的配置如下:
library ieee; use ieee.std_logic_1164.all; configuration first of nand is for art1; entity nand is end for; port(a: in std_logic; end first; b: in std_logic; c: out std_logic); --configuration second of nand is end entity nand; -for art2 architecture art1 of nand is -end for; begin --end second; c<=not (a and b); end architecture art1; architecture art2 of nand is begin c<=‘1’ when (a=‘0’) and (b=‘0’) else ‘1’ when (a=‘0’) and (b=‘1’) else ‘1’ when (a=‘1’) and (b=‘0’) else ‘0’ when (a=‘1’) and (b=‘1’) else ‘0’; 33 end architecture art2;
EDA技术实用教程(潘松第5版)第3章-VHDL设计初步

库—STD库
VHDL定义了两个标准程序包,即STANDARD和 TEXTIO(文件输入/输出)程序包,它们都收入在 STD库中,可随时调用。由于STD库符合VHDL语言 标准,在应用中不必用打开库语句。即
LIBRARY
STD;
STD.STANDARD.ALL
是不必要的。
库— WORK库
WORK库是用户的VHDL设计的现行工作库,用 于存放用户设计和定义的一些设计单元和程序包。 WORK库自动满足VHDL语言标准,在实际调用中, 也不必显示预先说明,即不必在VHDL程序中明确 打开并指定。 基于VHDL所要求的WORK库的基本概念,利用 VHDL进行设计时,不允许在根目录下进行,而是 必须为此设定一个文件夹,用于保存所有此项目 的设计文件,VHDL综合器将此文件默认为WORK库。 还要注意的是,工作库并不是这个文件夹的名字, 而是一个逻辑名。综合器将指示器指向该文件夹 的路径。
库的用法
例:
LIBRARY
USE
IEEE;
IEEE.STD_LOGIC_1164.STD_ULOGIC;
USE
IEEE. STD_LOGIC_1164.RISING _EDGE;
表示向当前设计实体开放了IEEE. STD_LOGIC_1164程序包中的RISING_EDGE函数, 但由于此函数要用到IEEE. STD_ULOGIC,所以在 其前面加了一条USE语句,开放同一程序包中的这 一数据类型。
设计实体
结构体 (Architecture) (P62)
结构体用于描述设计实体的内部结构和实
体端口间的逻辑关系,在电路上相当于器件的内
部电路结构。结构体由信号声明部分和功能描述
语句部分组成。信号声明部分用于结构体内部使
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语言程序设计》课程教学大纲

《VHDL语言程序设计》课程教学大纲课程简介课程简介:本课程为软件工程专业嵌入式专业方向的专业课,是开发基于FPGA/CPLD嵌入式系统的必备基础。
主要内容包括FPGA/CPLD目标器件的结构和工作原理、EDA技术和工作流程、VHDL基础知识、VHDL实用方法和设计深入、原理图输入法、LPM宏功能模块实用方法、状态机设计以及EDA优化设计。
目的是为后续课程的学习和嵌入式系统的设计作必须的基础准备。
课程大纲一、课程的性质与任务:本课程是软件工程专业的专业方向课程。
教学任务主要包括使学生了解EDA技术的工作流程,正确使用开发平台,掌握以VHDL为代表的硬件描述语言的基本知识、编程实用方法和工程设计方法,掌握原理图设计法、状态机设计法,能够正确使用IP Core和LPM等宏功能模块。
本课程是软件工程专业嵌入式专业方向的第一门专业方向课,是后续课程的必备基础,具有较重要的地位。
二、课程的目的与基本要求:本课程涉及到的学科基础知识面广,要求软硬件兼备,需要较好的学科基础。
通过本课程的学习,最终达到能够设计基于FPGA/CPLD的ASIC,并能进行EDA优化的目的。
三、面向专业:软件工程四、先修课程:《计算系统基础》五、本课程与其它课程的联系:本课程的先行课程是计算系统基础。
服务的主要后续课程包括基于FPGA的嵌入式软件开发、基于ARM的嵌入式软件开发等。
六、教学内容安排、要求、学时分配及作业:第一章概述(2学时)1.1 EDA技术及其发展(C)1.2 硬件描述语言硬件描述语言种类、自顶向下设计方法、EDA工程设计流程。
(A)1.3 面向FPGA/CPLD的开发流程设计输入、分析综合、布局布线、仿真、下载和硬件测试。
(A)1.4 IP Core 及EDA技术发展趋势。
(C)第二章 FPGA硬件特性与编程技术(8学时)2.1 PLD发展历程及其分类(c)2.2 低密度PLD工作原理PROM、PLA、PAL、GAL。
《VHDL语言程序设计》课程教学大纲

GDOU-B-11-213《VHDL语言程序设计》课程教学大纲课程简介课程简介:本课程为软件工程专业嵌入式专业方向的专业课,是开发基于FPGA/CPLD嵌入式系统的必备基础。
主要内容包括FPGA/CPLD目标器件的结构和工作原理、EDA技术和工作流程、VHDL基础知识、VHDL实用方法和设计深入、原理图输入法、LPM宏功能模块实用方法、状态机设计以及EDA优化设计。
目的是为后续课程的学习和嵌入式系统的设计作必须的基础准备。
课程大纲一、课程的性质与任务:本课程是软件工程专业的专业方向课程。
教学任务主要包括使学生了解EDA技术的工作流程,正确使用开发平台,掌握以VHDL为代表的硬件描述语言的基本知识、编程实用方法和工程设计方法,掌握原理图设计法、状态机设计法,能够正确使用IP Core和LPM等宏功能模块。
本课程是软件工程专业嵌入式专业方向的第一门专业方向课,是后续课程的必备基础,具有较重要的地位。
二、课程的目的与基本要求:本课程涉及到的学科基础知识面广,要求软硬件兼备,需要较好的学科基础。
通过本课程的学习,最终达到能够设计基于FPGA/CPLD的ASIC,并能进行EDA优化的目的。
三、面向专业:软件工程四、先修课程:《计算系统基础》五、本课程与其它课程的联系:本课程的先行课程是计算系统基础。
服务的主要后续课程包括基于FPGA的嵌入式软件开发、基于ARM的嵌入式软件开发等。
六、教学内容安排、要求、学时分配及作业:第一章概述(2学时)1.1 EDA技术及其发展(C)1.2 硬件描述语言硬件描述语言种类、自顶向下设计方法、EDA工程设计流程。
(A)1.3 面向FPGA/CPLD的开发流程设计输入、分析综合、布局布线、仿真、下载和硬件测试。
(A)1.4 IP Core 及EDA技术发展趋势。
(C)第二章 FPGA硬件特性与编程技术(8学时)2.1 PLD发展历程及其分类(c)2.2 低密度PLD工作原理PROM、PLA、PAL、GAL。
第3章_VHDL语言程序的基本结构

VARIABLE tmp1,tmp2,tmp3:BIT;
BEGIN tmp1:=d0 AND sel;
构造体
tmp2:=d1 AND (NOT sel);
tmp3:=tmp1 OR tmp2;
tmp<=tmp3;
q<=tmp AFTER m;
END PROCESS cale;
END ARCHITECTURE connect;
该 例 中 BIT 类 型 用 STD_LOGIC 说 明 , 而 bus 则 用 STD_LOGIC_VECTOR(7 DOWNTO 0)说明。 在用STD_LOGIC和STD_LOGIC_VECTOR说明时,在实体说明以前 必须增加例中所示的两个语句,以便在对VHDL语言程序编译时,从 指定库的包集合中寻找数据类型的定义。
END BLOCK cale; END connect;
END ARCHITECTURE behav;
信号定义和端口说明的语句一样,应有信号名和 数据类型的说明。因它是内部连接用的信号,故没有 也不需要有方向说明。
3、 并行处理语句
并行处理语句处于语句BEGIN和END之间,这 些语句具体地描述了构造体的行为及其连接关系。例 如,二选一的数据流方式描述可以写为:
第三章 VHDL语言程序的基本结构
VHDL语言程序的五个组成部分
库说明
包集合说明
基 实体说明
本 单
元 构造体描述
配置语句
库存放已编译的实体、构造体、包集合、和配 置。相当于书库。 包集合存放各设计模块能共享的数据类型、常数和 子程序。相当于书架。
实体用于说明所设计的系统的外部接口信号。
构造体用于描述系统内部的结构和行为。
第3章VHDL及编程技巧

第3章VHDL及编程技巧§3.1 VHDL简介3.1.1 关于VHDL随着电子技术的发展,当前数字系缆的设计正朝着速度快,容量大、体积小,重量轻的方向发展。
推动该潮流迅猛发展的引擎就是日趋进步和完善的ASIC设计技术。
目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上而下地完成相应的描述、综合、优化、仿真与验证,直到系统生成。
上述设计过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机来自动地完成,也就是通常意义上的电子设计自动化(EDA)。
这样做可大大地缩短系统的设计周期,以适应当今品种多、批量小的电子市场的需求,提高产品的竞争能力。
电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路,即所谓的硬件描述语言(HDL—Hardware Description Language)。
可以说硬件描述语言及相关的仿真、综合等技术是当今电子设计自动化领域中工程师必备的工具。
硬件描述语言的发展至今已有几十年的历史,并已成功地应用到系统的仿真、验征和设计综合等方面。
上世纪80年代后期,已出现了上百种的硬件描述语言,它们对设计自动化起到了促进和推动作用。
但是它们大多各自针对特定设计领域,无统一的标准。
广大用户所期盼的是一种面向设计的多层次、多领域且得到一致认同的标准的硬件描述语言。
80年代后期由美国国防部开发的VHDL语言恰好满足了上述要求,并在1987年12月由IEEE 标准化(定为IEEEstd 1076--1987标准,1993年进一步修订,被定为ANSI/IEEEstd 1076--1993标准)。
它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。
据1991年有关统计资料表明,VHDL语言已被广大设计者所接受并用来设计数字系统,尤其是欧洲地区的应用相当广泛。
另外众多的CAD厂商也纷纷使用新开发的电子设计软件与VHDL语言兼容。
EDA技术与VHDL课后答案(第3版)潘松 黄继业

OUT1 : OUT STD_LOGIC ) ;
END ENTITY circuit ;
ARCHITECTURE one OF circuit IS
COMPONENT DFF1 IS
PORT ( CLK : IN STD_LOGIC ;
END ENTITY nor ;
ARCHITECTURE one OF nor IS
BEGIN
f <= NOT ( d OR e ) ;
END ARCHITECTURE one ;
时序电路描述:
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY circuit IS
ENTITY mux21 IS
PORT ( s1,s0 : IN STD_LOGIC_VECTOR ;
a,b,c,d : IN STD_LOGIC ;
y : OUT STD_LOGIC ) ;
END ENTITY mux21 ;
ARCHITECTURE two OF mux21 IS
SIGNAL s : STD_LOGIC_VECTOR ( 1 DOWNTO 0 ) ;
y : OUT STD_LOGIC ) ;
END ENTITY mux21 ;
ARCHITECTURE one OF mux21 IS
BEGIN
PROCESS ( s0,s1,a,b,c,d )
BEGIN
IF s1=’0’ AND s0=’0’ THEN y<=a ;
ELSIF s1=’0’ AND s0=’1’ THEN y<=b ;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4位计数器
module count4(out,reset,clk);
output[3:0] out;
input reset,clk; reg[3:0] out; always @(posedge clk) begin if(reset) out<=0; //同步复位 else end endmodule out<=out+1; //计数
第三章 硬件描述语言HDL Hardware Description Language
第一节
概述
常用的硬件描述语言有: VHDL:Very High Speed Integrated Circuit Hardware Description Language
超高速集成电路硬件描述语言
Verilog:Cadence公司开发
还需要注意的是,LIBRARY语句和USE语句的作 用范围只限于紧跟其后的实体及其结构体。因此,如 果一个程序中有一个以上的实体,则必须在每个实体
的前面分别加上LIBRARY语句和USE语句,说明各实
体及其结构体需要使用的库和程序包。
2.实体说明 ENTITY nand_2 IS PORT ( a,b:IN STD_LOGIC; y:OUT STD_LOGIC); END nand_2; 语法: ENTITY 实体名 IS PORT[端口说明]; END 实体名;
ABEL(Advanced Boolean Hardware Description, 高级布尔方程语言) :Lattice公司 AHDL(Analog模拟硬件描述语言): Altera公司
第二节
VHDL的基本结构
通过与非门的逻辑描述,阐述VHDL的基本结构
y a b
nand_2 a b y
端口说明语句描述实体的外部接口情况,不管内部功
能如何只描述它的输入和输出接口信号。一般格式为:
PORT(端口信号名,端口信号名… : 端口模式 数据类型; 端口信号名,端口信号名… : 端口模式 数据类型);
端口信号名:赋给每个输入输出接口的名称
端口模式:说明信号的输入和输出方式,IN,OUT
INOUT,buffer, INOUT:在输出的同时可以自己读取,同时也可以
IS
BEGIN
q<= ( d0 AND sel ) OR ( NOT sel AND d1 ); END dataflow; “<=”表示赋值关系。 逻 辑 运 算 符 包 括 : AND( 与 ) , OR( 或 ) , NAND( 与非 ) , NOR( 或非 ) , XOR( 异或 ) , NOT(非)。
目前在VHDL语言中,常用的主要有以下几种库: IEEE库、 STD库、 WORK库、用户库 最常用的资源库是IEEE库,常用的程序包 STD_LOGIC_1164:常用的数据类型(std_logic,std_logic_vector),各
种类型转换函数及逻辑运算。
STD_LOGIC_ARITH:定义了无符号unsigned、有符号数signed数
第三节 VHDL结构体的子结构
(2) STD库
是VHDL的标准库,含有称为 (3)WORK库 STANDARD的标准程序包, 其中定义了多种常用的数据类
型,均不加说明便可直接引用。
(4)自定义库 另一个程序包TEXTIO(文本文 件输入/输出),则需经说明后 方可使用。
WORK库和STD库
(2) STD库
(3)WORK库
总会被自动打开。
1 RS触发器
端口数据类型:
(1)标准数据类型,如:整数、实数,位,位矢量等。
(2)IEEE标准数据类型,标准逻辑位STD_LOGIC、标 准逻辑矢量STD_LOGIC _VECTOR。 (3)用户自定义的数据类型,如枚举型、数组类型、文 件(FILE)类型、记录(RECORD)类型等。
据类型,相应的算术运算; unsigned, signed和integer之间的转换函数。
STD_LOGIC_UNSIGNED, STD_LOGIC_SIGNED:
定义了可用于integer和std_logic,std_logic_vector数据类型混合运算的运算符,
由std_logic_vector型到integer型的转换函数。
Nand_2实体说明
结构体
BEGIN y <= NOT (a AND b);
END rtl;
1. 库说明
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
语法: library 库名
use 库名.程序包名.项目名:
库是用VHDL语言编写的源程序及其通过编译 的数据集合,它由各种程序包组成,程序包提供了 各种数据类型、函数的定义以及各种类型转换函数 及运算等,以供给设计者使用。
是当前作业库,设计人员设计的
(4)自定义库 VHDL语言程序的编译结果不需 要任何说明,都将要存放在work 库中。Work库可以是设计者个人 使用,也可提供给设计组多人使
用
(2) STD库
由用户自己创建。设 (3)WORK库 计者可以把一些自己 需要经常使用的非标
准(一般是自己开发
(4)自定义库 的)包集合和实体等 汇集成库,作为对 VHDL标准库的补充。
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;----由std_logic_vector转换成integer; entity countA is port(clk,clr,en: in std_logic; QA,QB,QC,QD:out std_logic); end countA; architecture exampleA of countA is signal count_4:std_logic_vector(3 downto 0); begin QA<=count_4(0); QB<=count_4(1); QC<=count_4(2); QD<=count_4(3); process(clk,clr) begin if(clr='1')then count_4<="0000"; elsif (clk'event and clk='1')then if (en='1')then if(count_4="1111")then count_4<="0000"; else count_4 <=count_4+1; end if; end if; end if; end process; end exampleA;
作为其它端口的输入。 如RAM的数据口、单片机的I/O口。
Buffer:缓冲端口,其功能与inout类似, 但是当作为输入用时,输入的信号不是从外部输 入,而是由内部产生向外输出的信号。即内部回 读自身向外产生的信号,即允许反馈。 如将计数器输出的计数信号回读,作为下一 个计数值的初值。
【例1】 以如图1所示的RS触发器为例,定义如下: ENTITY rsff IS PORT ( set, reset: IN BIT; q, qb: BUFFER BIT ); END rsff ;
类属参数说明 类属参数说明必须放在端口说明前面,用于 指定参数。类属参数说明的一般格式为: GENERIC (常数名:数据类型 [:设定值]);
在门级模型中,可以使用类属参数指定延迟时间 参数。 例如在结构体内出现语句:
GENERIC ( m: TIME : = 1ns)
Temp1:= do AND sel AFTER m; 表示do和sel相与后,经过1 ns延迟才送到Temp1。 ( 当 然 , 时 间 单 位 可 以 取 fs(1 ps=1000 fs , 1 ns=1000 ps)、(s、ms、sec、min、hr等)。
If 条件 then 顺序语句1; Else 顺序语句2; End if;
注意在VHDL语言中不区分大小写
时钟信号上升沿和下降沿的表示 (1) 表示一个上升沿时钟clk: clk ′EVENT AND clk ='1';
rising_edge(clk)
(2) 表示一个下降沿时钟clk: clk ′EVENT AND clk ='0';
inst
在程序设计中,要求实体名与存储的文件名一致
IEEE库使用说明
USE IEEE.STD_LOGIC_1164.ALL;
LIBRARY IEEE; ENTITY nand_2 IS PORT ( a,b:IN STD_LOGIC; 端口说明,用以 描述器件的接口 y: OUT STD_LOGIC); END nand_2; ARCHITECTURE rtl OF nand_2 IS
CLR
CLR
QA
d0
CLK
QB CLK QC
d1 d2 d3
EN
EN QD countA
IF语句的格式:
IF <条件1> THEN 顺序处理语句1; ELSIF <条件2> THEN 顺序处理语句2; …… ……. ELSE 顺序处理语句3; END IF;
If 条件 then 顺序处理语句; end if;
d0
q
d1 sel
图 二选一器件的电路原理图 【例】 编写描述一个二选一器件(如图所示)的程 序。 ENTITY mux IS PORT ( d0, d1: IN BIT; sel: IN BIT; q: OUT BIT ); END mux ;
ARCHITECTURE
dataflow OF mux