通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)

举报
李锐博恩 发表于 2021/07/15 06:54:23 2021/07/15
【摘要】 上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器。 让我们迅速进入正题吧。 J-K触发器的Verilog HDL程序代码 //边沿JK触发器module jk_trigger(clk, j, k, q); input clk, j, k;output q;reg q...

上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器。

让我们迅速进入正题吧。

J-K触发器的Verilog HDL程序代码


  
  1. //边沿JK触发器
  2. module jk_trigger(clk, j, k, q);
  3. input clk, j, k;
  4. output q;
  5. reg q;
  6. wire qb;
  7. always@(posedge clk) //时钟上升沿到来时,判断jk的值
  8. begin
  9. case({j,k})
  10. 2'b00: q <= q; //如果{j,k}=00,则触发器处于保持状态
  11. 2'b01: q <= 1'b0; //如果{j,k}=01,则触发器置1
  12. 2'b10: q <= 1'b1; //同理10,清零
  13. 2'b11: q <= ~q; //11,翻转
  14. default: q <= q;
  15. endcase
  16. end
  17. assign qb = ~q;
  18. endmodule

测试文件:


  
  1. //jk触发器的测试文件
  2. `timescale 1ns/1ps
  3. module jk_trigger_tb;
  4. reg j,k,clk;
  5. wire q;
  6. //时钟电路,周期为20ns
  7. always
  8. begin
  9. #10 clk = ~clk;
  10. end
  11. //初始化
  12. initial
  13. begin
  14. clk = 0;
  15. j = 1'b0;
  16. k = 1'b0;
  17. #30 j = 1'b0; k = 1'b1; //这30ns内,由于q处于保持状态,且q没有初始值,所以此时间段内q值应该处于不确定状态,
  18. //当过了这30ns后,时钟上升沿到来,q值被置0;
  19. #20 j = 1'b1; k = 1'b0; //q值被置1;
  20. #20 j = 1'b1; k = 1'b1; //q值翻转为0;
  21. #20 j = 1'b1; k = 1'b0; //q值被置1;
  22. //拭目以待呗;
  23. end
  24. jk_trigger u1(.j(j), .k(k), .clk(clk), .q(q));
  25. endmodule

仿真波形:

由仿真波形图可见,和我们在测试代码中说明的一模一样,说明设计正确。

综合后电路图(RTL Schematic):

展开后为:

综合出来的电路貌似有点复杂了,但可以直观的看出,这个jk触发器在FPGA中是由D触发器组成的,也就是说FPGA中只有D触发器,其他触发器由D触发器组成。

下面再看看Technology Schematic

从中可以看出由查找表(lut),D触发器以及各种缓冲器(buf)组成,关于这里的各种buf是干什么的,可以查看这篇博文:

【FPGA】IBUFG、IBUFGDS、IBUFDS...(这些到底是啥?)

看完之后会有一定的感触的。


最后给出J_k触发器的输入输出关系表格:

 

边沿J-K触发器输入输出关系
clk J K q qb
上升沿 0 0 q ~q
上升沿 0 1 0 1
上升沿 1 0 1 0
上升沿 1 1 ~q q

 

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/81331395

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。