数字系统设计复习.docx

上传人:b****6 文档编号:3915859 上传时间:2022-11-26 格式:DOCX 页数:37 大小:473.30KB
下载 相关 举报
数字系统设计复习.docx_第1页
第1页 / 共37页
数字系统设计复习.docx_第2页
第2页 / 共37页
数字系统设计复习.docx_第3页
第3页 / 共37页
数字系统设计复习.docx_第4页
第4页 / 共37页
数字系统设计复习.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

数字系统设计复习.docx

《数字系统设计复习.docx》由会员分享,可在线阅读,更多相关《数字系统设计复习.docx(37页珍藏版)》请在冰豆网上搜索。

数字系统设计复习.docx

数字系统设计复习

1.数字系统设计概论

1.1数字系统的概念

是指对数字信息进行存储、传输、处理的电子系统。

它的输入和输出都是数字量。

通常把门电路、触发器等称为逻辑器件;将由逻辑器件构成,能执行某单一功能的电路,如计数器、译码器、加法器等,称为逻辑功能部件;把由逻辑功能部件组成的能实现复杂功能的数字电路称数字系统。

数字系统和功能部件之间的区别之一在于功能是否单一。

区别之二在于是否包含控制电路。

1.2数字系统的发展

1.2.1EDA技术:

EDA(ElectronicDesignAutomation)

立足于计算机工作平台而开发出来的一整套先进的设计电子系统的软件工具。

三个发展阶段:

(1)电子CAD阶段;

(2)电子CAE阶段;(3)EDA阶段。

EDA技术的特点:

(1)高层综合和优化

(2)采用硬件描述语言进行设计

(3)开放性和标准化(4)库的引入(5)支持“自顶向下”设计方法

系统设计层次:

(1)板图级(物理级)

(2)逻辑门级(3)寄存器传输级

(4)行为级(5)系统级

1.2.2数字系统的两种设计思路:

(1)自底向上法(Bottom-up设计)

设计过程从最底层设计开始。

设计系统硬件时,首

先选择具体的元器件,用这些元器件通过逻辑电

路设计,完成系统中各独立功能模块的设计,再把这些功能模块连接起来,搭建成完整的硬件系统。

在进行底层设计时,缺乏对整个电子系统总体性能的把握,在整个系统设计完成后,如果发现性能尚待改进,修改起来比较困难,因而设计周期长。

(2)自顶向下法(Top_down设计)

按一定原则将系统分成若干子系统,再将每个子系统分成若干个功能模块,再将每个模块分成若干小的模块……直至分成许多可以实现的基本模块。

1.2.3构建数字系统的方法途径

 

※专用集成电路——把所设计的数字系统做成一整片规模集成电路,不仅减小了电路的体积、重量、功耗、而且使电路的可靠性大为提高。

※PLD——完全由用户自行定义芯片逻辑功能的“通用型”数字器件。

用户可以借助特定的EDA软件设计一个数字电路或数字系统,通过该软件进行一系列的操作(仿真综合适配)后形成特定的二进制文件,然后通过专门的编程器或ISP(InSystemProgram)的方式下载到芯片中,使其具备预期的功能。

可以反复修改,反复编程,直到完全满足要求。

降低了开发的风险。

管脚定义的灵活,增加了设计的自由度,提高了效率。

同时这种设计减少了所需芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性。

1.2.4基于IP模块的设计

IP(IntellectualProperty)原来的含义是指知识产权、著作权等,在IC设计领域则可以理解为完成某种功能的设计模块,也可称为IP核。

IP核分为软核、硬核和固核:

软核指的是在寄存器级或门级对电路功能用HDL进行描述,表现为VHDL或VerilogHDL代码。

用户在使用软核的时候可以修改,以满足自己所需要的功能。

实现后电路的总门数在5000门以上。

硬核指的是以版图形式描述的设计模块,它基于一定的设计工艺,用户不能改动,用户得到的硬核仅是产品的功能,而不是产品的设计。

一般在专用集成电路ASIC器件上实现,总门数在某些方面5000门以上。

固核介于硬核和软核之间,允许用户重新定义关键的性能参数,内部连线也可以重新优化。

一般在FPGA器件上实现的、经验证是正确的、总门数在某些方面5000门以上电路结构编码文件称为“固核”。

1.3数字系统的设计流程

1、设计输入

目前,已成为IEEE标准的是VHDL语言和VerilogHDL语言。

●VHDL(VeryHighSpeedIntegrationCircuitHDL,超高速集成电路硬件描述语言):

是于1985年由美国国防部的支持下正式推出的。

1987年被采纳为IEEE标准。

