JK触发器与模12计数器
2024-09-02 03:02:38
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核来实现计数器
新建JK触发器项目。
新建Design Sources。
将前面JK触发器的代码粘贴进去。
点击Tools,点击Create and package new IP。
Next,选择Package your current project,Next,复制一下IP核的位置。
退出当前项目,新建计数器项目。
点击Settings,再点开IP,点击Repository。
点击加号,粘贴刚刚复制的路径。
然后点击Select,OK。
现在点击PROJECT MANAGER 中的IP Catalog。
看到我们刚刚添加的IP核了。
- 双击这个IP核,弹窗点击OK,再OK,点击Generate生成。
- 现在实现计数器,粘贴我们刚刚的代码。记得JK触发器的名字要改为和刚刚生成的IP核的名字一样(一般默认是 {name}_0 )。
- 完成,可以试试模型仿真。
最新文章
- 链表栈的C语言实现
- 攻城狮在路上(壹) Hibernate(六)--- 通过Hibernate操纵对象(上)
- meta标签部分总结
- android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget
- 利用Multipeer Connectivity框架进行WiFi传输
- BGP详解
- Entity FrameWork 指导文章
- blfs(systemv版本)学习笔记-编译安装openssh软件包
- Markdown页内跳转实现方法
- Numeric Type Attributes
- hdu 1232 变成生成树至少还要加几条边 (并查集模板题)
- 解题:JXOI 2018 游戏
- 【面试笔试】Java常见面试笔试总结
- Linux系统调用怎么和内核或底层驱动交互的
- 11g OCM自动打补丁
- (ubuntu) pip install scandir 时出现错误 fatal error: Python.h: No such file or directory
- Windows 10新增的6个快捷键:
- 主攻ASP.NET.4.5 MVC4.0之重生:图书推荐
- java 多线程系列基础篇(三)之start()和run()的区别
- python图形库(1)
热门文章
- 从0搭建Vue3组件库:button组件
- [HDU6057] Kanade‘s convolution (FWT)
- 关于stm32f10xRB系列的PB5和PB12外设冲突问题
- ubuntu20.4 sgx环境配置
- KingbaseES 缺少库文件问题
- C++ | unordered_map 自定义键类型
- Java 多线程:锁(三)
- Java 热更新 Groovy 实践及踩坑指南
- C++ ";链链";不忘@必有回响之单链表
- Java的lamda表达式/函数式接口/流式计算