2024年4月19日发(作者:)
考试题型:简答题,程序语句解释,程序填空,编程
EDA就是以计算机为工作平台,以EDA软件工具为开发环境,
以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系
统的一种技术。
现代EDA技术的特征:1,、采用硬件描述语言进行设计2、逻
辑综合与优化3、开放性和标准化4.、更完备的库。
数字系统设计技术:1、Topdown即自顶向下的设计。这种设计
首先从系统设计下手,在顶层进行功能方框图的划分和结构设
计。须经过“设计—验证—修改设计再验证”的过程,不断反
复,直到结果能够实现所要求的功能,并在速度、功耗、价格
和可靠性方面实现较为合理的平衡。2、Bottomup设计,即自
底向上的设计,由设计者调用设计库中的元件(如各种门电路、
加法器、计数器等) ,设计组合出满足自己需要的系统。不仅
效率低、成本高而且易出错。
IP:原来的含义是指知识产权、著作权,在IC设计领域指实现
某种功能的设计。IP核(IP模块):指功能完整,性能指标可
靠,已验证的、可重用的电路功能模块。IP复用:软IP--用
VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体
电路元件实现这些功能。固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、forever:连续地执行语句;多用
在“initial”块中,以生成时钟等周期性波形。2、repeat:
连续执行一条语句n次。3、while:执行一条语句直到某个条
件不满足。4、for:有条件的循环语句。
Verilog允许在程序中使用特殊的编译向导(Compiler
Directives)语句,在编译时,通常先对这些向导语句进行
“预处理”,然后再将预处理的结果和源程序一起进行编译。
向导语句以符号“`”开头,以区别于其它语句。Verilog提供
了十几条编译向导语句,如:`define。`define语句用于将一
个简单的名字或标志符(或称为宏名)来代替一个复杂的名字
或字符串
两个或更多个“always”过程块、“assign”持续赋值语句、
实例元件调用等操作都是同时执行的。在“always”模块内
部,其语句如果是非阻塞赋值,也是并发执行的;而如果是阻
塞赋值,则语句是按照指定的顺序执行的,语句的书写顺序对
程序的执行结果有着直接的影响。
Verilog设计的描述层次,级别:系统级、算法级、寄存器传
输级、门级、开关级。Verilog设计的描述风格,方式 :结构
描述、行为描述、数据流描述。结构描述多调用库中的元件或
是已设计好的模块来设计实体功能。行为描述就是对设计实体
的数学模型的描述,其抽象程度远高于结构描述方式。行为描
述类似于高级编程语言,当描述一个设计实体的行为时,无需
知道具体电路的结构,只需要描述清楚输入与输出信号的行
为,而不需要花费更多的精力关注设计功能的门级实现。多采
用always过程语句。数据流描述方式主要使用持续赋值语句
assign,多用于描述组合逻辑电路。
流水线设计是经常用于提高所设计系统运行速度的一种有效的
方法。为了保障数据的快速传输,必须使系统运行在尽可能高
的频率上,但如果某些复杂逻辑功能的完成需要较长的延时,
就会使系统难以运行在高的频率上,在这种情况下,可使用流
水线技术,即在长延时的逻辑功能块中插入触发器,使复杂的
逻辑操作分步完成,减小每个部分的延时,从而使系统的运行
频率得以提高。流水线设计的代价是增加了寄存器逻辑,增加
了芯片资源的耗用。
状态机是组合逻辑和寄存器逻辑的组合,分别用于存储状态、
状态译码和产生输出信号。状态机有Mealy型(输出是当前状
态和当前输入的函数)Moore型(输出是当前状态的函数)。
实用状态机一般为同步时序方式,在时钟信号的触发下完成各
个状态之间的转换,产生相应的输出。状态机的表示方法:状
态图、状态表、流程图。
奇数分频方法:用两个计数器,一个由输入时钟上升沿触发,
一个由输入时钟下降沿触发,最后将两个计数器的输出相或。
Verilog模块中有如下表示进程的方式:always过程块、
initial过程、assign赋值语句、元件调用。
非阻塞赋值在整个过程块结束时才完成赋值操作。阻塞赋值在
该语句结束时就立即完成赋值操作,如果在一个块语句中,有
多条阻塞赋值语句,那么在前面的赋值语句没有完成之前,后
面的语句就不能被执行,仿佛被阻塞了(blocking)一样,因
此称为阻塞赋值方式。在可综合的硬件设计中,使用阻塞和非
阻塞赋值语句时,应注意以下原则:1、当用“always”块来描述
组合逻辑时,既可以用阻塞赋值,也可以采用非阻塞赋值,应
尽量使用阻塞赋值。2、对时序逻辑描述和建模,使用非阻塞赋
值方式。3、为锁存器建模,应尽量使用非阻塞赋值。4、若在
同一个“always”过程块中既为组合逻辑建模,又为时序逻辑
建模,最好使用非阻塞赋值方式。5、在一个“always”过程块
中,最好不要混合使用阻塞赋值和非阻塞赋值,虽然同时使用
这两种赋值方式在综合时并不一定会出错,但对同一个变量不
能既进行阻塞赋值,又进行非阻塞赋值,这样在综合时会报
错。6、不能在两个或两个以上的“always”过程中对同一个变
量赋值,这样会引发冲突,在综合时会报错。7、仿真时使用
$strobe显示非阻塞赋值的变量。
毛刺:信号在FPGA器件内部通过连线和逻辑门时,都有一定的
延时。因此多路信号的电平值发生变化时,在信号变化的瞬
间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出
现一些不正确的“毛刺”,称为“冒险”现象。1、改变设计,
破坏毛刺产生的条件,来减少毛刺的发生。2、根据D触发器的
D输入端对毛刺不敏感的特点而消除毛刺。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1713459812a2253194.html
评论列表(0条)