●VerilogHDL语言是美国GatewayDesignAutomation公司于1983年推出的,1995年被采纳为IEEE标准。

2、综合:

指的是将较高层次的设计描述自动转化为较低层次描述的过程。

综合器就是能够自动实现上述转换的工具。

或者说,综合器是能够将原理图或HDL语言表达和描述的电路功能转化为具体的电路结构网表的工具。

综合有下面几种形式:

1)行为综合;2)逻辑综合;3)版图综合。

3、适配:

是将由综合器产生的网表文件配置于指定的目标器件中,并产生最终的可下载文件。

适配过程包括:

映射、布局、布线。

4、仿真:

是对所设计电路的功能的验证。

①功能仿真:

在做完理论设计,没有选择具体器件时所做的仿真。

不考虑信号时延等因素的仿真,也叫前仿真。

②时序仿真:

是在选择了具体器件并完成了布局布线后进行的包含定时关系的仿真。

也叫后仿真。

它主要用于验证由于不同的布线方式、分区规划而产生的各种延时对系统功能的影响。

5、编程下载和配置:

把适配后生成的编程文件装入到PLD器件中的过程称为下载。

通常对CPLD器件的下载称为编程(Program),对于FPGA器件的下载称为配置(Configure)。

下载后的FPGA/CPLD器件就是所设计的电子系统。

1.4用于开发FPGA和CPLD的EDA工具

1.基于CPLD/FPGA的集成开发环境

2.可编程逻辑器件PLD

2.1PLD概述

2.1.1PLD的基本概念

可编程逻辑器件PLD制作工艺采用的是CMOS工艺,在这些器件的内部,集成了大量功能独立的分立元件,它们可以是基本逻辑门、由基本逻辑门构成的宏单元,以及与阵列、或阵列,芯片内还有大量可配置的连线,在器件出厂时,芯片内的各个元件、单元相互间没有连接,芯片暂不具有任何逻辑功能。

芯片内的各个元件、单元如何连接,由用户根据自身的设计的电路功能要求通过计算机编程决定。

2.1.2PLD的作用

高密度的PLD,即CPLD/FPGA,能完成任何数字器件的功能,上至高性能的CPU,下至简单的74电路,都可以用CPLD/FPGA来实现。

2.1.3PLD的分类

⑵按编程特点分类

●按编程次数分类

一次性编程器件(OneTimeProgrammable,OTP)

可多次编程器件

●按不同的编程元件和编程工艺划分

采用熔丝(Fuse)编程元件的器件,如PROM。

采用反熔丝(Antifuse)编程元件的器件。

采用紫外线擦除、电编程方式的器件,如EPROM。

采用电擦除、电编程方式的器件,一般采用EEPROM和快闪存储器(FlashMemory)两种工艺实现。

采用静态存储器(SRAM)结构的器件

⑶按结构特点分类

阵列型的PLD器件:

基本结构为与或阵列。

如:

SPLD和绝大多数的CPLD。

单元型的PLD器件:

基本结构为逻辑单元。

如:

FPGA

2.1.4PLD的基本构成原理与表示方法

常用门电路在PLD中的表示法

(a)与门;(b)或门;(c)输入缓冲器;(d)三态输出缓冲器;(e)非门

 

2.2SPLD介绍

2.2.1可编程只读存储器(PROM)

它包含一个固定的“与”阵列和一个可编程的“或”阵列,它的“与”阵列是一个“全译码阵列”,即对某一组特定的输入i(i=0,1,2)只能产生一个唯一的乘积项。

因为是全译码,当输入变量为n个时,阵列的规模为2n,所以PROM的规模一般很大。

PROM存在的不足:

PROM虽然也可以用来产生组合逻辑函数,但因为往往只用到了与逻辑阵列输出的最小项的一部分,而且有时这些最小项还可以合并,因此器件内部资源的利用率不高。

 

2.2.2可编程逻辑阵列PLA(ProgrammableLogicArray)

它的“与”阵列和“或”阵列都是可编程的。

PLA与PROM比较:

1、由于PLA的与逻辑阵列是可编程的,所以就可通过编程只产生所需要的乘积项,使得与逻辑阵列和或阵列所需的规模大为减少,从而有效地提高了芯片的利用率。

2、PLA器件内部的与阵列和或阵列均可编程,因而在实现函数时,它的灵活性最高。

3、由于PLA的与、或阵列均要求能编程,这种结构在实现比较简单的逻辑功能时还是比较浪费的。

2.2.3可编程阵列逻辑PAL(ProgrammableArrayLogic)

其基本结构包含一个可编程的“与”阵列和一个固定的“或”阵列。

 

