EDA复习总结

时间:2019-05-12 12:34:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《EDA复习总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《EDA复习总结》。

第一篇:EDA复习总结

一.名词解释

EDA

电子自动化设计

electronic design automation FPGA

现场可编程门阵列

field programmable gate array CPLD

复杂可编程逻辑器件 complex programmable logic device ASIC

特定用途集成电路

application specific integrated circuit IP

知识产权

intellectual property SOC

片上系统

system on a chip FSM

有限状态机

finite state machine MPW

多用途晶圆

multi project wafer

DSP

数字信号处理器

digital signal processor MCU

微程序控制器

micro control unit HDL

硬件表述语言

hardware description language VHDL 超高速集成电路硬件描述语言

very high speed integrated circuit hardware description language

二.简答题

1.top-down方法:从系统硬件的高层次抽象描述向低层次物理描述的一系列转化过程。从顶向下设计由功能级,行为级描述开始;寄存器传输(RTL)级描述为第一个中间结果,再将RTL级描述由逻辑综合网表或电路图;利用EDA工具将网表自动转换换成目标文件下载到现场可编程门阵列|复杂可编程逻辑器件或通过自动布局布线设计成专用集成电路,从而得到电路与系统的物理实现。

2.逻辑综合主要通过综合工具,依据设计人员设定的时序,面积等约束条件,将与工艺无关的RTL级的电路逻辑描述程序,转化为与工艺相关的电路,是将程序设计转化为硬件实现的重要环节。

3.简述可编程器件与ASIC在设计应用成本等方面的优缺点

面向可编程逻辑器件的设计其设计投入资金小,风险小,开发周期短,调试灵活,易学易用,而ASIC设计的设计资金投入大,流片费用都很昂贵,研发投片制作其有一定的失败风险,且其开发周期较长,调试改动设计都比较困难,不过,产品进入大批量生产后,ASIC成品的成本往往低于可编程器件成本。

4.top-down过程分为:行为级描述,寄存器传输(RTL)级描述,逻辑综合,物理实现。

5.VHDL描述方式:行为级描述,RTL级描述方式,结构级描述方式。

6.仿真过程:行为级仿真,RTL仿真,门级仿真,后仿真。

7.Top-down设计方法特点:

1)在系统设计早期就能发现设计中存在的问题,并尽可能在早期设计阶段就能解决问题。

2)自动化

8.top-down优势

1)在系统设计早期发现设计中存在的问题,提高设计的一次成功率。

2)大大缩短了系统设计的周期,减少系统开发所耗用的时间。

3)易于系统划分和项目管理,使几十万乃至几百万的大规模复杂数字电路的设计成为可能。

4)设计效率提高,可减少设计人员。

5)通过设计共享,避免重复设计。

9.HDL:指电子技术高层设计阶段中所采用的硬件描述语言。

特点:

1、HDL以行为级描述见长,它能从比较抽象的角度描述电子实体的行为,能够进行早期仿真。

2、HDL能够进行结构化描述,它能从具体的角度描述电子实体结构,便于存档,便于共享。

3、HDL具备了从比较抽象到比较具体的多个层面上进行混合描述能力,降低了硬件电路设计难度。

4、既能被仿真又能被综合。

10.VHDL特点:

1)通用型好,适用面广

2)重用性好

3)可靠性好

4)以行为级描述见长。

11.IP分为软核,硬核,固核

软核:第二阶段,寄存器级设计结果,且经过RTL级仿真验证。通常以HDL语言形式提交。

固核:第四阶段,经过FPGA实物验证的设计结果。通常以门级网表的形式提交。

硬核:第四阶段,经过ASIC工艺验证的设计结果。通常以版图的形式提交。

三者的价值:

从FPGA角度看固核最有价值

从ASIC角度看硬核最有价值

软核则由于它与工艺和器件均无关,具有高度灵活性,从而具有独特价值。

固核硬化:将固核转化为硬核。

硬核软化:因为硬核必须用过交换或出售才能实现价值最大化。而在硬核交换过程中,为了保护硬核知识产权,IP提供者往往将硬核以黑匣子形式提供给用户,同时能将硬化软化,即采用硬件描述语言对硬核的功能进行行为级描述,通过使用该行为级描述,在保护匣子具体内容的同时,仍可进行IP仿真。

12.FPGA/CPLD在EDA中具有重要作用

1)VHDL程序用过FPGA/CPLD可以得到EDA设计的最终产品,在产品数据较小时快速占领市场。

2)VHDL程序通过FPGA/CPLD验证可以形成固核具有一定商品价值。

3)VHDL程序的FPGA/CPLD验证试验是一种ASIC设计的硬件仿真工具。

13.并行语句和顺序语句在使用上有哪些差异:

1)并发语句只能够出现在并发语句结构中,如结构体,BLOCK等,并发语句的执行与其在程序中的书写顺序无关;

2)顺序语句只能够出现在顺序语句结构中,如PROCESS,过程,函数等结构中,其执行与书写顺序相关,写在前面的语句先执行,写在后面的依据后执行。14.数据类型是用标示符表征某个或某个数值的集合,数据类型按照定义可分为标准预定义数据类型和用户自定义数据类型,还有用户自定义数据类型。在VHDL中若某个对象被声明为某种类型,其值必须在该数据类型所限定的取值范围之中,且只有相同的数据类型才能做赋值或运算,不同数据类型的数据必须通过类型转换一致后,才能运算。故说VHDL语言是强数据类型的描述语言。

15.描述行为语言:信号赋值语言,进程语句,子程序,块语句,断言语句。

描述结构语句:元件语句(COMPONENT),生成语句(GENERATE),参数说明语句(GENERIC)

16.并行信号赋值语句:一般信号赋值,条件信号赋值,选择信号赋值。

17.什么是EDA?

EDA技术是一种以计算机为基本工作平台,利用计算机图形学,拓扑逻辑学,计算数学以及人工智能学等多种计算机应用学科的最新成果而开发出来的一整套软件工具,是一种帮助电子设计工程师从事电子元件产品和系统设计的综合设计,电子设计自动化技术,方法一般采用自顶向下的设计方法,也叫正向设计,它是针对传统的自底向上的设计方法而提出的。

18.什么是IP核?学习VHDL与掌握IP核技术的关系四什么?

IP核是具有知识产权的集成电路芯核的简称,其作用是把一组拥有知识产权的电路设计集合在一起,构成芯片的基本单位,以供设计时“搭积木”之用。

19.信号赋值语句在进程做并行语句,并发执行,与语句所处位置无关。

信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处位置无关。

信号赋值语句符号为“<=” 变量赋值符号位”:=”

用于信号赋值动作,不立即生效

用于变量赋值动作,会立即生效

20.Active—HDL软件工具对VHDL程序进行仿真方法有哪些? 利用Active—HDL软件工具对VHDL程序进行仿真时,常用的三种仿真方法:

1)用图形化界面加激励(或手动测试加激励)方法简单,常用于初学者或简单的小程序仿真。

2)编写测试平台文件(或编写testbench)的仿真方法可以方便地使用VHDL编写做激励文件。常用于工程设计实践,尤其适用于需要反复多次仿真或测试激励的跨平台移植。

3)编写宏文件的仿真方法用命令行,批处理文件方式编写激励,常用于需要多次仿真时,一次性编写激励,多次仿真时反复使用。

21.进程的“敏感信号”,也称敏感表,是进程的激活条件,可由一个信号或多个信号组成之间用“,”隔开。

当敏感信号表中的任意一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕后,进程即进入等待挂起状态,直到下一次敏感表中的信号有时间发生,进程再次被激活,如此循环往复。

22.VHDL程序的组成部分包括哪些?

实体:描述设计单元的外围接口信号和内部参数。

构造体:描述设计单元的内部结构和逻辑行为。

配置:为设计单元从多个构造体中选择合适的构造体或从库中选取合适的元件以便于进行设计单元的仿真或综合。

程序包:存放各设计模块都能共享的数据类型,常熟和子程序。

