讲义-EDA技术-陶琳.doc_第1页
讲义-EDA技术-陶琳.doc_第2页
讲义-EDA技术-陶琳.doc_第3页
讲义-EDA技术-陶琳.doc_第4页
讲义-EDA技术-陶琳.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

讲 义20102011学年第1学期系部电子与电气工程系教研室(实验室)电子通信课 程 名 称EDA技术适用班级通信AB班主 讲 教 师陶琳职 称 助教二 年 月 日厦门理工学院教务处 制首 页课程名称EDA技术授课对象08通信AB班课程编号课程类型必修课公共基础课( );专业基础课( );专业课()选修课限选课( );任选课( )授课方式课堂讲授();实践课( )考核方式考试();考查( )课程教学总学时数48学 分 数3学时分配课堂讲授 24学时; 实践课 24学时基 本教 材和 主要 参考 资料序号教材名称作者出版社出版时间1EDA技术与verilogHDL潘松、黄继业清华大学20102FPGA设计及应用(第1版)褚振勇 翁木云科学技术20023Verilog数字系统设计教程夏宇闻北京航空航天大学出版社2008授课教师陶琳职称助教授课时间2010.9-2010.12教学目的要求本课程是通信类专业的一门很有实用性的技术课程。电子技术在不断地发展,电子系统的设计方法也随之发生变革,基于EDA技术的设计方法正在成为现代电子系统设计的主流。本课程旨在使学生了解以硬件描述语言为基础的数字系统设计的基本方法,熟悉常用PLD器件和现代数字系统的设计工具,通过教学使学生掌握数字系统自上而下的设计方法,通过对多个电子系统实例的学习和设计,使学生能够独立进行中等难度数字系统的设计,为进行应用系统设计和解决实际问题打下基础。教学重点难点Verilog程序的基本结构,利用Verilog进行程序设计,算法状态机的设计(Verilog),逻辑电路时序设计,现代电子系统设计方法,EDA软件的熟练使用,PLD的熟悉与应用。授课题目: 第1章 EDA技术概述,第2章 PLD硬件特性与应用授课方式: 理论课课时安排: 3学时 课次:1l 课程简介:1) 脉冲与数字电路为基础,学习了数字电路的基本设计方法。2) EDA技术与VHDL,面向实际工程应用,紧跟技术发展,掌握数字系统新的设计方法。l 课程宗旨:更新数字电路的设计观念,建立用PLD器件取代传统TTL器件设计数字电路的思想;更新数字系统设计手段,学会使用硬件描述语言(Hardware Description Language)代替传统的数字电路设计方法来设计数字系统。一、 传统数字电子系统或IC设计这种手工设计法的缺点是:1)复杂电路的设计、调试十分困难;2)由于无法进行硬件系统仿真,如果某一过程存在错误,查找和修改十分不便;3)设计过程中产生大量文档,不易管理;4)对于IC设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差;5)只有在设计处样机或生产出新片后才能进行实测。二、EDA概念EDA(Electronic Design Automation)即电子设计自动化,是指利用计算机完成电子系统的设计。1)广义的EDA技术,是指以计算机和微电子技术为先导, 汇集了计算机图形学、数据库管理、图论和拓扑逻辑、编译原理、 微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术;2)狭义的EDA技术,是指以大规模可编程逻辑器件为载体,以硬件描述语言HDL为系统逻辑的主要表达方式,借助功能强大的计算机,在EDA工具软件平台上,对用HDL描述完成的设计文件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑简化、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片ASIC(Application Specific Integrated Circuits)的一门新技术。三、EDA的发展历程1)计算机辅助设计CAD70年代,EDA工具供应商只有几家,产品几乎全面向LSI和PCB布线设计,这一阶段,人们开始利用计算机取代手工劳动,辅助进行集成电路板图编辑、PCB布局布线等工作,这个时期的EDA一般称为电路CAD(计算机辅助设计)。2)计算机辅助工程设计CAE80年代,带有电路图编辑工具和逻辑工具的EDA软件,以数字电路分析工具为代表,主要解决电路设计没有完成之前的功能检验问题。3) 电子设计自动化EDA90年代至今使用第三代EDA软件,能够在系统级、电路级及寄存器传输描述RTL及门级进行设计描述、综合和仿真。四、EDA技术的实现目标作为EDA技术最终实现目标的ASCI可以通过一下3种途径完成:1)可编程逻辑器件FPGA/CPLD(直接面向用户、具用极大的灵活性和通用性)2)半定制或全定制ASCI(用户提要求,厂家设计生产,出厂后用户不可更改)3)混合ASCI(既具有面向用户的FPGA可编程功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块)五、EDA主要内容1)可编程逻辑器件可编程逻辑器件是一种由用户编程以实现某种逻辑功能的新型件。 可编程逻辑器件也称为可编程ASIC,它是EDA技术的物质基础。2) 硬件描述语言HDLHDL语言是EDA技术的重要组成部分,它是一种用于描述硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式。3) 软件开发工具EDA软件开发工具是EDA技术的强有力支持。EDA软件开发工具是指以工作站或者高档计算机为基本工作平台,利用计算机图形学、拓扑逻辑学、计算数学和人工智能等多种应用学科的最新成果而开发出来的一套软件工具,它是一种帮助设计工程师进行电子系统设计的辅助工具。总结:本章重点是掌握EDA技术的概念,了解EDA技术实现的目标,重点掌握EDA的主要内容。六、 PLD概述不论是简单还是复杂的数字电路系统都是由基本门电路构成的。基本门可构成两种数字电路:组合电路(逻辑上输出总是当前输入状态的函数);时序电路(含有存储器件,输出是当前系统状态与当前输入状态的函数)。实践中发现:1) 任何组合逻辑都可化成“与-或”表达式;2) 任何时序电路都可由组合电路加上存储元件组成。由此人们提出了一种可编程逻辑电路结构,即乘积项可编程结构,如图1。对于可编程逻辑器件的发展及分类见书P30,这里不多介绍,同学们课下自己熟悉图1 基本PLD器件的原理图可编程逻辑器件的分类:1、按集成度分;2、按结构分;3、按工艺分。详细分类及主要代表元件见PPT七、 简单PLD原理2.2.1 电路符号表示逻辑门标号如PPT所示,这里的符号应该都是数字电子技术里介绍过的。如图2-2、2-3所示,接入PLD内部的与、或阵列输入缓冲器电路一般采用互补结构,即当信号输入PLD后,分别以相同或相反信号接入。2-4、2-5分别是与阵列和或阵列的简化图形表示2-6中十字交叉线表示未连接,有黑点表示固定连接,交叉线上打叉表示可编程,在PLD出厂后,其连接可随时改变。2.2.2 PROM如PPT图所示,PROM的地址译码器用于完成PROM存储阵列行的选择。 (2-1)PROM对于存储单元阵列的输出可用下列“或”的逻辑形式表示。 (2-2)由此可以看到PROM就是由固定的与阵列与可编程的或阵列组成。下面以半加器为例,即由PROM来实现半加器,经化简成与或形式可以看到F0为两个与项相或,那么相应将两个与项的与门输出做或输出。 (2-3)2.2.3 PLAPROM中可以看到,当地址译码器有n个输入变量时,经不可编程的与阵列产生2n个最小项,那么当组合逻辑函数在输入变量增多时,PROM存储单元利用效率将大大降低。PROM的与阵列是全译码器,产生了全部的最小项,而在实际应用中绝大多数组合逻辑函数不需要全部的最小项,因此可编程逻辑阵列PLA对PROM进行了改进。PLA是与阵列和或阵列都是可编程,提高了阵列的利用率。但是其算法复杂使得运行速率下降。2.2.4 PAL基于PLA算法复杂,PAL进行了改进。PAL是与阵列可编程,或阵列固定。(结构小,编程方便,不通用,增加系统芯片数量)上述的可编程结构只解决组合逻辑的可编程问题,那么对于时序逻辑电路还需加上存储器。2.2.5 GAL为适应不同应用需要,PAL的I/O结构很多,往往一种结构形式就有一种PAL器件,而设计者在设计不同功能的电路时,往往要采用不同I/O结构的PAL器件,由此带来了生产不便。GAL在PLD上采用了EEPROM工艺,使得其具有电可擦除重复编程特点GAL采用“与阵列可编程、或阵列固定”的结构,对PAL的I/O结构进行了较大的改进,在GAL的输出部分增加了“输出逻辑宏单元OLMC”,可构成各种输出端功能。使得编程容易,结构简单。授课题目: 第2章 PLD硬件特性与应用第3章 EDA数字系统开发软件授课方式: 理论课课时安排: 3学时 课次:2一、FPGA/CPLD的结构与工作原理PLD根据器件互连结构、逻辑单元结构分为CPLD、FPGAFPGA:内部互连结构由多种长度不同的连线资源组成,每次布线的延迟可不同,属统计型结构。逻辑单元主体为由静态存储器(SRAM)构成的函数发生器,即查找表。通过查找表可实现逻辑函数功能。采用SRAM工艺。(掉电后不能保持编程信息)CPLD:内部互连结构由固定长度的连线资源组成,布线的延迟确定,属确定型结构。逻辑单元主要由“与或阵列”构成。该结构来自于典型的PAL、GAL器件的结构。采用EEPROM工艺。(掉电后重新上电还能保持编程信息)FPGA/CPLD种类繁多,特点各异。基本结构如图(见PPT),主要包括三大部分:a. 一个二维的逻辑块阵列,构成了PLD器件的逻辑核心。b. 输入/输出块。c. 连接逻辑块的互连资源,由各种长度的连线线段组成,其中也有一些可编程的连接开关,用于逻辑块之间、逻辑块与输入/输出块之间的连接。FPGA与CPLD的主要不同在于逻辑块的构成不同:1.CPLD(以MAX3000A为例)CPLD的逻辑阵列块由16个宏单元的阵列组成,而多个逻辑阵列块(LAB)组成的阵列及其之间的连线便构成了MAX3000A。多个LAB通过可编程连线阵列(PIA)和全局总线连接在一起,全局总线从所有的专用输入、I/O引脚和宏单元馈入信号。宏单元如PPT图所示,由逻辑阵列、乘积项选择阵列和可编程寄存器组成。不同的LAB通过在可编程连线PIA上布线来相互连接构成所需的逻辑。I/O控制块允许每个I/O引脚单独被配置为输入、输出或双向工作方式。所有I/O引脚都有一个三态缓冲器,其控制信号来自一个多路选择器,可以选择用全局输出使能信号其中之一进行控制,或者直接连到地或电源上。2.FPGA(以Cyclone为例)逻辑阵列块由多个LE(逻辑宏单元组成)如图所示。FPGA是基于一种可编程的查找表结构完成功能的。查找表(LUT)是可编程的最小逻辑构成单元。LUT:LUT本质上就是一个RAM。目前FPGA多使用4输入的LUT,所以每一个LUT可以看成一个16乘1的RAM,当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能结果,并把结果事先写入RAM,这样每输入一个信号进行逻辑运算,就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。对于一个LUT无法完成的电路,就需要进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。二、产品介绍三家主流公司产品: Altera、Xilinx:数千门 数百万门 Lattice:数万门以下详细分类见PPT三、编程与配置通常,将对CPLD的下载成为编程,对FPGA的SRAM进行直接下载的方式称为配置。1、大规模可编程逻辑器件的编程工艺有三种:1)CPLD被编程后改变了电可擦除存储单元的信息,掉电后可保存。编程次数有限。2)编程信息保存在SRAM,掉电后编程信息丢失。编程次数不限。3)这种方法是一次性可编程2、主要配置方式有三种1. JTAG方式2. 主动配置方式AS3. 被动配置方式PS1) JTAG方式是由JTAG命令来配置CPLD/FPGA器件的方式。JTAG接口是IEEE 1149.1边界扫描测试的标准接口,主要用于芯片测试等功能。Altera的CPLD/FPGA器件基本上都可以支持JTAG方式,而且该方式比其它任何一种配置方式的优先级都高。使用JTAG方式配置FPGA以及CPLD电路图如PPT.2) PS被动配置方式由系统中的其它设备发起并控制配置过程。这些设备可以是Altera的配置芯片;或者是单板上的智能设备,如微处理器、CPLD等。FPGA器件在配置过程中完全是被动的,它仅输出一些状态信号来配合配置过程。3) 主动配置方式由器件引导配置操作过程,它控制着外部存储器和初始化过程。在这种方式下,由目标器件来主动输出控制和同步信号给Altera专用的一种串行配置芯片,在配置芯片收到命令后,发送配置数据给FPGA器件完成配置过程。需要注意的是:Altera的FPGA器件所支持的主动配置方式,只能与Altera提供的主动串行配置芯片配合使用,故此方式又称为主动串行AS(Active Serial)模式。支持该模式的器件有Stratix系列、Cyclone和Cyclone系列。3、下载电缆(ByteBlaster)ByteBlaster由三部分组成:与PC机并口相连的25针插座头;与PCB板插座相连的10针插头;25针到10针的变换电路。 ByteBlaster支持JTAG和PS配置方式;支持EPCS串行配置器件的主动串行配置模式;支持5V、3.3V、2.5V和1.8V系统;支持SignalTap II逻辑分析仪;支持和Nios II嵌入式处理器系列的通讯和调试。4、配置芯片当FPGA器件正常工作时,其配置数据存储在SRAM中,而SRAM有易失性,故每次加电配置数据都必须重新载入。Altera为设计者提供了一系列的配置器件来存储配置数据。Altera的配置器件分为三种:普通配置器件、增强型配置器件和AS串行配置器件。1) 主动串行配置,电路如图PPT。AS单片配置方式 中上拉电阻与3.3V电源相接。在AS配置中所有操作均由FPGA发起,其在配置过程中完全处于主动状态。在AS配置模式下,FPGA输出有效配置时钟信号DCLK,它由FPGA内部的振荡器产生,该振荡器在配置结束后被关掉。FPGA将nCSO拉低使能串行配置器件。FPGA使用ASDO到ASDI的信号控制配置芯片,配置数据从DATA输出并配置到FPGA中。2) 被动串行是是用最多的一种配置方式,其可用Altera的配置器件来进行配置。无论配置数据源于何处,只要能模拟出FPGA所需的配置时序,即可将配置数据写入到FPGA。 在PS方式下,FPGA处于完全被动的地位,其接收配置时钟、配置命令和配置数据,给出配置的状态信号及配置完成指示信号等。各配置方案电路图见PPT四、 FPGA的开发流程图1 FPGA开发流程1. 设计输入1) 图形输入a) 状态图输入根据电路的控制条件和不同的转化方式,用绘图的方法在EDA工具的状态图编辑器中绘出状态图,然后由EDA编译器和综合器将此状态变化流程图编译综合成电路网表。b) 波形图输入波形图输入法则是将待设计的电路看作一个黑盒子,只需告诉EDA工具黑盒子电路的输入和输出的时序波形图,EDA工具即能据此完成黑盒子电路的设计c) 原理图输入原理图输入是一种类似于传统电子设计方法的原理图编辑输入方式,即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图。原理图有逻辑器件(符号)和连接线构成。(逻辑器件可以是EDA软件库中预置的功能模块,如与门、非门、或门、触发器件以及各种含74系列器件功能的宏功能模块,甚至还有一些类似于IP的功能模块。2) HDL文本输入将使用了某种硬件描述语言的电路设计文本 (如Verilog HDL或VHDL的源程序)进行编辑输入。2. 综合综合过程就是将设计者在EDA平台编辑输入的HDL文本、原理图或状态图描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转化和综合,最终获得门级电路甚至更低层的电路描述网表文件。(由此可见,综合器之前必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用某种网表文件的方式对应起来,成为相应的映射关系。这种映射不是唯一的,综合的优化也不是但方向的)3. 适配适配器也称之为综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。适配所选定的目标器件必须属于原综合器指定的目标器件系列。(EDA软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由FPGA/CPLD供应商提供,因为适配器的适配对象直接与器件的结构细节相对应。4. 仿真1) 时序仿真。就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数。(仿真度高,但该方针文件必须来自针对具体器件的综合器与适配器)2) 功能仿真就是直接对HDL、原理图描述或其他形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求。(仿真过程不涉及任何具体器件的硬件特性。不经历综合与适配阶段,在设计项目编辑、编译后即可进入门级仿真器进行模拟测试)5. 编程下载将适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件调试和验证。(CPLD编程、FPGA的SRAM下载称配置)6. 硬件测试(Quartus2是Alter公司提供的FPGA/CPLD开发集成环境,它提供了与结构无关的设计环境,是设计者能方便的进行设计输入和器件编程)五、 IP核用于ASIC或FPGA中的预先设计好的电路功能模块1) 软IP使用硬件语言描述的功能块,但是不涉及什么用什么具体电路元件实现这些功能。软IP通常是以硬件描述语言HDL源文件的形式出现(应用开发过程与普通的HDL设计十分相似,只是所需的开发软硬件环境比较昂贵)优点:设计周期短、设计投入少,由于不涉及物理实现,为后续设计留有很大的发挥空间,增大了IP的灵活性和适应性。缺点:在一定程度上使后续工序无法适应整体设计,从而需要一定的修正,在性能上也不可能获得全面的优化2) 固IP完成了综合的功能块,以网表文件的形式提交客户使用。(如果客户与固IP使用同一IC生产线的单元库,IP应用的成功率会高很多)3) 硬IP提供设计的最终阶段的产品-掩膜(标准单元库的功能单元就是IP的一种形式)六、 Quartus II1)编辑输入图形设计文件 使用Quartus II设计电路系统之前,需要先建立设计项目(Project)。 例如,用图形编辑半加器adder时,需要先建立adder的设计项目。在Quartus II集成环境下,执行“File”菜单的“New Project Wizard”命令,弹出如图所示的新建设计项目对话框的“New Project Wizard: Introduction”页面(新建设计项目对话框共5个页面,分别解释)。2)编辑设计图形文件 执行Quartus II主窗口“Processing”,菜单的“Start Compilation”命令,或者在 主窗口上直接用鼠标左键点击“开始编译”命令按钮,开始对adder.bdf文件进行编译。3) 编程下载设计文件编程下载是指将设计处理中产生的编程数据文件通过EDA软件放到具体的可编程逻辑器件中去的过程。对CPLD器件来说是将JED文件下载(Down Load)到CPLD器件中去,对FPGA来说是将位流数据BG文件配置到FPGA中去。4)仿真设计文件 a. 建立波形文件; b. 输入信号节点; c. 设置波形参量; d. 编辑输入信号;e. 波形文件存盘; f. 运行仿真器。设计步骤与原理图编辑输入法一 致,只是在新的项目建立后,在 Quartus II集成环境下,执行 “File”菜单的“New”命令,在弹 出编辑文件类型对话框中,选择 “verilog HDL File ”(文本编辑)方式, 进入Quartus II文本编辑方式的 窗口界面,并保存为*.v文件。授课题目: 全加器授课方式: 实验课课时安排: 3学时 课次:3一位全加器1、真值表ABCiSCo00000001100101001101100101010111001111111、 原理图输入1)半加器输入File-create/update-create symbol files for current file生成2)全加器输入然后分配管脚,下载调试授课题目: 第四章 Verilog HDL语法基础授课方式: 理论课课时安排: 3学时 课次:4一、Verilog HDL是一种用于数字逻辑电路设计的语言:l 用Verilog HDL描述的电路设计就是该电路的 Verilog HDL模型。l Verilog HDL 既是一种行为描述的语言也是一种结构描述的语言。l 一个复杂电路的完整Verilog HDL模型是由若干个Verilog HDL 模块构成的,每一个模块又可以由若干个子模块构成这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种: 系统级(system):(用高级语言结构实现设计模块的外部性能的模) 算法级(algorithmic):(用高级语言结构实现设计算法的模型); RTL级(Register Transfer Level):(描述数据在寄存器之间流动和如何处理这些数据的模型); 门级(gate-level):(描述逻辑门以及逻辑门之间的连接的模型); 开关级(switch-level):(描述器件中三极管和储存节点以及它们之间连接的模型)。二、 模块的结构通过实例来说明verilog HDL模块例4.1.1 这个例子描述了一个三位的加法器。从例子中可以看出整个Verilog HDL程序是嵌套在module和endmodule声明语句里的。例4.1.2 这个程序描述了一个比较器.在这个程序中,/*.*/和/.表示注释部分,注释只是为了方便程序员理解程序,对编译是不起作用的。例4.1.3 这个程序描述了一个三态驱动器。程序通过调用一个实例元件bufif1来实现其功能。例4.1.4 在这个例子中存在着两个模块:模块trist1调用模块mytri 的实例元件 tri_inst。模块trist1 是上层模块。模块 mytri 则被称为子模块。通过这种结构性模块构造可构成特大型模块。从以上例子可以看出:a) Verilog HDL的模块结构:Verilog模块结构完全嵌在module和endmodule声明语句之间;b) 每个Verilog程序包括四个主要部分:端口定义、I/O说明、内部信号声明、功能定义。Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成的:一)描述接口;二)描述逻辑功能,即定义输入是如何影响输出的1)模块语句一般格式module 模块名 (端口名称表) 模块端口描述 模块功能描述 endmodule2)端口语句端口或端口信号是模块与外部电路相连的通道。 input 端口名1;端口名2; output 端口名1;端口名2; Inout 端口名1;端口名2; Input msb:lsb 端口名1;端口名2;三、 Verilog HDL语法要点l 理解Verilog 语言的一些重要规定.l 学会认识一些有关的重要语言符号.l 掌握Verilog 中如何规定时间单位2、 空格和注释空格在文本中起一个分离符的作用,别的没有其他用处。单行注释符用 /* 2、整数和实常数整数可以标明位数也可以不标明位数,表示方法: 位数基数值3、字符串用“ ”括起来的一行字符串,换新一行用 “n” 字符,与 C 语言一致4、标识符所谓标识别符就是用户为程序描述中的Verilog 对象所起的名字。标识符必须以英语字母(a-z, A-Z)起头,或者用下横线符( _ )起头。其中可以包含数字、$符和下横线符。并且Verilog语言是大小写敏感的5、系统任务和函数$符号表示 Verilog 的系统任务和函数形式:$常用的几种1) $time /找到当前的仿真时间2) $display, $monitor /显示和监视信号值的变化3) $stop /暂停仿真4) $finish /结束仿真6、特殊符号#表示延时。第一个例子表示过程开始执行时,延长10个时钟执行rst=1语句,在延长50个时钟执行rst=0语句;第二个例子表示延长一个时钟执行非运算。7、编译引导语句编译引导语句用主键盘左上角小写键 “ ” 起头,用于指导仿真编译器在编译时采取一些特殊处理。编译引导语句一直保持有效,直到被取消或重写resetall 编译引导语句把所有设置的编译引导恢复到缺省状态。常用的编译引导有:a) defineb) includec) timescaled) uselibe) resetall四、verilog HDL的数据类型和逻辑值1、verilog HDL的四种逻辑值0、1、x(不确定)、z(高阻)0、低、伪、逻辑低、地、VSS、负插入1、高、真、逻辑高、电源、VDD、正插入X、不确定:逻辑冲突无法确定其逻辑值Z、高阻抗、三态、无驱动源 2、verilog HDL的三种主要数据类型Nets、Register、Parameter Nets 表示器件之间的物理连接, 称为网络连接类型;由模块或门驱动的连线,驱动端信号的改变会立刻传递到输出的连线上。 Register 表示抽象的储存单元,称为寄存器/变量类型;register 型变量能保持其值,直到它被赋于新的值。register 型变量常用于行为建模,产生测试的激励信号。常用行为语句结构来给寄存器类型的变量赋值。reg默认为一位寄存器,若多位格式为reg hst:lst rst Parameter 表示运行时的常数,称为参数类型可用字符串表示的任何地方,都可以用定义的参数来代替。参数是本地的,其定义只在本模块内有效。3、verilog HDL三种数据类型的使用规则 输入口(input)可以由寄存器或网络连接驱动,但它本身只能驱动网络连接。 输出口 (output)可以由寄存器或网络连接驱动,但它本身只能驱动网络连接。 输入/输出口(inout)只可以由网络连接驱动,但它本身只能驱动网络连接。 如果信号变量是在过程块 (initial块 或 always块)中被赋值的,必须把它声明为寄存器类型变量选择数据类型时常犯的错误 在过程块中对变量赋值时,忘了把它定义为寄存器类型(reg)或已把它定义为连接类型了(wire)。 把实例的输出连接出去时,把它定义为寄存器类型了。 把模块的输入信号定义为寄存器类型了。4、verilog HDL逻辑操作符逻辑操作符算数操作符等式操作符不等式操作符五、verilog HDL语句1. 块语句:benginend块语句本身没有功能,仅限于顺序语句结构中使用,通常用它来组合顺序语句。当功能语句大于一条语句时必须使用块语句。基本格式 begin :块名 语句1;语句2; end2. 过程语句:initial过程语句,always过程语句1)initial过程语句Initial过程中的语句沿时间方向轴只执行一次基本格式Initialbegin 语句1;语句2;end2)always过程语句always引导的过程语句当敏感信号发生变化时过程语句执行一次基本格式always (敏感信号及敏感信号列表或表达式)begin 语句1;语句2;end所有的过程块都在0时刻同时启动;它们是并行的,在模块中不分前后。 initial块 只执行一次。 always块 只要符合触发条件可以循环执行。3、赋值语句: a)连续赋值语句:assign assign 目标变量名=驱动表达式当等号右端的驱动表达式中任意一信号发生变化时,此表达式即被计算一次,并将获得的数据立即赋值给等号左侧的变量名标示的目标变量。注意:由于此类语句的并行性,同一目标变量名下不允许有多个不同赋值表达式的。 b)过程赋值语句:阻塞赋值语句,非阻塞赋值语句阻塞赋值语句:y=b;一旦执行完当前的赋值语句,赋值目标变量y即刻获得来自等号右边表达式的计算值。如果一个块语句中含有多条阻塞式赋值语句,则执行当前某条赋值语句时其他语句将禁止执行。由于assign不能一道块语句,故只允许引导一条带有“=”的语句。因此从综合角度看是一样的。非阻塞赋值语句:在执行当前语句时对于块中的其他语句的执行情况一律不加限制,也可理解为块中的所有赋值语句都可以并行运行。注意:同一过程中对同一变量的赋值,阻塞赋值与非阻塞赋值不允许混合使用4、条件语句:if-else语句,case语句1)if-else语句if (s) y=a; else y=b;当s条件句真值为1时,执行语句y=a,当条件句真值为0时,执行语句y=b。2)case语句case (表达式) 取值1 : begin 语句1;语句2;end 取值2 : begin 语句1;语句2;end default: begin 语句1;语句2;end endcase程序执行满足表达式取值的块语句。注意1、条件表达式的只必须在case下面列出的取值范围内2、default引导的语句表示本语句完成以上已列的所有条件语句中未能列出的其他可能取值的逻辑操作5)循环语句:for(与C语言定义法相同)任务和函数具备将程序中反复调用的语句结构聚合起来的能力。可以有效的简化程序结构。利用任务和函数可以把一个大的程序模块分解成多个小的任务和函数,利于调试。授课题目: 4.4任务和函数,第5章 组合逻辑电路设计授课方式: 理论课课时安排: 3学时 课次:5一、 verilog HDL任务(task)语句基本格式task ; 端口及数据类型声明语句 begin 过程语句;endendtask任务语句中不能出现由initial和always引导的语句,并且任务中无法描述时序电路,只能描述组合电路二、verilog HDL函数(function)语句基本格式function 函数名; 输入端口说明,其他类型变量定义; begin 过程语句;endendfunction函数语句中不能出现由initial和always引导的语句,同样的函数无法描述时序电路,只能描述组合电路。三、组合逻辑电路设计规则1)分析设计要求,确定顶层框图(确定输入、输出端口)2)根据功能要求列出真值表3)依据真值表求得输入与输出信号之间逻辑关系式4)根据求得的逻辑表达式,选择原理图输入或文本输入法编写程序5)程序调试,功能仿真,选择芯片,分配引脚,布局布线,时序仿真,下载。四、 通过典型的组合电路模块说明组合逻辑电路的设计过程例1 四选一多路选择器1) 确定输入输出关系A、B、C、D是4个输入端口;S1、S0为通道选择信号端,Y为输出端。功能描述:当S1、S0分别取为00、01、10、11时,输出端口Y将输出来自输入口A、B、C、D的数据。2) 列出真值表3) 描述输入输出逻辑关系 (1)4) 程序输入a) 原理图输入b) Verilog HDL输入 -使用case语句 -使用if-else语句 -使用连续赋值语句 -使用条件操作符形式:条件表达式 ? 表达式1 :表达式2条件表达式真值为1时选择并计算表达式的值,否则选择并计算表达式2的值。(这种条件操作符在连续赋值和过程赋值语句中都可以使用)例2 半加器设计1)输入输出关系A、B输入,S加法结果,C进位结果2)输入输出逻辑关系 (2)3) 程序输入a) 原理图输入b) verilog HDL文本输入任一verilog模块对应一个硬件电路功能实体器件,如果将这些实体器件连接起来构成一个完整的系统,就需要一个总的模块将所有涉及的子模块连接起来,这个总的模块所对应的verilog设计文件就称为顶层文件或顶层模块全加器可由半加器和门电路组成例3 一位全加器设计五、元件例化语句1、端口关联例化格式: :(.例化元件端口(例化元件外接端口名),)2、位置关联例化格式: :(例化元件外接端口名1,例化元件外接端口名2,)例4 6位加法器设计授课题目: 七段数码显示授课方式: 实验课课时安排: 2学时 课次:6显示为0时,abcdef有效; 显示为1时,cd有效.等等Verilog文本输入:module decode4_7(decodeout,indec);output6:0 decodeout;input3:0 indec;reg6:0 decodeout;always (indec) begin case(indec) 4d0:decodeout=7b1111110; 4d1:decodeout=7b0110000; 4d2:decodeout=7b1101101; 4d3:decodeout=7b1111001; 4d4:decodeout=7b0110011; 4d5:decodeout=7b1011011; 4d6:decodeout=7b1011111; 4d7:decodeout=7b1110000; 4d8:decodeout=7b1111111; 4d9:decodeout=7b1111011; default: decodeout=7bx; endcase endendmodule授课题目: 第6章 时序逻辑电路设计授课方式: 理论课课时安排: 3学时 课次:7一、时序逻辑电路设计规则任何时序电路都可由组合电路加上存储元件组成,任何时序电路都是以时钟信号为驱动信号的,因此时序电路的组合逻辑部分可参照组合逻辑电路设计规则,时序逻辑电路设计的重点在于时序信号的控制。二、通过典型的时序电路模块说明时序逻辑电路的设计过程例1 边沿触发型D触发器功能描述:只有当时钟上升沿来临时,其输出Q才会随输入D而改变。由实例说明什么是时序电路,时序电路的特点,并引导出两个时序关键字的用法。三、posedge和nesedge1)Posedge时序敏感信号的表达,posedge CLK看成是对时钟的上升沿敏感的敏感变量或敏感表达。2)当输入信号CLK出现一个上升沿时,敏感信号posedge CLK将启动过程语句3)凡是边沿触发性质的时序元件必须使用时钟边沿敏感表达( posedge CLK),否则产生的时序电路都是电平触发4) negedge CLK是下降沿敏感例2 电平触发型锁存器功能描述:当CLK为高电平时,其输出Q的数值随输入D的数值而改变;当CLK为低电平时将保持高电平时锁入的数据。通过verilog HDL语言描述可以看到电平触发型锁存器未使用时序敏感信号表达,电平触发型是如何构建时序电路呢?1)CLK放生变化,但是是从1变到0,CLK=0,这时无论D如何变化,Q只能保持原值不变,这就意味着设计模块中需引入存储元件。2)CLK一直不变,保持等于0,那么无论D如何变化,Q只能保持原值不变,这也意味着设计模块中需引入存储元件。那么此类不用类似posedge(negsedge)标志性敏感表述也能产生时序电路的奥秘就是通过使用不完整的条件语句,即在条件语句中有意不把所有可能的条件对应的操作表述出来,而只列出满足某部分条件下完成某任务,不交代当不满足此条件时程序应如何操作。例3带异步复位/置位端的同步使能D触发器1) 确定输入输出关系2) 画出真值表3) 逻辑表达式:Qn+1 = D4) 程序输入a)原理图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论