考试题型:简答题,程序语句解释,程序填空,编程
EDA就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。
现代EDA技术的特征:1,、采用硬件描述语言进行设计2、逻辑综合与优化3、开放性和标准化4.、更完备的库。
数字系统设计技术:1、Topdown即自顶向下的设计。这种设计首先从系统设计下手,在顶层进行功能方框图的划分和结构设计。须经过“设计—验证—修改设计再验证”的过程,不断反复,直到结果能够实现所要求的功能,并在速度、功耗、价格和可靠性方面实现较为合理的平衡。2、Bottomup设计,即自底向上的设计,由设计者调用设计库中的元件(如各种门电路、加法器、计数器等) ,设计组合出满足自己需要的系统。不仅效率低、成本高而且易出错。
while循环语句的程序流程图IP:原来的含义是指知识产权、著作权,在IC设计领域指实现某种功能的设计。IP核(IP模块):指功能完整,性能指标可靠,已验证的、可重用的电路功能模块。IP复用:软IP--用V
HDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。固IP完成了综合的功能块。硬IP供设计的最终阶段产品:掩膜。基于IP复用的开发帮助设计者节省时间,缩短开发周期,避免重复劳动。
可编程逻辑阵列PLA,可编程与阵列或阵列,输出电路固定。可编程阵列逻辑PAL,可编程与阵列,或阵列输出电路固定。
FPGA是一种半定制的器件,器件内已做好各种逻辑资源,用户只需对器件内的资源编程连接就可实现所需要的功能。ASIC指用全定制的方法来实现设计的方式,它在最底层,即物理版图级实现设计,因此也称为掩膜ASCI。CPLD即复杂可编程逻辑器件,是从EPLD改进而来的。
逻辑综合:RTL级描述转换到逻辑门级(包括触发器)。版图综合或结构综合:从逻辑门表示转换到版图表示,或转换到PLD器件的配置网表表示。综合器是能够自动实现上述转换的软件工具,是能将原理图或HDL语言描述的电路功能转化为具体电路结构网表的工具。硬件综合器和软件程序编译器有本质区别:软件程序编译器是将C或汇编编写的程序编译为0/1代码流,而硬件综合器是将硬件描述语言编写的程序代码转化为具体的电路网表结构。适配器
也称为结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,并产生最终的可下载文件。仿真是对所设计电路的功能的验证。包括功能仿真、时序仿真。不考虑信号延时等因素的仿真称功能仿真。时序仿真是在选择了具体器件并完成了布局布线后进行的包含延时的仿真。(功能仿真与时序仿真有什么区别)编程是把适配后生成的编程文件装入到PLD器件中的过程或称为下载。(通常将对基于EEPROM工艺的非易失结构PLD器件的下载称为编程,将基于SRAM工艺结构的PLD器件的下载称为配置。)
数字系统设计的流程:1、设计输入包括原理图输入、硬件描述语言(HDL文本输入)2、综合3、适配4、仿真5、编程
EDA技术的发展趋势:1、超大规模集成电路的集成度和工艺水平不断提高/2、市场对系统的集成度不断提出更高的要求3、高性能的EDA工具,其自动化和智能化程度不断提高,为嵌入式系统设计提供了功能强大的开发环境/4、计算机硬件平台性能大幅度提高,为复杂的SoC设计提供了物理基础。
PLD器件按照可以编程的次数可以分为两类:(1) 一次性编程器件(OTP)(2) 可多次编程器件。OTP类器件的特点:只允许对器件编程一次,不能修改。可多次编程器件则允许对器件
多次编程,适合于在科研开发中使用。
按编程元件和编程工艺分类:(1)熔丝(2)反熔丝编程元件(3)紫外线擦除、电可编程,如EPROM。(4)电擦除、电可编程方式,EEPROM、快闪存储器),如多数CPLD。以上为非易失性器件。(5)静态存储器结构,如多数FPGA。以上为易失性器件。
按结构特点分类:1.基于乘积项结构的PLD器件。基于与或阵列,此类器件都包含一个人或多个与或阵列。这类器件多采用EEPROM或Flash工艺制作,配置数据掉电后不会丢失。如CPLD。CPLD(如MAX7000S)器件主要由以下及部件构成:宏单元、可编程连线阵列、IO控制块。2.基于查表结构的PLD器件。基于静态存储器(SRAM)和数据选择器,通过查表方式实现函数功能。这类器件集成度高,逻辑功能强,但配置数据容易丢失。如FPGA。FPGA(如XC4000)器件主要由3部分组成:可配置逻辑块(CLB)、输入\输出模块、布线通道。(CPLD和FPGA在机构上有什么区别,各有什么特点)从功能上看,可以把Megafunction库中的元器件分为:算术运算模块、逻辑门模块、储存模块、IO模块。
参数化锁相环宏模块altpll以输入时钟信号作为参考信号实现锁相,从而输出若干个同步倍频或者分频的片内时钟信号。与直接来自片外的时钟相比,片内时钟可以减少时钟延迟,减小
片外干扰,还可改善时钟的建立时间和保持时间,是系统稳定工作的保证。
Verilog程序的特点:1、Verilog程序是由模块构成的。每个模块的内容都嵌在module和endmodule两个关键字之间;每个模块实现特定的功能;模块是可以进行层次嵌套的。2、每个模块首先要进行端口定义,并说明输入和输出口(input、output或inout),然后对模块的功能进行逻辑描述。3、Verilog程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。4、除了endmodule等少数语句外,每个语句的最后必须有分号。5、可以用 /*……*/ 和 //…… 对Verilog程序作注释。好的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。
Verilog HDL包括4个主要部分:模块声明、端口定义、信号类型声明、逻辑功能描述。
空白符包括:空格、tab、换行和换页。
Verilog中的标识符可以是任意一组字母、数字以及符号“$”和“_”(下划线)的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。
Verilog语言内部已经使用的词称为关键字或保留字,这些保留字用户不能作为变量或节点名
字使用。关键字都是小写的。程序运行中,值不能被改变的量称为常量,Verilog中的常量主要有如下3种类型:整数、实数、字符串。在位宽和'之间,以及进制和数值之间允许出现空格,但'和进制之间,数值间是不允许出现空格的。小数点两侧都必须有数字。字符串不能分成多行书写。数据类型是用来表示数字电路中的物理连线、数据存储和传输单元等物理量的。
Verilog有下面四种基本的逻辑状态:0:低电平、逻辑0或逻辑非。1:高电平、逻辑1或“真”。x或X:不确定或未知的逻辑状态。z或Z:高阻态。
Verilog中的变量分为如下两种数据类型:net型(wire、tri)、variable型(reg、integer)。
Net型数据相当于硬件电路中的各种物理连接,其特点是输出的值紧跟输入值的变化而变化。对连线型有两种驱动方式,一种方式是在结构描述中将其连接到一个门元件或模块的输出端;另一种方式是用持续赋值语句assign对其进行赋值。variable型变量必须放在过程语句(如initial、always)中,通过过程赋值语句赋值;在always、initial等过程块内被赋值的信号也必须定义成variable型。
在Verilog语言中,用参数parameter来定义符号常量,即用parameter来定义一个标志符代表一个常量。参数常用来定义时延和变量的宽度。
标量与向量:宽度为1位的变量称为标量,如果在变量声明中没有指定位宽,则默认为标量(1位)。线宽大于1位的变量(包括net型和variable型)称为向量。位选择和域选择: 在表达式中可任意选中向量中的一位或相邻几位,分别称为位选择和域选择。存储器:二维向量或是由若干个宽度相同的寄存器构成的阵列。存储器定义时,需定义存储器的字长(数据宽度)和容量(存储单元数)。只能对存储器某一单元整体赋值,不可进行位选择、域选择,不过可以先将存储器的内容赋给寄存器,再对寄存器进行位选择、域选择。用系统任务$readmemb,$readmemh实现存储器加载。
向量(多位)的逻辑运算采用各位标量逐位进行逻辑或运算(见1为1,全0为0)得到1位标量之后,再行相关运算!位运算即将两个操作数右端对齐、按对应位分别进行逻辑运算。
在一个模块(module)中,使用initial和always语句的次数是不受限制的。initial语句常用于仿真中的初始化,initial过程块中的语句仅执行一次;always块内的语句则是不断重复执行的。
“always”过程语句通常是带有触发条件的,触发条件写在敏感信号表达式中,只有当触发条件满足时,其后的“begin-end”块语句才能被执行。敏感信号表达式又称事件表达式或敏感信号列表,即当该表达式中变量的值改变时,就会引发块内语句的执行。因此敏感信号表达式中应列出影响块内取值的所有信号。若有两个或两个以上信号时,它们之间用“or”连接。敏感信号分为两种类型:边沿敏感型和电平敏感型(不建议两种放一起用)。
对于时序电路,事件通常是由时钟边沿触发的,为表达边沿这个概念,Verilog提供了posedge和negedge关键字来描述。
initial语句不带触发条件,且沿时间轴只执行一次。通常用于仿真模块中激励信号的描述,或给寄存器变量赋初值。
assign为持续赋值语句,主要用于对wire型变量的赋值。
块语句是由块标志符begin-end或fork-join界定的一组语句,当块语句只包含一条语句时,块标志符可以缺省。begin-end串行块中的语句按串行方式顺序执行。
在Verilog中存在四种类型的循环语句,用来控制语句的执行次数。这四种语句分别为:1、for
ever:连续地执行语句;多用在“initial”块中,以生成时钟等周期性波形。2、repeat:连续执行一条语句n次。3、while:执行一条语句直到某个条件不满足。4、for:有条件的循环语句。
Verilog允许在程序中使用特殊的编译向导(Compiler Directives)语句,在编译时,通常先对这些向导语句进行“预处理”,然后再将预处理的结果和源程序一起进行编译。
向导语句以符号“`”开头,以区别于其它语句。Verilog提供了十几条编译向导语句,如:`define。`define语句用于将一个简单的名字或标志符(或称为宏名)来代替一个复杂的名字或字符串
两个或更多个“always”过程块、“assign”持续赋值语句、实例元件调用等操作都是同时执行的。在“always”模块内部,其语句如果是非阻塞赋值,也是并发执行的;而如果是阻塞赋值,则语句是按照指定的顺序执行的,语句的书写顺序对程序的执行结果有着直接的影响。
Verilog设计的描述层次,级别:系统级、算法级、寄存器传输级、门级、开关级。Verilog设计的描述风格,方式 :结构描述、行为描述、数据流描述。结构描述多调用库中的元件或
是已设计好的模块来设计实体功能。行为描述就是对设计实体的数学模型的描述,其抽象程度远高于结构描述方式。行为描述类似于高级编程语言,当描述一个设计实体的行为时,无需知道具体电路的结构,只需要描述清楚输入与输出信号的行为,而不需要花费更多的精力关注设计功能的门级实现。多采用always过程语句。数据流描述方式主要使用持续赋值语句assign,多用于描述组合逻辑电路。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论