保命声明:笔者在校属于中低水平学生,代码能力有限,若行文中有错漏之处欢迎大家指出。

在线小工具

在线波形图查看

[https://wavedrom.com/editor.html]

Verilog刷题网站

[https://hdlbits.01xz.net]

JK触发器

[https://www.cnblogs.com/ajiaoa/p/13241610.html]
Verilog语法大全

//根据图片写出模块包含的内容
module JK_FF(
clk,J,K,S,R,Q);
//输入
input clk;
input S;//异步置位
input R;//异步复位
input J;
input K;
output reg Q;
/*顺序执行的块语句*/
/*
always意为一直,always后加@(输入信号或电平),括号中为触发方式,括号中的任何一个输入信号或电平发生变化时,该语句后的内容将会重复执行,或者说循环执行,当内容的最后一行代码执行完成后,再从第一行代码开始执行。如果用begin...end规定执行范围,执行范围以begin开始,以end结束
*/
always@(posedge clk,negedge R,posedge S)//在clk信号的上升沿或R的下降沿或S的下降沿执行操作
begin
  if(!R)
     Q <= 1'b0;
  else if(!S)
     Q <= 1'b1;
/*
1'b0 表示一位二进制数,其值为0
1'b1 表示一位二进制数,其值为1
时序逻辑器件的赋值语句采用非阻塞赋值 “<=”;
*/
  else 
     Q <= (J&~Q) | (~K&Q);
end
/*结束当前块*/
endmodule
/*结束当前模块*/

测试文件JK_FF_tb.v

module top_module();
reg clk=0;
always #5 clk = ~clk;//产生时钟信号周期为10
initial `probe_start;//工具的宏定义
`probe(clk);//放置探针
reg J=0;
reg K=0;
reg S=0;
reg R=0;
reg Q=0;
initial begin
/*
延时语句——#n; 代表延时n个时间轴单位。比如之前定义了`timescale 1ns / 1ps;如果后面写 #3;就代表延时3ns而不是延时3ps。
*/
  #10 J <= 1;Q<=1;
  #10 J <= 0;Q<=1;
  #20 K <= 1;Q<=1;
  #20 K <= 0;Q<=1;
  #50 $finish;
end

`probe(J);
`probe(K);
`probe(S);
`probe(R);
`probe(Q);
`probe(~Q);
endmodule

在线仿真

[https://hdlbits.01xz.net/wiki/Iverilog]
注: `probe为添加的探针宏定义,最上面的top_module()是testbench,下面的module才是本体

查看JK_FF_tb.v的波形图

不太符合要求

官方示例

module top_module ();
	reg clk=0;
	always #5 clk = ~clk;  // Create clock with period=10
	initial `probe_start;   // Start the timing diagram

	`probe(clk);        // Probe signal "clk"

	// A testbench
	reg in=0;
	initial begin
		#10 in <= 1;
		#10 in <= 0;
		#20 in <= 1;
		#20 in <= 0;
		$display ("Hello world! The current time is (%0d ps)", $time);
		#50 $finish;            // Quit the simulation
	end

	invert inst1 ( .in(in) );   // Sub-modules work too.

endmodule

module invert(input in, output out);
    assign out = ~in;

    `probe(in);	// Sub-modules can also have `probe()
    `probe(out);
endmodule

原文地址:http://www.cnblogs.com/qsbye/p/16794436.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性