JK触发器

JK触发器具有保持,置0,置1和翻转四个功能。

则可得出次态方程:\(Q_{n+1} = JQ_n'+K'Q_n\)


Design

`timescale 1ns / 1ps
module jk(clk,Reset,Set,J,K,Q);
input clk;
input Reset;
input Set;
input J;
input K; output Q; reg q; always@(posedge clk)
if(!Reset)
begin
q <= 1'b0;
end
else if(!Set)
begin
q <= 1'b1;
end
else
begin
case({J,K})
2'b00 : q <= q;
2'b01 : q <= 0;
2'b10 : q <= 1;
default : q <= ~q;
endcase
end
assign Q=q;
endmodule

Simulation

`timescale 1ns / 1ps
module JK_sim();
reg Reset, Set, clk;
wire Q;
reg J, K; jk uu(clk, Reset, Set, J, K, Q);
initial
begin
Reset = 0;
Set = 0;
clk = 1;
J = 0;
K = 0;
#40 Reset = 1;
#40 Set = 1;
end
always #20{J, K} = {J, K} + 1;
always #10 clk = ~clk;
endmodule

波形图

模12计数器

需要使用4个JK触发器,卡诺图化简后得到触发器控制函数的最简与或式如下:

\(J_1 = K_1 = 1\)

\(J_2 = K_2 = Y_1^{n}\)