库:存放已经编译了的元件和程序包,以便在设计单元中使用,库可由系统工程师的自信设计或由ASIC芯片制造商提供。

23.端口方向有哪几种? 端口:

In:输入端口,在设计单元内部只可读,在设计单元内不可对其赋值。

Out:输出端口,在设计单元内部只可写,不可反馈至设计单元内部作逻辑电路的输入型号。

Inout:输入通道和输出通道共享引脚的双向端口,在设计单元内部分时可读可写,需要控制信号控制何时读,何时写,输入和输出通道不能同时有效。

Buffer:缓冲输出端口,可反馈至设计单元内部作为逻辑电路的输入信号,故可在设计单元内部可读可写。

Linkage:链接端口,无指定方向,可以与任意方向信号链接。

24.VHDL有哪几种描述方式?分别用于什么场合?

逻辑综合:在top-down流程中,EDA软件可以将源程序自动转换为描述底层逻辑门互联关系的门级网表,从而与最终的可编程器件或ASIC硬件实现相对应。

行为级描述方式是抽象程度最高的电路建模方式,源程序主要描述电路的输出端口随输入变化而变化规律,程序描述贴近人类高级语言,不可被综合。

寄存器级通过描述数据从输入到输出的运算处理按时了电路结构综合。结构描述方式是层次化设计思想的体现,是描述电路硬件连接的建模方式,源程序可否被综合,依赖被调用元件可综合否。

25.什么是数据对象?常用的数据对象有哪些几种? 常用数据对象:信号,变量,常量

在VHDL程序中凡是可以被赋值的对象称为数据对象。

26.信号延时有哪几种?它们有何异同? 信号延时:

传播延时:直接模拟导线上信号的延时。任何信号传入导线的一段,经过一段延时信号必须从导线另一段输出。

惯性延时:模拟某类元件的延时特征,信号传入软件后,在指定时间内输入信号必须保持不变,元件的输出端才会有响应。

27.什么是数据类型?它可以分为哪几大种?每一种类型中包括哪些具体类型? 数据类型:标准数据类型,用户自定义数据类型,用户自定义子类型。

标准数据类是在VHDL预定义库中定义的数据类型,在使用时不需要作参考库和程序包申明。

位、矢量位、整数、自然数。正整数、实数、布尔量、字符、字符串、时间、错误等级。用户自定义数据类型: 在VHDL中用户还可以自己定义所需数据类型。语法格式:Type <数据类型> Is 数据类型定义;

枚举类型、数组类型、存取类型、文件类型、记录类型、时间类型。用户自定义子类型:

用户自定义的子类型,是对已定义数据类型取值范围加以限制得到的子集。语法格式:SUBTYPE <子类型名> IS 原数据类型名 [范围]

28.VHDL中操作符主要有哪几类?它们都分为哪些主要元素?

逻辑运算符: not(非)and(与)or(或)nand(或与)

nor(或非)xor(异或)算数运算符:+ *能够真正被综合,MOD REM 分母的操作数为2乘方的书,逻辑电路综合是可能的。

29.什么是层次化?

层次化设计基于电子系统的结构化建模方式,对系统的功能和结构进行描述,层次化设计奖系统逐级划分,将较独立的功能或逻辑电路单独建模,与参考库中的底层元件一起调用。作为可调用元件,在确保正确的情况下,调入高层次的设计中作为实例使用,在系统设计中,采用层次化设计方法,可以有效地简化设计难度,明确系统架构,促进团队合作和共享。

30.什么是组合逻辑?其VHDL程序设计有何特点?

组合逻辑就是指数字电路在任何时刻仅仅取决于该时刻数字电路的输入,与历史输入无关。

用VHDL描述组合逻辑电路,使用并行语句或使用进程。

31.什么是时序逻辑?其VHDL程序设计与组合逻辑的有何不同?

时序逻辑电路指数字电路在任何时刻的输出不仅取决于该时刻数字电路输入,而且取决于电路原来状态,或者说还与历史输入有关。

用VHDL描述时序电路:必须使用到进程。

32.常用EDA工具:Active-HDL,FPGA-Express,ISE,Cadence,Verilog-XL,NC-verilog,Maxplus-II.33.‘U’初始状态

‘X’不定态

‘0’强0态

‘1’强1态

‘Z’高阻态

‘L’弱0态 ‘H’弱1态

‘W’ 弱补丁太 ‘-’无关态

34.mealy:输出由状态机的输入和状态机的状态共同决定。

Moore:输出仅与状态机的状态有关,与状态机的输入无关。

第二篇:EDA第五章复习总结

2.结构体(architecture)部分

67页

IN(输入)、OUT(输出)是表示信号的类别;

BIT是表示信号的类型,BIT是系统定义的类型,即二进位类型,信号只有‘0’和‘1’两种值;

每个VHDL语句都是以“;”结束,包括最后一个语句也不例外;

VHDL中的“注释”是以两个减号“--”开始的。

二、实体描述

ENTITY 实体名 IS PORT(信号名: 类别信号类型;„„„ 信号名: 类别信号类型);END 实体名;同样类别和类型的信号可以用逗号分隔,在一个语句行中说明。

信号的类别主要有以下4种:

IN:此信号是输入信号;

OUT:此信号是输出信号,提供给其他的实体;

:缓冲信号,也是实体的输出信号,但是可以被实体本身的结构体读入;

INOUT:双向信号,既可以输入,也可以输出。

系统预定义的信号类型有:

BIT:二进位型,信号的值只能是‘0’或‘1’。

BIT_VECTOR:二进位向量,实际对应的是二进位数组 ;

BOOLEAN:布尔型,取值只能是true或者false ;

INTEGER:整型,一般都用32位二进制数表示整型数 ;

CHARACTER:字符型,使用8位编码的ASCII字符。

三、结构体描述

ARCHITECTURE 结构体名 OF 实体名 IS <声明部分> BEGIN <描述部分> END 结构体名;对于一个实体来说,可以有几种不同的结构体描述。

5.3 VHDL程序的元素

一、关键字

85页

二、标识符的命名

85页

三、数据类型

91页 预定义:

◆整数Integer:-(2的31次方-1)—2的31次方-1 ◆实数Real:-1.0E+38--+1.0E+38 ◆位Bit:’0’或’1’ ◆位矢量Bit_Vector:”001100” ◆布尔量Boolean:真或假 ◆字符Character:’A’,’C’

◆物理Time:预定义为时间,其他如电压、电流等也为物理型 ◆错误等级:NOTE、WARNING、ERROR、FAILURE ◆自然数(Natural)、正整数(Positive)◆字符串(String),如”morning”

用户自定义类型:

96页

◆枚举型 可以通过枚举类型来定义信号的取值。除了最常用的二值逻辑(已经预定义为BIT型),还可以有三值逻辑(信号有三种取值:‘0’、‘1’和‘z’),九值逻辑等

TYPE枚举类型名 IS(枚举型值表);如

TYPE qit_logic IS('0','1','Z','X')

◆STD_ULOGIC 在IEEE1164标准逻辑包中所定义的std_ulogic类型是一种九值逻辑,也是一种枚举型的数据类型:

TYPE std_ulogic IS('U',--Uninitialized 'X',--Forcing Unknown

'0',--Forcing 0 '1',--Forcing 1 'Z',--High Impedance 'W',--Weak Unknown 'L',--Weak 0 'H',--Weak 1 '-' ,--Don't Care);◆数组类型

TYPE 数组名 IS ARRAY(范围)OF 基类型

1,其中的“基类型”是已经定义过的类型,甚至可以是已经定义过的数组类型。

2,定义中的“范围”,既表示数组的大小,也说明用什么方式表示数组元素的下标。通常,“范围”是用整数表示,也可以用枚举值表示

3,“范围”用整数表示时,整数范围可以是递增表示,也可以是递减表示: TYPE register IS ARRAY(0 TO 7)OF BIT;

TYPE regist_1 IS ARRAY(7 DOWNTO 1)OF BIT;TYPE rom IS ARRAY(0 TO 7)OF register;

类型实际上是用register基类型定义的二维数组,即 TYPE rom IS ARRAY(0 TO 7, 0 TO 7)OF BIT;

数组的范围还可以用已经定义过的枚举型来表示,如: TYPE light_delay IS ARRAY(traffic_light)OF INTEGER;这里的traffic-light是已经定义的枚举类型,有三个取值(“red、yellow、green”)。将来定义的类型为light-delay的数组,也只会有三个元素。

在VHDL中,可以对数组的整体赋值:如定义了regist_1类型的数组信号: TYPE regist_1 IS ARRAY(7 DOWNTO 0)OF BIT;SIGNAL arr_1, arr_2 : regist_1;

以下的赋值操作在VHDL中都是允许的: arr_1 <= “10110110”;arr_2 <=arr_1;◆子类型

97页 希望对某种类型数据的范围加以限制

四、对象

把信号、变量、常量和文件统称为对象。

89页

1.常量的定义

CONSTANT常量名: 类型名 := 常量值;例如:

CONSTANT array_size : INTEGER := 16;CONSTANT gate_delay : TIME := 50ns;

2.变量的定义

变量的定义采用如下的方式:

VARIABLE 变量名: 类型名[:=初值];变量的赋值用“:=”来表示。变量的赋值没有延迟。

3.信号的定义

信号定义的方式:

SIGNAL 信号名: 类型名[:=初值];

信号的赋值用“<=”表示,有延迟,初始化不同于赋值

信号的传送可以规定延迟,也可以不规定延迟。但是VHDL规定,如果没有指定信号传送的延迟,信号的传送也会有一个最小延迟Δ。

信号可以是全局定义的,PORT中定义的信号就是对所有的结构体都有效。但是,信号也可以是局部定义的,在结构体内部定义的信号只对这个结构体有效。

五、词法单元

87页

1.注释

◆以双连符(--)开始直到行末 2.VHDL中的数字

◆八进制:以O开头,如O”340”

◆二进制:以B开头,如B”11100000” ◆十六进制:以X开头,如X”E0”

字符

◆文字字符表示形式为:单引号括起来的ASCII字符,如’A’,’*’

字符串

文字字符串表示形式为:双引号括起来的图形字符序列。如”how are you”,” ”等 5.位串

◆位串表示形式为:双引号括起来的扩展的数字序列,数字序列前冠以基数说明符。如:--长度为八的二进制数,等效245 6.VHDL语句中使用的标点符号 分号(;)是一条语句结束的标志 逗号(,)是对象的分隔符 冒号(:)和原点(.)的用法在每条语句中给出

六、表达式与运算符

102页具体的运算符

和其他程序设计语言中的表达式很相似,一个表达式是由运算符把对象名、文字、函数调用及括起来的表达式连接起来的式子。

在一个VHDL表达式中,数据的类型应该相同。如果不同的数据类型出现在同一个表达式,VHDL不会进行自动类型的转换,而只会给出错误信息。

支持运算符的重载。例如可以对不同类型的信号各自进行AND运算。

七、VHDL的库和包

1.VHDL库的种类和使用

VHDL的库可以分为三种类型:系统库,IEEE库、用户库。

系统库是VHDL语言本身预定义的库,包括STD库和WORK库。STD库是系统的标准库,所有系统本身预定义的类型和有关的操作都包含在这个库中。WORK库是用户的工作库。对用户都是透明的,也就是随时都可以使用的,不需要在描述中专门说明。

IEEE库是IEEE认可的标准库,其中包括对于STD_LOGIC类型以及有关函数的定义。

用户库就是VHDL软件提供厂商开发的库,应该查询相应软件的说明。

2.程序包

一个VHDL库可以包含许多内容,并且往往以程序包(Package)的形式组织在一起。

一个程序包由两个部分构成:包的说明部分(Package Declaration)和包的主体部分(Package Body)。基本的结构如下:

PACKAGE 程序包名IS 程序包说明部分 END 程序包名;

PACKAGE BODY 程序包名 IS 程序包主体描述 END 程序包名;说明部分可以包括:

常量说明;

信号说明,这里说明的信号可以被所有的结构体使用;

类型说明;

函数或过程说明;

部件(Component)说明,程序包的主体部分则是对所包含的函数、过程、结构体进行具体的描述。

程序包示例

PACKAGE qit_utilities IS TYPE qit IS('0’, ‘1’, ‘Z’, ‘X’);

FUNCTION “AND”(a, b :qit)RETURN qit;

只是声明,有这个函数 FUNCTION “OR”(a, b :qit)RETURN qit;END qit_utilities;

PACKAGE BODY qit_utilities IS FUNCTION “AND”(a, b :qit)RETURN qit IS

对函数的具体过程描述 CONSTANT qit_and_table : qit_2d :=(('0', '0', '0', '0'),('0', '1', '1', 'X'),('0', '1', '1', 'X'),('0', 'X', 'X', 'X'));BEGIN RETURN qit_and_table(a, b);END “AND”;FUNCTION “OR”(a, b :qit)RETURN qit IS

函数的定义方法71页例3-3比较 CONSTANT qit_or_table : qit_2d :=(('0', '1', '1', 'X'),('1', '1', '1', '1'),('1', '1', '1', '1'),('X', '1', '1', 'X'));BEGIN RETURN qit_or_table(a, b);END “OR”;END qit_utilities;以上的程序包中定义了一种4值逻辑及其操作。在说明部分定义了一种新的信号类型qit,也就是一种4值逻辑,还说明了两个函数AND和OR,用来对4值逻辑进行“与”“或”运算。在BODY部分实现了这两个函数。

3.库和程序包的引用

77页

在所有的VHDL源程序都要首先声明使用什么VHDL库。声明要使用关键字LIBRARY,例如,要使用IEEE库,使用这个库中的哪个程序包就应该作以下的声明:

LIBRARY IEEE;

USE 库名.程序包名.ALL;

包中所有内容可用 USE 库名.程序包名.子程序名;

包中选中内容可用

4.函数和过程

前一页程序包的例子

中既可以使用函数,也可以使用过程(Procedure)。两者统称为子程序。函数的定义包括函数说明和函数主体两部分,基本的格式如下:

FUNCTION 函数名(参数表)RETURN 类型IS BEGIN 函数体

END 函数名;

函数体中一定要包括RETURN语句。过程的定义和函数的定义非常相似:

PROCEDURE过程名(参数表)IS BEGIN 过程体

END 过程名;

过程没有返回值。

函数的参数传递总是一个方向的,也就是传入到函数,而过程的参数传递可以是两个方向的。具体在过程执行中参数如何传递,取决于参数的类别(IN、OUT、INOUT等),而对于函数参数的类别,则只能有一种:IN,就是输入到函数。

5.4 VHDL程序的描述语句

可以有许多并行处理语句,这些语句的执行是可以同时进行的。并行语句主要是信号传送语句。传送时可以指定传输延迟。

如果传送时没有指定时延,VHDL会对并行处理语句的执行加上一个最小时延Δ。

一、并行赋值语句

并行赋值语句是最基本的VHDL语句,它的格式是:

信号名<=表达式;

信号名<=表达式 AFTER 延迟时间;例5.4 半加器的数据流描述。ENTITY half_adder IS PORT(a, b: IN BIT;s, c0: OUT BIT);END half_adder;ARCHITECTURE h_adder OF half_adder IS SIGNAL c, d: BIT;BEGIN

信号时非输入输出的中间量相c<= a OR b;d<= a NAND b;

当于下一阶段的输入和上一阶段的输出? c0<= NOT d;s<= c AND d;END h_adder;

二、条件赋值语句

条件赋值语句也是一种信号赋值语句,只是赋给信号的值可以根据条件的不同而不同。

条件赋值语句的格式如下:

信号名<= 表达式1 WHEN 布尔表达式1 ELSE 表达式2 WHEN 布尔表达式2 ELSE „„

表达式n WHEN 布尔表达式n ELSE 表达式;例5.5 用条件赋值语句描述数据选择器。ENTITY mux4_to_1 IS PORT(d0, d1, d2, d3, a, b: IN BIT;y: OUT BIT);

END mux4_to_1;ARCHITECTURE sample_1 OF mux4_to_1 IS

和例5.4比,没有需要中间信号 BEGIN y<= d0 WHEN a='0' AND b='0' ELSE d1 WHEN a='0' AND b='1' ELSE d2 WHEN a='1' AND b='0' ELSE d3 WHEN a='1' AND b='1';END sample_1

三,选择信号赋值语句

选择信号赋值语句可以根据一个表达式的不同取值,给信号或者信号数组赋以不同的结果。

选择信号赋值语句的格式如下:

WITH 表达式SELECT 信号名<= 信号值1 WHEN 表达式值1, 信号值2 WHEN 表达式值2,„„

信号值n WHEN others;例5.6 用信号选择语句描述数据选择器。ENTITY mux4_to_1 IS PORT(d0, d1, d2, d3, a, b: IN std_logic;y: OUT std_logic);END mux4_to_1;ARCHITECTURE sample_2 OF mux4_to_1 IS BEGIN WITH a&b SELECT y<= d0 WHEN “00”, d1 WHEN “01”, d2 WHEN “10”, d3 WHEN “11”, 'X' WHEN OTHERS;END sample_2;

5.4.2 顺序描述语句

并行信号传输语句主要描述硬件电路或系统中信号的传送过程。同时,VHDL还支持顺序描述语句,主要使用于对电路和系统的性能描述。

顺序描述语句的执行就和一般程序设计语言中语句相似,是按照语句的顺序依次执行的。前一条语句的结果会影响到下一条语句的执行。

一、PROCESS语句

132页

尽管PROCESS语句本身是并行描述语句,可以和其他并行语句同时执行,但是PROCESS语句内部的语句都是顺序语句。

PROCESS语句一旦开始执行,就要依次执行其中的顺序语句,一直到最后的END PROCESS为止。

语句的格式如下:

PROCESS(信号1,„,信号k)

用到的信号 变量说明(定义);其他说明;BEGIN 顺序语句 „„ 顺序语句

END PROCESS;

二、分支语句

两分支IF语句的格式:

多分支IF语句的格式:

IF 布尔表达式

IF 布尔表达式 THEN 顺序语句

THEN 顺序语句 ELSE 顺序语句

ELSIF 布尔表达式 END IF;

THEN顺序语句

ELSE 顺序语句 END IF;

例5.7 反向器的顺序描述。ENTITY inverter IS PORT(x: IN BIT;y: OUT BIT);END inverter;ARCHITECTURE behave OF inverter IS BEGIN PROCESS(x)

只用到x作为判断条件 BEGIN IF(x='0')THEN y<=‘1';ELSE y<=‘0';END IF;END PROCESS;END behave;

三、另外一种分支语句CASE语句

CASE语句是从多个可能的分支中选择一个分支进行操作。

语句的格式如下:

CASE 表达式IS

WHEN 值1 => 顺序语句1 „„

WHEN 值k => 顺序语句k

WHEN OTHERS =>顺序语句k+1 END CASE;

例5.8 四选一数据选择器的顺序描述。ENTITY mux4_1 IS PORT(a, b, i0, i1, i2, i3: IN BIT;y: OUT BIT);END mux4_1;ARCHITECTURE behave OF mux4_1 IS SIGNAL sel bit_vector(1 DOWNTO 0);BEGIN sel<=b & a;PROCESS(sel, i0, i1, i2, i3)BEGIN CASE sel IS WHEN “00” => y<=i0;WHEN “01” => y<=i1;WHEN “10” => y<=i2;WHEN “11” => y<=i3;END CASE;END PROCESS;END behave

四、循环语句

中提供了两种形式的循环语句:FOR循环和WHILE循环。FOR循环的格式如下:

FOR 变量IN 范围LOOP 顺序语句 „„ 顺序语句

END LOOP;

其中的“变量”和“范围”应该有相同的类型。例如变量是整型,范围可以是一个整数范围。如果变量是枚举型,则“范围”要限制在枚举类型所定义的取值范围内。WHILE循环的格式如下:

WHILE 布尔表达式LOOP 顺序语句 „„

顺序语句

END LOOP;

循环中的布尔表达式可以是逻辑表达式或者关系表达式。在FOR循环或者WHILE循环中都可以使用NEXT语句来结束本次循环,用EXIT语句来结束循环,到下一条顺序语句继续执行。它们的格式基本相同: NEXT WHEN 布尔表达式;EXIT WHEN 布尔表达式;

5.4.3 VHDL的描述风格

在VHDL中对这一类的描述称为“性能”描述(行为描述),性能描述中一定有PROCESS语句。

VHDL 还有另一种描述,称为“结构”描述。

1.性能描述(行为描述)

这种描述完全是从与非门输入和输出的逻辑关系出发,对与非门性能的一种描述。2.数据流描述(RTL描述)

建立在并行信号赋值语句基础上。当语句中任意一个输入信号的值发生改变时,赋值语句就被激活,从而认为数据从一个设计中“流入”,然后又“流出” 3.结构描述语句

结构描述是VHDL的三种描述方法之一。

结构描述的基础是部件:COMPONENT。所使用的部件应该是事先已经定义过的。可以直接取自某个VHDL库,也可以是用户自定义的存放在WORK库的部件。

所用部件所在的库或程序包,必须在程序开始前声明。

在结构描述中所使用的部件必须首先声明。部件的声明在ARCHTECTURE的声明部分进行。

部件声明语句(Component Declaration)的格式如下:

COMPONENT 部件名

PORT(信号名: 类别 信号类型;„„

信号名: 类别 信号类型);END COMPONENT;部件描述语句

例5.9 全加器的结构描述。

使用前面已经定义过的半加器 ENTITY full_adder IS PORT(x, y, cin: IN BIT;sum, carry: OUT BIT);END full_adder;ARCHITECTURE struct OF full_adder IS COMPONENT half_adder

部件声明 PORT(a, b: IN BIT;s, c0: OUT BIT);END COMPONENT;SIGNAL h1_s, h1_c, h2_c: BIT;BEGIN h1: half_adder PORT MAP(x, y, h1_s, h1_c);

部件描述

(2)下降沿描述: 其物理意义是指时钟信号的逻辑值是从‘1’跳变到‘0’

描述1:

PROCESS(clk)BEGIN IF(clk’EVENT AND clk = ‘0’)THEN ┇

END PROCESS;

PROCESS(clk)BEGIN WAIT UNTIL clk = ┇

END PROCESS; 描述2:

0’; ‘

第三篇:EDA期末复习总结1

面向FPGA的开发流程

综合:由高层次描述自动转换为低层次描述的过程。是EDA技术的核心。

综合器:能够自动将一种设计表示形式向另一种设计表示形式转换的计算机程序。Xilinx公司推出FPGA;Altera公司推出EPLD,Lattice公司提出CPLD和ISP。

VHDL程序的基本结构:库、程序包,实体,结构体,进程,配置。VHDL的本质:并行语句。

不完整IF语句形成时序逻辑电路,完整IF语句形成组合逻辑电路。

常用逻辑门符号与现有国标符号的对照:

第三章VHDL的基础

3.1 VHDL基本语法

实体:描述器件的端口构成及信号端口的基本性质。表达式:entity e_name is port(p_name:port_m data_type;

„„

p_namei:port_mi data_type); end entity e_name;

结构体:描述电路器件的内部逻辑功能和电路结构。

表达式:architecture arch_name of e_name is [说明语句] „„定义或说明数据对象、数据类型、元件调用声明 begin(功能表述语句)end architecture arch_name;

一个可综合的、完整的VHDL程序结构必须包含实体和结构体两个最基本的语言结构。把一个完整的可综合的VHDL程序设计称为设计实体,而其程序代码常被称为VHDL的RTL描述。

4种端口模式:IN,OUT,INOUT,BUFFER。

4种数据类型:integer(整数),boolean(逻辑),std_logic,bit。bit的取值范围是‘1’和‘0’,可以参与逻辑运算或算术运算,其结果仍是位的数据类型。

赋值符号“<=”:

例如y<=a,表示输入端口a的数据向输出端口y传输,或信号a向信号y赋值。赋值操作并非立即发生,而要经历一个模拟器的最小分辨时间δ,δ可以看作实际电路存在的固有延时量。“<=”两边的信号的数据类型必须一致。

数据比较符号“=”:

例如s=‘0’,“=”没有赋值的含义,只是一种数据比较符号。S=‘0’输出结果的数据类型是布尔数据类型BOOLEAN,BOOLEAN数据类型取值是TRUE(真)和FALSE(伪),VHDL仿真器和综合器分别用‘1’和‘0’表达TRUE和FALSE,布尔数据不是数值,只能用于逻辑操作或条件判断。

7种逻辑操作符:and与、or或、not非、nand与非、nor或非、xor异或、xnor同或。

逻辑操作符所要求的操作数的数据类型有3种,即bit、boolean和std_logic。

条件语句:用IF_THEN_ELSE表示VHDL顺序语句。

IF语句表达式:if 条件句 then 顺序语句 else 顺序语句 end if

WHEN_ELSE 条件信号赋值语句:一种并行赋值语句

表达式:赋值目标<=表达式 WHEN 赋值条件 ELSE 例:z<= a when p1=’1’ else

表达式 WHEN 赋值条件 ELSE b when p2=’1’ else

„ c;

表达式; 条件信号赋值语句的第一句具有最高赋值优先。

进程语句:由Process引导的语句: 表达式:Process(a,b,s)

在VHDL中,所有合法的顺序语句都必须放入进程语句中。在结构体中,可以有很多进程语句,所有的进程语句都是并行语句,而由任一进程Process引导的语句结构属于顺序语句。进程语句定义的是变量。描述数字电路时,推荐使用Process语句。

文件取名和存盘

文件名可以由设计者任意给定,但文件后缀扩展名必须是“.vhd”,建议程序的文件名尽可能与该程序的实体名一致,文件名原则上不分大小写,但推荐用小写。

3.2 时序电路描述

VHDL主要通过对时序器件功能和逻辑行为的描述,而非结构上的描述使得计算机综合出符合要求的时序电路。

标准逻辑位数据类型STD_LOGIC:

STD_LOGIC定义:TYPE STD_LOGIC IS(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)

使用库和程序包的一般定义表达式: LIBRARY <设计库名>;

USE <设计库名>.<程序包名>.ALL;

信号定义:signal q1:std_logic 数据对象:信号(signal)、变量(variable)、常量(constant)

信号属性函数:EVENT。所谓信号属性函数是用来获得信号行为信息的函数。测定信号的跳变情况:<信号名>’EVENT 上升沿检测表式为:<信号名>’EVENT AND <信号名>=’1’ 时钟上升沿检测表式为:clk’event and clk=‘1’ 确保clk的变化是一次上升沿的变化:

if clk'event and(clk='1')and(clk'last_value='0')if clk='1' and clk'last_value='0' 3.3

※CASE语句:

case语句属于顺序语句,因此必须放在进程语句中使用。

一般表达式:case <表达式> is when <选择值或标识符>=><顺序语句>;„;<顺序语句>;when <选择值或标识符>=><顺序语句>;„;<顺序语句>;„

when others=><顺序语句>;--一般用null,表示不作任何操作。end case;

并置操作符&:表示将操作数或是数组合并起来形成新的数组。如abc<=a&b。

例化语句:

第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,其表达式为:component 元件名

port(端口名表);

end component 第二部分则是此元件与当前设计实体中元件间及端口的连接说明,语句的表达式为:

例化名:元件名port map([端口名=>]连接端口名,„);

相关语法说明:

1、变量

variable cqi:std_logic_vector(3 downto 0);变量与信号的区别: 信号:全局量

用于architecture、package、entity中 赋值符号为<= 变量:局部量

用于process、function、procedure中 赋值符号为:=

2、省略赋值操作符(others=>x)

全加器的VHDL描述(书P55)

3.6 数据对象

数据对象: 常量(constant):代表数字电路中电源、地和恒定的逻辑值。

常数定义语句:

变量(variable):代表暂存某些值的载体,常用于描述算法。

变量定义语句:

信号(signal):代表物理设计中的某硬件连接线,包括输入输出端口。

信号定义语句:

信号赋值语句:

变量与信号的差异(总结): 1)赋值方式的不同:

变量:= 表达式;

信号 < = 表达式;

2)硬件实现的功能不同:

信号代表电路单元、功能模块间的互联,代表实际的硬件连线;

变量代表电路单元内部的操作,代表暂存的临时数据。

3)有效范围的不同:

信号:程序包、实体、结构体;全局量。

变量:进程、子程序;局部量。4)赋值行为的不同:

信号赋值延迟更新数值、时序电路;

变量赋值立即更新数值、组合电路。

3.7 IF语句概述

※IF语句:

3.8 进程语句归纳

Process语句结构的一般表达格式如下:

[进程标号:] process [(敏感信号参数表)] [is] [进程说明部分](定义该进程所需的局部数据环境)begin 顺序描述语句(描述该进程的行为)end process [进程标号];

第四章QuartusⅡ的使用

建立工作库文件夹和编辑设计文件,创建工程,编译前设置,全程编译,时序仿真,应用RTL电路图观察器,引脚锁定,配置文件下载,编程配置器件,Signal TapⅡ实时测试。(文本编辑,功能仿真,逻辑综合,布局布线,时序仿真,编程下载)

第五章VHDL状态机

用户自定义数据类型是用类型定义语句TYPE和子类型定义语句SUBTYOPE实现的

5.1 状态机设计相关语句

TYPE类型定义语句:

VHDL中的枚举数据类型是一种特殊的数据类型,它们是用文字符号来表示一组实际的二进制数。设计者在状态机的设计中,为了利于阅读、编译和VHDL综合器的优化,往往将表征状态的二进制数组用文字符号来代替,即所谓的状态符号化。

枚举类型也可以直接用数值来定义,但必须使用单引号。枚举数据,在综合过程中,都将转化为二进制代码。编码顺序是默认的。编码数值:一般将第一个枚举量编码为‘0’或“0000”,以后依次加1。编码的位矢量长度根据实际情况决定。

子类型subtype是由type所定义的原数据类型的一个子集,它满足原数据类型的所有约束条件,原数据类型称为基本数据类型。子类型并没有定义新的数据类型。

子类型subtype的语句格式:

5.1.3

状态机的结构

最一般最常用的状态机通常包括:说明部分,主控时序进程,主控组合进程,辅助进程。

现态信号current_state,次态信号next_state。

真值表:

5.2 Moore状态机设计

从状态机的信号输出方式上分,有Moore型和Mealy型两类状态机。

Moore型状态机的输出仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟使状态变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。

Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。

从输出时序上看,Moore属于同步输出状态机,而Mealy属于异步输出状态机。

摩尔(Moore)型状态机的输出仅与当前状态有关:

异步复位:目的在加电时建立一个初始状态,并避免非法状态;

摩尔(Moore)型状态机真值表:

多进程Moore状态机的输出信号是由组合电路发出的,所以在一些特定情况下难免出现毛刺现象。如果这些输出信号用作时钟信号,极易产生错误的操作,需尽力避免。单进程Moore状态机较容易构成能避免出现毛刺现象的状态机。

5.3 Mealy 状态机

Mealy状态机的输出不仅是当前状态的函数,也是输入信号的函数。

Mealy 状态机真值表:

第七章VHDL语句

7.1 VHDL顺序语句(Sequential)

硬件执行:并行执行(VHDL本质)仿真执行:顺序执行、并行执行

分为两大类:顺序(Sequential)描述语句、并行(Concurrent)描述语句