PAL的几种输出电路的结构和反馈形式:

(1)专用输出结构

 

(2)可编程I/O结构

 

(3)寄存器输出结构

 

(4)异或型输出结构

 

◆优缺点

1、增加了各种形式的输出电路,扩展了电路的逻辑功能,提高了使用的灵活性。

2、采用了双极型熔丝工艺,只能一次性编程

3、PAL器件输出电路结构的类型繁多,给设计和使用带来一些不便

2.2.4通用阵列逻辑(GAL)

采用E2CMOS工艺制作,可以用电信号擦除并反复编程上百次。

在结构上的显著特点是输出采用了宏单元(OLMC)。

GAL器件的可编程“与”阵列则是送到OLMC上输出的。

通过对OLMC单元的编程,器件能满足更多的逻辑电路要求,从而使它比PAL器件具有更多的功能,设计也更为灵活。

输出逻辑宏单元(OLMC)的结构

4选1选择器用来选择输出方式、输出极性

2选1选择器用来选择反馈信号(即选择输出引脚为输入变量)

 

◆SPLD结构对比表:

2.3HPLD介绍

2.3.1CPLD(ComplexProgrammableLogicDevice,复杂可编程逻辑器件)

一般把所有的集成度超过1000门以上的EPLD(ErasableProgrammableLogicDevice)器件都称为是CPLD。

*CPLD包括三部分:

可编程逻辑宏单元、可编程I/O单元、可编程内部连线

(1)、可编程逻辑宏单元(LMC,LogicMacroCell):

称为内部逻辑宏单元。

LMC内部主要包括与阵列、或阵列、可编程触发器和数据选择器等电路,能独立地配置为时序或组合工作方式。

(a)多触发器结构和“隐埋”触发器结构:

不增加芯片的管脚

(b)乘积项共享结构

(c)异步时钟

(2)、可编程I/O单元(IOC,Input/OutputCell)

内部信号到引脚的接口部分。

一般只有少数几个专用输入端,大部分端口均为I/O端。

其内部通常由三态输出缓冲器、输出极性选择器、输出选择控制器、反馈选择器等几组数据选择器组成。

通过编程可以使每个I/O引脚单独地配置为输入、输出和双向工作、寄存器输入等各种不同的工作方式,因而使I/O端的使用更为方便、灵活。

(3)、可编程内部连线(PIA,Programmableinaline):

可编程内部连线的作用是在各逻辑宏单元之间以及逻辑宏单元和I/O单元之间提供互连网络。

各逻辑宏单元通过可编程连线阵列接收来自输入端的信号,并将宏单元的信号送往目的地。

在CPLD器件中,一般采用固定长度的线段来进行连接。

2.3.2FPGA(FieldProgrammableGateArray,现场可编程门阵列)

包括三部分:

可编程逻辑块(CLB,ConfigurableLogicBlock)、I/O模块(IOB,I/OBlock)、可编程互连资源(PIR,ProgrammableInterconnectResource)

(1)、可编程逻辑块CLB:

是实现用户功能的基本单元,它们通常规则地排列成一个阵列

主要由逻辑函数发生器、触发器、数据选择器等部分组成。

逻辑函数发生器:

CLB中的逻辑函数发生器都是基于查找表结构。

查找表结构(LUT,Look-upTable):

LUT本质上就是一个RAM。

每一个LUT可以看成一个有4位地址线的16x1的RAM。

当用户通过描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

(2)、IOB:

主要完成芯片上逻辑与外部封装脚的接口,它通常排列在芯片的四周;主要由输入触发器、输入缓冲器和输出触发器/锁存器、输出缓冲器组成。

每个IOB控制一个引脚,它们可以被配置为输入、输出或双向I/O功能。

(3)、PIR:

可编程互连资源(PIR)包括各种长度的连线线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。

这些金属线段带有可编程开关,通过自动布线实现FPGA内部的CLB和CLB和IOB之间的连线。

连线有三种互连结构:

单长线、双长线、长线。

2.3.3CPLD与FPGA的异同

(1)、相同点:

输入/输出单元;逻辑块阵列;互连资源

(2)、CPLD与FPGA的差别:

●CPLD是阵列式结构,基于乘积项技术,

FPGA是单元式结构,基于查找表技术;

●CPLD器件的关键技术是E2PROM和快闪存储器工艺,

FPGA通常采用CMOSSRAM工艺;

●CPLD拥有上电即可工作的特性,

FPGA需要一个加载过程

●CPLD的内连续性的布线结构使其时序延迟具有均匀性和可预测性,

FPGA具有的分段式布线结构使其时序延迟具有不可预测性;

