概述

本文以异步时序计数器为例,用Verilog实现以\(JK\)触发器组成的8421BCD码十进制异步计数器,并用ModelSim软件进行仿真验证.

电路分析

实现8421BCD码十进制计数器可分为同步时序和异步时序,分析方法类似,本文采用较为简单的异步时序进行讲解,关于同步时序实现方法可以参考相关资料.

下图为异步时序实现的该计数器的逻辑电路图.

可以根据逻辑电路图写出激励方程

\[\begin{cases}J_0=K_0=1\\J_1=\overline{Q_3^n},K_1=1\\J_2=K_2=1\\J_3=Q_1^nQ_2^n,K_3=1\end{cases}\tag{*}
\]

将\((*)\)式带入\(JK\)触发器的特征方程可得该电路的状态方程

\[\begin{cases}Q_0^{n+1}=\overline{Q_0^n}\cdot CP\\Q_1^{n+1}=\overline{Q_3^n}\overline{Q_1^n}Q_n^n\\Q_2^{n+1}=\overline{Q_2^n}Q_1^n\\Q_3^{n+1}=\overline{Q_3^n}Q_2^nQ_1^nQ_0^n\end{cases}\tag{**}
\]

设定\(Q_3^nQ_2^nQ_1^nQ_0^n=0000\)为初始状态,按照\((**)\)式可写出状态转移表

可见这是一个模值为\(10\)的计数器,下面讨论能否自启动,将未使用的六个状态一同考虑在内,可得完整的状态转移图

可见此电路可以自启动.(上图中箭头旁的\(/0\)和\(/1\)非本例内容,可忽略)

至此该电路的逻辑已经基本摸清,下面可以开始用代码实现了.

代码实现

首先给出同步复位\(JK\)触发器的实现代码

module JK
(input CK
,input RST
,input J
,input K
,output reg Q
);
always@(negedge CK)
if(RST)
Q<=0;
else
case({J,K})
2'b00:Q<=Q;
2'b01:Q<=1'b0;
2'b10:Q<=1'b1;
default:Q<=~Q;
endcase
endmodule

接下来通过例化模块可轻松地实现逻辑电路,通过之前推导地逻辑表达式,编写代码如下

module Cnt8421
(input CK
,input RST
,output[3:0]Q
);
JK FFI(CK,RST,1,1,Q[0]);
JK FFII(Q[0],RST,~Q[3],~Q[3],Q[1]);
JK FFIII(Q[1],RST,1,1,Q[2]);
JK FFIV(Q[0],RST,Q[1]&Q[2],Q[3],Q[3]);
endmodule

至此已完成电路功能实现.

下面进行仿真验证,仿真文件如下

