首页计算机计算机工程硬件描述语言和数字系统设计 05 第5章 组合逻辑、时序逻辑的Verilog语言描述.pptx

05 第5章 组合逻辑、时序逻辑的Verilog语言描述.pptx

页数:21页文件大小:412.6 KB来源: 硬件描述语言和数字系统设计ppt课件

本课件对比组合逻辑与时序逻辑在Verilog描述上的区别,说明组合逻辑的连续赋值与电平敏感写法、时序逻辑的时钟边沿敏感写法,并重点分析锁存器LATCH与D触发器在代码风格、综合结果和电路特点上的差异及其对可靠性的影响。

第5章组合逻辑与时序逻辑章节封面,标示本章涵盖组合逻辑、时序逻辑的Verilog语言描等内容
第5章主要内容,依次讲述组合逻辑、时序逻辑的Verilog语言描等小节
组合逻辑、时序逻辑的Verilog语言描知识点页,列出组合逻辑电路的连续赋值实现、组合逻辑电路的always过程块实现、时序逻辑电路的always过程块实现等知识点
查看本课件的文字版(共 21 页,供检索与复制)

第1页:第5章组合逻辑与时序逻辑

第5章组合逻辑、时序逻辑的Verilog语言描述硬件描述语言和数字系统设计

第2页:第5章主要内容

组合逻辑、时序逻辑的Verilog语言描述5.2锁存器LATCH与D触发器的Verilog语言描述与电路特点主要内容:

第3页:组合逻辑、时序逻辑的Verilog语言描

5.1.1
组合逻辑电路的连续赋值实现
5.1.2
组合逻辑电路的always过程块实现
5.1.3
时序逻辑电路的always过程块实现

第4页:组合逻辑电路的连续赋值实现

以2路选择器为例:modulemux2to1( a, b, sel, out); input a, b; input sel; output out; assign out = (sel) ? b:a; endmodule注意:连续赋值语句的被赋值变量只能是线网wire型。;

第5页:组合逻辑电路的always过程块实现

仍然以2路选择器为例:modulemux2to1( a, b, sel, out); input a, b; input sel; output out; reg out;always @(sel or a or b)out = (sel) ? b:a; endmodule注意:过程块描述的组合逻辑电路:1.被赋值变量只能是reg型;2.触发方式采用电平触发;3.always@()引导的敏感量要完整。;

第6页:always过程块与连续赋值语句描述

的组合逻辑电路效果相同两种方法描述的2路选择器电路均相同,综合工具根据Verilog代码综合自动生成的电路均为下图所示:

第7页:时序逻辑电路的always过程块实现

moduleDFF(clk, rst, d ,q); input clk, rst ,d; output q; reg q; always @( posedge clk)if (rst)q<=1'b0; elseq<=d; endmodule注意:1.过程块描述的时序逻辑电路,其敏感量采用边沿触发;2.为了避免竞争,描述时序电路只能用非阻塞赋值,不能用阻塞赋值。问题:为什么描述时序逻辑要采用边沿触发的方式?;

第8页:锁存器LATCH与D触发器的Verilo

g语言描述与电路特点知识点
5.2.1 Verilog语言中锁存器(latch)的产生5.2.2锁存器-综合情况5.2.3 CMOS工艺下锁存器的电路结构5.2.4锁存器工作过程分析5.2.5 D触发器的Verilog描述5.2.6 D触发器-工作过程分析5.2.7总结

第9页:module latch 代码示例

modulelatch (data, enable, q); input data, enable; output q; reg q; always @( enable or data)if (enable)q <= data; 

第10页:综合工具Leonardo所报

的Warning信息
Warning,q is not always assigned. Storage may be needed..5.2.2锁存器-综合情况注意:锁存器是在敏感量为电平触发方式的组合逻辑电路中产生的。

第11页:问题:为什么锁存器要在电平触发方式下生成

?5.2.3 CMOS工艺下锁存器的电路结构

第12页:锁存器工作过程分析

锁存器-工作过程分析分析
因为当clk为高电平1时,传输门T1导通,输入端d到输出端q形成通路,所以输出q能够反映输入端d的信号;而当clk变为低电平0时,导致传输门T1关断,输出q就不能反映输入端口d的信号,此时由于传输门T2的导通,输出级有反馈环路,输出端q能够保持原值。

第13页:module asynrst_DFF

moduleasynrst_DFF(clk, rst, d ,q ); input clk, rst ,d; output q; reg q; always @(posedge clk or posedge rst)if (rst)q <= 1'b0; elseq <= d; endmodule5.2.5 D触发器的Verilog描述(异步复位);

第14页:说明:复位信号不受时钟信号clk

的影响。只要复位信号rst为高电平时,电路就复位,输出q为0。对应的CMOS工艺下D触发器的电路结构D触发器符号D触发器电路图

第15页:module asynrst_(续1)

moduleasynrst_DFF(clk, rst, d ,q ); input clk, rst ,d; output q; reg q; always @(posedge clk)if (rst)q <= 1'b1; elseq <= d; endmoduleD触发器的Verilog描述(同步复位);

第16页:说明:复位信号受时钟信号clk

的影响,只有在时钟上升沿来临后,复位信号rst为高电平时,电路就复位,输出q为0。对应的CMOS工艺下D触发器的电路结构D触发器符号D触发器电路图

第17页:不考虑复位信号后的D触发器的电路结构D触

发器符号D触发器电路图问题
1.为什么说d触发器是边沿触发?2.为什么当时钟信号clk变为高电平后,无论输入端d信号如何变化,都不能反映到输出端q上去?

第18页:D触发器-工作过程分析

分析
1.因为当clk为低电平0时,传输门T1导通,输入端d的信号被送到q_点;而当clk在由低电平0跳变到高电平1时刻(即clk上升沿时), T3导通,q_点的值得以被传到输出端q去,对外即好像在时钟上升沿触发,完成数据采集。2.在clk保持高电平1时,由于传输门T1处于关断状态,无论输入端d的信号如何变化,均不能被送到输出端口。

第19页:总结

-锁存器与D触发器问题
锁存器与D触发器的区别?答案要点:从触发方式和电路结构两方面说明。

第20页:module LATCHorDFF

moduleLATCHorDFF (q, data, enable); input clk,data, enable; output q; reg q; endmoduleVerilog语法下的锁存器与D触发器always @( posedge clk)if (enable)q <= data;always @(enable or data)if (enable)q <= data;问题1.上面左边描述的电路,如果不加else q<=0,会生成锁存器吗?2.上面右边描述的电路,如果不加else q<=0,会生成锁存器吗?;

第21页:第二次作业:1.说明latch

(锁存器)与register(触发器)的区别,行为级描述中latch如何产生的.画出DFF的结构图,并用verilog实现之。2.用verilog实现4进制的计数,并画出用D触发器搭建的schematic图。3.用verilog实现10分频电路,占空比为50%,并画出D触发器搭建的schematic图,7分频呢?(请贴上仿真波形,并对波形进行分析)