\(J_3 = (Y_4^n)'Y_2^nY_1^n\)

\(K_3 = Y_2^nY_1^n\)

\(J_4 = Y_3^nY_2^nY_1^n\)

\(K_4=Y_2^nY_1^n\)


Design

`timescale 1ns / 1ps
module count(Reset,Set,clk,Y);
input Reset;
input Set;
input clk;
output [3:0]Y; wire j1,j2,j3,j4,k1,k2,k3,k4; assign j1 = 1;
assign k1 = 1;
assign j2 = Y[0];
assign k2 = Y[0];
assign j3 = (~Y[3])&Y[1]&Y[0];
assign k3 = Y[0]&Y[1];
assign j4 = Y[0]&Y[1]&Y[2];
assign k4 = Y[0]&Y[1];
jk_0 u1 (clk,Reset,Set,j1,k1,Y[0]);
jk_0 u2 (clk,Reset,Set,j2,k2,Y[1]);
jk_0 u3 (clk,Reset,Set,j3,k3,Y[2]);
jk_0 u4 (clk,Reset,Set,j4,k4,Y[3]); endmodule

Simulation

`timescale 1ns / 1ps
module sim_dev1();
reg Reset,Set,clk;
wire [3:0]Y; initial
begin
Reset = 0;
Set = 0;
clk = 1;
#20 Reset = 1;
#20 Set = 1;
end
always#20 clk = ~clk;
CNT12 u(Reset,Set,clk,Y);
endmodule

波形图

vivado使用JK触发器IP核来实现计数器

  1. 新建JK触发器项目。

  2. 新建Design Sources。

  3. 将前面JK触发器的代码粘贴进去。

  4. 点击Tools,点击Create and package new IP。

  5. Next,选择Package your current project,Next,复制一下IP核的位置。

  6. 退出当前项目,新建计数器项目。

  7. 点击Settings,再点开IP,点击Repository。

  8. 点击加号,粘贴刚刚复制的路径。

  9. 然后点击Select,OK。

  10. 现在点击PROJECT MANAGER 中的IP Catalog。

  11. 看到我们刚刚添加的IP核了。

  1. 双击这个IP核,弹窗点击OK,再OK,点击Generate生成。
  2. 现在实现计数器,粘贴我们刚刚的代码。记得JK触发器的名字要改为和刚刚生成的IP核的名字一样(一般默认是 {name}_0 )。
  3. 完成,可以试试模型仿真。

JK触发器与模12计数器的更多相关文章

  1. [FPGA]Verilog实现JK触发器组成的8421BCD码十进制计数器

    目录 概述 电路分析 代码实现 参考文献 概述 本文以异步时序计数器为例,用Verilog实现以\(JK\)触发器组成的8421BCD码十进制异步计数器,并用ModelSim软件进行仿真验证. 电路分 ...

  2. SR触发器和JK触发器

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

  3. FPGA模N计数器的实现

    module ModuloN_Cntr(Clock, Clear, Q, QBAR); , UPTO = ;//计数器位数以及模数 input Clock, Clear; :]Q, QBAR; :]C ...

  4. 从CMOS到触发器(二)

    PS:可以转载,转载请标明出处:http://www.cnblogs.com/IClearner/ 前面说了CMOS器件,现在就接着来聊聊锁存器跟触发器吧,下面是这次博文要介绍的主要内容: ·双稳态器 ...

  5. FPGA学习记录_设计一个计数器

    此处设计一个数器,使 学习板上 的 LED 状态每 500ms翻转一次. 学习板上晶振为50MHz,也就是说时钟周期为 20ns , 这样可以计算得出 500ms = 500_000_000ns/20 ...

  6. 触发器(基本的SR触发器、同步触发器、D触发器)

    一.能够存储1位二值信号的基本单元电路统称为触发器(Filp-Flop) 触发器是构成时序逻辑电路的基本逻辑部件.它有两个稳定状态:“0”和“1”.在不同的输入情况下,它可以被置0状态或1状态,当输入 ...

  7. Powmod快速幂取模

    快速幂取模算法详解 1.大数模幂运算的缺陷: 快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算 ...

  8. 【iCore1S 双核心板_FPGA】例程八:触发器实验——触发器的使用

    实验现象: 在本实验中,将工程中的D触发器.JK触发器实例化,对应其真值表,用signal对其进行 检验,利用SignaTap II观察分析波形. 核心代码: module D( input CLK, ...

  9. 锁存器 Latch v.s. 触发器 Flip-Flop

    转载  http://guqian110.github.io/pages/2014/09/23/latch_versus_flip_flop.html 根据 Wiki: Flip-flop (elec ...

随机推荐

  1. [WPF]使用DispatcherUnhandledException捕捉未经处理的异常

    使用DispatcherUnhandledException捕捉未经处理的异常 using System.Windows; namespace Test02 { /// <summary> ...

  2. 硬件错误导致的crash

    [683650.031028] BUG: unable to handle kernel paging request at 000000000001b790--------------------- ...

  3. redis淘汰策略和过期策略

    淘汰策略 https://blog.csdn.net/qq_55961709/article/details/124568269 LRU算法和LFU算法的区别: LRU:最近最少使用,淘汰时间长没有使 ...

  4. 关于stm32f10xRB系列的PB5和PB12外设冲突问题

      上周在公司做了一个项目,调试一个mcu,本以为很简单的调试一下裸机驱动,但是调试过程中遇到了一些问题让我觉得比较有意思,记录一下. 1.关于stm32的SMBUS功能的介绍   由于笔者也没有玩过 ...

  5. DLL Proxy Loading Bypass AV

    DLL Proxy Loading Bypass AV 前言 感谢国外大佬开源的免杀思路,本文就是基于该文章的一次实践. https://redteaming.co.uk/2020/07/12/dll ...

  6. 创建deploymen的几种方式

    创建deployment方式有两种,一种是命令直接创建,一种是使用yaml文件 1. 直接使用命令方式: --record 参数用来记录版本,也可以忽略,建议带上 kubectl create dep ...

  7. 04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-usr-locate-find

    04_Linux基础-.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-wherei ...

  8. ERROR: column "xxxxxx" does not exist解决办法

    今天在写PostgreSQL语句时候发现运行这个代码 SELECT t1.equipid, t2.equipname, t1.bigtype, t1.smalltype FROM pdw_gh_pro ...

  9. rh358 005 dhcp dhcp6 打印机 ansible配置dhcp和打印机

    部署dhcp服务器 主机发送Discover报文 目标为广播地址 同一网段的dhcp收到报文后,dhcp响应一个offer报文 offer报文:dhcp自己的ip地址.和客户端ip以及使用周期,和客户 ...

  10. KingbaseES例程之快速删除表数据

    概述 快速删除表中的数据 delete语句删除数据 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放. 这种删除缺点是:删除效率比较低. 这种删除优点是:支持删除部分数据,支持回滚. ...