`timescale 1 ns/ 1 ns
module Cnt8421_vlg_tst;
reg CK=0,RST=1;
wire[3:0]Q;
Cnt8421 UUT(CK,RST,Q);
initial#1 RST=0;
always#1 CK<=~CK;
endmodule

非常简单的仿真文件,逻辑就是一开始先按下复位键令电路初始化,然后开始随着时钟边沿进行计数操作,波形如下图

可见电路功能正常,验证无误.

参考文献

[1] 刘培植.《数字电路与逻辑设计(第2版)》[M].北京:北京邮电大学出版社.2013.205

[FPGA]Verilog实现JK触发器组成的8421BCD码十进制计数器的更多相关文章

  1. FPGA Verilog HDL 系列实例--------步进电机驱动控制

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...

  2. SR触发器和JK触发器

    SR触发器(电平触发器) 基本RS触发器的逻辑方程为:Q(n+1)=一S+RQ(n); 约束方程:R+S=1; 根据上述两个式子得到它的四种输入与输出的关系: 1.当R端有效(0),S端无效时(1), ...

  3. [FPGA]Verilog 60s秒表计时器(最大可计时间长达9min)

    [FPGA]Verilog 60s秒表计时器 1.引述 这次的实验来自于本人本科课程数电结课时的自选题目.由于这次上传是后知后觉,学校已将小脚丫板子回收,所以在这篇文章中没法贴出代码结果的效果图了,但 ...

  4. JK触发器与模12计数器

    JK触发器 JK触发器具有保持,置0,置1和翻转四个功能. 则可得出次态方程:\(Q_{n+1} = JQ_n'+K'Q_n\) Design `timescale 1ns / 1ps module ...

  5. [FPGA]Verilog实现寄存器LS374

    目录 想说的话... 正文 IC介绍 电路连接图 功能表 逻辑图 实验原理 单元实现_D触发器 整体实现(完整代码) 想说的话... 不久前正式开通了博客,以后有空了会尽量把自己学习过程中的心得或者感 ...

  6. [FPGA] Verilog 燃气灶控制器的设计与实现

    燃气灶控制器的设计与实现 一.引述 本次实验所用可编程器件型号为MAXII EPM1270T144C5(其引脚表见本人另一博文:可编程实验板EPM1270T144C5使用说明),通过可编程实验板实现一 ...

  7. xilinx 赛灵思fpga verilog hdl 教程

    http://www.eefocus.com/article/08-03/37231s.html http://wenku.baidu.com/link?url=5mdkMmm4BGGi7gRdgSk ...

  8. [FPGA]Verilog实现可自定义的倒计时器(24秒为例)

    目录 想说的话... 样例_边沿检测计数器 代码讲解 仿真演示 拓展_自定义倒计时数和倒计时间隔 代码讲解 仿真演示 总结 实例_24秒倒计时器 想说的话... 本次实现的是一个24秒倒计时器,功能顾 ...

  9. [FPGA]Verilog实现8位串并转换器HC595

    目录 想说的话... 正文 IC介绍_HC595 电路连接图 功能表 逻辑图 代码实现 代码已经更新,新的代码按照电路编写,忠实于原电路的逻辑,已注于文末(11/16) 修复并行输出数据出错的bug, ...

随机推荐

  1. Vue学习系列(三)——基本指令

    前言 在上一篇中,我们已经对组件有了更加进一步的认识,从组件的创建构造器到组件的组成,进而到组件的使用,.从组件的基本使用.组件属性,以及自定义事件实现父子通讯和巧妙运用插槽slot分发内容,进一步的 ...

  2. 百万年薪python之路 -- 面向对象之三大特性

    1.面向对象之三大特性 1.1封装 封装:就是把一堆代码和数据,放在一个空间,并且可以使用 对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封 ...

  3. < Window10更新后VWwareWorkstationPro无法运行(显示更新至新版本) >

    < Window10更新后VWwareWorkstationPro无法运行(显示更新至新版本) > 问题描述 我的Win10在国庆节后更新了微软发布的新补丁,由于当前正在上操作系统课,用到 ...

  4. 【redis】redis的过期策略

    redis过期策略 在使用redis做缓存的时候,我们常常会设置过期时间.那么redis是如何清理这些过期的数据呢? 答案是: 定期删除 + 惰性删除 定期删除: redis每100ms就会随机抽查删 ...

  5. OptimalSolution(4)--字符串问题(2)进阶

    一.将整数字符串转成整数值 二.判断字符数组中是否所有的字符都只出现过一次 三.在有序但含有空的数组中查找字符串 四.数组中两个字符串的最小距离 五.添加最少字符使字符串整体都是回文字符串 六.括号字 ...

  6. SpringBoot整合FastJson(七)

    一.Maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson&l ...

  7. CSAPP:代码优化【矩阵读写】

    转载请注明出处:https://www.cnblogs.com/ustca/p/11790314.html 写程序最主要的目标就是使它在所有可能的情况下都正确工作,另一方面,在很多情况下,让程序运行得 ...

  8. 基于jquery,php实现AJAX长轮询(LongPoll),类似推送机制

    HTTP是无状态.单向的协议,用户只能够通过客服端向服务器发送请求并由服务器处理发回一个响应.若要实现聊天室.WEBQQ.在线客服.邮箱等这些即时通讯的应用,就要用到“ 服务器推送技术(Comet)” ...

  9. AQL基本语法

    目录: 基本的CRUD 插入 检索 更新 删除 匹配文件 排序和限制 限制 排序 组合 图操作 地理位置查询 一.数据预览 本次使用的数据共有43条,每条数据包含姓氏.年龄.活动状态和特征等六个字段 ...

  10. Unity3D图像后处理特效——Depth of Field 3.4

    Depth of Field 3.4 is a common postprocessing effect that simulates the properties of a camera lens. ...