首页 > 其他分享 >Verilog与数电[3]-波形图

Verilog与数电[3]-波形图

时间:2022-10-15 16:44:05浏览次数:67  
标签:probe clk always 数电 module 波形图 Verilog input reg

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

在线小工具

在线波形图查看

[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

标签:probe,clk,always,数电,module,波形图,Verilog,input,reg
From: https://www.cnblogs.com/qsbye/p/16794436.html

相关文章

  • Verilog中assign的使用
    assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。assign的功能......
  • 如何在macOS上使用vivado的部分功能:利用vs code进行verilog代码编写,使用vivado的替代
    首先要说明本文介绍的是如何使用vivado的替代品在macOS上实现vivado的部分功能:verilog代码编写,仿真(simulation)和生成波形图。而并没有成功安装vivado。 刚开始为了实现......
  • Verilog 学习笔记
    这篇文章仅记录了一些本人在修读课程「数字逻辑与计算机组成实验」时自学Verilog留下的一些笔记和备忘,不是一则教程,也不能作为教程使用,因此不可避免的含有大量缺乏例子,......
  • HDLBits-Verilog Practice-1-Getting started -> Circuits.Combinational Logic
    注:建议使用Ctrl+F利用关键词、题号、题目名称查阅本文内容笔记内容本文范围Gettingstarted->Circuits.CombinationalLogic网页本身给出的语法点,和一些语法......
  • HDLBits-Verilog Practice-2-Circuits.Sequential Logic -> Circuits.More Circuits
    注:建议使用Ctrl+F利用关键词、题号、题目名称查阅本文内容笔记内容本文范围Circuits.SequentialLogic->Circuits.MoreCircuits网页本身给出的语法点,和一些......
  • Verilog中端口的连接规则
    摘自于(15条消息)Verilog中端口应该设置为wire形还是reg形_CLL_caicai的博客-CSDN博客,以及(15条消息)Verilog端口连接规则_「已注销」的博客-CSDN博客_verilog端口连接......
  • 通用串行异步收发器8251的VerilogHDL源代码
     /*****************************************************************************通用串行异步收发器8251的VerilogHDL源代码***************************************......
  • Android 自定义View - 柱状波形图 wave view
    前言柱状波形图是一种常见的图形。一个个柱子按顺序排列,构成一个波形图。柱子的高度由输入数据决定。如果输入的是音频的音量,则可得到一个声波图。在一些音频软件中,我们也可......
  • verilog的signed和unsigned
    数字IC秋招面试专题(二)verilog的signed和unsigned前言一、右值按signed还是unsigned二、signed的自动扩位三、系统函数$signed和$unsigned总结前言如果用veri......
  • 数电第六周周结_by_yc
    数电第六周周结_by_yc时序逻辑电路的设计要点:  ①只有时钟信号和复位信号可以放在敏感列表里;  ②使用非阻塞赋值,即使用"<=";  ③无需对所有分支进行描述,对于未......