顺序语句只能用在进程与子程序中。可描述组合逻辑、时序逻辑。常用的顺序描述语句:赋值语句; if语句;case语句;loop语句; next语句;exit语句;子程序调用语句; return语句;wait语句;null语句。

7.1.4 LOOP语句

LOOP语句就是循环语句,它可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。

LOOP语句的常用表达方式有两种。

(1)单个LOOP语句,其语法格式如下:

[LOOP标号:] LOOP

顺序语句

END LOOP [LOOP标号:];

该语句形式的循环方式需引入其它控制语句(如EXIT语句)才能确定。

(2)FOR_LOOP语句,其语法格式如下:

[LOOP标号:] FOR 循环变量,IN 循环次数范围 LOOP 顺序语句

END LOOP [LOOP标号:];

7.1.5 NEXT 语句

NEXT语句主要用在LOOP语句执行中进 行有条件的或无条件的转向控制,它的语句格式有3种。

(1)第一种语句格式:NEXT;

当LOOP内的顺序语句执行到NEXT语句时,即刻无条件终止当前的循环,跳回到本次循环LOOP语句处,开始下一次循环。

(2)第二种语句格式:NEXT LOOP标号;

在当有多重LOOP语句嵌套时,可以跳转到指定标号的LOOP语句处,重新开始执行循环操作。

(3)第三种语句格式:NEXT LOOP标号 WHEN 条件表达式 ;

分句“WHEN 条件表达式”是执行NEXT语句的条件,如果条件表达式的值为TRUE,则执行NEXT语句,进入跳转操作,否则继续向下执行。但当只有单层LOOP循环语句时,关键词NEXT和WHEN之间的“LOOP标号”可以省去。

7.1.6 EXIT语句

EXIT 语句为LOOP语句的内部循环控制语句,将结束循环状态。

EXIT;--第一种语句格式 EXIT LOOP标号;--第二种语句格式

EXIT LOOP标号 WHEN 条件表达式 ;--第三种语句格式

NEXT语句与EXIT语句的格式与操作功能非常相似,区别是: NEXT语句是跳向LOOP语句的起始点,而EXIT语句则是跳向LOOP语句的终点。

7.1.7 WAIT语句

在进程中,当执行到WAIT(等待)语句时,运行程序将被挂起,直到满足此语句设置的结束挂起条件之后,才重新开始执行进程中的程序。

wait--无限等待

wait on 信号表--敏感信号等待语句 wait until 条件表达式--条件满足(可综合)wait for 时间表达式--时间到,超时等待语句

1、wait on 语句

格式:wait on 信号[,信号];

2、wait until 语句(可综合)

格式:wait until 表达式;

当表达式的值为“真”时,进程被启动,否则进程被挂起。

三种表达方式:

wait until 信号 = value;wait until 信号’event and 信号 = value;wait until not(信号’stable)and 信号 = value;时钟信号 clk 的上升沿的描述:

wait until clk = ‘1’;

wait until rising_edge(clk);wait until clk’event and clk = ‘1’;

wait until not(clk’stable)and clk = ‘1’;

7.1.9

return 语句

return 语句只能用于子程序中,并用来终止一个子程序的执行。

格式:return [表达式];

分为:1)return ;

用于过程,只是结束过程,不返回任何值。2)return 表达式;

用于函数,并且必须返回一个值。

7.1.9

空操作语句

空操作语句不完成任何操作,它唯一的功能就是使逻辑运行流程跨入下一步语句的执行。NULL常用于CASE语句中,为满足所有可能的条件,利用NULL来表示剩余条件下的操作行为。

格式: NULL;

7.2

并行语句(Concurrent Statements)

结构体中可综合的并行描述语句有:

并行信号赋值语句,条件信号赋值语句,选择信号赋值语句,进程语句,块语句,元件例化语句,生成语句,参数传递映射语句,过程调用语句,端口说明语句。

使用格式: ARCHITECTURE 结构体名 OF 实体名 IS 说明语句

BEGIN 并行语句

END ARCHITECTURE 结构体名

名词解释

EDA--------电子设计自动化(Electronic Design Automation)VHDL------超高速集成电路硬件描述语言

(Very-High-Speed Integrated Circuit HardwareDescription Language)CPLD------复杂可编程逻辑器件(Complex Programmable Logic Device)EPLD--------电可编程逻辑器件(Electrically Programmable Logic Device)FPGA------现场可编程门阵列(Field-Programmable Gate Array)

ASIC-------专用集成电路(Application Specific Integrated Circuit)LUT---------显示查找表(Look-Up-Table)ISP----------在系统可编程技术(In_System Programmability Programming)

第四篇:EDA总结

一、有关概念

1.ASIC全称:专用集成电路; 2.FPGA:现场可编程门阵列 3.CPLD:复杂可编程逻辑器件; 4.VHDL全称:硬件描述语言; 5.全定制; 6.半定制;

7.IP核;IP就是知识产权核或知识产权模块的意思

8.综合(器);综合就是将电路的高级语言(如行为描述)转换为低级的,可与FPGA/CPLD的基本结构相映射的网表文件或程序。

9.适配(器);适配器也称结构综合器,它的功能是将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。

10.功能仿真;是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求

11.时序仿真;就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。

12.编程下载;把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件测试和验证 13.PROM;可编程只读存储器 14.PLA;可编程逻辑阵列 15.PAL;可编程阵列逻辑 16.查找表; 17.乘积项;

18.实体;VHDL实体作为一个设计实体(独立的电路功能结构)的组成部分,其功能是对这个设计实体与外部电路进行接口描述。

19.结构体;结构体是实体所定义实体中的一个组成部分。结构体描述设计实体的内部结构和外部设计实体端口间的逻辑关系。

20.元件例化;元件例化意味着在当前结构体内定义了一个新的设计层次,这个设计层次的总称叫元件,但它可以以不同的形式出现。?? 21.时钟进程; 22.三态; 23.线与; 24.数据对象;

25.变量;变量是一个局部量,只能在进程和子程序中使用,变量的赋值是立即发生的,不存在任何延时行为。

26.信号;信号是硬件系统的基本数据对象,它的性质类似于连接线。信号可以作为设计实体中并行语句模块间的信息交流通道

27.Moore型状态机;异步输出状态机,输出仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来。

28.Mealy型状态机;同步输出状态机,输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。不依赖于时钟的同步。

注意:

1.<= 对信号SIGNAL的赋值 := 是对变量variable的赋值

2.程序的实体名必须和文件名一致,例1中二输入与门的文件名必须为yumen

一、有关概念

ASIC全称;FPGA和CPLD全称;VHDL全称;全定制;半定制; IP核;综合(器);适配(器);功能仿真;时序仿真;编程下载;PROM;PLA;PAL;查找表;乘积项;实体;结构体;元件例化;时钟进程;三态;线与; 数据对象;变量;信号; Moore型状态机;Mealy型状态机。

二、程序分析及设计

1、二输入与门的VHDL语言设计。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY yumen IS

PORT(a, b : IN BIT;

y : OUT BIT);END ENTITY yumen;ARCHITECTURE one OF yumen IS BEGIN y <= a AND b;END ARCHITECTURE one;

2、带有异步复位和同步时钟使能的6进制计数器VHDL语言设计。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jinzhi IS PORT(CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);COUT : OUT STD_LOGIC);END jinzhi;ARCHITECTURE behav OF jinzhi IS BEGIN PROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN IF RST = '1' THEN CQI :=(OTHERS =>'0');--计数器复位 ELSIF CLK'EVENT AND CLK='1' THEN--检测时钟上升沿 IF EN = '1' THEN--检测是否允许计数 IF CQI < 5 THEN CQI := CQI + 1;--允许计数

ELSE CQI :=(OTHERS =>'0');--大于5,计数值清零 END IF;END IF;END IF;IF CQI = 5 THEN COUT <= '1';--计数大于5,输出进位信号 ELSE COUT <= '0';END IF;CQ <= CQI;--将计数值向端口输出 end PROCESS;END behav;

