EDA_verilog知识点

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第1章:EDA(ElectronicDesignAutomation)即电子设计自动化,是指利用计算机完成电子系统的设计。(以填空题的形式出题)狭义的EDA技术是指以大规模可编程逻辑器件为载体,以硬件描述语言HDL为系统逻辑的主要表达方式,借助功能强大的计算机,在EDA工具软件平台上,对用HDL描述完成的设计文件,自动完成用软件方式设计的电子系统到硬件系统的设计工作,最终形成集成电子系统或专用集成芯片ASIC的一门新技术。(以简答题的形式出题)EDA的实现目标:完成专用集成电路(ASIC)或印制电路板(PCB)的设计和实现。作为EDA技术最终实现目标的ASCI可以通过以下3种途径完成:(要知道它们三种途径之间的区别)1)可编程逻辑器件FPGA/CPLD(直接面向用户、具用极大的灵活性和通用性)2)半定制或全定制ASCI(用户提要求,厂家设计生产,出厂后用户不可更改)3)混合ASCI(既具有面向用户的FPGA可编程功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块)EDA主要内容1)可编程逻辑器件可编程逻辑器件是一种由用户编程以实现某种逻辑功能的新型件。可编程逻辑器件也称为可编程ASIC,它是EDA技术的物质基础。2)硬件描述语言HDLHDL语言是EDA技术的重要组成部分,它是一种用于描述硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式。软件开发工具3)软件开发工具EDA软件开发工具是EDA技术的强有力支持。EDA软件开发工具是指以工作站或者高档计算机为基本工作平台,利用计算机图形学、拓扑逻辑学、计算数学和人工智能等多种应用学科的最新成果而开发出来的一套软件工具,它是一种帮助设计工程师进行电子系统设计的辅助工具。在EDA中首选的设计方法是:自顶向下第2章:实践中发现:任何组合逻辑都可化成“与-或”表达式;任何时序电路都可由组合电路加上存储元件组成。可编程逻辑器件的分类:(选择或填空)1、按集成度分2、按结构分1)PLD(乘积项结构器件,其基本结构为“与-或”阵列)22)FPGA(FieldProgrammableGateArray)门阵列(基于查找表结构的器件,由简单的查找表组成可编程门,再构成阵列形式)3、按工艺分1)熔丝或反熔丝编程器件,PROM器件2)UEPROM编程器件,紫外线擦除/电气编程器件3)EEPROM编程器件,电擦写编程器件4)SRAM器件PROM:与阵列固定,或阵列可编程PLA:与阵列可编程,或阵列可编程PAL:与阵列可编程;或阵列固定GAL:与阵列可编程,或阵列固定编程与配置1.主要配置方式有三种1)JTAG方式(是由JTAG命令来配置CPLD/FPGA器件的方式。主要用于芯片测试等功能)2)主动配置方式AS(由FPGA控制配置过程)3)被动配置方式PS(由系统中的其它设备发起并控制配置过程。2.大规模可编程逻辑器件的编程工艺有三种(要背诵)(1)基于电可擦除存储单元的EEPROM或Flash技术。(2)基于SRAM查找表的编程单元。(3)基于反熔丝编程单元。配置芯片当FPGA器件正常工作时,其配置数据存储在SRAM中,而SRAM有易失性,故每次加电配置数据都必须重新载入。Altera为设计者提供了一系列的配置器件来存储配置数据。(1)主动串行配置(2)被动串行配置FPGA器件在配置过程中完全是被动的,它仅输出一些状态信号来配合配置过程FPGA/CPLD由三部分组成:逻辑块、连线资源、输入/输出口(要记忆)FPGA/CPLD的工作原理(老师要求掌握)CPLD:内部互连结构由固定长度的连线资源组成,布线的延迟确定,属确定型结构。逻辑单元主要由“与或阵列”构成。FPGA:内部互连结构由多种长度不同的连线资源组成,每次布线的延迟可不同,属统计型结构。逻辑单元主体为由静态存储器(SRAM)构成的函数发生器,即查找表。通过查找表可实现逻辑函数功能两者的区别(老师要求掌握)CPLD:乘积项丰富而触发器少—适用组合逻辑CPLD:延时固定CPLD:掉电后重新上电还能保持编程信息FPGA:触发器资源丰富—适用时序逻辑FPGA:延时时间不可预测(容易产生竞争-冒险或误码等)FPGA:掉电后重新上电不能保持编程信息,需使用配置芯片FPGA的开发流程(要背诵)1.设计输入1)图形输入状态图输入3波形图输入原理图输入2)HDL文本输入2.综合3.适配4.仿真1)时序仿真2)功能仿真5.编程下载。6.硬件测试IP核:用于ASIC或FPGA中的预先设计好的电路功能模块(三个IP的概念)软IP使用硬件语言描述的功能块,但是不涉及什么用什么具体电路元件实现这些功能。软IP通常是以硬件描述语言HDL源文件的形式出现(应用开发过程与普通的HDL设计十分相似,只是所需的开发软硬件环境比较昂贵)优点:设计周期短、设计投入少,由于不涉及物理实现,为后续设计留有很大的发挥空间,增大了IP的灵活性和适应性。缺点:在一定程度上使后续工序无法适应整体设计,从而需要一定的修正,在性能上也不可能获得全面的优化固IP完成了综合的功能块,以网表文件的形式提交客户使用。(如果客户与固IP使用同一IC生产线的单元库,IP应用的成功率会高很多)硬IP提供设计的最终阶段的产品---掩膜(标准单元库的功能单元就是IP的一种形式)VerilogHDL的数据类型和逻辑值1、VerilogHDL的四种逻辑值0、1、x(不确定)、z(高阻)0:低、伪、逻辑低、地、VSS、负插入1:高、真、逻辑高、电源、VDD、正插入X:不确定:逻辑冲突无法确定其逻辑值Z:高阻抗、三态、无驱动源2、VerilogHDL的三种主要数据类型Nets(网络连接类型)、Register(寄存器/变量类型)、Parameter(参数类型)过程赋值语句:阻塞赋值语句,非阻塞赋值语句(注意两者的区别)阻塞赋值语句:y=b;一旦执行完当前的赋值语句,赋值目标变量y即刻获得来自等号右边表达式的计算值。如果一个块语句中含有多条阻塞式赋值语句,则执行当前某条赋值语句时其他语句将禁止执行。非阻塞赋值语句:在执行当前语句时对于块中的其他语句的执行情况一律不加限制,也可理解为块中的所有赋值语句都可以并行运行。注意:同一过程中对同一变量的赋值,阻塞赋值与非阻塞赋值不允许混合使用每个Verilog程序包括四个主要部分:端口定义、I/O说明、内部信号声明、功能定义。判断下列表达是否正确5’o374’d-43’b001‘hAF4’D24’B1x017’Hx44’Hz2’h1?8’h2A(2+3)’b10‘o72shift_reg_a34netbus263busa_indexa*b_netn@263%b(二进制),%o(八进制),%d(十进制),%h(十六进制),%t(时间类型),%s(字符串类型)…模块名、端口名和实例名都是标识符。Verilog语言是大小写敏感的系统任务和函数格式:$标识符‘$’符号表示Verilog的系统任务和函数常用的系统任务和函数有下面几种:$time//找到当前的仿真时间$display,$monitor//显示和监视信号值的变化$stop//暂停仿真$finish//结束仿真特殊符号“#”常用来表示延迟:在过程赋值语句时表示延迟。例:initialbegin#10rst=1;#50rst=0;end(画波形)在门级实例引用时表示延迟。例:not#1not1(nsel,sel);and#2and2(a1,a,nsel);Reg[7:0]a8位寄存器a选择数据类型时常犯的错误在过程块中对变量赋值时,忘了把它定义为寄存器类型(reg)或已把它定义为连接类型了(wire)把实例的输出连接出去时,把它定义为寄存器类型了把模块的输入信号定义为寄存器类型了。这是经常犯的三个错误!!!integerNUMS[7:0];//8个整型变量的寄存器阵列timet_vals[3:0];//4个时间变量的寄存器阵列数据类型为reg的阵列常称为存储器(即memory)reg[15:0]MEM[0:1023];//1Kx16位的存储器reg[7:0]PREP[‘hfffe:‘hffff];//2x8位的存储器&&逻辑与、II逻辑或、!逻辑非A=1’b0,B=1’b1,C[3:0]=4’b1100,D[3:0]=4’b1011,E[5:0]=6’b0110105begin_end语句块语句本身没有功能,仅限于顺序语句结构中使用,通常用它来组合顺序语句。当功能语句大于一条语句时必须使用块语句Initial过程中的语句沿时间方向轴只执行一次always@引导的过程语句当敏感信号发生变化时过程语句执行一次assign连续赋值语句由于此类语句的并行性,同一目标变量名下不允许有多个不同赋值表达式的。如:assignDOUT=a&b;assignDOUT=e&f;是错误的任务和函数具备将程序中反复调用的语句结构聚合起来的能力。可以有效的简化程序结构。利用任务和函数可以把一个大的程序模块分解成多个小的任务和函数,利于调试。任务(task)语句1.基本格式task任务名;端口及数据类型声明语句begin过程语句;endendtask调用格式任务名(端口1,端口2,…,端口N)1、任务语句中不能出现由initial和always引导的语句2、任务调用时和定义时的端口变量的位置要一一对应63、任务中无法描述时序电路,只能描述组合电路函数(function)语句基本格式function位宽范围声明函数名;输入端口说明,其他类型变量定义;begin过程语句;endendfunction调用格式函数名(输入参数1,输入参数2,…,输入参数N)1、位宽范围声明用于指定函数返回值的类型或位宽,未声明则返回值为1位寄存器类型的数据2、函数语句中不能出现由initial和always引导的语句3、函数中无法描述时序电路,只能描述组合电路任务和函数的不同点1、函数只能与主模块共用同一个仿真时间,而任务可以定义自己的方针时间;2、函数不能启动任务,但任务能启动其他任务和函数;3、函数至少要有一个输入变量,而任务可以没有或有多个任意类型的变量;4、函数返回一个值,而任务则不返回值1、端口关联例化格式:模块元件名:例化元件名(.例化元件端口(例化元件外接端口名),…)h_adderu2(.a(e),.so(sum),.b(c),.co(f));h_adder是带调用的模块元件名;u2是用户起的例化名;a是元件u2的端口名;e是u2的a端口将要连接的连线名后其他元件的某端口名2、位置关联例化格式:模块元件名:例化元件名(例化元件外接端口名1,例化元件外接端口名2,…)h_adderu1(a,b,e,d)h_adder是带调用的模块元件名;u1是用户起的例化名;其对应的连接信号(a,b,e,d)与半加器端口表h_adder(a,b,so,co)是一一对应的敏感信号列表中一旦含有posedge或nesedge的边沿敏感信号后,所有其他电平敏感型变量都不能放在敏感信号列表中always@(posedgeclkorrst)(错)always@(posedgeclkornegedgerst)beginif(rst)…….end(错)有限状态机的结构1说明部分2主控时序部分73主控组合部分4辅助过程状态机(主要用于编程)从状态机的信号输出方式上分:有摩尔(Moore)型状态机和米里(Mealy)型状态机。从状态机的描述结构上分:有单过程状态机和多过程状态机从状态机的表达方式上分:有符号化状态机和确定状态编码的状态机。从编码方式上分为:有顺序编码状态机、一位热码编码状态机和其他编码方式状态机。从输出时序上看,Moore型状态机属同步输出状态机Moore型状态机的输出仅为当前状态的函数,在输入发生变化时必须等待时钟的到来,时钟状态发生变化时才导致输出的变化与Moore型状态机相比,Mealy型状态机的输出变化要领先一个周期,即一旦输入信号或状态发生改变,输出信号即可发生变化对于一位热码编码1

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功