verilog-hdl教程-硬件描述语言-课件-PPT.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《verilog-hdl教程-硬件描述语言-课件-PPT.ppt》由用户(hwpkd79526)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- verilog_hdl 教程 硬件 描述 语言 课件 _PPT
- 资源描述:
-
1、硬件描述语言及通信系统设计硬件描述语言及通信系统设计 相关安排相关安排8个学时理论(个学时理论(40分)分)+24学时设计(学时设计(60分)分)内容:内容:1 Verilog HDL 4学时学时 (20分)分)2 VHDL 4学时学时 (20分)分)3 设计设计24学时学时 4个课题(每个个课题(每个15分)分)1引言引言 嵌入式?嵌入式?顾名思义,嵌入式系统指的是嵌入到系统内部的计算顾名思义,嵌入式系统指的是嵌入到系统内部的计算机系统,是面向特定应用设计的专用计算机系统。机系统,是面向特定应用设计的专用计算机系统。早期的嵌入式系统一般是以通用处理器或单片机为核心早期的嵌入式系统一般是以通用
2、处理器或单片机为核心,在外围电路中加入存储器、功率驱动器、通信接口、显示,在外围电路中加入存储器、功率驱动器、通信接口、显示接口、人机输入接口等外围接口,再加上应用软件,有些还接口、人机输入接口等外围接口,再加上应用软件,有些还加上了嵌入式操作系统,从而构成完整的系统。加上了嵌入式操作系统,从而构成完整的系统。随着微电子技术的进步,随着微电子技术的进步,SoC已经在很多应用中取代了已经在很多应用中取代了传统的以单片机为中心的架构,将很多外设和存储器集成在传统的以单片机为中心的架构,将很多外设和存储器集成在一个芯片中,使系统的功耗和体积越来越小,而功能却越来一个芯片中,使系统的功耗和体积越来越小
3、,而功能却越来越强。越强。引言引言 FPGA在嵌入式系统中的应用前景在嵌入式系统中的应用前景 现在的现在的MCU和和DSP的功能已经非常强了,但处理能力的功能已经非常强了,但处理能力毕竟还是有限的,厂商在推出一款器件的时候,其性能就已毕竟还是有限的,厂商在推出一款器件的时候,其性能就已经固定了。当某一款产品的性能无法满足要求时,就必须选经固定了。当某一款产品的性能无法满足要求时,就必须选用新的处理器,常常意味着重新进行用新的处理器,常常意味着重新进行PCB的设计,重新进行的设计,重新进行各项软硬件的验证测试,所导致的工程资源的浪费是非常惊各项软硬件的验证测试,所导致的工程资源的浪费是非常惊人的
4、。人的。FPGA是通过逻辑组合来实现各种功能的器件,几乎可是通过逻辑组合来实现各种功能的器件,几乎可以进行任何类型的处理;对于常用的数字信号处理,有些以进行任何类型的处理;对于常用的数字信号处理,有些FPGA专门还提供了专门还提供了DSP模块来实现加速;模块来实现加速;FPGA的并行处理架构非常适合图像处理、数字信号处的并行处理架构非常适合图像处理、数字信号处理等运算密集的应用;用某款芯片无法满足要求时,还可以理等运算密集的应用;用某款芯片无法满足要求时,还可以通过使用同样封装且容量更大的通过使用同样封装且容量更大的FPGA芯片来提供更高的处芯片来提供更高的处理能力,这样就可以保持管脚的兼容性
5、,从而无须对理能力,这样就可以保持管脚的兼容性,从而无须对PCB板板进行修改;进行修改;FPGA的可编程性使设计工程师可以随时对设计进行修的可编程性使设计工程师可以随时对设计进行修改,即使在产品部署后也能对设计错误进行更正;改,即使在产品部署后也能对设计错误进行更正;FPGA不但可以完成不但可以完成MCU和和DSP的各种功能,还可以根的各种功能,还可以根据需要生成新的功能,或者调配各项功能之间的资源配比,据需要生成新的功能,或者调配各项功能之间的资源配比,使同一个硬件电路设计可以满足不同的应用需求;使同一个硬件电路设计可以满足不同的应用需求;FPGA还可以利用现成的处理器内核,直接生成软处理还
6、可以利用现成的处理器内核,直接生成软处理器,并在其上运行操作系统。器,并在其上运行操作系统。由于由于FPGA是通过逻辑组合来实现功能的,所以其功耗是通过逻辑组合来实现功能的,所以其功耗和成本一般高于和成本一般高于MCU和和DSP。在几年前,。在几年前,FPGA给人的印象给人的印象一直是高高在上的价格,除了通信、航天、军工、工业等少一直是高高在上的价格,除了通信、航天、军工、工业等少数行业,数行业,FPGA更多地是在扮演原型验证开发的角色,在消更多地是在扮演原型验证开发的角色,在消费类电子等更广大的市场中迟迟未打开局面。费类电子等更广大的市场中迟迟未打开局面。随着随着Xilinx和和Altera
7、竞相采用新的制造工艺,其单位门电竞相采用新的制造工艺,其单位门电路的价格下降得比路的价格下降得比ASIC还要快,价格在很多应用中已不再还要快,价格在很多应用中已不再是障碍了。特别是在一些需要特定功能的应用中,设计师在是障碍了。特别是在一些需要特定功能的应用中,设计师在市场上找不到可以满足要求的器件,他们就必须自己开发市场上找不到可以满足要求的器件,他们就必须自己开发ASIC芯片,或者用芯片,或者用FPGA进行设计。但开发进行设计。但开发ASIC的成本和的成本和风险在不断提高,甚至超过了未来的收益,用风险在不断提高,甚至超过了未来的收益,用FPGA就成了就成了一个非常实际的选择一个非常实际的选择
8、。VHDL 还是还是 Verilog HDL 硬件描述语言硬件描述语言HDL是一种用形式化方法描述数字电路和是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(电子设计自动化(EDA)工具,逐层进行仿真验证,再把其)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具
9、转换到中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路门级电路网表。接下去,再用专用集成电路ASIC或现场可或现场可编程门阵列编程门阵列FPGA自动布局布线工具,把网表转换为要实现自动布局布线工具,把网表转换为要实现的具体电路布线结构。的具体电路布线结构。目前,这种高层次目前,这种高层次(high-level-design)的方法已被广泛的方法已被广泛采用。据统计,目前在美国硅谷约有采用。据统计,目前在美国硅谷约有90%以上的以上的ASIC和和FPGA采用硬件描述语言进行设计采用硬件描述语言进行设计 。20世纪世纪80年代后期,年代后期,VHDL和和V
10、erilog HDL语言适应了语言适应了这种趋势的要求,先后成为这种趋势的要求,先后成为IEEE标准。标准。现在,随着系统级现在,随着系统级FPGA以及系统芯片的出现,软硬件以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像,像Superlog、SystemC、Cynlib C+等等。等等。如何选择:如何选
11、择:对于特大型的系统级数字电路设计,对于特大型的系统级数字电路设计,VHDL是较为合适的。是较为合适的。对于一个系统芯片设计项目,可以采用的方案有多种:对于一个系统芯片设计项目,可以采用的方案有多种:最传统的办法是,在系统级采用最传统的办法是,在系统级采用VHDL,在软件级采用,在软件级采用C语言,在实现级采用语言,在实现级采用Verilog。目前,。目前,VHDL与与Verilog的的互操作性已经逐步走向标准化,但软件与硬件的协调设计还互操作性已经逐步走向标准化,但软件与硬件的协调设计还是一个很具挑战性的工作,因为软件越来越成为是一个很具挑战性的工作,因为软件越来越成为SOC设计的设计的关键
12、。该方案的特点是:风险小,集成难度大,与原有方法关键。该方案的特点是:风险小,集成难度大,与原有方法完全兼容,有现成的开发工具;但工具集成由开发者自行负完全兼容,有现成的开发工具;但工具集成由开发者自行负责完成。责完成。108 8 循环语句循环语句9 9 结构说明语句结构说明语句10 10 编译预处理语句编译预处理语句11 11 语句的顺序执行与并行执行语句的顺序执行与并行执行12 12 不同抽象级别的不同抽象级别的VerilogVerilog HDL HDL模型模型13 13 设计技巧设计技巧1 1 引言引言2 2 VerilogVerilog HDL HDL基本结构基本结构3 3 数据类型
13、及常量、变量数据类型及常量、变量4 4 运算符及表达式运算符及表达式5 5 语句语句6 6 赋值语句和块语句赋值语句和块语句7 7 条件语句条件语句硬件描述语言硬件描述语言VerilogVerilog HDL HDL11 1 1 引言引言一、什么是一、什么是VerilogVerilog HDL HDL二、二、VerilogVerilog HDL HDL的发展历史的发展历史三、不同层次的三、不同层次的VerilogVerilog HDL HDL抽象抽象 四、四、VerilogVerilog HDL HDL的特点的特点12 1 1 引言引言一、一、什么是什么是Verilog HDL Verilog
14、 HDL是一种用于是一种用于数字数字逻辑电路设计的硬件描述逻辑电路设计的硬件描述语言(语言(Hradware Description Language),可以用来进,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。行数字电路的仿真验证、时序分析、逻辑综合。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。Verilog HDL 既是一种行为描述语言也是一种结构描述语言。既可以用电路的功能描述,也可以用元器件及其之间的既可以用电路的功能描述,也可以用元器件及其之间的连接来建立连接来建立VerilogVerilog HDL HDL模型。模型。13 1 1 引言引言二
15、、二、VerilogVerilog HDL HDL的发展历史的发展历史 1983年,由年,由GDA(GateWay Design Automation)公)公司的司的Phil Moorby首创;首创;1989年,年,Cadence公司收购了公司收购了GDA公司;公司;1990年,年,Cadence公司公开发表公司公开发表Verilog HDL;1995年年,IEEE制定并公开发表制定并公开发表Verilog HDL1364-1995标准;标准;1999年,模拟和数字电路都适用的年,模拟和数字电路都适用的Verilog标准公开标准公开发表发表14 1 1 引言引言三、不同层次的三、不同层次的Ve
16、rilogVerilog HDL HDL抽象抽象 VerilogVerilog HDL HDL模型可以是实际电路的不同级别的抽象。模型可以是实际电路的不同级别的抽象。抽象级别可分为抽象级别可分为五五级:级:系统级系统级(system level):(system level):用高级语言结构(如case语句)实现的设计模块外部性能的模型;算算法级法级(algorithmic level):(algorithmic level):用高级语言结构实现的设计算法模型(写出逻辑表达式);RTLRTL级级(register transfer level):(register transfer level
17、):描述数据在寄存器之间流动和如何处理这些数据的模型;门级门级(gate level):(gate level):描述逻辑门(如与门、非门、或门、与非门、三态门等)以及逻辑门之间连接的模型;开关级开关级(switch level):(switch level):描述器件中三极管和储存节点及其之间连接的模型。返回返回3.1215 1 1 引言引言四、四、VerilogVerilog HDL HDL的特点的特点 语法结构上的主要语法结构上的主要特点特点:形式化地表示电路的行为和结构;借用C语言的结构和语句;可在多个层次上对所设计的系统加以描述,语言对设计规模不加任何限制;具有混合建模能力:一个设计
18、中的各子模块可用不同级别的抽象模型来描述;基本逻辑门、开关级结构模型均内置于语言中,可直接调用;易创建用户定义原语(UDP,User Designed Primitive)。易学易用,功能强易学易用,功能强与与C C语言语言非常相非常相似似!16 2 2 VerilogVerilog HDL HDL基本结构基本结构一、简单的一、简单的VerilogVerilog HDL HDL例子例子二、二、VerilogVerilog HDL HDL模块的结构模块的结构三、逻辑功能定义三、逻辑功能定义四、关键字四、关键字五、标识符五、标识符六、编写六、编写VerilogVerilog HDL HDL源代码的
19、标准源代码的标准17 2 2 VerilogVerilog HDL HDL基本结构基本结构一、简单的一、简单的VerilogVerilog HDL HDL例子例子 例例3.2.1 8 8位全加器位全加器module adder8(cout,sum,a,b,cin);output cout;/输出端口声明输出端口声明 output 7:0 sum;input 7:0 a,b;/输入端口声明输入端口声明 input cin;assign cout,sum=a+b+cin;endmodule assign语句:无论右边表达式操作数何时发生变化,右边表达式都语句:无论右边表达式操作数何时发生变化,右边
20、表达式都会重新计算,并且在指定的延迟后给左边表达式赋值。会重新计算,并且在指定的延迟后给左边表达式赋值。I/O说明说明端口定义端口定义功能描述功能描述模块名(文件名)整个整个VerilogVerilog HDL HDL程序嵌套在程序嵌套在modulemodule和和endmoduleendmodule声明语句中。声明语句中。每条语句相对每条语句相对modulemodule和和endmoduleendmodule最好缩进最好缩进2 2格或格或4 4格!格!/表示注释部分,一般只占据表示注释部分,一般只占据一一行。对编译不起作用!行。对编译不起作用!单行注释符18 2 2 VerilogVeril
21、og HDL HDL基本结构基本结构 例例3.2.2 8 8位计数器位计数器module counter8(out,cout,data,load,cin,clk);output 7:0 out;output cout;input 7:0 data;input load,cin,clk;reg7:0 out;always(posedge clk)begin if(load)out=data;/同步预置数据同步预置数据 else out =out+1+cin;/加加1计数计数 end assign cout=&out&cin;/若若out为为8hFF,cin为为1,则,则cout为为1endmod
22、uleI/O说明说明端口定义端口定义功能描述功能描述信号类型声明信号类型声明缩减运算符位运算符19 2 2 VerilogVerilog HDL HDL基本结构基本结构 例例3.2.3 2 2位比较器位比较器module compare2(equal,a,b);output equal;input 1:0 a,b;assign equal=(a=b)?1:0;/*如果如果a等于等于b,则,则equal 为为1,否则为,否则为0*/endmodule“=”非阻塞过程性赋值:将想要赋给左式的值安排在未来时刻。不等上一个赋值非阻塞过程性赋值:将想要赋给左式的值安排在未来时刻。不等上一个赋值完成执行下
23、个赋值语句。完成执行下个赋值语句。“=”阻塞过程性赋值:按照顺序执行,前一个赋值结束才执行下边的赋值语句。阻塞过程性赋值:按照顺序执行,前一个赋值结束才执行下边的赋值语句。连续赋值语句连续赋值语句条件运算符条件运算符/*/内表示注释部分,一般可占据内表示注释部分,一般可占据多多行。行。对编译不起作用!对编译不起作用!多行注释符多行注释符20 2 2 VerilogVerilog HDL HDL基本结构基本结构 例例3.2.4 三态驱动器三态驱动器module trist2(out,in,enable);output out;input in,enable;bufif1 mybuf(out,in
24、,enable);endmodule例化元件名门元件关键字门元件例化门元件例化程序通过调用一程序通过调用一个在个在VerilogVerilog语言库中现存的实例语言库中现存的实例门元件来实现某逻辑门功能。门元件来实现某逻辑门功能。Inputs|OutputIN ENABLE|OUTX0|Z11|101|0bufif1bufif1的真值表的真值表门元件例化门元件例化21module trist1(out,in,enable);output out;input in,enable;mytri tri_inst(out,in,enable);endmodulemodule mytri(out,in,
25、enable);output out;input in,enable;assign out=enable?in:bz;/*如果如果enable为为1,则,则out=in,否则为高阻态,否则为高阻态*/endmodule 2 2 VerilogVerilog HDL HDL基本结构基本结构 例例3.2.5 三态驱动器三态驱动器例化元件名子模块名顶层模块顶层模块子模块子模块模块元件例化模块元件例化模块元件例化模块元件例化顶层模块(顶层模块(trist1trist1)调用由某子模块)调用由某子模块(mytrimytri)定义的实例元件()定义的实例元件(tri_insttri_inst)来实现某功能
展开阅读全文