数字集成电路设计课件

上传人:E**** 文档编号:90972073 上传时间:2019-06-20 格式:PPT 页数:55 大小:268KB
返回 下载 相关 举报
数字集成电路设计课件_第1页
第1页 / 共55页
数字集成电路设计课件_第2页
第2页 / 共55页
数字集成电路设计课件_第3页
第3页 / 共55页
数字集成电路设计课件_第4页
第4页 / 共55页
数字集成电路设计课件_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《数字集成电路设计课件》由会员分享,可在线阅读,更多相关《数字集成电路设计课件(55页珍藏版)》请在金锄头文库上搜索。

1、数字集成电路设计,FPGA结构与设计流程,FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。,FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect

2、)三个部分。FPGA的基本特点主要有:,1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和I/O引脚。 4)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。,可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。,目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,

3、采用不同的编程方式。,加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。,FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPG

4、A作为微处理器的外设,由微处理器对其编程。,FPGA基本结构与原理,采用查找表(Look-Up-Table)结构的PLD芯片我们也可以称之为FPGA:如Altera的ACEX,APEX系列,Xilinx的Spartan,Virtex系列等。,查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。 目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的161的RAM。,我们还是以这个电路的为例,FPGA的设计流程,一个完整的FPGA设计流程包括电路设计与输入、功能仿真、综合、综合后仿真、实现、布线后仿真和下板后调试等主要步骤,如图所示。,EDA软件

5、工具,逻辑综合工具,仿真工具,Verilog HDL硬件描述语言,Verilog HDL程序结构,Verilog HDL程序有模块构成,模块的内容都是嵌在module和endmodule两个关键字之间,每个模块式实现特定的功能,模块之间可以进行层次的嵌套。 Verilog HDL程序模块包括模块名、输入输出端口说明、内部信号说明、逻辑功能定义等几部分。,程序模板如下:,module (); /*端口描述*/ input ; output ;,/*内部信号说明*/ wire /nets型变量 reg /register变量 integer /常数,/*逻辑功能定义*/ /*任务或函数*/ tas

6、k或function,/*使用assign语句定义组合逻辑*/ assign=;,/*使用always块描述逻辑功能*/ always () begin /*行为语句*/ /*task或function调用*/ end /*元件例化*/ endmodule,1、端口定义,模块的端口声明了模块的I/O口,其格式如下:,Module 模块名(端口1,端口2,端口3,);,例如: module and(a,b,c); 表示模块名为and,该模块有三个端口a、b和c。,2、输入输出端口说明,输入输出端口说明格式如下:,输入端口:input 端口1,端口2,端口3,端口n; 输出端口:output 端口

7、1,端口2,端口3,端口n; 双向端口:inout 端口1,端口2,端口3,端口n;,端口说明也可直接写在端口声明语句中:,例如: module ex1(input indata, an, clock, output outdata);,3、内部信号说明,定义各变量及常量的类型,其格式为:,wire 数据名1,数据名2,数据名3,; reg 数据名1,数据名2,数据名3,;,wire是定义网络数据类型变量(nets)的关键词,信号变量类型缺省时默认为wire型。reg是定义寄存器型变量(register)的关键词。,4、逻辑功能定义,模块中最重要的部分是逻辑功能定义,它描述输入输出变量及中间变

8、量的逻辑功能。在模块中描述逻辑功能有三种方法:,(1)用“assign”语句 assign语句一般用于适用于对组合逻辑进行描述,称为连续赋值方式。,(2)用元件例化(instantiate) 元件例化是指将具有一点功能的模块作为独立的元件在顶层文件中调用。采用元件礼花的方法同在电路图输入方式下调用库元件一样,键入元件的名字和引脚的名字即可。,(3)用“always”语句 always语句可以用于描述组合逻辑也可用于描述时序逻辑。,Verilog HDL数据类型,数据类型是用来表示数字电路中的数字存储和数字传送的。,Verilog HDL中的19种数据类型:,memory型、large型、med

9、ium型、scalared型、time型、small型、tri型、trio型、tril型、triand型、trireg型、vectored型、wand型、wor型。,介绍4种基本的数据类型:,parameter型、reg型、wire型和memory型。,在Verilog中也有常量和变量之分,它们分属于以上两种类型。,1、常量,. 数字, 整数,在Verilog中,整数(即整常数)有4种进制表示方法:,二进制整数(b或B)、十进制整数(d或D)、八进制整数(o或O)、十六进制整数(h或H)。,例如:,8b11000101 /位宽为8位的二进制数11000101 8hD5 /位宽为8位的十六进制数