●CPLD比较适合于实现各种组合逻辑,

FPGA比较适合于含有时序逻辑较多的电路

2.3.4Altera公司生产的PLD器件

主要产品分为CPLD和FPGA两大类型

CPLD基本结构单元是乘积项,在工艺上采用E2PROM编程单元。

FPGA类型器件采用SRAM编程单元。

2.3.5PLD器件的发展趋势

(1)向大规模、高集成度方向进一步发展

(2)向低电压、低功耗的方向发展

(3)向高速可预测延时的方向发展

(4)向功能丰富型发展

(5)向模数混合可编程方向发展

边界扫描测试技术:

边界扫描测试技术主要解决芯片的测试问题。

标准的边界扫描测试只需要四根信号线,能够对电路板上所有支持边界扫描的芯片内部逻辑和边界管脚进行测试。

应用边界扫描技术能增强芯片、电路板甚至系统的可测试性。

3.VerilogHDL语言

3.1VerilogHDL基础

3.1.1词法

VerilogHDL程序是由各种符号流构成的,我们把它们称之为词法。

VerilogHDL中的词法类型包括:

(1)间隔符与注释符;

(2)数值;

(3)字符串;

(4)标识符、关键字;

(5)运算符。

一、间隔符与注释符

间隔符包括空格符、制表符(tab)、换行以及换页符。

VerilogHDL有两种注释形式,单行注释以两个字符“//”起始,以新的一行作为结束;而段注释则是以/*起始,以*/结束。

二、数值

VerilogHDL的数值由以下四个基本的值组成:

0—代表逻辑0或假状态

1—代表逻辑1或真状态x—逻辑不定态

z—高阻态

在程序运行中,其值不能改变的量称为常量。

整型数、实型数

1).整型数及其表示:

+/-<位宽>'<基数><数值>

a、数值常量不能将下划线“_”其放于数值的首位。

b、在’和进制之间,数值之间不允许出现空格。

c、如果定义的位宽比实际的位数长,通常在左边补0,但如果数的最左边一位为x或z,

就相应的用x或z在左边补位。

d、数值常量中的“z”可以用“?

”来代替。

2).实型数及其表示:

Verilog中的实数可以用十进制表示法与科学计数法两种格式来表示

如果采用十进制格式,小数点两侧都必须至少有一位数字,否则为非法表示形式。

☆实数可以转化为整数,根据四舍五入的原则。

三、字符串

在Verilog中,字符串大多用于显示信息的命令中。

字符串常量是用双引号括起来的字符序列串,它必须包含在同一行中,不能分成多行书写。

字符串变量是寄存器型变量。

四、标识符、关键字

标识符:

用户为程序描述中的Verilog对象所起的名字。

模块名、端口名和实例名都是标识符。

●标识符必须以英语字母a-z,A-Z起头,或者用下横线符_起头。

其中可以包含数字、

$符和下横线符。

●Verilog是大小写敏感的。

【特殊标识符】:

‘$’符号表示Verilog的系统任务和函数

特殊符号“#”常用来表示延迟

关键字:

是Verilog语言内部的专用词,所有的关键词都是小写的。

3.1.2数据类型

连线型数据相当于硬件电路中的各种物理连接,代表的是物理连接线。

寄存器型数据一般对应的是具有状态保持作用的电路,如触发器、寄存器、锁存器。

它的特点是输出能保持其值,直到它被赋于新的值。

•对于端口信号,输入端口只能是net类型。

输出端口可以是net类型,也可以是register类型。

若输出端口在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句,assign连续赋值语句),则为net类型。

•内部信号类型与输出端口相同,可以是net或register类型。

parameter用来定义常量,即用来定义一个标识符代表一个常量。

主要用于定义延迟时间和变量宽度。

3.1.3运算符

按所带操作数的个数区分,运算符可分为3类:

单目运算符、双目运算符、三目运算符。

按功能分:

算术运算符、关系运算符、等式运算符、逻辑运算符、位运算符、缩位逻辑运算符、移位运算符、并接运算符等。

(1)算术运算符用于进行数值运算,+、–、*、/、%。

(2)逻辑运算符:

&&(逻辑与)、||(逻辑或)、!

(逻辑非)

(3)位运算:

将两个操作数按对应位分别进行逻辑运算:

~(非)(按位取反);

&(与);|(或);^(异或);^~,~^(同或);~&(与非);~|(或非)

(4)关系运算符>(大于);>=(大于等于);<(小于);<=(小于等于)。

(5)等式运算符:

==(相等);!

=(不相等);===(全等);!

==(不全等)。

(6)缩位运算符:

