Verilog描述——时序逻辑电路浅析

2023-12-23 07:58

本文主要是介绍Verilog描述——时序逻辑电路浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时序逻辑电路浅析

时序电路时状态依赖的,所以又称为状态机。这里只限于讨论有限数量的存储单元构成的状态机,因而其状态数是有限的,称为有限状态机FSM(Finite State Machine)

时序逻辑电路具有以下主要特征:

  1. 时序逻辑电路由组合电路存储电路组成;
  2. 时序逻辑电路的状态与时间因素有关,即时序电路在任一时刻的状态变量不仅是当前输入信号的函数,而且还是电路以前状态的函数,时序电路的输出信号由 输入信号和电路的状态共同决定。

用Verilog HDL描述时序逻辑电路

组合电路可以在逻辑门级通过调用内置的逻辑门元件进行描述,也可以使用数据流描述语句和行为级描述语句进行描述,而触发器通常使用行为级描述语句进行描述。

由于时序逻辑电路通常由触发器和逻辑门构成,所以可以将数据流描述语句和行为级描述语结合起来对它点逻辑功能(行为)进行描述。

移位寄存器的Verilog建模

通过行为级描述语句always描述了一个4位双向一位寄存器,功能与74HCT194类似。

// Behavioral description of Universal shift register
module shift74x194(S1, S0, D, Dsl, Dsr, Q, CP, CR);input S1, S0;			// Select inputsinput Dsl, Dsr;			// Serial Data inputsinput CP, CR;			// Clock and Resetinput [3:0] D;			// Prarllel Data inputoutput [3:0] Q;			// Register outputreg [3:0] Q;always @(posedge CP or negedge CR) beginif ( ~CR ) beginQ <= 4'b0000; end else begincase ({S1,S0})2'b00: Q <= Q;				// No change2'b01: Q <= {Q[2:0], Dsr};	// Shift right2'b10: Q <= {Dsl, Q[3:1]};	// Shift left2'b11: Q <= D;				// Parallel load inputendcaseendend
endmodule

计数器的Verilog建模

同步二进制计数器

为提高计数速度,可采用同步计数器。(此处可能是因为异步计数器会因为传输延迟造成稳定工作的频率有限)

其特点是,计数脉冲作为时钟信号同时接于各位触发器的时钟脉冲输入端,在每次时钟脉冲沿到来之前,根据当前计数器状态,利用组合逻辑控制,准备号适当的条件。

当技术脉冲沿到来时,所有应翻转的触发器同时翻转,同时也使所有应保持原状的触发器不改变状态。

由于不存在异步计数器那种纹波进位造成的延迟时间积累,所以能取得较高的计数速度,输出编码也不会发生纹波进位时的那种混乱。

// Binary counter with parallel load and enable
module counter74x161( CEP, CET, PE, D, CP, CR, Q, TC);input CEP, CET, PE, CP, CR;input [3:0] D;				// Data inputoutput TC;					// Output carryoutput [3:0] Q;				// Data outputreg [3:0] Q;wire CE;assign CE = CEP & CET;assign TC = CET & ( Q == 4'b1111);always @ (posedge CP or negedge CR) beginif ( ~CR ) beginQ <= 4'b0000; end else if ( ~PE ) beginQ <= D;end else if ( ~CE ) beginQ <= Q;end else beginQ <= Q + 1'b1; endend
endmodule
异步二进制计数器

异步二进制计数器的原理,结构简单,因个触发器不是同时反转,而是逐级脉动反转实现计数进位的,故亦称为纹波计数器Ripple Counter

// Ripple counter
module ripplecounter(Q0, Q1, Q2, Q3, CP, CR);output Q0, Q1, Q2, Q3,;input CP,CR;
// Instantiate D flip-flopD_FF FF0 (Q0, ~Q0, CP, ~CR);D_FF FF1 (Q1, ~Q1, Q0, ~CR);D_FF FF2 (Q2, ~Q2, Q1, ~CR);D_FF FF3 (Q3, ~Q3, Q2, ~CR);
endmodule// module D_FF with asyncchronous reset
module D_FF (Q, D, CP, Rd);output Q;input D, CP, Rd;reg Q;always @(negedge CP or negedge Rd) beginif ( ~Rd ) beginQ <= 1'b0; end else beginQ <= D;endend
endmodule

