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

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

文章目录

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

带同步复位的D触发器

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

Verilog 代码

// timescale ins/1nsmodule flopr (input			rstn,input			clk,input[3:0]		d,output[3:0]		q
);reg [3:0]			q_out;// synchronous reset
always@(posedge clk) beginif (!rstn) beginqout <= 4'b0;endelse beginq_out <= d;end
endassign 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;
`endifclk = 1'b0;rstn = 1'b0;#50;rstn = 1'b1;$display("Running D trigger testbench");
endalways begin#10;clk =~ clk;$display("---run time--- : d", $time);if ($time >= 1000) begin$finish;end
endinitial 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
endendmodule

编译及仿真

在这里插入图片描述

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

问题小结

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

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

相关文章:

  • JAVA中的main方法
  • 【方法论】费曼学习方法
  • 【Spring Boot 3】【JPA】嵌入式对象
  • 文心一言4.0API接入指南
  • 2024Node.js零基础教程(小白友好型),nodejs新手到高手,(五)NodeJS入门——http模块
  • C# OpenCvSharp DNN 部署yolov4目标检测
  • Linux 性能调优之存储设备调优
  • GADM 4.1 全球国家行政区划下载
  • 代码随想录算法训练营第39天(动态规划02● 62.不同路径 ● 63. 不同路径 II
  • 揭秘:IT行业有哪些证书含金量高?
  • Python算法题集_矩阵置零
  • app对接优量汇收益如何?
  • CSS 控制 video 标签的控制栏组件的显隐
  • 新零售的升维体验,摸索华为云GaussDB如何实现数据赋能
  • 推动海外云手机发展的几个因素
  • [译]Python中的类属性与实例属性的区别
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Debian下无root权限使用Python访问Oracle
  • JavaScript HTML DOM
  • Koa2 之文件上传下载
  • Laravel 菜鸟晋级之路
  • node和express搭建代理服务器(源码)
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 服务器之间,相同帐号,实现免密钥登录
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 技术:超级实用的电脑小技巧
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 通过npm或yarn自动生成vue组件
  • 我看到的前端
  • 最近的计划
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 函数计算新功能-----支持C#函数
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #Linux(帮助手册)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (6)设计一个TimeMap
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)字符分类函数
  • (分享)自己整理的一些简单awk实用语句
  • (六)c52学习之旅-独立按键
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (一)基于IDEA的JAVA基础10
  • (转)memcache、redis缓存
  • (转)关于pipe()的详细解析
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .chm格式文件如何阅读
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net反编译的九款神器
  • @PreAuthorize注解
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [IOI2007 D1T1]Miners 矿工配餐