当前位置: 首页 > article >正文

【芯片设计- RTL 数字逻辑设计入门 6 -- 带同步复位的D触发器 RTL实现及testbench 验证】

文章目录

    • 带同步复位的D触发器
      • Verilog 代码
      • testbench 代码
      • 编译及仿真
      • 问题小结

带同步复位的D触发器

在这里插入图片描述
同步复位 :复位只能发生在在clk信号的上升沿,若clk信号出现问题,则无法进行复位。

Verilog 代码

// timescale ins/1ns

module flopr (
	input			rstn,
	input			clk,
	input[3:0]		d,
	output[3:0]		q
);

reg [3:0]			q_out;

// synchronous reset
always@(posedge clk) begin
	if (!rstn) begin
		qout <= 4'b0;
	end
	else begin
		q_out <= d;
	end
end

assign q = q_out;

testbench 代码

module test;
	reg			rstn;
	reg			clk;
	reg[3:0]	d;
	reg[3:0]	q;

	flopr flopr_test(
		.rstn(rstn),
		.clk(clk),
		.d(d),
		.q(q)
	);

	initial begin
`ifdef DUMP_FSDB
		$display("Dump fsdb wave!");
		$fsdbDumpfile ("test. fsdb");
		$fsdbDumpvars;
`endif
	
	clk = 1'b0;
	rstn = 1'b0;
	#50;
	rstn = 1'b1;

	$display("Running D trigger testbench");
end

always begin
	#10;
	clk =~ clk;
	$display("---run time--- : d", $time);
	if ($time >= 1000) begin
		$finish;
	end
end

initial begin
	#100 d =4'b0001;
	#20 d = 4'b0010;
	#20 d = 4'b0011; #20 d = 4'b0100;
	#20 d = 4'b0101; #20 d = 4'b0111;
	#20 d = 4'b1000;
	#20 d = 4'b1001;
	#50 $finish; // here is a system task which can stop the simulation
end

endmodule

编译及仿真

在这里插入图片描述

波形如下
在这里插入图片描述
从波形可以看到,在第100ns后,第一个 clk 时钟沿变化时 q 的信号和 d 的信号保持一样,后面依次如此。

问题小结

在写 testbench 测试的时候遇到了下面问题:

Net type cannot be used on the left side of this assignment.
在这里插入图片描述
后来发现是在 testbench 中对 q_out 的定义使用 wire 类型导致的,修改为 reg即可 。


http://www.kler.cn/a/229255.html

相关文章:

  • My ICLR Learning-Feedback
  • Linux 查看内存命令
  • Windows远程桌面网关出现重大漏洞
  • JSON 文本的多层嵌套格式
  • React第二十二章(useDebugValue)
  • 信号与系统初识---信号的分类
  • 【Spring Boot 3】应用启动执行特定逻辑
  • 【leetcode热题100】删除排序数组中的重复项 II
  • YOLO-World: Real-Time Open-Vocabulary Object Detection
  • SQL 表信息 | 统计 | 脚本
  • Polar-Net:通过 OCTA(光学相干断层扫描血管成像)检测阿尔茨海默病
  • CXYGZL - 年前最后一波更新了~
  • IDEA创建SpringBoot+Mybatis-Plus项目
  • docer compose部署simple-docker
  • SpringMVC-请求
  • 【实训】网络规划与部署实训
  • javaEE - 23( 21000 字 Servlet 入门 -1 )
  • 实践:微服务版本升级步骤以及maven仓库相关概念
  • python增量同步文件夹中的文件
  • 如何快速捕获和验证用户软件需求,实现快速迭代
  • 1978-2023年全国整体GDP平减指数计算模板(含计算公式代码+计算结果且可任意调整基期)
  • XCTF:3-1[WriteUP]
  • SpringBoot日志插件log4J和slf4J的使用和比较含完整示例
  • Python学习路线 - Python语言基础入门 - 面向对象
  • C# Onnx GroundingDINO 开放世界目标检测
  • FPGA解码MIPI视频:Xilinx Artix7-35T低端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持