EDA总结知识点Word格式文档下载.docx
《EDA总结知识点Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA总结知识点Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
![EDA总结知识点Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/11/6f4ea2f8-2307-4fac-b2e4-ea0b78a800f6/6f4ea2f8-2307-4fac-b2e4-ea0b78a800f61.gif)
主要的描述设计方法:
1)自顶向下
2)自底向上
3)混合方法。
综合器在接受VHDL程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关的工艺库的信息,以及获得优化综合的约束条件。
主要的约束条件有:
设计规则
时间约束
面积约束
通常我们要求时间约束的优先级高于面积约束。
本图可能出简答题:
传统的电子设计方法主要采用手工设计,主要缺点:
1)复杂电路的设计调试困难
2)查找和修改错误不便
3)不易管理设计过程中的大量文档
4)设计实现过程与具体的生产工艺直接相关,可移植性差;
5)只有设计出样机和‘生产出芯片才可以实测
EDA技术的优点:
1)采用硬件描述语言作为设计输入,具有保证设计过程中的正确性,可以降低设计成本,缩短设计周期。
2)库的引入
3)设计文档的管理
4)强大的系统建模、电路仿真功能。
5)具有自主知识产权
6)开发技术的标准化
6)开发技术的标准化,规范化和IP核的可重用性。
设计语言的标准化,不会由于设计对象的不同而改变;
EDA软件平台支持任何标准化的设计语言;
设计成果的通用性,良好的可移植性和可测性。
7)适用于高效率大规模系统设计的自顶向下设计方案
8)全方位利用计算机自动设计仿真和测试
9)对于设计者的硬件知识和硬件经验要求较低
10)与以CPU为主的电路系统相比较,EDA技术具有更好的高速性能。
11)纯硬件系统的高可靠性
1.7EDA设计流程
图形输入通常包括原理图输入、状态图输入和波形图输入三种常用方法。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于原综合器指定的目标器件系列。
通常,EDA软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由PPGA/CPLD供应商提供。
因为适配器的适配对象直接与器件的结构细节相对应。
时序仿真的仿真文件必须来自针对具体器件的综合器与适配器。
功能仿真过程不涉及任何具体器件的硬件特性
FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理。
通常的分类方法是:
(1)以乘积项结构方式构成逻辑行为的器件称为CPLD,如LATTICEISPLSI的系列、XILINX的XC9500系列、ALTERA的MAX7000S系列和LATTICE的MACH系列等。
以查表法结构方式构成逻辑行为器件称为FPGA,XILINX的SPARTAN、ALTERA的FLEX10K、ACEXIK或CYCLONE系列等。
EDA工具大致可以分为如下五个模块:
设计输入编辑器。
HDL综合器。
仿真器。
适配器(或布局布线器)。
下载器。
IP:
知识产权核或者知识产权模块。
IP分为软IP,固IP和硬IP
软IP--用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。
固IP--完成了综合的功能块。
硬IP--供设计的最终阶段产品--掩膜
第二章
可编程逻辑器件(PLD-programmableLogicdevices):
是一
种由用户编程以实现某种逻辑功能的新型逻辑器件。
PLD经历了从PROM,PLA,PAL,GAL,FPGA,ispLSI的过程。
Xilinx公司1985年推出了第一块现场可编程门阵列器件,最初3个完整的系列产品被命名为XC2000,XC3000和XC4000XC5000,XC6200和XC8100,而后又推出了spartan和virture系列。
Xilinx还有3种EPLD:
XC7200,XC7300和XC9500
Lattice成立于1983年,为EEPROM的创立者,发明了GAL器件,是低密度PLD的最大供应商。
20世纪90年代推出了ispLSI器件,实现了在系统可编程技术(ISP),有6个系列:
ispLSI1000、2000、3000、5000、6000和8000系列
Xilinx:
SRAM工艺叫FPGA;
FLASH工艺叫CPLD;
ALTERA:
MAX(基于EEROM),FLEX/APEX/ACEX/STRATIX系列(基于SRAM)均叫PLD。
Sram:
大部分FPGA器件都采用此种编程工艺。
该编程方式在编程速度快,编程要求上优越,但是编程信息存在RAM中后,掉电后信息丢失,再次上电需要再次配置,因而需要专门的器件来完成配置工作。
GAL,PLA,PAL,PMROM区别:
PROM只能用于组合逻辑电路的可编程,;
PLA的与或阵列均可编程,因此使得器件的运行速度下降;
可编程PAL器件,主要区别是或阵列固定,只有与阵列可编程;
GAL的输出部分增加了输出逻辑宏单元OLMC。
.逻辑阵列块LAB:
一个LAB由16个宏单元组成。
Max7000结构主要是由多个LAB组成的阵列以及它们之间的连线构成。
多个LAB通过可编程连线阵PIA和全局信号连接在一起,全局总线从所有的专用输入、I/O引脚和宏单元馈入信号。
CPLD(ComplexProgrammableLogicDevice)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以下是了解内容:
①CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。
换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
③在编程上FPGA比CPLD具有更大的灵活性。
CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;
FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。
④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
⑤CPLD比FPGA使用起来更方便。
CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。
而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。
这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。
CPLD又可分为在编程器上编程和在系统编程两类。
FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。
其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
FPGA,使用了另一种可编程逻辑的形成方法,即可编程的查找表(LookUpTable,LUT)结构,LUT是可编程的最小逻辑构成单元。
大部分FPGA采用基于SRAM(静态随机存储器)的查找表逻辑形成结构,就是用SRAM来构成逻辑函数发生器。
JTAG:
JTAG是英文“JointTestActionGroup(联合测试行为组织)”的词头字母的简写,该组织成立于1985年,是由几家主要的电子制造商发起制订的PCB和IC测试标准。
JTAG主要应用于:
电路的边界扫描测试和可编程芯片的在线系统编程。
Lattice公司CPLD器件系列ispLSI器件系列ispLSI1000E系列pLSI2000E/2000VL/200VE系列ispLSI5000V系列ispLSI8000/8000V系列
•.Xilinx公司的FPGA和CPLD器件系列Virtex-4系列FPGA.面向逻辑密集的设计:
Virtex-4LX面向高性能信号处理应用:
Virtex-4SX面向高速串行连接和嵌入式处理应用:
Virtex-4FX,XC9500系列CPLD..XilinxFPGA配置器件SPROM,SpartanⅡ器件系列
Altera公司FPGA和CPLD器件系列1.StratixII系列FPGA2.Stratix系列FPGA3.ACEX系列FPGA4.FLEX系列FPGA5.MAX系列CPLD6.Cyclone系列FPGA低成本FPGA7.CycloneII系列FPGA8.Altera宏功能块及IP核
上年考试内容:
第三章:
器件特点与选择
Stratix高端FPGA系列
——————————
Cyclone系列器件的结构与原理
补充知识:
1、DPA电路:
在FPGA中,动态相位调整(DPA)主要是实现LVDS接口接收时对时钟和数据通道的相位补偿,以达到正确接收的目的。
ALTERA的高端FPGA,如STRATIX(r)系列中自带有DPA电路,但低端的FPGA,如CYCLONE(r)系列中是没有的。
在LVDS输入接收时,时钟和数据的相位可能是不确定的,因此我们需要将时钟的相位作出调整,使得时钟能稳定的采集到输入数据。
工作的核心就是用锁相环PLL的相位调整功能,产生若干个时钟的不同相位,看哪些相位能准确的采集到输入数据,然后取窗口中间的一个时钟相位,作为正常工作时的采样时钟。
比如通过PLL产生0,45,90,135,……,315度8个相移的时钟,如果0,45,90度相移的时钟能正确采样到输入,那么最后选取中间相位,即45度的时钟作为采样时钟。
这样接口上具有最大的时序裕量,从而保证链路的可靠性。
2、HT技术:
HyperTransport是AMD在1999年提出的一种总线技术,随着AMD64位平台的发布和推广,HyperTransport应用越来越广泛,也越来越被人们所熟知。
3、电平TTL与LVDS的区别:
(1).TTL是单端电平标准;
LVDS是差分电平标准;
(2).TTL接口受到其摆幅、功耗的限制,应用场合是速度较低,很少见到TTL有应用于200MHz以上的场景;
LVDS摆幅小,信号跳变快,恒流源式结构决定其功耗随操作频率变化不明显,且差分信号的噪声容限更大,因此LVDS更适合于高速应用(1.5GHz甚至更高);
4、HSTL电平HSTL(HighSpeedTransceiverLogic)是由JEDEC(JointElectronDeviceEngineeringCouncil,属于电子工业协会EIA)在1995年正式制定的一种电路逻辑标准。
常用的电平标准有TTL:
5v、CMOS:
5V、LVTTL:
3,3V和2,5V、LVCMOS:
3,3V、ECL:
0V、PECL:
5V、LVPECL:
3,3V、RS232±
12-15V、RS485等,还有一些速度比较高的LVDS、GTL:
1,2V、PGTL:
1,5V、CML是内部做好匹配的一种电路,不需再进行匹配。
、HSTL、SSTL等。
⏹存储单元的介绍
(1)RLDRAM II(缩短读潜伏时间的动态随机存取器)
(2)DDR2 SDRAM(第二代双倍率同步动态随机存取器)
(3)QDRIISRAM四位数据率静态随机存取存储器
CPLD编程下载连接图
第七章LPM:
7位地址位宽深度为128(2的7次方),当数据位宽为8时指定单元的取值范围为128*8(=1024个单元)。
第三章VHDL设计初步
1、标识符(mux21a,one,a,b,)和关键字(IN,ELSE,END)不区分大小写。
2、调用底层文件必须放在同一个文件夹中。
U:
未初始化;
X:
强未知;
Z:
高阻态;
W:
弱未知;
L:
弱逻辑0;
H:
弱逻辑1;
-:
忽略
选择的条件值不能完全覆盖case语句中的表达式的值,最后最末一个条件语句用关键词others来表示,otehrs只能出现一次,必须在最后;
使用others避免综合器插入不必要的锁存器;
•并置操作符&
主要是将操作数或者是数组组合起来形成新的数组。
例如”AB”&
”CD”就表示“ABCD”;
‘0’&
’1’&
’1’的结果是“011”因此我们可以利用&
来组成新的数组,可以将一个单元素并置于一个数的左端或者右端形成更长的数组;
或者将两个数组并置成一个新的数组;
完整的条件语句只能构成组合逻辑电路;
利用不完整的条件语句的描述引进寄存器元件,从而构成时序电路的方式是vhdl描述时序电路最重要的途径。
4位二进制加法计数器设计
异步复位同步加载及时钟使能十进制加法计数器:
第五章VHDL设计进阶
•变量的赋值符号是:
=
•注意在进程和子程序的顺序语句中不允许定义信号。
进程中可以将信号列入敏感信号表,而不能将变量列入敏感信号表;
信号的赋值语句:
目标信号名<
=表达式;
目标信号获得的新的数据不是即时的,与变量不同。
有一个特定的延时。
•信号与变量的区别主要表现在接受与保持信号的方式和信息保持与传递的区域大小
•1)信号可以设置传输延时量,而变量不可以
•2)变量作为局部信息载体,只能在所定义进程中有效;
信号可作为模块间信息载体
•3)变量的设置有时候只是过渡,最后的信息传输和通信还是依靠信号;
•5.2.1含同步并行预置功能的8位移位寄存器设计
•
位矢中‘1’码个数统计电路设计
三态门的设计
Z在综合时属于一个不确定的值,不同的综合器可能会给出不同的结果;
Z必须大写,这是因为在IEEE库中对数据类型STD_LOGIC的预定义已经将高阻态确定为大写‘Z’。
3-8线译码器(要求会写)
【例5-20】
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYcoderIS
PORT(din:
INSTD_LOGIC_VECTOR(0TO7);
output:
OUTSTD_LOGIC_VECTOR(0TO2));
ENDcoder;
ARCHITECTUREbehavOFcoderIS
SIGNALSINT:
STD_LOGIC_VECTOR(4DOWNTO0);
BEGIN
PROCESS(din)
IF(din(7)='
0'
)THENoutput<
="
000"
;
ELSIF(din(6)='
100"
ELSIF(din(5)='
010"
ELSIF(din(4)='
110"
ELSIF(din(3)='
001"
ELSIF(din
(2)='
101"
ELSIF(din
(1)='
011"
ELSEoutput<
111"
ENDIF;
ENDPROCESS;
ENDbehav;
分频器只看偶分频。
第九章VHDL结构与要素
端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。
数据类型是指端口上流动的数据的表达格式或取值类型,VHDL要求只有相同数据类型的端口信号和操作数才能相互作用。
函数的语言表达格式如下:
FUNCTION函数名(参数表)RETURN数据类型;
--函数首
FUNCTION函数名(参数表)RETURN数据类型IS--函数体开始
•[说明部分;
]
•BEGIN
•顺序语句;
•ENDFUNCTION函数名;
--函数体结束
调用程序包:
•USE库名.程序包名.项目名;
•USE库名.程序包名.ALL;
•第一语句格式的作用是,向本设计实体开放指定库中的特定程序包内所选定的项目。
第二语句格式的作用是,向本设计实体开放指定库中的特定程序包内所有的内容。
•定义程序包的一般语句结构如下:
•--程序包首
•PACKAGE程序包名IS--程序包首开始
•程序包首说明部分;
•END[PACKAGE][程序包名];
--程序包首结束
•--程序包体
•PACKAGEBODY程序包名IS--程序包体开始
•程序包体说明部分以及包体内容;
•END[PACKAGEBODY][程序包名];
--程序包体结束
常用的四种库:
1、IEEE库2、STD库3、WORK库4、VITAL库
数码管的写法:
常用的预定义程序包:
1)STD_LOGIC_1164程序包2)STD_LOGIC_ARITH程序包3)STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包4)STANDARD和TEXTIO程序包
文字规则:
字符是用单引号引起来的ASCII字符,可以是数值,也可以是符号或字母,如:
‘R’,‘A’,‘*’,‘Z’。
而字符串则是一维的字符数组,须放在双引号中。
VHDL中有两种类型的字符串:
文字字符串和数位字符串。
X:
十六进制基数符号(0~F)O:
八进制基数符号
data1<
=B"
1_1101_1110"
--二进制数数组,位矢数组长度是9
data2<
=O"
15"
--八进制数数组,位矢数组长度是6
data3<
=X"
AD0"
--十六进制数数组,位矢数组长度是12
data4<
101_010_101_010"
--二进制数数组,位矢数组长度是12
data5<
--表达错误,缺B。
data6<
0AD0"
--表达错误,缺X。
VHDL的基本标识符就是以英文字母开头,不连续使用下划线“_”,不以下划线“_”结尾的,由26个大小写英文字母、数字0~9以及下划线“_”组成的字符串。
合法的标识符:
Decoder_1,FFT,Sig_N,Not_Ack,State0,Idle
字符类型通常用单引号引起来,如‘A’。
字符类型区分大小写,如‘B’不同于‘b’。
字符类型已在STANDARD程序包中作了定义。
时间只用于仿真不用于综合。
第十章:
VHDL基本语句
CASEselIS
WHEN0=>
z1<
='
1'
--当sel=0时选中
WHEN13=>
z2<
--当sel为1或3时选中
WHEN4To72=>
z3<
;
--当sel为2、4、5、6或7时选中
WHENOTHERS=>
z4<
--当sel为8~15中任一值时选中
ENDCASE;
变量赋值符号:
“:
=”,信号赋值符号:
“<
=”.
PACKAGEdata_typesIS--定义程序包
SUBTYPEdata_elementISINTEGERRANGE0TO3;
--定义数据类型
TYPEdata_arrayISARRAY(1TO3)OFdata_element;
ENDdata_types;
USEWORK.data_types.ALL;
--打开以上建立在当前工作库的程序包data_types
ENTITYsortIS
PORT(in_array:
INdata_array;
out_array:
OUTdata_array);
ENDsort;
ARCHITECTUREexmpOFsortIS
BEGIN
PROCESS(in_array)--进程开始,设data_types为敏感信号
PROCEDUREswap(data:
INOUTdata_array;
--swap的形参名为data、low、high
low,high:
ININTEGER)IS
VARIABLEtemp:
data_element;
BEGIN--开始描述本过程的逻辑功能
IF(data(low)>
data(high))THEN--检测数据
temp:
=data(low);
dat