硬件描述语言AHDL
fpga期末复习题(答案)知识点题型
一、填空题:1、 FPGA结构一般分为三部分:可编程逻辑块(CLB)、可编程I/O模块和可编程内部连线。
2、 CPLD的内部连线为连续式布线互连结构,任意一对输入、输出端之间的延时是固定;FPGA的内部连线为分段式布线互连结构,各功能单元间的延时不定(不可预测)。
3、大规模可编程器件主要有CPLD和FPGA两类,其中CPLD通过可编程乘积项逻辑实现其逻辑功能。
基于SRAM的FPGA器件,每次上电后必须进行一次配置。
FPGA内部阵列的配置一般采用在电路可重构技术,编程数据保存在静态存储器(SRAM) ,掉电易失。
4、目前世界上有十几家生产CPLD/FPGA的公司,最大的两家是:Altera,Xilinx。
5、硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言,它的种类很多,如VHDL、Verilog HDL、AHDL6、 WHEN_ELSE条件信号赋值语句和 IF_ELSE顺序语句的异同:* WHEN_ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,必须放在结构体中。
* IF_ELSE顺序语句中有分号;是顺序语句,必须放在进程中7、可编程逻辑器件设计输入有原理图输入、硬件描述语言输入和波形输入三种方式。
原理图输入方式是一种最直接的设计描述方式,波形设计输入适用于时序逻辑和有重复性的逻辑函数。
硬件描述语言的突出优点是:* 语言与工艺的无关性;语言的公开可利用性,便于实现大规模系统的设计;* 具有很强逻辑描述和仿真功能,而且输入效率高,在不同设计输入库之间的转换非常方便,用不着对底层的电路和PLD结构的熟悉。
8、用VHDL/Veilog HDL语言开发可编程逻辑电路的完整流程:文本编辑→功能仿真→逻辑综合→布局布线→时序仿真。
*所谓综合,就是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计输入转换成满足要求的电路设计方案,该方案必须同时满足与其的功能和约束条件。
AHDL
在 SUBDESIGN 关键字之前定义 CONSTANT
SUBDESIGN decode1 ( a[3..0] : input; chip_enable : output; ) begin chip_enable = (a[3..0] == IO_ADDRESS); if (a[3..0] == IO_ADDRESS) then ……... end;
定义NODEs
AHDL ?
temp
out2 = a0 & !a1 # b out3 = a0 & !a1 & d
SUBDESIGN decode1 ( a0, a1, b, d: input; out2, out3 : output; ) variable temp : node; begin temp = a0 & !a1; out2 = temp # b; out3 = temp & d; end;
Self Explain the Function 唯一的改动
其他
SUBDESIGN decode1 ( a[3..0] : input; chip_enable : output; ) begin chip_enable = (a[3..0] == B"1x0x"); end;
一些无关位写X忽略
D触发器带使能Enable/重设Preset/清除Clear
SUBDESIGN flip_flop_enable SUBDESIGN flip_flop_enable ( clock, data, enable, preset, clear :: input; ( clock, data, enable, preset, clear input; qout :: output; qout output; ) ) variable temp :: dffe; temp dffe; begin begin temp.d = data; temp.d = data; temp.clk = clock; temp.clk = clock; temp.clrn = clear; temp.prn = preset; temp.prn = preset; temp.ena = enable; temp.ena = enable; qout = temp.q; qout = temp.q; end; end;
AHDL硬件描述语言
AD_WIDTH = 8,
NUMWORDS = 2^AD_WIDTH
); 4、函数描述语句
共有 4 种形式的逻辑函数可以供用户调用,它们是: Megafunction—具有复杂逻辑功能的巨功能模块,放在 mega_LPM 库中,可以供用户调用 Primitive—一些基本逻辑功能函数,可以直接调用 Macrofunction—具有高水平的逻辑宏功能模块,共有 300 多种,放在 max2lib 子目录中 State Machine—一种具有多个状态的时序电路,可以形成符号图形,用户可以调用 以上几种逻辑功能函数都可以以逻辑函数名和符号图形的方式被调用,在 AHDL 源文件 中调用时要首先进行声明,见如下例子。
RETURNS (result[LPM_WIDTH-1..0], cout, overflow); 该 函 数 名 为 lpm_add_sub , 输 入 端 口 为 cin, dataa[LPM_WIDTH-1..0], and
datab[LPM_WIDTH-1..0]; 关键字 WITH 后是参数表, 关键字 RETURN 后是输出口 result[LPM_WIDTH-1..0], cout, and overflow
变量,一旦声明完毕,就意味着:
变量 comp 就是如下端口的代表:
a[3..0], b[3..0]
: INPUT; -- inputs to compare
less, equal, greater : OUTPUT; -- outputs of compare 而变量 adder 是如下端口的代表:
adder.dataa[], adder.datab[], adder.result[] (2)节点变量声明
AHDL 软件支持两种节点形式:NODE and TRI_STATE_NODE。 例:
硬件描述语言
硬件描述语言硬件描述语言(HardwareDescriptionLanguage,HDL),是一种特殊的编程语言,旨在帮助设计人员(称作HDL程序员)创建电子系统的软硬件。
它支持现在最先进的电子系统,并能够提供开发方案,以更快地实现目标,更有效地使用更少的资源,并且更稳定地完成任务。
HDL是一种高级程序设计语言,由若干种编程语言构成,其中包括Verilog,VHDL, SystemVerilog等。
HDL语言描述技术主要用于描述单片机或模拟集成电路(IC)中的复杂电路结构和功能。
它以硬件参数、原语和结构描述为基础,能够描述逻辑系统的底层电路,比如门逻辑、触发器、多路选择器、比较器等。
HDL具有许多优点,能够极大地降低电路设计的困难程度,同时简化设计的复杂性和过程,可以提高设计效率和提升最终产品的性能。
HDL提供方便的调试和测试功能,可以支持电路设计过程管理,减少产品设计和开发的工作量。
此外,HDL能够提供标准、可重用的描述,以及可读性好的语法,可以显著简化设计过程。
HDL的另一个重要优点是,它可以帮助HDL程序员创建更复杂、更现代化的电路设计,而不需要编译器和其它复杂的程序设计开发工具。
HDL可以提供电路设计过程中所需的所有功能,包括定义电路功能,输入输出管理,系统级构建,网络结构,状态机控制,信号处理,数据传输等。
它还利用可视化技术以及带有标准和完善的接口,能够更快地识别和定位问题,大大降低了调试产品的时间。
HDL的另一个优点在于,它具有许多可扩展性,无需为每个项目开发新的硬件。
HDL能够有效地管理工厂现有的系统设计,例如将新的硬件模块添加到已有的电路框架中,并且能够有效地利用已有的硬件,尽可能减少更改硬件布局的时间。
当今,HDL已经成为电子行业中最专业化的编程语言,并被广泛应用于微处理器、嵌入式系统、数字信号处理(DSP)、模拟信号处理(ASP)、网络交换、存储器系统,以及其它领域。
HDL在加速设计过程、改善产品质量、减少产品成本方面十分有用,是现今许多企业进行电子产品设计的重要工具。
fpga中hdl定义
fpga中hdl定义FPGA中的HDL(硬件描述语言)定义引言:FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,具有高度的可重构性和灵活性。
HDL(硬件描述语言)则是FPGA编程的关键部分,它将FPGA的硬件功能描述转化为可编程的逻辑电路。
本文将深入探讨FPGA中HDL的定义并提供一步一步的解释。
第一节:什么是HDL?1.1 HDL的定义与作用:HDL是一种计算机语言,用于描述和模拟数字电路以及FPGA中的硬件电路。
它允许我们使用文本或者图形方式来描述电路而不需要构建实际的硬件电路。
HDL是FPGA编程的核心,它可以用于实现各种不同的功能,如数据通信、数字信号处理、图像处理等。
1.2 HDL的分类:HDL主要分为两种类型:行为描述和结构描述。
- 行为描述:行为描述指定了电路的操作和功能,类似于软件中的算法。
它使用布尔代数和逻辑表达式来描述电路的行为。
行为描述语言包括VHDL(VHSIC 硬件描述语言)和Verilog。
- 结构描述:结构描述提供了电路的物理连接和层次结构,类似于电路图。
它使用模块和端口来描述电路的结构。
结构描述语言包括VHDL和Verilog。
第二节:HDL的特点和优势2.1 可重构性:由于FPGA的可编程性和灵活性,HDL可以实现对FPGA内部逻辑的重构。
这使得FPGA可以适应不同的应用需求,并且可以在设计完成后进行重新配置。
2.2 可视化和高级抽象:通过使用HDL,设计者可以通过图形界面或者文字描述来实现电路设计。
这使得设计更加直观和易于理解,同时提供了更高级别的抽象,使得设计变得更加简单和高效。
2.3 支持逻辑综合:HDL可以通过逻辑综合工具将高级描述语言转换为电路。
逻辑综合可以利用FPGA中的基本元件来实现电路的功能。
这使得设计人员无需手动设计底层电路,从而提高了设计的效率。
2.4 可重用性:HDL允许设计者创建和使用可重用的电路模块。
EDA简答题
一、填空题(本大题共10小题,每空1分,共20 分)1.一般把EDA技术的发展分为MOS时代、MOS时代和ASIC三个阶段。
2.EDA设计流程包括设计输入、设计实现、实际设计检验和下载编程四个步骤。
3.EDA设计输入主要包括图形输入、HDL文本输入和状态机输入。
4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为功能仿真。
5.VHDL的数据对象包括变量、常量和信号,它们是用来存放各种类型数据的容器。
6.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。
7.以EDA方式设计实现的电路设计文件,最终可以编程下到FPGA和CPLD芯片中,完成硬件设计和验证。
8.MAX+PLUS的文本文件类型是(后缀名).VHD。
9.在PC上利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录为设计建立一个工程目录。
10.VHDL源程序的文件名应与实体名相同,否则无法通过编译。
EDA技术的发展趋势1 可编程器件的发展趋势:向高密度大规模的方向发展,向系统内可重构的方向发展,向低电压低功耗的方向发展,向混合可编程技术方向发展;硬件描述语句可在3个层次上进行电路描述(由高到低):行为级,RTL级和门电路级2.设计单元的基本构造•一个设计单元都是由实体说明和构造体两部分组成。
•实体的功能是对这个设计单元与外部电路进行接口描叙。
实体是设计单元的表层,实体说明部分规定了设计单元的输入输出接口信号或引脚,它是设计单元对外的一个通信界面。
•结构体定义了设计单元的具体构造和操作(行为)。
•每个实体可以有多个结构体,不同的结构体对应着实体不同的结构和算法实现方案,其间的各结构体的地位是相等的。
3.实体说明(ENTITY)•实体象一个“黑盒子”•体描叙黑盒子的I/O。
–以“ENTITY实体名IS”开始–至“END 实体名”结束4.(1)端口说明--PORTS•端口说明是基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称、数据类型和输入输出方向的描述。
AHDL
9.2 AHDL硬件描述语言AHDL是一种模块化的高级语言。
它集成于MAX+PLUS II的软件开发系统中,特别适合于描述复杂的组合逻辑、组运算、状态机和真值表。
AHDL文件作为一种文本文件,既可以用MAX+PLUSII提供的文本编辑器,也可以用其他文本编辑器来建立文本设计文件 (.tdf)。
但是MAX+PLUSII文本编辑器更适合进行文本编辑、编译和调试等工作,尤其是在信息处理器中对错误有自动定位的功能,使调试十分方便。
MAX+PLUSII编译器还可以产生AHDL文件设计的报告文件(.tdx)和文本设计输出文件(.tdo)。
在AHDL文件中包含很多有特色的段和语句,并且包含许多用以在行为语句中对逻辑进行描述的元素。
可以使用AHDL建立完整层次的工程设计项目,或者在一个层次的设计中混合使用AHDL文件和其他类型的设计文件。
9.2.1 AHDL的基本元素AHDL具有计算机编程语言的一般特性,其语言元素是编程语句的基本单元。
准确理解和掌握AHDL元素的含义和用法是十分重要的。
1.AHDL的数值数值被用来在逻辑表达式、真值表、状态机和等式中指定常量值。
AHDL支持十进制、二进制、八进制和十六进制数的所有组合。
采用不同前缀B(二进制)、Q或O(八进制)、X 或H (十六进制数)来区分,接着用双引号把数值包括起来。
例如:以下是正确的写法:56 B"011010” B"0110X1X10” Q”4671223” H"123AECF”以下规则也适用于AHDL的数值。
①MAX+PLUSII编译器总是把逻辑表达式中的数值翻译为二进制数。
②在表达式中的一个单一节点不能用数值赋值,必须用常量VCC和GND(关键字)来赋值。
VCC表示信号的高电平和逻辑“1”;GND表示信号的低电平和逻辑“0”。
③字符常量可由Constant(常量)语句定义。
2.符号名符号名由一串字母数字符号组成,与字母的大小写无关,长度不得超过32个字符,字母不分大小写。
硬件描述语言
系统级描述语言(SLDL)
18
9
1.3
(1) System C
System C (IEEE1666)由一组描述类库和一个包含仿真核的库组成。 在用户的描述程序中,必须包括相应的类库,可以通过通常的ANSI C++编 译器编译该程序。System C提供了软件、硬件和系统模块。用户可以在不 同的层次上自由选择,建立自己的系统模型,进行仿真、优化、验证、综 合等等。
2. 行为设计
用HDL语言描述系统数学模型
3. 功能仿真
仿真的目的是验证;行为级仿真以验证给定的行为描述是否能够实现所 需的功能
6
3
1.1
4. 逻辑综合
目的是转化与优化,将RTL级HDL代码映像到具体的综合库上加以实现。 实现逻辑综合的前提是有逻辑综合库(已含有门级延时、单元面积、 扇入扇出系数等工艺参数)。逻辑综合与优化的约束条件:速度,面 积,工艺,功耗,负载,电路的编程资源。
3
1.1
二.电子系统设计方法的发展
随着电路规模的增大,计算机辅助设计手段在集成电路设计中起着越 来越重要的作用
手工设计
CAD(Computer Aided Design) CAE(Computer Aided Engineering) 设计后端工具,如提供PCB、 布局布线、芯片版图绘制等 设计前端工具,如仿真工具, 综合工具等 包括上述的CAD、CAE工具 系统级的抽象描述,混 合仿真工具
13
1.2
4. 其它HDL
ABEL-HDL --早期的硬件描述语言。 从早期可编程逻辑器件(PLD)的设计中发展而来。 AHDL--(Altera HDL) 是ALTERA公司发明。特点是非常易学易用。 它的缺点是移植性不好,通常只用于ALTERA自己的开发系统。
EDA复习要点全
主要知识点1、从执行方式看VHDL的描述语句包括那些描述语句?用VHDL语言进行设计时,按描述语句的执行顺序进行分类,可将VHDL语句分为顺序执行语句(Sequential)和并行执行语句(Parallel)。
2、目前流行的硬件描述语言有那些?常用的硬件描述语言有ABEL-HDL AHDL.VHDL和Verilog-HDL.而VHDL和Verilog-HDL是当前最流行的并成为IEEE标准的硬件描述语言。
3、MAX+PLUS2中各种文件的扩展名有哪些?*.vhd *.sym *.gdf *.scf4、基于MAX+PLUS2的设计流程设计输入、编译处理、验证(包括功能仿真、时序仿真、和定时分析)和器件编程5、目前较流行的EDA设计软件有那些?ALTERA公司: MAX+PLUS IIQUARTUS II(全新的EDA软件,正在逐步替代 MAX+PLUS) LATTICE莱迪思公司: isp EXPERT SYSTEMisp DesignExpert SYSTEM XILINX西林公司: FOUNDATIONISE(全新的EDA软件,正在逐步替代FOUNDATION)6、可编程逻辑器件的分类?按照变成工艺分哪些类?SPLD 简单可编程逻辑器件CPLD 复杂可编程逻辑器件FPGA 现场可编程门阵列ISP 在系统(线)可编程逻辑器件按编程工艺分为:熔丝开关(一次可编程,要求大电流)可编程低阻电路元件(多次编程,要求中电压)EPROM型(紫外线擦除电可编程逻辑器件)E PROM型(电可擦写编程器件)基于SRAM的编程元件7、VHDL程序设计中常用的库有那些?哪些库是显式(默认打开的)的,哪些是隐式的?P159VHDL程序设计的常用库:IEEE库、STD库、WORK库、VITAL 库、用户定义库。
显示库:IEEE库用户定义库 VITAL库隐式库:、STD库、WORK库8、程序包由那两部分组成?分别有什么作用? P161程序包由两部分组成:程序包首和程序包体,程序包首为程序包定义接口,声明包中的类型、元件、函数和子程序。
Quartus-II使用方法
第1章QUARTUS II2。
1 QUARTUSII概述设计输入是设计者对系统要实现的逻辑功能进行描述的过程。
设计输入有多种表达方式,常用的用原理图输入、硬件描述语言输入、网表输入等。
1、原理图输入:原理图设计输入方式是利用软件提供的各种原理图库,采用画图的方式进行设计输入.这是一种最为简单和直观的输入方式。
原理图输入方式的效率比较低,半只用于小规模系统设计,或用于在顶层拼接各个以设计完成的电路子模块。
2、硬件描述语言输入:这种设计输入方式是通过文本编辑器,用VHDL,Verilog或AHDL等硬件描述语言进行设计输入。
采用语言描述的有点事效率较高,结果容易仿真,信号观察方便,在不同的设计输入库之间转换方便,适用于大规模数字系统的设计.但语言输入必须依赖综合器,只有好的综合器才能把语言综合成优化的电路。
3、网表输入:现代可编程数字系统设计工具都提供了和它第三方EDA工具相连接的接口。
采用这种方法输入时,可以通过标准的网表把它设计工具上已经实现了的设计直接移植进来,而不必重新输入。
一般开发软件可以接受的网表有EDIF格式、VHDL 格式及Verilog格式等。
在用网表输入时,必须注意在两个系统中采用库的对应关系,所有的库单元必须一一对应,才可以成功读入网表[6]。
2.2 QUARTUSII建立工程项目在Quartus II 中,用户的每个独立设计都对应一个工程项目,每个工程项目可包含一个或多个设计文件。
其中一个是顶层文件,编译器是对项目中的顶层文件进行编译的,项目同时还管理编译过程中产生的各种中间文件,这些中间文件的文件名相同,但后缀名不同.为了便于管理,对于每个新的项目应该建立一个单独的子目录。
指定项目名称的步骤如下:1。
打开Quartus II,在File 菜单中选择New Project Wizard 项,将出现工程项目建立向导对话框。
如图2—1 (a)所示。
2. 点击“Next”,进入到如图2-1 (b)所示的工程项目命名对话框,在最上面的文本输入框中输入为该项目所建的目录名,如本例为“E:\Clock”,在中间的文本输入框中输入项目名称,本次实验为“adder”,在最下面的文本输入框中输入最顶层模块的名称“adder"。
EDA常用术语及英文缩写
EDA常用术语及英文缩写电子设计自动化:EDA
片上系统:SOC
专用集成电路:ASIC
印制电路板:PCB
可编程逻辑器件:PLD
可编程模拟器件:PAC
在系统可编程模拟器件:ispPAC
复杂可编程逻辑器件:CPLD
现场可编辑门阵列:FPGA
硬件描述语言:HDL
可编程只读存储器:PROM
紫外线可擦除只读存储器:EPROM
电可擦除只读存储器:EEPROM
可编程阵列逻辑:PAL
通用阵列逻辑:GAL
可编程逻辑阵列:PLA
可编程逻辑阵列宏单元:LMC
输出逻辑宏单元:OLMC
可编程I/O单元:IOC
可编程内部连线:PIA
可编程逻辑块:CLB
输入/输出模块:IOB
可编程互连资源:PIR
数据选择器:MUX
在系统编程技术,在器件编程时,所用的无根信号线:(1):ispEN’:编程使能信号。
(2):SDO:数据输出线。
(3):SLCK:串行时钟线。
(4):SDI:向串行移位寄存器提供编程数据和其他命令。
(5):MODE:编程状态机的控制线。
全局布线区:GRP
输出布线区:ORP
逻辑阵列块:LAB
嵌入式阵列块:EAB
逻辑单元:LE
输入/输出单元:IOE
嵌入式系统块:ESB
边界扫描测试技术:BST
数字信号的硬件语言:VHDL Verilog HDL
模拟信号的硬件语言:AHDL
微波信号的硬件描述语言:MHDL。
什么是硬件描述语言
什么是硬件描述语言什么是硬件描述语言,你知道吗?今天就让店铺来教下大家吧,快来看看吧,希望能让大家有所收获!什么是硬件描述语言硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。
利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。
然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。
接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。
硬件描述语言的概述随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。
目前最主要的硬件描述语言是VHDL和Verilog HDL。
VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。
VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。
国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。
从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。
从EDA技术的发展上看,已出现用于CPLD/FPGA设计的硬件C语言编译软件,虽然还不成熟,应用极少,但它有可能会成为继VHDL和Verilog之后,设计大规模CPLD/FPGA的又一种手段。
硬件描述语言的结构硬件描述语言的优点(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
EDA技术及应用_第5章_1
第5章VDHL程序设计介绍硬件描述语言(HDL)是用来描述硬件电路的功能、信号连接关系及时序关系的语言,也是一种用形式化方法来描述数字电路和设计数字系统的语言。
常用的硬件描述语言有ABEL、AHDL、VHDL、Verilog HDL、System-Verilog和System C等等。
VHDL----V ery high speed integrated circuitH ardware D escription L anguage1.超高速集成电路(VHSIC)硬件描述语言美国国防部在80年代初研究VHSIC计划时组织开发的,并成功用于军方的设计项目.2.IEEE 标准: IEEE Std 1076-1987 (called VHDL 1987)IEEE Std 1076-1993 (called VHDL 1993)由于当时工业界的迫切需要,IEEE标准化委员会于1987年将其确定为标准硬件描述语言,1993年,又对此标准作了进一步修定.3. VHDL语言特点(1)行为描述能力强描述简单、方便(2)丰富的仿真语句和函数库可在高层次上进行仿真模拟(3)支持大规模设计的分解和已有设计的再利用功能实体、程序包、设计库等是并行工作和设计分解的基础(4)EDA工具支持它的综合、仿真和优化系统级、算法级、RTL级、逻辑级、开关级等(5)对设计描述具有相对独立性与具体的工艺技术和硬件结构无关(6)良好的可扩展性可轻易改变设计的规模和结构4.常用的三种硬件描述语言的比较VHDL:行为级描述描述层次高,适宜电路高级建模,设计工作量小综合过程:行为级->RTL级->门电路级Verilog-HDL:RTL级描述描述层次低,适宜描述门级电路,设计工作量大综合过程:RTL级->门电路级ABEL-HDL: RTL级描述描述层次和综合过程同Verilog多用在小规模的PLD 设计中,如GAL等在全定制集成电路设计中不如VHDL、Verilog-HDL使用普遍5.1 VHDL程序的基本结构库、程序包实体结构体配置library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter10 isport(en,reset,clk:in std_logic;q:buffer std_logic_vector(3 downto 0);co:out std_logic);end counter10;architecture behav of counter10 isbeginprocess(clk,reset,en)beginif reset='1' thenq<="0000";elsif clk'event and clk='1' thenif en='1' thenif q<"1001" then q<=q+1;else q<="0000";end if;end if;end if;end process;co<='1' when q="1001" else '0';end behav;5.1.1 实体(Entity)在VHDL设计中,实体是其最基本的结构。
本章首先介绍EDA技术和硬件描述语言及其发展过程
第1章概述本章首先介绍EDA技术和硬件描述语言及其发展过程,然后介绍基于EDA技术和VHDL的设计流程,以及EDA设计工具Quartus II.电子设计自动化技术及其发展微电子技术的进步主要表现在大规模集成电路加工技术即半导体工艺技术的发展上,使得表征半导体工艺水平的线宽已经达到了60nm,并还在不断地缩小,而在硅片单位面积上,集成了更多的晶体管.集成电路设计正在不断地向超大规模、极低功耗和超高速的方向发展,专用集成电路ASICApplication Specific Integrated Circuit的设计成本不断降低,在功能上,现代的集成电路已能够实现单片电子系统SOCSystem On a Chip.现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDAElectronic Design Automation 技术.EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDLHardware Description Language为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能.EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现,这是电子设计技术的一个巨大进步.EDA技术在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC测试和封装、FPGAField Programmable Gate Array/CPLDComplex Programmable Logic Device编程下载和自动测试等技术;在计算机辅助工程方面融合了计算机辅助设计CAD、计算机辅助制造CAM、计算机辅助测试CAT、计算机辅助工程CAE技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等.因此,EDA技术为现代电子理论和设计的表达与实现提供了可能性.正因为EDA技术丰富的内容以及与电子技术各学科领域的相关性,其发展的历程同大规模集成电路设计技术、计算机辅助工程、可编程逻辑器件,以及电子设计技术和工艺的发展是同步的.就过去近30年的电子技术的发展历程,可大致将EDA技术的发展分为3个阶段.20世纪70年代,在集成电路制作方面,MOS工艺得到广泛的应用;可编程逻辑技术及其器件问世,计算机作为一种运算工具在科研领域得到广泛应用.而在后期,CAD的概念已见雏形,这一阶段人们开始利用计算机取代手工劳动,辅助进行集成电路版图编辑、PCB布局布线等工作.20世纪80年代,集成电路设计进入了CMOS互补场效应管时代,复杂可编程逻辑器件进入商业应用,相应的辅助设计软件投入使用;而在80年代末,出现了FPGA;CAE和CAD 技术的应用更为广泛,它们在PCB设计方面的原理图输入、自动布局布线及PCB分析,以及逻辑设计、逻辑仿真、布尔方程综合和化简等方面担任了重要的角色.特别是各种硬件描述语言的出现、应用和标准化方面的重大进步,为电子设计自动化必须解决的电路建模、标准文档及仿真测试奠定了基础.进入20世纪90年代,随着硬件描述语言的标准化进一步确立,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得更加广泛的应用.与此同时,电子技术在通信、计算机及家电产品生产中的市场需求和技术需求,极大地推动了全新的电子设计自动化技术的应用和发展,特别是集成电路设计工艺步入了超深亚微米阶段,百万门以上的大规模可编程逻辑器件的陆续面世,以及基于计算机技术的面向用户的低成本大规模ASIC设计技术的应用,促进了EDA技术的形成.更为重要的是各EDA公司致力于推出兼容各种硬件实现方案和支持标准硬件描述语言的EDA工具软件的研究,更有效地将EDA技术推向成熟和实用.EDA技术在进入21世纪后,得到了更大的发展,突出表现在以下几个方面:在FPGA上实现DSP数字信号处理应用成为可能,用纯数字逻辑进行DSP模块的设计,使得高速DSP实现成为现实,并有力地推动了软件无线电技术的实用化和发展.基于FPGA的DSP技术,为高速数字信号处理算法提供了实现途径.嵌入式处理器软核的成熟,使得SOPCSystem On aProgrammable Chip步入大规模应用阶段,在一片FPGA上实现一个完备的数字处理系统成为可能.在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出.电子技术领域全方位融入EDA技术,除了日益成熟的数字技术外,传统的电路系统设计建模理念发生了重大的变化,如软件无线电技术的崛起、模拟电路系统硬件描述语言的表达和设计的标准化、系统可编程模拟器件的出现、数字信号处理和图像处理的全硬件实现方案的普遍接受以及软硬件技术的进一步融合等.EDA使得电子领域各学科的界限更加模糊,更加互为包容,如模拟与数字、软件与硬件、系统与器件、ASIC与FPGA、行为与结构等.基于EDA的用于ASIC设计的标准单元已涵盖大规模电子系统及复杂IP核模块.软硬IPIntellectual Property核在电子行业的产业领域广泛应用.SOC高效低成本设计技术的成熟.系统级、行为验证级硬件描述语言的出现如System C,使复杂电子系统的设计和验证趋于简单.电子设计自动化应用对象一般地说,利用EDA技术进行电子系统设计,最后实现的目标是以下3种:全定制或半定制ASIC.FPGA/CPLD或称可编程ASIC开发应用.PCB印制电路板.实现目标的前两项可以归结为专用集成电路ASIC的设计和实现,ASIC是最终的物理平台,集中容纳了用户通过EDA技术将电子应用系统的既定功能和技术指标具体实现的硬件实体.一般而言,专用集成电路就是具有专门用途和特定功能的独立集成电路器件.根据这个定义,作为EDA技术最终实现目标的ASIC,可以通过下面3种途径来完成.1. 超大规模可编程逻辑器件FPGA和CPLD是实现这一途径的主流器件,它们的特点是直接面向用户、具有极大的灵活性和通用性、使用方便、硬件测试和实现快捷、开发效率高、成本低、上市时间短、技术维护简单、工作可靠性好等.FPGA和CPLD的应用是EDA 技术有机融合软硬件电子设计技术以及对自动化设计与自动化实现最典型的诠释.由于FPGA和CPLD的开发工具、开发流程和使用方法与ASIC有相通之处,因此这类器件通常也被称为可编程专用IC,或可编程ASIC.2. 半定制或全定制ASIC根据实现的工艺,基于EDA设计技术的半定制或全定制ASIC可统称为掩模MASKASIC,或直接称ASIC.ASIC大致分为门阵列ASIC、标准单元ASIC和全定制ASIC.门阵列ASIC:门阵列芯片包括预定制相连的PMOS和NMOS晶体管行.设计中,用户可以借助EDA工具将原理图或硬件描述语言模型映射为相应门阵列晶体管配置,创建一个指定金属互连路径文件,从而完成门阵列ASIC开发.由于有掩模的创建过程,门阵列有时也称掩模可编程门阵列MPGA.但是MPGA与FPGA完全不同,它不是用户可编程的,也不属于可编程逻辑范畴,而是实际的ASIC.MPGA出现在FPGA之前,FPGA技术则源自MPGA.现在,Altera的HardCopy、HardCopyII技术,可以提供一种把FPGA的设计转化为结构化ASIC的途径.标准单元ASIC:目前大部分ASIC是使用库中的不同大小的标准单元设计的,这类芯片一般称作基于单元的集成电路Cell-based IntegratedCircuits,CBIC.在设计者一级,库包括不同复杂程度的逻辑元件,如SSI逻辑块、MSI逻辑块、数据通道模块、存储器、IP以及系统级模块.库还包含每个逻辑单元在硅片级的完整布局,使用者只需利用EDA软件工具与逻辑块描述打交道即可,完全不必关心电路布局的细节.在标准单元布局中,所有扩散、接触点、过孔、多晶通道及金属通道都已完全确定,当该单元用于设计时,通过EDA软件产生的网表文件将单元布局块“粘贴”到芯片布局之上的单元行上.标准单元ASIC设计与FPGA设计开发的流程相似.全定制芯片:全定制芯片中,在针对特定工艺建立的设计规则下,设计者对于电路的设计有完全的控制权,如线的间隔和晶体管大小的确定.该领域的一个例外是混合信号设计,使用通信电路的ASIC可以定制设计其模拟部分.3. 混合ASIC混合ASIC不是指数模混合ASIC主要指既具有面向用户的FPGA可编程功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块,如CPU、RAM、ROM、硬件加法器、乘法器、锁相环等.Xilinx、Atmel和Altera公司已经推出了这方面的器件,如Virtex-4系列、Excalibur含ARM核和Stratix II系列等.混合ASIC为SOC和SOPC的设计实现提供了便捷的途径.VHDL硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要有VHDL、Verilog HDL、ABEL、AHDL、SystemVerilog 和SystemC.其中VHDL、Verilog在现在的EDA设计中使用最多,也拥有几乎所有主流EDA工具的支持,而SystemVerilog和SystemC还处于完善过程中.本书将重点介绍VHDL的编程方法和使用技术.VHDL的英文全名是VHSICVery High Speed Integrated CircuitHardware Description Language,于1983年由美国国防部DOD发起创建,由IEEEThe Institute of Electrical and Electronics Engineers进一步发展,并在1987年作为“IEEE标准1076”发布.从此,VHDL成为硬件描述语言的业界标准之一.自IEEE公布了VHDL的标准版本IEEE Std 1076之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具支持VHDL.此后,VHDL在电子设计领域得到了广泛应用,并逐步取代了原有的非标准硬件描述语言.VHDL作为一个规范语言和建模语言,随着它的标准化,出现了一些支持该语言的行为仿真器.由于创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为.但到了20世纪90年代初,人们发现,VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将VHDL 源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件.这种方法显然对于电路自动设计是一个极大地推进.很快,电子设计领域出现了第一个软件设计工具,即VHDL 逻辑综合器,它可以标准地将VHDL的部分语句描述转化为具体电路实现的网表文件.1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本.现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言.现在公布的最新VHDL标准版本是IEEE 1076-2002.VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性.VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力.因此,VHDL在支持各种模式的设计方法,如自顶向下与自底向上或混合方法方面,以及在面对当今许多电子产品生命周期的缩短,需要多次重新设计以融入最新技术、改变工艺等方面都表现出了良好的适应性.用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力.EDA的优势在传统的数字电子系统或IC设计中,手工设计占了较大的比例.一般都是先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试.手工设计方法的缺点是:复杂电路的设计、调试十分困难.由于无法进行硬件系统仿真,如果某一过程存在错误,查找和修改十分不便.设计过程中产生大量文档,不易管理.对于IC设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差.只有在设计出样机或生产出芯片后才能进行实测.相比之下,EDA技术有很大不同:用HDL对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期. EDA工具之所以能够完成各种自动设计过程,关键是有各类库的支持,如逻辑仿真时的模拟库、逻辑综合时的综合库、版图综合时的版图库、测试综合时的测试库等.这些库都是EDA公司与半导体生产厂商紧密合作、共同开发的.某些HDL本身也是文档型的语言如VHDL,极大地简化了设计文档的管理.EDA技术中最为瞩目的功能,即最具现代电子设计技术特征的功能是日益强大的逻辑设计仿真测试技术.EDA仿真测试技术只需通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后,还能对系统上的目标器件进行所谓边界扫描测试、嵌入式逻辑分析仪的应用,这一切都极大地提高了大规模系统电子设计的自动化程度.无论传统的应用电子系统设计得如何完美,使用了多么先进的功能器件,都掩盖不了一个无情的事实,即该系统对于设计者来说,没有任何自主知识产权可言,因为系统中的关键性器件往往并非出自设计者之手,这将导致该系统在许多情况下的应用直接受到限制.基于EDA技术的设计则不同,由于用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGA/CPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权,再无受制于人之虞.传统的电子设计方法至今没有任何标准规范加以约束,因此设计效率低、系统性能差、开发成本高、市场竞争能力小.EDA技术的设计语言是标准化的,不会由于设计对象的不同而改变;它的开发工具是规范化的,EDA软件平台支持任何标准化的设计语言;它的设计成果是通用性的,IP核具有规范的接口协议;良好的可移植性与可测试性,为系统开发提供了可靠的保证.从电子设计方法学来看,EDA技术最大的优势就是能将所有设计环节纳入统一的自顶向下的设计方案中.EDA不但在整个设计流程上充分利用计算机的自动设计能力、在各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试.面向FPGA的开发流程完整地了解利用EDA技术进行设计开发的流程对于正确地选择和使用EDA软件、优化设计项目、提高设计效率十分有益.一个完整的、典型的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构.设计输入图1-1所示是基于EDA软件的FPGA开发流程框图,下面将分别介绍各设计模块的功能特点.对于目前流行的用于FPGA开发的EDA软件,图1-1所示的设计流程具有普遍性.图1-1 FPGA的EDA开发流程将电路系统以一定的表达方式输入计算机,是在EDA软件平台上对FPGA/CPLD开发的最初步骤.通常,使用EDA工具的设计输入可分为以下两种类型.1. 图形输入图形输入通常包括原理图输入、状态图输入和波形图输入等方法.状态图输入方法就是根据电路的控制条件和不同的转换方式,用绘图的方法在EDA工具的状态图编辑器上绘出状态图,然后由EDA编译器和综合器将此状态变化流程图形编译综合成电路网表.波形图输入方法则是将待设计的电路看成是一个黑盒子,只需告诉EDA工具该黑盒子电路的输入和输出时序波形图,EDA工具即能据此完成黑盒子电路的设计.原理图输入方法是一种类似于传统电子设计方法的原理图编辑输入方式,即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图.原理图由逻辑器件符号和连接线构成,图中的逻辑器件可以是EDA软件库中预制的功能模块,如与门、非门、或门、触发器以及各种含74系列器件功能的宏功能块,甚至还有一些类似于IP的功能块.2. 硬件描述语言文本输入这种方式与传统的计算机软件语言编辑输入基本一致,就是将使用了某种硬件描述语言HDL的电路设计文本,如VHDL或Verilog的源程序,进行编辑输入.综合综合Synthesis,就其字面含义应该为把抽象的实体结合成单个或统一的实体.因此,综合就是把某些东西结合到一起,把设计抽象层次中的一种表述转化成另一种表述的过程.对于电子设计领域的综合概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配而成的过程.事实上,设计过程中的每一步都可称为一个综合环节.设计过程通常从高层次的行为描述开始,以最底层的结构描述结束,每个综合步骤都是上一层次的转换.1从自然语言表述转换到VHDL语言算法表述,是自然语言综合.2从算法表述转换到寄存器传输级Register Transport Level,RTL表述,即从行为域到结构域的综合,是行为综合.3从RTL级表述转换到逻辑门包括触发器的表述,即逻辑综合.4从逻辑门表述转换到版图表述ASIC设计,或转换到FPGA的配置网表文件,可称为版图综合或结构综合.一般地,综合是仅对应于HDL而言的.利用HDL综合器对设计进行综合是十分重要的一步,因为综合过程将把软件设计的HDL描述与硬件结构挂钩,是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁.综合就是将电路的高级语言如行为描述转换成低级的,可与FPGA/CPLD 的基本结构相映射的网表文件或程序.当输入的HDL文件在EDA工具中检测无误后,首先面临的是逻辑综合,因此要求HDL源文件中的语句都是可综合的.在综合之后,HDL综合器一般都可以生成一种或多种文件格式网表文件,如EDIF、VHDL、Verilog等标准格式,在这种网表文件中用各自的格式描述电路的结构,如在VHDL网表文件中采用VHDL的语法,用结构描述的风格重新诠释综合后的电路结构.整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件.由此可见,综合器工作前,必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用某种网表文件的方式对应起来,成为相应的映射关系.如果把综合理解为映射过程,那么显然这种映射不是唯一的,并且综合的优化也不是单纯的或一个方向的.为达到速度、面积、性能的要求,往往需要对综合加以约束,称为综合约束.布线布局适配适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、Jam格式的文件.适配所选定的目标器件必须属于原综合器指定的目标器件系列.通常,EDA软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由FPGA/CPLD供应商提供,因为适配器的适配对象直接与器件的结构细节相对应.适配器就是将综合后网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、优化、布局布线操作.适配完成后可以利用适配所产生的仿真文件作精确的时序仿真,同时产生可用于编程的文件.仿真在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试,就是所谓的仿真.仿真就是让计算机根据一定的算法和一定的仿真库对EDA设计进行模拟,以验证设计,排除错误.仿真是在EDA设计过程中的重要步骤.图1-1所示的时序与功能门级仿真通常由PLD公司的EDA开发工具直接提供当然也可以选用第三方的专业仿真工具,它可以完成两种不同级别的仿真测试:1时序仿真.就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而仿真精度高.但时序仿真的仿真文件必须来自针对具体器件的适配器.综合后所得的EDIF等网表文件通常作为FPGA适配器的输入文件,产生的仿真网表文件中包含了精确的硬件延迟信息.2功能仿真.是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程.仿真过程不涉及任何具体器件的硬件特性.不经历适配阶段,在设计项目编辑编译或综合后即可进入门级仿真器进行模拟测试.直接进行功能仿真的好处是设计耗时短,对硬件库、综合器等没有任何要求.下载和硬件测试把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD进行下载,以便进行硬件调试和验证Hardware Debugging.通常,将对CPLD的下载称为编程Program,对FPGA中的SRAM进行直接下载的方式称为配置Configure,但对于反熔丝结构和Flash结构的FPGA的下载和对FPGA的专用配置ROM的下载仍称为编程.FPGA与CPLD的分类主要是根据其结构特点和工作原理进行.通常的分类方法有以下几种:1以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera 的MAX7000系列和Lattice原Vantis的Mach系列等.2以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K、ACEX1K或Cyclone系列等.当然也有从下载方式上分的.有关FPGA/CPLD下载的详细情况将在第2章中介绍.最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计.Quartus II概述本书给出的所有示例和实验都是基于Quartus II的,其应用方法和设计流程对于其他流行EDA工具的使用具有一定的典型性和普遍性,所以在此对它作一些介绍.QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大的可编程逻辑器件供应商之一.QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plus II的更新换代产品,其界面友好,使用便捷.在QuartusII上可以完成节所述的整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程.Altera的Quartus II 提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统SOPC 设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境.Quartus II设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器.QuartusII也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、FPGA CompilerII,并能直接调用这些工具.同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具,如ModelSim.此外,QuartusII与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发和数字通信模块的开发.QuartusII包括模块化的编译器.编译器包括的功能模块有分析/综合器Analysis & Synthesis、适配器Fitter、装配器Assembler、时序分析器Timing Analyzer、设计辅助模块Design Assistant、EDA网表文件生成器EDA Netlist Writer、编辑数据接口Compiler Database Interface等.可以通过选择 Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块.还可以通过选择 Compiler Tool Tools 菜单,在 Compiler Tool窗口中运行该模块来启动编译器模块.在 Compiler Tool 窗口中,。
AHDL2
-- 说明 SS 为一个状态机,其包含两个状态 -- 这两个状态为 s0,s1; -- 状态机的端口连接;
-- 状态转移描述和输出控制; -- 这里的 CASE 语句是一个多转移端口语句, -- 意义和其他语言的 CASE 语句相同。
AHDL 的序列逻辑部分
WHEN s1 => q = VCC; IF !d THEN ss = s0; END IF; END CASE; END; AHDL的时序电路基本上如上所述,当然我们常用的时序器件除了DFF外,还有DFFE,而 DFFE除了DFF的控制端口外,另加了一个Ena的控制端口,它为时钟允许信号,当他为高时, 时钟信号是允许的,而当他为低时,输入时钟信号是禁止的。关于时序电路的详细资料见 HELP中的Sequential Logic和State Machines (AHDL)有更为详细的说明。
AHDL 的序列逻辑部分
ss: MACHINE WITH STATES (s0, s1); BEGIN ss.clk = clk; ss.reset = reset; ss.ena = ena; CASE ss IS WHEN s0 => q = GND; IF d THEN ss = s1; END IF;
AHDL 的序列逻辑部分
移位寄存器的实现: SUBDESIGN Example_13 ( In_Data,Clk : INPUT;
Para_Data[7..0] : OUTPUT; ) VARIABLE Shift_Dff[7..0] : DFF; BEGIN Shift_Dff[].Clk = Clk; Shift_Dff[0].D = In_Data;
Example_dff.Clk = Clk;
AHDL 的序列逻辑部分
AHDL课件
22
பைடு நூலகம் 例题:
用FOR…GENERATE语句和CANSTANT语句配合实现任意长度的全加器。 程序如下: CONSTANT NUM_OF_ADDERS = 8; 定义一个常量NUM_OF_ADDERS SUBDESIGN 4gentst ( a[NUM_OF_ADDERS..1],b[NUM_OF_ADDERS..1],cin : INPUT; c[NUM_OF_ADDERS..1],cout: OUTPUT; ) VARIABLE carry_out[(NUM_OF_ADDERS+1)..1] : NODE; BEGIN carry_out[1] = cin; FOR i IN 1 TO NUM_OF_ADDERS GENERATE c[i] = a[i] $ b[i] $ carry_out[i]; % Full Adder % carry_out[i+1] = a[i] & b[i] # carry_out[i] & (a[i] $ b[i]); END GENERATE; cout = carry_out[NUM_OF_ADDERS+1]; END; 当i从1到NUM_OF_ADDERS依次增加,对应的C[i]、a[i]、 b[i]、 carry_out[i]也 依次从C[1]、a[1]、b[1]、carry_out[1]变化并执行相应的操作,直到i=8。 23
20
FOR … GENERATE 语句
FOR语句的语法规则如下: FOR ( 符号名 ) IN 循环变量 TO 循环次数范围 GENERATE <操作语句>; END GENERATE; For后的循环变量是一个临时变量而且是局部变量, 不必事先定义。该变量不能在操作语句中赋值和修改。 它由循环语句自动定义。使用时应当注意,在 FOR…GENERATE语句范围内不能再有其它变量与此 循环变量同名。 循环次数:每执行完一个循环后循环变量递增1,直 至达到循环次数范围最大值。循环次数范围一般是常 数,或常数表达式
a-class l概念 -回复
a-class l概念-回复【计算机语言概念】计算机语言是人与计算机之间进行交流和指令传递的一种特殊语言。
它起到了桥梁的作用,使得人类能够用易于理解的方式与计算机进行交互。
计算机语言可以分为机器语言、汇编语言和高级语言三个层次。
随着计算机技术的发展,高级语言逐渐成为主流,使得计算机程序的编写更加简洁方便。
机器语言是计算机硬件能够直接理解的语言。
它使用二进制代码来表示指令和数据,与计算机底层的硬件结构紧密相关。
机器语言的编写较为复杂,容易出错,对人类来说乏味且不易理解。
为了方便人类对计算机进行指令编写和程序控制,出现了汇编语言。
汇编语言使用助记符号来代替二进制代码,使得程序编写更加可读和易于理解。
然而,汇编语言仍然需要直接操作计算机硬件,编写过程需要重点考虑细节。
高级语言是对程序员来说最为方便的一种计算机语言。
高级语言使用人类可读的语法结构,将指令和数据以较为抽象的形式表示出来。
与汇编语言相比,高级语言更加易于理解和编写,使得程序员能够更专注于程序逻辑和功能实现,而不必过于关注底层细节。
高级语言包括各种种类,如C、Java、Python等。
与每个高级语言对应的是一个编译器或解释器,它们将高级语言的代码转化为机器能够执行的指令。
编译器将整个高级语言程序一次性编译成机器码,然后交给计算机执行;而解释器则将高级语言程序逐行翻译并执行。
高级语言的特点之一是跨平台性。
即用同一种高级语言编写的程序,可以在不同的计算机上运行,而不需要进行修改。
这是因为不同平台的编译器或解释器能够将高级语言程序转化为适合当前计算机的机器码。
高级语言的使用大大简化了程序员的工作。
它们提供了各种方便的功能和库,使得常见的任务和操作能够以更高效的方式完成。
同时,高级语言还提供了更高层次的抽象,使得程序员能够更加专注于问题的解决,而不必过多关心底层实现细节。
尽管高级语言的执行效率通常低于底层语言,但它们的易用性和可读性使得程序的开发和维护更加高效。
AHDL语法
引言——咱们数电PLD实验关于AHDL的入门教程,看看蛮有劲~第一章概述本章将对Altera硬件描述语言(Altera Hardware Description Language)作简要地描述,还要讲述如何处理AHDL文件,介绍AHDL语言的基本概念和基本元素,以使学生能够更好地使用AHDL设计电路。
一、 AHDL简要介绍AHDL语言是Altera公司设计的配合Altera MAX+PLUSⅡ设计软件使用的一种硬件描述语言。
它是一种模块化的高级语言,完全集成于MAX+PLUSⅡ系统中,它将用户的设计以各种设计文件(文本设计文件TDF、图形设计文件GDF等等)形式保存,并可对其进行编译(COMPILE)、调试、检错、模拟(SIMULATE)、下载(DOWNLOAD)等操作。
这些操作都在MAX+PLUSⅡ开发系统中完成。
AHDL语言还特别适合于描述复杂的组合逻辑、组(group)运算、状态机、真值表和时序逻辑。
一个TDF文件中必须包含一个子设计段和一个逻辑段。
l 子设计段(Subdesign Section ):说明TDF文件的输入、输出和双向端口。
l 逻辑段(Logic Section):定义文件中各种逻辑运算。
AHDL是一种并行语言。
在TDF文件逻辑段中所定义的所有动作都是同时进行的,而不是串行的。
给同一个AHDL结点或变量赋值的多个等式在逻辑上是相联的(如果该结点或变量是高电平有效,那么这些等式之间就是“或”的关系,如果是低电平有效,就是“与”的关系)。
二、 AHDL语言的基本元素AHDL包含许多基本元素,用以在语句中对各种逻辑进行描述。
本章讲述如何用AHDL语言进行设计,介绍这些基本元素和基本语句的使用。
(一) 基本概念以下介绍AHDL语言的基本概念,这些概念无论是在时序逻辑电路设计还是在组合逻辑电路设计中都是组成AHDL 语言(TDF文件)的最基本元素。
1.数值数值被用来在布尔表达式和等式中指定常量值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a0: in std_logic;
z0: out std_loigc);
end entity and2;
注:数据类型 time 用于仿真模块的设计。 综合器仅支持数据类型为整数的类属值。
6
用VHDL描述的可置数16位计数器:
7
2、VHDL语言可读性强,易于修改和发现错误。 3、VHDL具有丰富的仿真语句和库函数,可对 VHDL源代码进行早期功能仿真,有利于大 系统的设计与验证。 4、VHDL设计与硬件电路关系不大。 5、VHDL设计不依赖于器件,与工艺无关 。 6、移植性好。 7、VHDL体系符合TOP-DOWN和CE(并行工程)设计 思想。 8、VHDL设计效率高,产品上市时间快,成本低。 9、易于ASIC实现。
17
1、类属说明 类属说明:
确定实体或组件中定义的局部常数。模 块化设计时多用于不同层次模块之间信息的 传递。可从外部改变内部电路结构和规模。 类属说明必须放在端口说明之前。
Generic (
常数名称:类型 [:= 缺省值] {常数名称:类型 [:= 缺省值]} );
18
类属常用于定义: 实体端口的大小、
16
一、实体(说明)
实体(说明):
定义系统的输入输出端口
语法:
ENTITY <entity_name> IS Generic Declarations Port Declarations END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)
VHDL是电子系统设计者和 EDA工具之 间的界面。 EDA工具及 HDL的流行,使电子系统向集 成化、大规模和高速度等方向发展。
美国硅谷约有80%的 ASIC和 FPGA/CΒιβλιοθήκη LD已采用 HDL进行设计。
4
2、VHDL与C、C++的比较:
C、C++ 代替汇编等语言 VHDL 代替原理图、逻辑状态图等 3、VHDL与电原理图描述的比较: VHDL具有较强的抽象描述能力,可进行系统
ports
ports
component
12
2选1选择器的VHDL描述:
13
VHDL语言的一些基本特点:
VHDL语言由保留关键字组成; 一般,VHDL语言对字母大小写不敏感; 例外:‘ ’、‚ ‛所括的字符、字符串; 每条VHDL语句由一个分号(;)结束; VHDL语言对空格不敏感,增加可读性; 在‚--”之后的是VHDL的注释语句; VHDL有以下描述风格: 行为描述; 数据流(寄存器传输RTL)描述; 结构化描述;
行为级别的描述。描述简洁,效率高。
VHDL描述与实现工艺无关。 电原理图描述需给出完整、具体的电路结构 图,不能进行抽象描述。描述繁杂,效率低。 电原理图描述与实现工艺有关。
5
四、VHDL语言特点
1、VHDL具有强大的语言结构,系统硬件描述能 力强、设计效率高;具有较高的抽象描述能力。 如:一个可置数的16位计数器的电原理图:
称为 IEEE1076-1987。
各EDA公司相继推出支持VHDL的设计环境。
1993年被更新为 93 标准,即IEEE1076-1993。
进一步提高抽象描述层次,扩展系统描述能力。
3
三、VHDL的作用
1、VHDL打破软、硬件的界限 传统的数字系统设计分为: 硬件设计(硬件设计人员) 软件设计(软件设计人员)
10
六、VHDL设计简述
VHDL主要用于描述数字系统的结构、行 为、功能和接口。 VHDL将一个设计(元件、电路、系统) 分为: 外部(可视部分、端口) 内部(不可视部分、内部功能、算法)
11
外部与内部:
ports 器件或 ports
子系统
ENTITY
ARCHITECTURE
Process Sequential Process Process Combinational Process
8
五、VHDL与其它硬件描述语言的比较
行为级 VHDL: 具有较强的系统级抽象描述能力,适 合行为级和 RTL级的描述。设计者可不必 了解电路细节,所作工作较少,效率高。 但对综合器的要求高,不易控制底层电路 的生成。IEEE标准,支持广泛。 RTL: Register Translate Level
设计实体的物理特性、 总线宽度、 元件例化的数量等。 例: entity mck is generic(width: integer:=16); port(add_bus:out std_logic_vector (width-1 downto 0)); …
19
例:2输入与门的实体描述
entity and2 is generic(risewidth: time:= 1 ns; fallwidth: time:= 1 ns); port(a1: in std_logic;
9
RTL级
门电路级
Verilog HDL :
系统级抽象描述能力比VHDL稍差;门级开 关电路描述方面比 VHDL 强。适合 RTL级和门 电路级的描述。设计者需要了解电路细节,所 作工作较多。IEEE标准,支持广泛。 ABEL、PALASM、AHDL(Altera HDL): 系统级抽象描述能力差,一般作门级 电 路描述。要求设计者对电路细节有详细的了解。 对综合器的性能要求低,易于控制电路资源。 支持少。
14
§3.2
VHDL程序基本结构
基本结构包括:
实体(Entity) 结构体(Architecture) 配置(Configuration)
库(Library)、程序包(Package)
15
库、程序包 实体(Entity) 结构体 (Architecture) 进程 或其它并行结构
配置(Configuration)
第三章
硬件描述语言(VHDL)
1
§3.1
概述
一、什么是VHDL?
VHDL: VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
2
二、VHDL的历史
80年代初由美国国防部在实施超高速集成电 路(VHSIC)项目时开发的。 1987年由 IEEE 协会批准为 IEEE 工业标准,