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. 完成,可以试试模型仿真。

最新文章

  1. 链表栈的C语言实现
  2. 攻城狮在路上(壹) Hibernate(六)--- 通过Hibernate操纵对象(上)
  3. meta标签部分总结
  4. android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget
  5. 利用Multipeer Connectivity框架进行WiFi传输
  6. BGP详解
  7. Entity FrameWork 指导文章
  8. blfs(systemv版本)学习笔记-编译安装openssh软件包
  9. Markdown页内跳转实现方法
  10. Numeric Type Attributes
  11. hdu 1232 变成生成树至少还要加几条边 (并查集模板题)
  12. 解题:JXOI 2018 游戏
  13. 【面试笔试】Java常见面试笔试总结
  14. Linux系统调用怎么和内核或底层驱动交互的
  15. 11g OCM自动打补丁
  16. (ubuntu) pip install scandir 时出现错误 fatal error: Python.h: No such file or directory
  17. Windows 10新增的6个快捷键:
  18. 主攻ASP.NET.4.5 MVC4.0之重生:图书推荐
  19. java 多线程系列基础篇(三)之start()和run()的区别
  20. python图形库(1)

热门文章

  1. 从0搭建Vue3组件库:button组件
  2. [HDU6057] Kanade‘s convolution (FWT)
  3. 关于stm32f10xRB系列的PB5和PB12外设冲突问题
  4. ubuntu20.4 sgx环境配置
  5. KingbaseES 缺少库文件问题
  6. C++ | unordered_map 自定义键类型
  7. Java 多线程:锁(三)
  8. Java 热更新 Groovy 实践及踩坑指南
  9. C++ &quot;链链&quot;不忘@必有回响之单链表
  10. Java的lamda表达式/函数式接口/流式计算