状态图的Verilog建模

这里的内容在书中介绍的比较简单,对于状态机行为描述,后续会参考其他资料另行补充。

这篇关于Verilog描述——时序逻辑电路浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/527283

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

(入门篇)JavaScript 网页设计案例浅析-简单的交互式图片轮播

网页设计已经成为了每个前端开发者的必备技能,而 JavaScript 作为前端三大基础之一,更是为网页赋予了互动性和动态效果。本篇文章将通过一个简单的 JavaScript 案例,带你了解网页设计中的一些常见技巧和技术原理。今天就说一说一个常见的图片轮播效果。相信大家在各类电商网站、个人博客或者展示页面中,都看到过这种轮播图。它的核心功能是展示多张图片,并且用户可以通过点击按钮,左右切换图片。

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

数字电路专题:verilog 阻塞赋值和非阻塞赋值

verilog 阻塞赋值 和 非阻塞赋值 “=”阻塞赋值, ”<=”非阻塞赋值。阻塞赋值为执行完一条赋值语句,再执行下一条,可理解为顺序执行,而且赋值是立即执行; 非阻塞赋值可理解为并行执行,不考虑顺序,在 always 块语句执行完成后,才进行赋值。 如下面的阻塞赋值: //代码如下:module top(din,a,b,c,clk);input din;input clk;out

风暴项目个性化推荐系统浅析

风暴项目的主要任务是搭建自媒体平台,作为主开发人员的我希望把工作重心放在个性化推荐系统上。 目前风暴项目的个性化推荐是基于用户行为信息记录实现的,也就是说对于每条资讯,数据库中有字段标明其类型。建立一张用户浏览表,对用户的浏览行为进行记录,从中可以获取当前用户对哪类资讯感兴趣。 若用户第一次登陆,则按默认规则选取热点资讯做推荐,及所有资讯按浏览量降序排序,取前4个。另外,我考虑到后期可能有商业

中国书法——孙溟㠭浅析碑帖《越州石氏帖》

孙溟㠭浅析碑帖《越州石氏帖》 《越州石氏帖》  是一部汇集多本摹刻的帖,南宋时期的会稽石邦哲(字熙明)把家藏的一些法书碑帖集中一起摹刻成的,宋理宗时临安书商陈思《宝刻丛编》有记載这部帖的目录。现在还存有宋代时拓的残缺本,大多是相传的晋朝唐朝的小楷,后人多有临摹学习,并以此版本重新摹刻。 (图片来源于网络) 图文/氿波整理

浅析网页不安装插件播放RTSP/FLV视频的方法

早期很多摄像头视频流使用的是RTSP、RTMP协议,播放这类协议的视频通常是在网页上安装插件。但现在越来越多的用户,对于网页安装插件比较反感,且随着移动设备的普及,用户更多的希望使用手机、平板等移动设备,直接可以查看这些协议的视频。那是否有什么方案可以直接网页打开RTSP、RTMP协议的视频,直接观看不用安装插件呢?而且对于摄像头的数据,尽可能低延迟的获取实时画面。  其实很多摄像头厂家也注意到

systemverilog、verilog的部分常用内部函数

1. $ceil 作用:将给定的实数或浮点数向上取整。示例:$ceil(3.2) 返回 4。 2. $floor 作用:将给定的实数或浮点数向下取整。示例:$floor(3.9) 返回 3。 3. $value$plusargs 作用:从命令行读取传递给仿真器的参数。格式:$value$plusargs("格式", 变量),格式 用来匹配命令行的参数,变量 是用来存储匹配到的值。示例:$

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测(完整源码和数据) 2.SS

浅析c/c++中 struct的区别

(1)C的struct与C++的class的区别。 (2)C++中的struct和class的区别。 在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数(在纯粹的C语言中,struct不能定义成员函数,只能定义变量)。例如下面的C代码片断: 复制代码代码如下: