Verilog语言董丽丽大连海事大学信息科学技术学院84724267dll_lili@163.com•VerilogHDL语言(24学时)•仿真工具•实验(10学时)•考试(2学时)课程简介VerilogHDL语言讲课内容主要包括:•VerilogHDL语言概述•VerilogHDL程序的基本结构和特点•Verilog的语言要素与表达式•行为级的建模与仿真•结构级的建模与仿真•时序状态机的简单介绍•Verilog语句的综合•Verilog的测试和设计验证–怎样产生激励信号和控制信号–输出响应的产生、记录和验证仿真工具主要介绍ISE开发工具:•ISE系统简介•工程管理与设计输入•ISE中综合工具介绍•约束设置•设计进阶实验实验内容主要包括:•简单的组合逻辑设计•简单时序电路的设计•利用条件语句实现较复杂的时序逻辑电路•设计时序逻辑时采用阻塞赋值与非阻塞赋值的区别•用always块实现较复杂的组合逻辑电路•在Verilog中使用函数•在Verilog中使用任务参考书目•《精通VerilogHDL语言编程》电子工业出版社,刘波•《Verilog数字系统设计教程》北京航空航天大学出版社,夏宇闻•《VerilogHDL硬件描述语言》国防工业出版社,杜建国•《硬件描述语言Verilog》清华大学出版社,Thomas&Moorby,刘明业等译第一章Verilog语言概述1.什么是Verilog语言?2.Verilog语言的历史3.Verilog与C、VHDL的比较4.Verilog语言的开发流程5.Verilog语言的抽象6.Verilog语言的应用学习目标:概述•单片机MCU•DSP•ARM•EDA•FPGA/CPLD•单片机MCU(MicroControlUnit)单片机主要用于做一些简单的低速控制,可用于各种简单电器,机械的控制,有完备的指令,编程简单,开发周期短。是一个成型的芯片,一个软件控制执行的智能机器。单片机是串行工作的。把CPU、RAM、ROM、定时器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。概述•DSPDSP(digitalsingnalprocessor)是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。芯片内包括:控制单元、运算单元、各种寄存器以及一定数量的存储单元等等,在其外围还可以连接若干存储器,并可以与一定数量的外部设备互相通信,有软、硬件的全面功能,本身就是一个微型计算机。概述•DSP有专用的硬件乘法器,在一个指令周期内可完成一次乘法和一次加法;程序和数据空间分开,可以同时访问指令和数据;大大的提高了微处理器的速度。DSP主要用做运算,比如进行加密解密、调制解调,语音,图像等信号的运算处理,优势是强大的数据处理能力和较高的运行速度。基本不用做控制。概述•ARMARM不是单片机,准确来讲ARM是一种处理器的IP核。由英国ARM公司开发出处理器结构后再向其他芯片厂商授权制造成芯片。授权芯片厂商主要有三星、飞利浦、ATMEL、INTEL制造的几大类,功能与使用上均不相同。ARM处理器核还可以嵌入其他专用芯片中作为中央处理单元使用,例如飞利浦的MP3解码芯片就是采用ARM7核心的。ARM系列处理器很少集成片上硬件资源,更接近今天的处理器范畴,基本不被认为是单片机。ARM芯片多用在手持设备上。ARM控制能力较强,但运算能力相对较弱。因此现在很多手持设备是用ARM+DSP来实现的,就是所谓的“双核心”。概述•EDA半导体工艺设计自动化可编程器件设计自动化电子系统设计自动化印刷电路板设计自动化仿真、测试、故障诊断自动化形式验证自动化。。。(ElectronicsDesignAutomation)即电子设计自动化技术,是利用计算机工作平台,从事电子系统和电路设计的一项技术。大规模可编程逻辑器件FPGA/CPLD硬件描述语言计算机、开发软件Verilog/VHDLISE/QuartusⅡ开发环境概述SOC:SYSTEMONaCHIP概述•FPGAFPGA(FieldProgrammableGateArray):现场可编程门阵列。•是专用集成电路(ASIC)领域中的一种半定制电路,可通过软件编程来修改其硬件功能。FPGA是一个空白的,需要自己编东西,用FPGA做一个CPU之后,这个FPGA与CPU在使用上区别就不大了。FPGA主要是设计电路,优势是用做复杂的逻辑控制,功能很强大。FPGA现可做大规模的ASIC电路,但做判决是弱项。FPGA是并行工作的。概述•FPGA内部主要包括:可配置逻辑模块CLB(ConfigurableLogicBlock)输出输入模块IOB(InputOutputBlock)数字时钟管理模块(DCM)嵌入式块RAM(BRAM)底层内嵌功能单元内嵌专用硬核丰富的布线资源(Interconnect)概述可配置逻辑块结构简化的Slice的结构实际逻辑电路LUT的实现方式a,b,c,d输入逻辑输出地址RAM中存储的内容00000000000001000010....0...01111111111查找表LUT原理术语定义(termsanddefinitions)•ASIC:专用集成电路(ApplicationSpecificIntegratedCircuit)•ASICVender:芯片制造商,开发并提供单元库•FPGA(Field-ProgrammableGateArray):现场可编程逻辑门阵列•CPLD(ComplexProgrammableLogicDevice):复杂可编程逻辑器件•Bottom-Up(自下而上的设计流程):一种先构建底层单元,然后由底层单元构造更大的系统的设计方法。•Top-Down(自顶向下的设计流程):一种设计方法,先用高抽象级构造和描述系统,然后再设计下层单元--传统的电路设计方法都是自底向上(Bottom-Up)形成系统模块连接逻辑设计可用元器件术语定义(termsanddefinitions)•ASIC:专用集成电路(ApplicationSpecificIntegratedCircuit)•ASICVender:芯片制造商,开发并提供单元库•FPGA(Field-ProgrammableGateArray):现场可编程逻辑门阵列•CPLD(ComplexProgrammableLogicDevice):复杂可编程逻辑器件•Bottom-Up(自下而上的设计流程):一种先构建底层单元,然后由底层单元构造更大的系统的设计方法。•Top-Down(自顶向下的设计流程):一种设计方法,先用高抽象级构造和描述系统,然后再设计下层单元--自顶向下(TOP-DOWN)的设计概念现在数字电路系统规模特别大,一般把整个硬件设计任务划分成若干个部分,编出相应的模型,通过仿真加以验证后,再把各个模块分配给多个工程师。这样可以把一个大的系统分成很多的小系统分开由多人设计,从而提高设计的速度和缩短开发周期系统设计若干模块EDA库中基本元器件各层次基本单元和逻辑连接什么是VerilogHDL语言?•HDL(HardwareDiscriptionLanguage)-硬件描述语言具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言•这种特殊编程语言能够:–描述电路的连接–描述电路的功能–描述电路的时序–在不同抽象级上描述电路–表达具有并行性就是按照一定的时间顺序给出信号,就能得到想要的数据,或者把一些控制数据写进电路•使用HDL描述设计具有下列优点:–设计在高层次进行,与具体实现无关–设计开发更加容易–早在设计期间就能发现问题–能够自动的将高级描述映射到具体工艺实现–在具体实现时才做出某些决定–降低成本、缩短设计周期什么是VerilogHDL语言?为什么使用HDL•HDL具有更大的灵活性–可重用–可以选择工具及生产厂•HDL能够利用先进的软件–更快的输入–易于管理–易于修改什么是VerilogHDL语言?•最早的HDL:1962年,Iverson公司提出•HDL主要有两种:VerilogHDL和VHDL–Verilog起源于C语言,因此非常类似于C语言,容易掌握。–VHDL起源于ADA语言,格式严谨,不易学习。–VHDL出现较晚,但标准化早。IEEE1706-1985标准。–Verilog的标准包括:IEEEStd1364-1995和IEEEStd1364-2001。Verilog的历史•VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所创。PhilMoorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。•在1984-1985年间,Moorby设计出了第一个Verilog-XL的仿真器。•1986年,Moorby提出了用于快速门级仿真的XL算法。•1990年,Cadence公司收购了GDA公司•1991年,Cadence公司公开发表Verilog语言,成立了OVI(OpenVerilogInternational)组织来负责VerilogHDL语言的发展。•1995年制定了VerilogHDL的IEEE标准,即IEEE1364。–VerilogHDL更善于描述底层,包括结构级(门级、开关级)和物理级(器件、平面规划);VHDL善于描述高层设计,如系统级(算法、控制)和行为级。–Verilog侧重于电路级以及激励、仿真、硬件建模等的描述,从而更多的为电路级设计人员所采用;VHDL侧重于系统级描述,从而更多的为系统级或大型的硬件逻辑设计人员所采用。–VHDL语法更规范、更严谨;VerilogHDL语法更灵活。–美国和大多数亚洲国家使用VerilogHDL的工程师较多;欧洲使用VHDL的工程师较多VerilogHDL与VHDL•虽然Verilog的某些语法与C语言接近,但存在本质上的区别–Verilog是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真–C语言是一种软件语言,是控制硬件来实现某些功能–利用Verilog编程时,要时刻记得Verilog是硬件语言,Verilog与硬件电路是对应的VerilogHDL与C语言VerilogHDL与C语言C、ASM...程序CPU指令/数据代码:0100101000101100软件程序编译器COMPILERVHDL/VERILOG.程序硬件描述语言综合器SYNTHESIZER为ASIC设计提供的电路网表文件(a)软件语言设计目标流程(b)硬件语言设计目标流程•具体区别–Verilog不能使用C语言中很抽象的表示语法,如迭代、指针、动态声明等–C语言是顺序执行,Verilog描述的是硬件,可以并行执行,但Verilog仿真器也是顺序执行,因此要注意时序关系的处理–C语言无时间延迟,Verilog中延时只能用于仿真,不能被综合工具所综合–C语言中是函数调用,Verilog中是模块实例化–C语言语法较为灵活,Verilog语法较死,限制较多VerilogHDL与C语言•常用关键字与控制描述对照VerilogHDL与C语言CVerilog类型标示符函数名()module(function/task)模块名(){,}begin-endif-elseif-then-elsecasecaseforforwhilewhilebreakdisabledefinedefineintintprintfmonitor,display•常用运算符对照VerilogHDL与C语言CVerilog功能**乘//除++加--减%%取余&&&&逻辑与!!逻辑非||||逻辑或大于小于==大于等于•常用运算符对照VerilogHDL与C语言CVerilog功能==小于等于====等于!=!=不等于~~按位非&&按位与||按位或^^按位异或~^~^按位异或非逻辑右移逻辑左移?:?:条件运算符VerilogHDL语言开发流程VerilogHDL语言开发流程前仿