10、D5,十进制可缺省表示对位宽和进制的说明,例如:128, x和z值,在数字电路中,x代表不定值,z代表高阻值。,例如:,8b1001xxxx 表示位宽8的二进制数第四位为不定值。,. Parameter常数,在Verilog中,用parameter定义一个标识符代表一个常量,称为符号常量。采用标识符代表一个常量可提高程序的可读性和可维护性。其定义结构如下:,parameter 参数名1=表达式,参数名2=表达式,参数名n=表达式。,例如:,parameter size=4d8;,2、变量,变量是指在程序运行过程中其值可以改变的量。,网络数据类型(nets型)和寄存器类型(reg型)。,在Ver

11、ilog中,变量分为两种:,. nets型变量,Verilog中提供多种nets型变量:wire、wor、wand等等,这里主要介绍wire型变量。,wire型数据类型用来表示以assign语句赋值的组合逻辑信号。,在Verilog模型中,输入输出信号类型缺省时自动定义为wire型。,wire型变量的格式定义如下:,wiren:1 变量名1,变量名2,变量名n;,. register型变量,register型变量对应于具有状态保持作用的电路元件,如触发器,锁存器等。它只有明确地赋值后才能对其他变量赋值,重新赋值前一直保持原值。在设计中,此类变量必须放在块语句(always语句)中,通过过程语句

12、赋值。同一个register型变量只能在一个块语句中重复赋值,而不能同时在多个块语句中重复赋值使用。register型变量包括reg型和integer型。,integer型变量的最大位宽是32位,定义一个integer型变量时可以不指定位宽,综合时编译器自动调整其位宽。,. memory型变量,memory型变量实际是由若干个相同宽度的向量组成的数组。,它的定义如下:,regn-1:0 memorym-1:0;,例如:reg7:0 memory23:0;,该语句定义一个有24个字节、每个字节宽度为8bit的存储器,存储器名是mymemeory。,在数组中,不能直接对存储器中的某一位进行寻址,只

13、能间接寻址。例如在上例中,对第8个存储单元中的第4位赋值,方法如下:,myreg=mymemory7; myreg3=1b1;,运算符,Verilog HDL提供丰富的运算符,按功能分可分为:,算术运算符、关系运算符逻辑运算符、位于算符、缩减运算符、移位运算符、条件运算符和拼接运算符。,按运算符所带的操作数来分,又可分为3类:,单目运算符(unary operator),双目运算符(binary operator),三目运算符(ternary operator)。,. 算术运算符,算术运算符可实现简单的算术操作。常用的算术运算符有:,+ 加 - 减 * 乘(常数或乘数是2的整数次幂) / 除(

14、常数或除数是2的整数次幂) % 求余(常数或有操作数是2的整数次幂),在算术运算中,如果某一个操作数是不定值x,则整个结果将是不定值x。,在Verilog中,reg型和nets型数据综合将生成无符号数,integer型数据将综合生成有符号数。,. 关系运算符,关系运算符包括:, 大于 = 大于或等于,关系运算符对两个数进行比较,如果比较结果为真,返回值为1;如果比较结果为假,则返回值为0;如果某个操作数为不定值x,则结果返回值为x。,. 等式运算符,等式运算符包括:,= 等于 != 不等于 = 全等于 != 全不等于,等式运算符是双目运算符,其结果有两个操作数决定。如果声明的关系是真,返回值是

15、1,否则为0。,“=”和“=”运算符有所不同,“=”运算符是对两个运算符进行逐位比较,只有当两个操作数的每一位都相等时,结果才为1,如果操作数中有不定值则结果为不定。“=”是对操作数的高阻值和不定值也进行比较,当两个操作数完全一致时,结果为1,否则结果为0。,例如: 设A=5b11x01,B=5b11x01,则A=B的返回值为不定值x,而A=B的返回值为1。,. 逻辑运算符,逻辑运算符包括:,& 逻辑与 | 逻辑或 ! 逻辑非,. 位运算符,位运算符反映的是操作数的位运算,在Verilog中有以下几种位运算符:, 按位取反 & 按位与 | 按位或 按位异或 按位同或,两个不同长度的数据进行位操

16、作时,自动将两个操作数右对齐,位数少的操作数会在高位用0补齐。,. 缩减运算符,缩减运算符是单目运算符,包括以下几种:,& 与 | 或 & 与非 | 或非 异或 同或,缩减运算符的运算规则与位运算符的运算规则类似,但运算过程不同。位运算是对两个操作数相应位进行运算,操作数的位数是不变的,而缩减运算时针对单个操作数,先将操作数的第一位于第二位进行运算,再将结果与第三位进行运算,以此类推,直到最后一位,其结果是一个一位二进制数。,. 移位运算符,Verilog HDL中包括两种移位算符:, 右移,移位运算符用法如下:,A n /将操作数B右移n位,移位运算时,移出的空位用“0”来填充。,. 条件算符,条件运算符为:,? :,条件运算符是一个三目运算符,对三个操作数进行运算,其定义与C语言是相同的,方法如下:,信号 = 条件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号