缩位运算符将一个矢量缩减为一个标量。

&(与);|(或);^(异或);^~(同或);~&(与非);~|(或非)。

(7)移位运算符A<>n(右移位运算符)

(8)条件运算符条件运算符(?

:

)信号=条件?

表达式1:

表达式2;

(9)拼接运算符拼接运算符{}

3.2VerilogHDL中的模块

3.2.1模块

模块是VerilogHDL语言的基本描述单位,它用于描述某个电路的功能或结构,以及它与其它模块通信的外部端口。

module<模块名>(<端口列表>)

端口说明(input,output,inout)

数据类型说明(wirereg)

逻辑功能或结构构成定义(门元件例化、assign数据流always块行为描述、调用其它模块)

endmodule

每个模块实现特定的功能;模块可以进行层次嵌套。

VerilogHDL程序一行可以写多条语句,也可以一条语句分成多行书写,每条语句以分号结束,endmodule语句后面不必写分号。

3.2.2VerilogHDL数字设计中模块中功能的基本描述方式

(1)、结构描述方式:

描述电路是由哪些基本元件组成,以及相互连接关系。

内置门级元件(12个逻辑门andorxornot等)、用户自己定义的模块。

门元件的调用调用格式:

门元件名称实例名(端口列表)

多输入门的端口列表:

(输出、输入1、输入2、输出3…….);

对于三态门输入、输出端口:

输出,输入,使能控制端);

对于buf和not输入、输出端:

(输出1,输出2,输出3,输入);

(2)、数据流描述方式:

以“assign”关键字开头的连续赋值语句。

连续赋值语句的语法为:

assign#延时量变量名=赋值表达式;

(3)、行为描述方式:

行为描述指电路输入输出信号间的逻辑关系。

(4)、混合设计描述方式:

行为功能主要使用过程语句来描述。

3.3VerilogHDl行为语句

3.3.1过程语句

(1)initial过程语句

作用与特点:

initial语句主要用于初始化和波形生成,initial过程块中的语句顺序执行且仅执行一次。

语法格式:

initialbegin 语句1; 语句2; ..... 语句n; end 

变量一定被声明为reg型。

(2)always过程语句

特点:

always语句后跟着的语句是否执行,则要看它的触发条件是否满足,如满足则运行该语句一次,如不断满足则不断地循环执行。

语法格式:

always@(敏感信号表达式)

块语句

3.3.2块语句

串行块begin_end

或 

begin:

块名 

块内声明语句 ;

语句1; 

语句2; 

...... 

语句n; 

end 

串行块(顺序块)有以下特点:

 

1) 块内的语句是按顺序执行的,即只有上面一条语句执行完后下面的语句才能执行。

 

2) 每条语句的延迟时间是相对于前一条语句执行结束的时间而言的。

 

3) 直到最后一条语句执行完,程序流程控制才跳出该语句块。

 

顺序块的格式如下:

 

begin 

语句1; 

语句2; 

..... 

语句n; 

end 

3.3.3赋值语句

(1)连续赋值语句

以关键字assign开头的为连续赋值语句,主要用于对wire型变量进行赋值。

(2)过程赋值语句

用在过程语句当中,一般用于对reg型变量进行赋值。

过程赋值有阻塞赋值和非阻塞赋值两种方式。

阻塞赋值方式赋值符号为“=”。

阻塞赋值语句执行的过程是:

首先计算右端赋值表达式的取值,然后立即将计算结果赋值给“=”左端的被赋值变量。

如果在一个块语句中,有多条阻塞赋值语句,在前面的赋值语句没有完成之前,后面的语句就不能被执行。

非阻塞赋值方式赋值符号为“<=”。

非阻塞赋值方式的特点是:

在整个过程块结束时才完成赋值操作。

一齐赋值。

3.3.4条件语句

(3) if(表达式1)  

        语句1; 

 else  if(表达式2)  语句2; 

 else  if(表达式3)  语句3; 

........ 

else  if (表达式m)  语句m; 

    else        语句n; 

(1)If-else语句

 

(2)case语句

case语句有三种表示方式:

1) case(表达式) endcase 

2) casez(表达式)  endcase 

3) casex(表达式) endcase 

case分支项的一般格式如下:

 

分支表达式:

     语句; 

缺省项(default项):

 语句;

1)在case语句中,控制表达式与分支表达式的值之间的比较是一种全等比较(===),必须保证两者的对应位全等。

2)casez与casex语句是case语句的两种变体,在casez语句中,z被认为是无关值。

在casex语句中,值x和z都被认为是无关位。

3)可以用?

字符来代替字符x或z,表示无关位。

3.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1