版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目2——典型逻辑电路的VerilogHDL设计项目一回忆项目一
回顾1、一位全加器1)一位半加器——Quartus软件操作2)一位全加器——封装与调用2、十六进制计数器1)十六进制计数器原理2)四位加法器——总线式端口3)D触发器——端口的功能3、十进制计数器1)比较器等库器件调用2)RTL视图的打开与分析4、FPGA的结构1)LUT(四输入单输出组合逻辑)2)LE(LUT+D触发器等)一位半加器一位全加器项目一回忆项目一
回顾1、一位全加器1)一位半加器——Quartus软件操作2)一位全加器——封装与调用2、十六进制计数器1)十六进制计数器原理2)四位加法器——总线式端口3)D触发器——端口的功能3、十进制计数器1)比较器等库器件调用2)RTL视图的打开与分析4、FPGA的结构1)LUT(四输入单输出组合逻辑)2)LE(LUT+D触发器等)十六进制计数器项目一回忆项目一
回顾1、一位全加器1)一位半加器——Quartus软件操作2)一位全加器——封装与调用2、十六进制计数器1)十六进制计数器原理2)四位加法器——总线式端口3)D触发器——端口的功能3、十进制计数器1)比较器等库器件调用2)RTL视图的打开与分析4、FPGA的结构1)LUT(四输入单输出组合逻辑)2)LE(LUT+D触发器等
)十进制计数器项目一回忆项目一
回顾1、一位全加器1)一位半加器——Quartus软件操作2)一位全加器——封装与调用2、十六进制计数器1)十六进制计数器原理2)四位加法器——总线式端口3)D触发器——端口的功能3、十进制计数器1)比较器等库器件调用2)RTL视图的打开与分析4、FPGA的结构1)LUT(四输入单输出组合逻辑)2)LE(LUT+D触发器等
)LE结构示意LUT结构示意项目二、任务要求项目二典型逻辑电路的VerilogHDL设计项目二
任务要求软件:QuartusPrime17.1软件;硬件:FPGA芯片型号为EP4CE10F17C8的电路板(包含按键或拨码开关、LED)。任务2.1VerilogHDL实现四位加法器。任务2.2VerilogHDL实现十进制计数器。组织逻辑任务2组织逻辑1、项目2和项目1目标一致(计数器),方法不同。2、计数器是综合数字电路系统中最核心的器件;
也是FPGA设计的思维切入点和设计主引线。3、从语法上讲,使用VerilogHDL设计电路(逻辑功能定义)的最经典的分类方法分为
①
②
③
④结构化描述数据流描述行为级描述混合描述加法器、比较器、选择器、译码器触发器、计数器任务角度
介绍4种语法过程中穿插介绍各种典型器件硬件描述语言(HardwareDescriptionLanguage,HDL)常用的有VerilogHDL和VHDL,当前VerilogHDL应用更为广泛
语法角度(四种)任务2.1VerilogHDL实现四位加法器2.1.1理论:结构化描述
介绍——实现一位加法器
数据流描述
介绍——实现一位加法器2.1.2实践:结构化描述
应用——实现四位加法器
数据流描述
应用——实现四位加法器组织逻辑任务2.2VerilogHDL实现十进制计数器2.2.1理论:行为级描述介绍——实现常见组合逻辑电路
——
实现D触发器2.2.2实践:混合描述
——
实现计数器重点四种逻辑功能定义方式。本章重点结构化描述方式数据流描述方式行为级描述方式混合
描述方式一位加法器四位加法器等简单组合逻辑if-比较器、数据选择器、十进制计数器组合逻辑部分if-D触发器case-译码器等真值表类的组合逻辑电路十进制计数器计数器加法器逻辑功能定义穿插案例终极任务谢谢大家!任务2.1VerilogHDL实现四位加法器任务要求软件:QuartusPrime17.1软件;硬件:FPGA芯片型号为EP4CE10F17C8的电路板(包含按键或拨码开关、LED)。任务2.1VerilogHDL实现四位加法器。任务2.2VerilogHDL实现十进制计数器。知识拓展
器件规划图和D触发器电路的时间参数
①
②
③
④结构化描述数据流描述行为级描述混合描述内容安排2.1.1【知识准备】——实现一位半/全加器1、VerilogHDL简介&基本语法结构
2、结构化描述方式1)直接调用VerilogHDL内部预先定义的基本门级元件2)调用用户其他已经定义过的低层次模块3、数据流描述方式位运算符、逻辑运算符、算数运算符2.1.2【任务实施】——设计四位加法器1、结构化描述方式应用2、数据流描述方式应用任务2.1VerilogHDL实现四位加法器提问:请用通俗语言描述“两输入与非门”从真值表角度或者从功能角度输入是A、B;输出是Y功能如表所示”全1为0“C语言是顺序式指令,逐行执行,顺序不能互换VerilogHDL语言是一种硬件描述语言,可以从逻辑功能和结构连接两种角度描述,顺序可互换任务2.1VerilogHDL实现四位加法器输入输出ABY001011101110与非门原理图与非门真值表从原理图角度输入是A、B;输出是Y输入A和B连接到与门输入、红线连接与门输出红线送入非门、非门输出送到Y引脚。1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(1)VerilogHDL发展历程由GDA公司的Moorby于1983年末首创,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1983年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功并被广泛使用,从而使得VerilogHDL迅速得到推广和使用,VerilogHDL作为一种便于使用且实用的语言逐渐被众多设计者所接受。1985年VerilogHDL语言于1990年被推向公众领域,OVI是促进VerilogHDL发展的国际性组织。1990年1992年OVI在1992年决定致力于推广VerilogHDLOVI标准成为IEEE标准,这一努力最后获得成功。1995年IEEE正式制定了VerilogHDL语言的第一个国际标准IEEEStd1364-19951995年2001年,IEEE发布了第二个VerilogHDL语言标准IEEEStd1364-2001。2001年1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(2)VerilogHDL特点——资源丰富、语法灵活能在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级(RTL)到行为级都可以胜任,同时VerilogHDL语言不对设计规模施加任何限制。灵活多样的电路描述风格,可进行结构描述,也可进行行为描述;内置各种基本逻辑门,如and、or、not等,可方便地进行门级结构描述;内置各种开关级元件,如pmos、nmos和mos等,可进行开关级的建模。VerilogHDL的行为描述语句,如条件语句、赋值语句和循环语句等,类似于软件高级语言,便于学习和使用。既适于综合的电路设计,也可用于电路与系统的仿真。用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑,也可以是时序逻辑,可通过编程语言接口(PLI)机制进一步扩展VerilogHDL语言的描述能力。1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(3)VerilogHDL程序概览对比C语言VerilogHDL语言语言组织形式以函数为指令集合module(模块)输入输出可有可无一般均有过程量定义函数输入输出、内部变量均需要定义类型端口和内部信号(电路)均需要定义信号类型与位宽换行符分号(;)空白符编译器忽略注释//用于注释当前行;/**/用于注释某一段1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(4)VerilogHDL模块基本结构每个VerilogHDL程序包括4个主要部分:模块声明
(给module或模块起名,便于调用
)端口定义
(说明端口是几根线,什么类型
)数据/信号类型声明(说明内部电路/连线是几根线、什么类型)逻辑功能定义
(定义module内各电路的功能
)1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(4)VerilogHDL模块基本结构——1模块声明VerilogHDL程序是由module构成的,一般称为模块。FPGA_U2_Nand是该模块(或电路)名称,为狭义的模块(或电路)。与门(and)和非门(not)是广义的模块(或电路)一个.v文件一般1个module,且和.v文件名一致;
如果工程只有1个.v文件,工程名一般也建议和module名称一致。1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(4)VerilogHDL模块基本结构——2端口(Port)定义端口是模块与外界连接和通信的信号线每个端口要声明端口方向是input、output、inout中的哪一种。①input(输入)②output(输出)③inout(输入/输出)每个端口要声明其位宽(缺省为一位宽)——几根线或端口。每个端口的数据类型要声明是net型/register型。
而net型中以wire型最为常见,register型以reg型最为常见。端口类型:暂且默认定义为wire型,后续需要定义为reg等其他类型再解释。1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(4)VerilogHDL模块基本结构——3数据/信号类型定义VerilogHDL中有3种常用数据/信号类型,分别是net(线网型)——wire型最常见register(寄存器型
)——reg型最多parameter(参数型
)——运行时的常数,也有localparameter数据/信号类型声明
对比
端口定义少input和output等端口方向1、VerilogHDL简介&基本语法结构2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)(4)VerilogHDL模块基本结构——4逻辑功能定义逻辑功能定义结构化描述方式——类似于画电路图,描述不同电路之间的连接关系数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式行为级描述方式——类似于C语言中的if等高级语句混合描述方式——①②③的融合和混合使用一个综合电路一般由多个子模块构成子模块一般以行为级描述为主,数据流描述方式为辅;综合电路一般以结构化描述为主,数据流和行为级描述为辅逻辑功能定义方式(备忘)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)①结构化描述方式——类似于画电路图,描述不同电路之间的连接关系直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构——以一位半加器为例调用用户其他已经定义过的低层次模块对整个电路的功能进行描述——以一位全加器为例②数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式③行为级描述方式——类似于C语言中的if等高级语句④混合描述方式——①②③的融合和混合使用2、结构化描述方式2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)结构化描述方式概述概念:结构化描述方式是指使用实例化低层次模块的方法;分类:(1)直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构;(2)即调用用户其他已经定义过的低层次模块对整个电路的功能进行描述。对比:第(1)种因为语言/描述的电路层级较低,在当前的FPGA设计中,应用不广泛。第(2)种在FPGA设计中,使用最为广泛。第(1)种可以看作第(2)种的特殊情况,即调用官方库的其他已经定义过的低层次模块。2、结构化描述方式2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)①结构化描述方式——类似于画电路图,描述不同电路之间的连接关系直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构——以一位半加器为例即调用用户其他已经定义过的低层次模块对整个电路的功能进行描述②数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式③行为级描述方式——类似于C语言中的if等高级语句④混合描述方式——①②③的融合和混合使用2、结构化描述方式-直接调用VerilogHDL内部预先定义的基本门级元件(一位半加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)类型元件基本门多输入门and、nand、or、nor、xor、xnor多输出门buf、not三态门允许定义驱动强度buif0、bufif1、notf0、notf1MOS开关无驱动强度nmos、pmos、cmos、rnmos、rpmos、rcoms双向开关无驱动强度tran、tranif0、tranif1无驱动强度rtran、rtranif0、rtranif1上拉、下拉电阻允许定义驱动轻度pullup、pulldown原语描述使用and与门and(yout,xin1,xin2,xin3)nand与非nand(yout,xin1,xin2,xin3)or或门or(yout,xin1,xin2,xin3)nor或非nor(yout,xin1,xin2,xin3)xor异或xor(yout,xin1,xin2,xin3)xnor同或nxor(yout,xin1,xin2,xin3)表2-1
VerilogHDL内置的26个基本元件及其类型表2-2
部分门级电路的原语如表2-1所示,VerilogHDL内置有26个基本元件:1)其中14个是门级元件;2)12个是开关级元件。表2-2所示的是部分门级电路的原语。1位半加器原理图结构化描述方式-直接调用VerilogHDL内部预先定义的基本门级元件(一位半加器示例)操作演示2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)操作演示操作重点:1、创建一位半加器工程;2、新建VerilogHDL设计文本;3、RTL视图对照一位半加器原理图1位半加器原理图原语描述使用and与门and(yout,xin1,xin2,xin3)nand与非nand(yout,xin1,xin2,xin3)or或门or(yout,xin1,xin2,xin3)nor或非nor(yout,xin1,xin2,xin3)xor异或xor(yout,xin1,xin2,xin3)xnor同或nxor(yout,xin1,xin2,xin3)2、结构化描述方式-直接调用VerilogHDL内部预先定义的基本门级元件(一位半加器示例总结)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)原语描述使用and与门and(yout,xin1,xin2,xin3)nand与非nand(yout,xin1,xin2,xin3)or或门or(yout,xin1,xin2,xin3)nor或非nor(yout,xin1,xin2,xin3)xor异或xor(yout,xin1,xin2,xin3)xnor同或nxor(yout,xin1,xin2,xin3)表2-2
部分门级电路的原语1位半加器原理图2、结构化描述方式2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)①结构化描述方式——类似于画电路图,描述不同电路之间的连接关系直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构——以一位半加器为例调用用户其他已经定义过的低层次模块对整个电路的功能进行描述——以一位全加器为例②数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式③行为级描述方式——类似于C语言中的if等高级语句④混合描述方式——①②③的融合和混合使用2、结构化描述方式-调用用户其他已经定义过的低层次模块(一位全加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)1位半加器原理图1位全加器原理图调用用户其他已经定义过的低层次模块又称例化。具体是在一个模块(如一位全加器)中引用/调用另一个模块,对其端口进行相关连接,叫作模块实例化,常简称例化。例化建立了描述的层次,主要有“位置关联”或“名称关联”两种常见方式。一位全加器描述思路有3个器件1)1个VerilogHDL内部预先定义的基本门级元件——or或门2)2个其他已经定义过的低层次模块——一位半加器描述重点描述清楚三个器件和整体电路的端口的连接关系;器件之间引入信号线进行连接。直接调用VerilogHDL内部预先定义的基本门级元件实现操作步骤:1、创建一位全加器工程;2、复制一位半加器的VerilogHDL文件并添加到一位全加器文件夹工程中;3、添加一位半加器的VerilogHDL文件到一位全加器工程中(此步也可省略);4、设计一位全加器电路。2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)结构化描述方式-调用用户其他已经定义过的低层次模块(一位全加器示例)操作演示操作演示2、结构化描述方式-调用用户其他已经定义过的低层次模块(一位全加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)名称关联例化方式采用名称关联例化方式,将需要被调用的模块端口与外部信号按照其名字进行连接。①模块名。代码中第7行和第13行的FPGA_U2_halfadder_V1必须是被例化模块的名称,称之例化模块名。②实例名。U0和U1是例化的实例名,该名称只要符合Verilog语法命名规则即可,可以任意指定。U0和U1存在的意义是:某一个电路(如一位半加器)可能被多次例化,可以用实例名U0和U1加以区分。③子模块端口名称。代码中“.”后的端口名称A、B、So、Co必须和子模块FPGA_U2_halfadder_V1的端口名称一致,但顺序可任意调整。④例化模块的端口名称。代码中“()”内的名称,和被调用的子模块端口名称可以一致也可以不一致。⑤代码中“.”是必不可少的。在例化时用“.”符号,标明原模块定义时规定的端口名。⑥如果某些子模块(输出)端口并不需要在外部连接,那么例化时可以悬空不连接,甚至删除。一般来说,input端口在例化时不能删除,否则编译报错,output端口在例化时可以删除。例如在设计子模块工程时,为了测试部分信号的功能是否正确,经常将这些信号连接到输出端口以方便测试,而在该子模块被例化时悬空不连接即可。2、结构化描述方式-调用用户其他已经定义过的低层次模块(一位全加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)位置关联方式对比在例化时,严格按照模块定义的端口顺序来连接,不用标明原模块定义时规定的端口名。通俗理解:类似于C语言的多参数函数调用,调用时直接按照顺序代入实参即可。典型缺点:当被调用模块的端口位置发生变化时(例如调试阶段到定稿阶段),容易造成混乱。另外,阅读时不直观。2、结构化描述方式-调用用户其他已经定义过的低层次模块(一位全加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)名称关联和位置关联方式对比逻辑功能定义方式(备忘)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)①结构化描述方式——类似于画电路图,描述不同电路之间的连接关系直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构——以一位半加器为例调用用户其他已经定义过的低层次模块对整个电路的功能进行描述——以一位全加器为例②数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式③行为级描述方式——类似于C语言中的if等高级语句④混合描述方式——①②③的融合和混合使用3、数据流描述方式2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)①结构化描述方式——类似于画电路图,描述不同电路之间的连接关系直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构——以一位半加器为例调用用户其他已经定义过的低层次模块对整个电路的功能进行描述——以一位全加器为例②数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式位运算符逻辑运算符算术运算符③行为级描述方式——类似于C语言中的if等高级语句④混合描述方式——①②③的融合和混合使用3、数据流描述方式(一位半加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)引入:数字电路中的逻辑表达式数据流描述方式示例第8、、9行程序顺序调换,影响描述的结果吗?3、数据流描述方式-位运算符(一位半加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)表2-3位运算符介绍(部分)符号使用方法说明特殊情况~~a将a的每个位进行取反若运算符左右两侧数据只有一位宽,则和“逻辑运算符”等价,例如~和!、&和&&、|和||等描述的电路完全一致&a&b将a的每个位与b相同的位进行相与|a|b将a的每个位与b相同的位进行相或^a^b将a的每个位与b相同的位进行异或符号使用方法说明注意事项!!a对a做逻辑取反运算输入默认是一位宽信号。若输入为多位宽信号,则将输入信号按照“非0即1处理”;编译器会综合出多位宽或门,对多输入的多位宽信号实现“非0即1”处理得到一位宽信号,然后对一位宽信号再做逻辑运算&&a&&ba和b做逻辑与运算||a||ba和b做逻辑或运算表2-4逻辑运算符介绍(部分)小提示assign可理解为as+sign,寓意:就像(as)+画图或画符号一样(sign)3、数据流描述方式-位运算符(一位全加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)按照器件顺序,逐个描述按照输出顺序,逐个描述3、数据流描述方式-算数运算符(一位半加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)符号使用方法说明+a+ba加b,加法器−a−ba减b,加法器及数据转换电路*a*ba乘b,乘法器/a/ba除b取商,除法器%a%ba除以b取余,取模电路注:应特别注意输入、输出位宽表2-6
VerilogHDL中常用的算术运算符及其使用方法算数运算符
assignY=A+B理解为将两个一位宽连线或端口A和B连接到加法器电路的输入端将加法器的输出结果连接到二位宽信号或端口Y3、数据流描述方式-算数运算符(一位半加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)位拼接符上例中“{}”作为连接符,将So和Co信号进行组合,相当于将Co和So合并为一个两位宽的虚拟信号,该虚拟信号的高位为Co,低位为So。3、数据流描述方式(一位半加器示例)2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)表2-7
VerilogHDL中常用的常数表示方法进制举例含义备注二进制4'b01014位二进制或4根线,二进制0101也可表示成4'b101十进制4'd24位二进制或4根线,对应二进制0010也可表示成4'h2或4'b0010十六进制4'ha4位二进制或4根线,对应二进制1010也可表示成4'd10或4'b1010设计一个输入4位二进制数A,功能A+5的电路?位宽注意事项QuartusPrime中自带的加法器器件输入和输出位宽一致,因此,使用“+”运算符严谨的写法应该保证输入和输出位宽一致。总结2.1.1【知识准备】结构化描述和数据流描述方式(实现一位半/全加器)①结构化描述方式——类似于画电路图,描述不同电路之间的连接关系直接调用VerilogHDL内部预先定义的基本门级元件描述电路的结构——以一位半加器为例调用用户其他已经定义过的低层次模块对整个电路的功能进行描述——以一位全加器为例②数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式位运算符——以一位半/全加器为例逻辑运算符——以一位半/全加器为例算术运算符——以一位半/全加器为例③行为级描述方式——类似于C语言中的if等高级语句④混合描述方式——①②③的融合和混合使用内容安排2.1.1【知识准备】——实现一位半/全加器1、VerilogHDL简介&基本语法结构
2、结构化描述方式1)直接调用VerilogHDL内部预先定义的基本门级元件2)调用用户其他已经定义过的低层次模块3、数据流描述方式位运算符、逻辑运算符、算数运算符2.1.2【任务实施】——设计四位加法器1、结构化描述方式应用2、数据流描述方式应用任务2.1VerilogHDL实现四位加法器1、结构化描述方式应用——设计四位加法器2.1.2【任务实施】结构化描述和数据流描述方式实现四位加法器任务要求:先使用数据流描述方式(算术运算符)设计一位全加器,再使用例化方式设计四位加法器。1、结构化描述方式应用——设计四位加法器2.1.2【任务实施】结构化描述和数据流描述方式实现四位加法器任务要求:先使用数据流描述方式(算术运算符)设计一位全加器,再使用例化方式设计四位加法器。2、数据流描述方式应用——设计四位加法器2.1.2【任务实施】结构化描述和数据流描述方式实现四位加法器任务要求:使用数据流描述方式(算术运算符)设计四位加法器谢谢大家!任务2.2
VerilogHDL实现十进制计数器任务要求软件:QuartusPrime17.1软件;硬件:FPGA芯片型号为EP4CE10F17C8的电路板(包含按键或拨码开关、LED)。任务2.1VerilogHDL实现四位加法器。任务2.2VerilogHDL实现十进制计数器。——①比较器、选择器等组合逻辑电路②D触发器【知识拓展】器件规划图和D触发器电路的时间参数①②③④结构化描述数据流描述
行为级描述混合描述内容安排2.2.1【知识准备】——行为级描述方式和混合描述方式实现常见组合逻辑、触发器1、行为级描述方式——if语句描述组合逻辑电路
(常见组合逻辑电路)
2、行为级描述方式——if语句描述时序逻辑电路
(D触发器
)3、行为级描述方式——case语句
(译码器等
)4、阻塞赋值与非阻塞赋值5、D触发器及其衍生电路的推荐格式2.2.2【任务实施】——混合描述方式实现十进制计数器1、数据流和行为级混合描述——设计十进制计数器2、组合与时序混合描述3、原理图和VerilogHDL混合设计任务2.2VerilogHDL实现十进制计数器引入2.2.1【知识准备】——行为级描述方式和混合描述方式逻辑功能定义结构化描述方式——类似于画电路图,描述不同电路之间的连接关系数据流描述方式——类似于《数字电子技术》课程中写逻辑表达式行为级描述方式——类似于C语言中的if等高级语句混合描述方式——①②③的融合和混合使用描述层面结构连接层面器件功能层面更高的功能层面混合方式引入相较加法器而言,比较器、选择器、编码器、译码器等常用组合逻辑,以及触发器等器件,从“更高的功能层面”——行为级描述方式更为便捷。例如二选一数据选择器,其功能是“如果S等于0,那么将A赋值给Y;否则将B赋值给Y”再例如比较器,其功能“如果A等于(大于或者小于也可以)B,那么将1赋值给Y(或者说结果是1);否则将0赋值给Y(或者说结果是0)”。1、行为级描述方式-if语句描述组合逻辑电路
2.2.1【知识准备】——行为级描述方式和混合描述方式在逻辑电路中,常常需要根据某些条件或状态在几个可能的信号或者数值中进行选择,一个典型的例子就是数据选择器,其输出为“选择控制端所选择的某一路输入信号值”。VerilogHDL提供了一个行为级描述方式if语句,可以简单地实现这种选择性电路,同时可以在if语句描述的数据选择器基础上延伸。需要选择的数据由程序中“if(条件表达式)”中的条件表达式决定。表2-8所示的是条件表达式中常用的关系运算符和等式运算符。运算符类型符号运算符执行效果备注等式运算==判断逻辑等于或者数值等于结果为一位宽二进制真(1)或假(0)!=判断逻辑不等于或者数值不等于关系运算>判断大于<判断小于>=判断大于等于<=判断小于等于表2-8关系运算符和等式运算符注意事项if语句有优先级1、行为级描述方式-if语句描述组合逻辑电路(二选一数据选择器示例)
2.2.1【知识准备】——行为级描述方式和混合描述方式X注意事项if语句必须嵌套在always@()中凡是在always中被赋值的信号均要定义为reg型always结构中“@”符号后面“()”中的部分称为敏感事件列表,一般写该电路的输入信号,并用“,”隔开,Verilog-2001可以用*代替如果if或always后只有一个完整的语法,beginend可以省略强烈建议,if语句必须以else分支收尾,避免综合出锁存器,使电路功能进入未知状态。1、行为级描述方式-if语句描述组合逻辑电路(二选一数据选择器示例)
2.2.1【知识准备】——行为级描述方式和混合描述方式1、行为级描述方式-if语句描述组合逻辑电路(数据比较器示例)
2.2.1【知识准备】——行为级描述方式和混合描述方式XA等于B时,AGB值为多少?1、行为级描述方式-if语句描述组合逻辑电路(十进制计数器组合逻辑部分示例)
2.2.1【知识准备】——行为级描述方式和混合描述方式常规方式(推荐)1、行为级描述方式-if语句描述组合逻辑电路(十进制计数器组合逻辑部分示例)
2.2.1【知识准备】——行为级描述方式和混合描述方式真值表方式(不推荐)注意事项因为if语句在字面意义上有优先级,编译器为了适配这种优先级,综合出的电路为数据选择器为主的多级串联结构。多级串联结构,会导致最坏情况下电路延时较大。不建议使用if语句描述超过5个条件的逻辑,对于判断条件较多的情况,可以参考下文中讲述的case语句。1、行为级描述方式-if语句描述组合逻辑电路(特殊形式-条件运算符)
2.2.1【知识准备】——行为级描述方式和混合描述方式拓展:条件运算符(if-else的简便结构)-比较器示例VerilogHDL提供了更为精简的条件运算符来代替if-lese两分支语句。在该语法中,涉及以下3个运算数:(条件表达式)
?
真值表达式:假值表达式注意事项条件运算符从功能上等价if-else条件运算符属于数据流描述方式if-else属于行为级描述条件运算符(简便写法)1、行为级描述方式-if语句描述组合逻辑电路(特殊形式-条件运算符)
2.2.1【知识准备】——行为级描述方式和混合描述方式拓展:条件运算符(if-else的简便结构)-数据选择器示例VerilogHDL提供了更为精简的条件运算符来代替if-lese两分支语句。在该语法中,涉及以下3个运算数:(条件表达式)
?
真值表达式:假值表达式条件运算符(简便写法)1、行为级描述方式-if语句描述组合逻辑电路(特殊形式-条件运算符)
2.2.1【知识准备】——行为级描述方式和混合描述方式拓展:条件运算符(if-else的简便结构)-十进制计数器组合逻辑部分示例2、
行为级描述方式-if语句描述时序逻辑电路
(D触发器示例)2.2.1【知识准备】——行为级描述方式和混合描述方式假设D触发器有D、CLK、Q端子,请用通俗语言描述。答:每当CLK上升沿到达,将D赋值给Q。假设D触发器再增加En端子,请用通俗语言描述。答:每当CLK上升沿到达
如果En为1,则将D赋值给Q;否则Q保持不变。假设D触发器再增加rst_n、En端子,请用通俗语言描述。答:如果复位端子为0,则将0赋值给Q;
否则:
每当CLK上升沿到达
如果En为1,则将D赋值给Q;否则Q保持不变。2、
行为级描述方式——if语句描述时序逻辑电路
(D触发器)2.2.1【知识准备】——行为级描述方式和混合描述方式注意事项always@(posedgeXXX)理解为“每当XXX上升沿来临”always@(negedgeXXX)理解为“每当XXX下升沿来临”“<=”描述触发器等时序逻辑,暂且使用“<=”赋值符号2、
行为级描述方式——if语句描述时序逻辑电路
(D触发器)2.2.1【知识准备】——行为级描述方式和混合描述方式Q值改变的前提是“每当clk上升沿来临”在“每当clk上升沿来临”前提之下如果复位,则将0赋值给Q,否则将D赋值给Q说明复位的优先级在clk优先级之下。显然,D触发器+数据选择器适配这种情况Q值改变的前提是“每当clk上升沿来临”或者“复位信号下降沿(应理解为rst_n为0)”先判断如果复位——即先判断是否复位说明复位的优先级高于时钟上升沿。显然,D触发器直接适配这种情况。注意事项negedge或posedgeXXX+if(XXX==1’b0/XXX==1’b1)是复位的标准格式;此时negedgeXXX应理解为低电平更为通俗易懂操作演示3、
行为级描述方式-case语句描述组合逻辑电路2.2.1【知识准备】——行为级描述方式和混合描述方式在逻辑电路设计中,逻辑状态存在很多种判断条件时,例如译码器电路等,此时如果使用if语句编写代码,那么整个代码不仅可读性较差,而且分析控制逻辑也不够清晰。对于判断条件较多的VerilogHDL描述,或者真值表类电路的VerilogHDL描述,使用case语句比if语句方便。case语句定义为case(表达式)
选择1:语句1;
选择2:语句2;
选择n:语句n:
default:语句n+1;//相当于elseendcase注意事项case语句无优先级选择1、选择2......选择n一般是列举的数值选择1、选择2......选择n不能有交集3、
行为级描述方式-case语句描述组合逻辑电路2.2.1【知识准备】——行为级描述方式和混合描述方式4、
阻塞赋值与非阻塞赋值2.2.1【知识准备】——行为级描述方式和混合描述方式注意观察四个代码的赋值符号!4、
阻塞赋值与非阻塞赋值2.2.1【知识准备】——行为级描述方式和混合描述方式阻塞赋值与非阻塞赋值对比阻塞赋值“=”:赋值完后用新值再赋值。对于D触发器相关的时序逻辑电路。
因为时钟上升沿是一个时间分界线,阻塞赋值意味着:在CLK上升沿之前,用新值再计算,在上升沿时统一赋值。比较混乱,不建议使用。而对于组合逻辑电路。
因为没有时钟,所以没有时间分界线,阻塞赋值和非阻塞赋值其是无差别。非阻塞赋值“<=”:赋值完后,不能用新值再赋值。对于D触发器相关的时序逻辑电路。
因为时钟上升沿是一个时间分界线,阻塞赋值意味着:在CLK上升沿之前,只计算1次,在上升沿时统一赋值。而对于组合逻辑电路。
因为没有时钟,所以没有时间分界线,阻塞赋值和非阻塞赋值其是无差别。4、
阻塞赋值与非阻塞赋值2.2.1【知识准备】——行为级描述方式和混合描述方式阻塞赋值与非阻塞赋值对比推荐代码方式
对于同一个设计任务,无论阻塞赋值还是非阻塞赋值均可以达到同样的目的,但代码表面的区别可能较大,只是设计习惯的区别。使用
阻塞赋值语句设计组合逻辑电路使用非阻塞赋值语句设计时序逻辑电路
这一方式足以应对几乎所有的设计,这也是绝大多数工程师的一种通用习惯。5、D触发器及其衍生电路的推荐格式2.2.1【知识准备】——行为级描述方式和混合描述方式注意事项有posedgeclk字眼的程序一般是触发器(也可能是锁存器);negedgerst_n+if(rst_n==1’b0)说明rst_n是异步低电平复位;如果if(En==1’b1)则赋值,否则保持;综上,库器件D触发器的复位/置位、使能、时钟等端口,即可适配以上(时钟、复位/置位、使能)功能。反言之,该段语言描述的就是“带有异步复位和使能端子的D触发器”的标准格式。5、D触发器及其衍生电路的推荐格式2.2.1【知识准备】——行为级描述方式和混合描述方式总结:D触发器标准格式一位宽D触发器推荐格式多位宽D触发器推荐格式5、D触发器及其衍生电路的推荐格式2.2.1【知识准备】——行为级描述方式和混合描述方式两输入与门后添加D触发器行为级描述方式+数据流描述方式(D触发器)
(与门)3-8译码器后添加D触发器行为级描述方式+行为级描述方式(D触发器)
(译码器)小结2.2.1【知识准备】——行为级描述方式和混合描述方式1、行为级描述方式——if语句描述组合逻辑电路
主要案例:以选择器为基础进行延伸,得到0~9计数器组合逻辑部分
2、行为级描述方式——if语句描述时序逻辑电路
主要案例:D触发器3、行为级描述方式——case语句主要案例:译码器、真值表类电路等4、阻塞赋值与非阻塞赋值推荐方式:组合逻辑电路使用阻塞赋值“=”,时序逻辑电路使用非阻塞赋值“<=”5、D触发器及其衍生电路的推荐格式推荐记忆(注意理解if对应的是库器件D触发器的端子还是选择器)谢谢大家!内容安排2.2.1【知识准备】——行为级描述方式和混合描述方式实现常见组合逻辑、触发器1、行为级描述方式——if语句描述组合逻辑电路
(常见组合逻辑电路)
2、行为级描述方式——if语句描述时序逻辑电路
(D触发器
)3、行为级描述方式——case语句
(译码器等
)4、阻塞赋值与非阻塞赋值5、D触发器及其衍生电路的推荐格式2.2.2【任务实施】——混合描述方式实现十进制计数器1、数据流和行为级混合描述2、组合与时序混合描述3、原理图和VerilogHDL混合设计任务2.2VerilogHDL实现十进制计数器1、数据流和行为级混合描述2.2.2【任务实施】——混合描述方式实现十进制计数器数据流(组合)+行为级(时序)行为级(组合)+行为级(时序)等价2、组合与时序混合描述2.2.2【任务实施】——混合描述方式实现十进制计数器数据流(组合)+行为级(时序)2、组合与时序混合描述2.2.2【任务实施】——混合描述方式实现十进制计数器行为级(组合)+行为级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 非奈利酮临床应用多学科专家共识(2026版)
- 铲车驾驶员安全行为规范培训
- 电缆安全使用管理规定培训课件
- 2026安徽非定向选调面试题库及答案
- 2026阿里高级java面试题及答案
- 股骨头坏死基础与临床规范化诊疗
- 贵阳火锅店外包合同
- 高校推广服务外包合同
- 医用检验设备采购合同协议2025
- 2026年呼吸内科学副高级职称002考试视频课程题库考前冲刺
- 喉罩胸交感神经切断课件
- 捉弄混声合唱简谱
- GCP培训考试题库及参考答案(完整版)2025年
- 燃油系统应急预案
- 2025年潍坊市中考历史试卷(含答案)
- 前程无忧行测题库及答案大全
- 上海市黄浦区2025-2026学年高二上学期9月月考语文试题(含答案)
- 宜宾二院护理规培题库及答案解析
- DR科室知识培训课件
- DB32∕T 4564-2023 氢能助力自行车通 用技术要求
- 口腔护士礼仪培训
评论
0/150
提交评论