3、用VHDL语言设计2选1数据选择器。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY erxuanyi IS PORT(a, b, s: IN BIT;y : OUT BIT);END erxuanyi;ARCHITECTURE one OF erxuanyi IS BEGIN PROCESS(a,b,s)BEGIN IF s = '0' THEN y <= a;ELSE y <= b;END IF;END PROCESS;END;

4、边沿型T、D触发器VHDL语言设计。--D触发器

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF IS PORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF IS SIGNAL Q1 : STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D;END IF;END PROCESS;Q <= Q1;END bhv;

--T触发器

有clk且为1的时候,T与当前状态异或

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tff IS PORT(CLK : IN STD_LOGIC;T : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF tff IS SIGNAL Q1 : STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 XOR T;END IF;END PROCESS;Q <= Q1;END bhv;

5、带并行置数的8位右移移位寄存器VHDL语言设计。

library ieee;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS PORT(CLK,LOAD: IN STD_LOGIC;

DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

QB:OUT STD_LOGIC);END SHFRT;

ARCHITECTURE BEHAV OF SHFRT IS BEGIN PROCESS(CLK,LOAD)

VARIABLE REG8: STD_LOGIC_VECTOR(7 TO 0);BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF LOAD='1' THEN REG8:=DIN;

ELSE REG8(6 DOWNTO 0):=REG8(7 DOWNTO 1);

END IF;

END IF;

QB<=REG8(0);END PROCESS;END BEHAV;--说明:当clk有上升沿,而且load为1的时候把din的值赋给REG8,如果clk有上升沿,而且load为0的时候把REG8的高7为赋给低7位(注意此时最高位不变)6、1位半加器VHDL语言设计。(布尔逻辑描述)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY banjia IS PORT(a,b : IN STD_LOGIC;co,so : OUT STD_LOGIC);END ENTITY banjia;ARCHITECTURE fh1 OF banjia IS BEGIN so <= not(a xor(not b));co <= a and b;END ARCHITECTURE fh1;

7、用VHDL语言设计实现四选一数据选择器。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sixuan IS PORT(a, b, c , d: IN BIT;

s: IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT BIT);END sixuan;ARCHITECTURE one OF sixuan IS BEGIN PROCESS(a,b,c,d,s)BEGIN case s(1 DOWNTO 0)is when “00” => y <= a;when “01” => y <= b;when “10” => y <= c;when “11” => y <= d;when others => null;END case;END PROCESS;END;

8、用VHDL语言实现三态门设计。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY santai IS port(enable : IN STD_LOGIC;datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0);dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END santai;ARCHITECTURE bhv OF santai IS BEGIN PROCESS(enable,datain)BEGIN IF enable = '1' THEN dataout <= datain;ELSE dataout <=“ZZZZZZZZ”;END IF;END PROCESS;END bhv;

9、设有VHDL描述的半加器h_adder和或门or2,试通过层次化设计思想设计由半加器和或门构成的一位二进制全加器的VHDL程序。全加器f_adder电路结构组成图如下所示。

半加器h_adder LIBRARY IEEE;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 BEGIN so <=(a OR b)AND(a NAND b);co <= NOT(a NAND b);END ARCHITECTURE fh1;

或门 or2a 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;

元件例化adder library ieee;use ieee.std_logic_1164.all;entity adder is port(ain,bin,cin:in std_logic;

cout,sum :out std_logic);end entity adder;architecture fd1 of adder is component h_adder

port(a,b:in std_logic;

co,so:out std_logic);end component;component or2a

port(a,b:in std_logic;

c:out std_logic);end component;signal d,e,f:std_logic;begin u1 : h_adder port map(a=>ain,b=>bin,co=>d,so=>e);u2 : h_adder port map(a=>e,b=>cin,co=>f,so=>sum);u3 : or2a port map(a=>d,b=>f,c=>cout);end architecture fd1;

第五篇:EDA基础总结

EDA基础总结

综述部分

1.EDA的中文全称为电子设计自动化,英文全名为Electronic Design Automation。2.EDA平台常用的两种输入电路的方法是:电路原理图输入法、HDL输入法。3.EDA平台工作流程:电路输入、综合优化、功能仿真、布局布线、门级仿真。

数字电路部分

1.EDA中常用的仿真语言为Verilog和VHDL。

2.VHDL其英文全名为VHSIC Hardware Description Language,而VHSIC则是Very High Speed Intergeraterd Circuit的缩写词,意为甚高速集成电路,故VHDL其准确的中文译名为甚高速集成电路的硬件描述语言。

3.Verilog HDL其英文全名为Verilog Hardware Decription Language,HDL中文译名为硬件描述语言。

4.Verilog和VHDL的比较

共同点:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。

不同点:Verilog在系统级抽象方面略差,VHDL在门级开关电路方面略差。

5.软核、固核和硬核

软核:功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog模型。

固核:在某一种现场可编程门列器件上实现的经验证是正确的,且总门数在5000门以上的电路结构编码文件。

在某一种专用集成电路工艺的器件上实现的,经验证是正确的,且总门数在5000门以上的电路结构版图掩膜。6.自顶向下(Top Down)设计

7.自底向上(Down Top)设计

8.名词解释:

ASIC:Application Specific Integrated Circuit,专用集成电路。

FPGA:Field Programmable Gate Array,现场可编程门阵列。PLD:Programmable Logic Device,可编程逻辑器件。

Verilog编程题: 数据比较器(2位)//数据比较器

module compare(equal, a, b);input a,b;output equal;reg equal;always @(a or b)if(a == b)equal = 1;else equal = 0;endmodule

//数据比较器测试代码 `timescale 1ns/1ns `include “./1-1.v” module t;reg a,b;wire equal;initial begin a=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0;#100 a=0;b=0;#100 $stop;end

compare m(.equal(equal),.a(a),.b(b));endmodule

数据比较器(8位)

module compare8(equal, a, b);input [7:0]a, b;output equal;reg equal;always @(a or b)if(a > b)begin equal = 1;end else begin equal = 0;end endmodule 分频器

module half_clk(reset, clk_in, clk_out);input clk_in, reset;output clk_out;reg clk_out;

always @(posedge clk_in)begin if(!reset)clk_out = 0;else clk_out = ~clk_out;end endmodule

10M时钟分频为500K module fdivision(RESET, MB, KB);input MB, RESET;output KB;reg KB;reg [7:0] j;

always @(posedge MB)if(!RESET)begin KB <= 0;j <= 0;end else begin if(j == 19)begin j <= 0;KB <= ~KB;end else j <= j+1;end endmodule

译码电路

`define plus 3'd0 `define minus 3'd1 `define band 3'd2 `define bor 3'd3 `define unegate 3'd4

module alu(out, opcode, a, b);output[7:0] out;reg[7:0] out;input[2:0] opcode;input[7:0] a,b;

always @(opcode or a or b)begin case(opcode)`plus: out = a + b;`minus: out = a-b;`band: out = a & b;`bor: out = a | b;`unegate: out = ~a;default: out = 8'hx;endcase end endmodule

八路数据选择器

module selecting8(addr, in1, in2, in3, in4, in5, in6, in7, in8, dataout, reset);input [2:0] addr;input [3:0] in1,in2,in3,in4,in5,in6,in7,in8;input reset;output [3:0] dataout;reg [3:0] dataout;

always @(addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or reset)begin if(!reset)case(addr)3'b000: dataout = in1;3'b001: dataout = in2;3'b010: dataout = in3;3'b011: dataout = in4;3'b100: dataout = in5;3'b101: dataout = in6;3'b110: dataout = in7;3'b111: dataout = in8;endcase else dataout = 0;end endmodule

逻辑运算电路

module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;

always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end

function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule

module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;

always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end

function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule

高速排序组合逻辑

module sort4(ra, rb, rc, rd, a, b, c, d);output[3:0] ra, rb, rc, rd;input[3:0] a, b, c, d;reg[3:0] ra, rb, rc, rd;reg[3:0] va, vb, vc, vd;

always @(a or b or c or d)begin {va, vb, vc, vd} = {a, b, c, d};sort2(va, vc);sort2(vb, vd);sort2(va, vb);sort2(vc, vd);sort2(vb, vc);{ra, rb, rc, rd} = {va, vb, vc, vd};end

task sort2;input[3:0]x, y;reg[3:0] tmp;if(x > y)begin tmp = x;x = y;y = tmp;end endtask endmodule

检测5位二进制序列10010 module seqdet(x, z, clk, rst, state);input x, clk, rst;output z;output[2:0] state;reg[2:0] state;wire z;

parameter IDLE = 'd0, A = 'd1, B = 'd2, C = 'd3, D = 'd4, E = 'd5, F = 'd6, G = 'd7;

assign z =(state == E && x == 0)? 1:0;

always @(posedge clk)if(!rst)begin state <= IDLE;end else case(state)IDLE: if(x == 1)begin state <= A;end A: if(x == 0)begin state <= B;end B: if(x == 0)begin state <= C;end else begin state <= F;end C: if(x == 1)begin state <= D;end else begin state <= G;end D: if(x == 0)begin state <= E;end else begin state <= A;end E: if(x == 0)begin state <= C;end else begin state = A;end F: if(x == 1)begin state <= A;end else begin state <= B;end G: if(x == 1)begin state <= F;end default: state = IDLE;endcase endmodule

模拟电路部分

1.目前,集成电路最常用的材料是单晶硅。

2.集成电路的生产由设计、制造、封装三部分组成。

3.集成电路中基片主要制作工艺为:光刻、扩散、注入、刻蚀、键合。

4.集成电路中基片的制造步骤为:光刻、扩散、注入、刻蚀。

5.衡量集成电路产业水平的两个主要参数为:硅晶圆片直径和光刻精度(特征尺寸)。这两个参数在业界达到的水平为:硅晶圆片直径12英寸(300mm),光刻精度0.13um。主流水平为:硅晶圆片直径200mm,光刻精度0.18um。

6.模拟电路中常用的仿真算法是SPICE,英文全名为Simulation Program with Integrated Circuit Emphasis。

7.世界上设计EDA软件实力最强的两个公司为Cadence和Synopsys。其中,Cadence的优势为电路布局布线,Synopsys的优势为逻辑综合仿真。

8.WorkBench是加拿大IIT公司退出的电子线路仿真软件。它可以对模拟、数字和模拟/数字混合电路进行仿真,克服了传统电子产品的设计受实验室客观条件限制的局限性,用虚拟的元件搭接各种电路,用虚拟的仪表进行各种参数和性能指标的测试。特点如下:(1)系统集成度高,界面直观,操作方便。(2)具备模拟、数字及模拟/数字混合电路仿真。(3)提供较为丰富的元器件库。(4)电路分析手段完备。(5)输出方式灵活。(6)兼容性好。9.SPICE语言举例: EXAMPLE

VCC 8 0 12

**** 文件名 任意名都可以 但必须要有****

**** 电源正极接于节点8 负极接于0 电压为12V **** VEE 0 9 12

**** 电源正极接于节点0,负接接于节点9,电压为12V;**** VIN 1 0 AC 1 SIN(0 0.1 5MEG)

**** 信号源VIN 接于1 和接点0;交流1V 进行交流分析 同时加一个正弦信号 直流偏置为0,振幅为0.1V频率为5M的交流信号源,进行瞬态分析;**** RC1 8 4 10K

RC2 8 5 10K

RS 2 1 1K

RS1 8 7 20K

RS2 3 0 1K

**** 电阻RC1 分别接于节点8 节点4;阻值为10K;**** **** 电阻RC2 分别接于节点8 节点5;阻值为10K;**** **** 电阻RS 分别接于节点1 节点0;阻值为1K;**** **** 电阻RS1 分别接于节点8 节点7 阻值为20K;**** **** 电阻RS2 分别接于节点3 节点0 阻值为1K;**** Q1 4 2 6 MOD1

**** 三极管Q1 CBE 分别接于节点 4 2 6 模型为MOD1**** Q2 5 3 6 MOD1

**** 三极管Q2 CBE 分别接于节点 5 3 6 模型为MOD1**** Q3 6 7 9 MOD1

**** 三极管Q3 CBE 分别接于节点 6 7 9 模型为MOD1**** Q4 7 7 9 MOD1

**** 三极管Q4 CBE 分别接于节点 7 7 9 模型为MOD1****.OP

**** 求出直流工作点.本电路共有9个节点;温度值为27度;****.DC VIN-.15.15.01

**** DC为直流分析语句,分析输入电压从-0.15V到0.15V扫描特性,每0.1V作一次分析;****.PRINT DC V(4)V(5)

****.PRINT 为打印语句,其中DC是打印直流内容,这里规定打印节点4和5上的电位,既相对地参考点的电压随输入的变化关系;****.PLOT DC V(4)V(5)

****.PLOT为绘图语句,其中DC表示绘制直流分析的传输特性,说明是绘制V(4)V(5)的输出电压和VIN关系曲线;****.TF V(5)VIN

****.TF是转移函数分析语句,该句表示计算直流分析时,小信号输出电压V(5)和输入电压VIN的转移函数值,输入电阻和输出电阻;****.AC DEC 10 25K 250MEG

****.AC是交流分析语句,是在规定的频率范围内从25K到250M进行频域分析DEC表示按数量级变化,10表示每一数量级中取的分析点数目;****.PRINT AC VM(5)VP(5)

**** 打印AC分析VM(5)VP(5)的取点数;****.PLOT AC VM(5)VP(5)

**** 绘制AC分析VM(5)VP(5)的取点数;****.TRAN 4N 100N 1N

****.TRAN是瞬态分析语句,并规定了打印或绘图时间增量为4N秒,计算终止时间为100N秒,打印或绘图开始时间1NS*;****.PRINT TRAN V(5)V(4)

****.打印出4.5点的电压随时间变化;****.PLOT TRAN V(5)V(4)

****.绘图出节点4.5的电压随时间变化;****.END

**** 结束语句...一定要有;****

下载EDA复习总结word格式文档
下载EDA复习总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    EDA基础知识总结

    VHDL有如下特点:①支持从系统级到逻辑门级电路的描述;②具有很强的硬件描述能力;③设计技术齐全、方法灵活、支持广泛;④对设计描述具有相对的独立性;⑤具有很强的移植能力;⑥易于......

    EDA总结题

    名词解释: EDA:electronic design auto mation 电子设计自动化 PLD:programmable logic device 可编程逻辑器件 LDPLD:低密度可编程逻辑器件 HDPLD:高密度可编程逻辑器件 PROM:pro......

    EDA期末总结7

    1章 PORT DOWNTO 0); (D:INSTD_LOGIC_VECTOR(11DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0) ); 1、常用的硬件描述语言有VHDL、Verilog、ABEL CLK ,STATUS : IN STD_......

    EDA实验总结(五篇材料)

    EDA 实验总结 系别:物理系 专业:电子信息科学与技术 姓名:马亚伟 学号:2010171135 在本学期短短6周的EDA实验学习中,我初步对这一新的领域有了一个较为系统的理解,也为我的专业学......

    EDA实训报告总结

    实训心得 短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得......

    EDA实验报告

    实验一:QUARTUS II 软件使用及组合电路设计仿真 实验目的: 学习QUARTUS II 软件的使用,掌握软件工程的建立,VHDL源文件的设计和波形仿真等基本内容。 实验内容: 1.四选一多路......

    EDA学习心得

    EDA 专业; 姓名;学号;学习心 得 刘华 201530220109 电气自动化技术 本学期对EDA技术的学习为我的专业知识学习打开了一个全新的窗口——微电子技术领域。对EDA技术,我更......

    EDA学习心得

    EDA 学习心得 姓名:贺鑫 学号:20081001164 班号:072085-10 在本学期短短5周的EDA学习中,我初步对这一新的领域有了一个较为系统的理解,也为我的专业学习打开了一个新的思路,那就......