HDLBits中文版,标准参考答案 | 5 Verification: Writing Testbenches | 验证:编写测试平台

news2024/10/18 9:13:45

关注 望森FPGA  查看更多FPGA资讯

这是望森的第 24 期分享

作者 | 望森
来源 | 望森FPGA

目录

1 Clock

2 Testbench1

3 AND gate

4 Testbench2

5 T flip-fop


本文中的代码都能够正常运行,请放心食用😋~

练习的官方网站是:https://hdlbits.01xz.net/

注:作者将每个练习的知识点都放在了题目和答案之后


1 Clock

题目:

您将获得一个具有以下声明的模块:

module dut ( input clk ) ;

编写一个测试平台,创建一个 module dut 实例(可命名为任何实例名称),并创建一个时钟信号来驱动模块的 clk 输入。时钟周期为 10 ps。时钟应初始化为零,其第一次转换应为 0 到 1。

答案:

`timescale 1ps/1ps
module top_module ( );
    
    //时钟
    reg clk;
    parameter period = 10/2;
    initial begin
        clk = 0;
    end
    always #period clk <= ~clk;
    
    //实例化
    dut        inst1(
    .clk        (clk)
);
    
endmodule

2 Testbench1

题目:

创建一个 Verilog 测试台,它将为输出 A 和 B 产生以下波形:

答案:

module top_module ( output reg A, output reg B );//

    // generate input patterns here
    initial begin
        A <= 0;
        B <= 0;
        #10 A <= 1;
        #5  B <= 1;
        #5  A <= 0;
        #20 B <= 0;
        
    end

endmodule

3 AND gate

题目:

您将获得以下要测试的与门:

module andgate (

input [1:0] in,

output out

);

编写一个测试平台,实例化此与门并测试所有 4 个输入组合,通过生成以下时序图:

答案:

module top_module();
    reg [1:0] in;
    wire out;
    
    initial begin
        in <= 2'b00;
        #10 in <= 2'b01;
        #10 in <= 2'b10;
        #10 in <= 2'b11;
    end
    
    andgate inst1(
        .in(in),
        .out(out)
    );
    
endmodule

4 Testbench2

题目:

下面的波形设置了clk、in和s:

模块 q7 具有以下声明:

module q7 (

input clk,

input in,

input [2:0] s,

output out

);

编写一个测试平台,实例化模块 q7 并生成这些输入信号,如上图波形所示。

答案:

module top_module();
    reg clk;
    reg in;
    reg [2:0] s;
    wire out;
    
    //时钟
    initial begin
        clk = 0;
    end
    always #5 clk <= ~clk;
    
    //数据产生
    initial begin
        in <= 0;
        #20 in <= 1;
        #10 in <= 0;
        #10 in <= 1;
        #30 in <= 0;
    end
    initial begin
            s <= 3'h2;
        #10 s <= 3'h6;
        #10 s <= 3'h2;
        #10 s <= 3'h7;
        #10 s <= 3'h0;
    end
    
    //模块实例化
    q7 inst1(
        .clk(clk),
        .in(in),
        .s(s),
        .out(out)
    );
    
endmodule

5 T flip-fop

题目:

给你一个 T 触发器模块,其声明如下:

module tff (

input clk,

input reset, // active-high synchronous reset

input t, // toggle

output q

);

编写一个测试台,实例化一个 tff 并重置 T 触发器,然后将其切换到“1”状态。

答案:

module top_module ();
    
    reg clk;
    reg reset;
    reg t;
    wire q;
    
    //时钟
    parameter period = 10/2;
    initial begin
        clk = 0;
    end
    always #period clk <= ~clk;
    
    //复位
    initial begin
        reset <= 0;
        #10 reset <= 1;
        #10 reset <= 0;
    end
    
    //输入信号
    initial begin
            t <= 0;
        #20 t <= 1;
    end
    
    //实例化
    tff tff_inst1(
        .clk(clk),
        .reset(reset),   // active-high synchronous reset
        .t(t),       // toggle
        .q(q)
    );
    
endmodule

- END -

公z号/CSDN/知乎搜索【望森FPGA】,查看更多FPGA资讯~

相关推荐文章,点击跳转:

望森FPGA的HDLBits合集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2217665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hi3061M——VL53L0X激光测距(IIC)(同样适用于其他MCU)

这里写目录标题 前言VL53L0X的简介VL53L0X的初始化和效准过程的相关APIVL53L0X开始测量和获取测量值VL53L0X移植配置结语 前言 手头正好有一个空闲的激光测距模块VL53L0X&#xff0c;想在Hi3061M上跑一下测距&#xff0c;以前并没有用过VL53L0X&#xff0c;想着以为还是向以前…

浅谈针对Nor flash状态寄存器保护位修改方法

浅谈针对Nor flash状态寄存器保护位修改 ✨最近在写QSPI驱动Nor flash过程中&#xff0c;在操作芯片的状态寄存器的时候&#xff0c;遇到的一些问题和解决办法。 &#x1f52c;操作Nor flash测试芯片&#xff1a;GD25Q64&#x1f516;以QSPI测试为例&#xff0c;SPI方式修改没有…

集成电路学习:什么是WLAN无线局域网

WLAN&#xff1a;无线局域网 WLAN&#xff0c;即无线局域网&#xff08;Wireless Local Area Network&#xff09;&#xff0c;是一种通过无线技术构建的局域网络&#xff0c;它使用无线信号传输数据&#xff0c;取代了传统有线网络中的网线连接。以下是关于WLAN的详细解释&…

Lumerical学习——优化和参数扫描(Optimization and parameter sweeps)

一、概要介绍 这部分介绍优化和参数扫描项目设定的方法。在有大量数据模拟计算过程中这个特性允许用户使处理方法自动地查找期望的参数值。 ① 创建一个参数扫描任务 ② 创建一个优化任务 ③ 创建一个良率分析任务 ⑤ 打开所选择项目的编辑窗口&#xff0c;编辑其属性…

stm32 bootloader写法

bootloader写法&#xff1a; 假设app的起始地址&#xff1a;0x08020000&#xff0c;则bootloader的范围是0x0800,0000~0x0801,FFFF。 #define APP_ADDR 0x08020000 // 应用程序首地址定义 typedef void (*APP_FUNC)(void); // 函数指针类型定义 /*main函数中调用rum_app&#x…

【Unity】Unity Shader学习笔记(八)基础纹理2:高度纹理、法线纹理、模型空间下的法线纹理、切线空间下的法线纹理光照计算

文章目录 凹凸映射法线纹理设置高度纹理&#xff08;Height Map&#xff09;法线纹理&#xff08;Normal Map&#xff09;模型空间的法线纹理切线空间的法线纹理优劣对比 切线空间下的法线纹理光照计算最终效果完整代码TANGENT语义内置宏 TANGENT_SPACE_ROTATIONObjSpaceLightD…

前缀和--一维和二维模板

前缀和 【模板】前缀和 描述 给定一个长度为n的数组a1,a2,…ana1,a2,…a**n. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询问, 请输出alal1…ara**la**l1…a**r 输入描述&#xff1a; 第一行包含两个整数n和q. 第二行包含n个整数, 表示a1,a2,…ana1,a2,…a**n.…

JavaWeb——Maven(4/8):Maven坐标,idea集成-导入maven项目(两种方式)

目录 Maven坐标 导入Maven项目 第一种方式 第二种方式 Maven坐标 Maven 坐标 是 Maven 当中资源的唯一标识。通过这个坐标&#xff0c;我们就能够唯一定位资源的位置。 Maven 坐标主要用在两个地方。第一个地方&#xff1a;我们可以使用坐标来定义项目。第二个地方&#…

CLANet:基于明场图像的跨批次细胞系识别综合框架|文献速递-基于深度学习的医学影像分类,分割与多模态应用

Title 题目 CLANet: A comprehensive framework for cross-batch cell line identificationusing brightfield images CLANet&#xff1a;基于明场图像的跨批次细胞系识别综合框架 01 文献速递介绍 细胞系鉴定&#xff08;Cell Line Authentication&#xff0c;CLA&#x…

英飞达医学影像存档与通信系统 WebUserLogin.asmx 信息泄露漏洞复现

0x01 产品简介 英飞达医学影像存档与通信系统 Picture Archiving and Communication System,它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟,DICOM,网络…

二叉树与堆讲解

目录 1.树的概念及结构 1.树的概念 2.树的相关概念 3.树的表示 2.二叉树 1.概念 2.特殊的二叉树 1.满二叉树 2.完全二叉树 3.二叉树的性质 4.二叉树的存储结构 1.顺序结构 2.链式存储 3.堆 1.堆的概念及结构 2.堆的实现 1.堆的创建 2.堆的初始化&#xff08;H…

力扣力扣力:206. 反转链表

leetcode链接&#xff1a;206. 反转链表 题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5]输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1…

手写Spring IOC-简易版

目录 项目结构entitydaoIUserDaoUserDaoImpl serviceIUserServiceUserServiceImpl ApplicationContext 配置文件初始化 IOC 容器RunApplication 注解初始化 IOC 容器BeanAutowired Reference 项目结构 entity User Data NoArgsConstructor AllArgsConstructor Accessors(chai…

面试八股(自用)

什么是java序列化&#xff0c;什么时候需要序列化? 序列化是指将java对象转化成字节流的过程&#xff0c;反序列化是指将字节流转化成java对象的过程。 当java对象需要在网络上传输 或者 持久化到存储文件中&#xff0c;就需要对java对象进行序列化处理。 JVM的主要组成部分…

Leetcode—1242. 多线程网页爬虫【中等】Plus(多线程)

2024每日刷题&#xff08;187&#xff09; Leetcode—1242. 多线程网页爬虫 实现代码 /*** // This is the HtmlParsers API interface.* // You should not implement it, or speculate about its implementation* class HtmlParser {* public:* vector<string>…

【Java 并发编程】阻塞队列与仿真餐厅

前言 阻塞队列 (BlockingQueue) 顾名思义是一种支持阻塞操作的队列&#xff0c;因为内部机制中添加了 wait 和 notify 方法&#xff0c;所以阻塞队列具备了线程之前相互协调的功能。阻塞队列主要运用于两个场景&#xff0c;一是生产者与消费者模型&#xff0c;二是线程池。本章…

【C语言】循环嵌套:乘法表

循环嵌套&#xff0c;外层循环执行一次&#xff0c;内层循环执行i次。分别控制 在循环的过程中加一层循环。 多层循环属于循环嵌套、嵌套循环 #include <stdio.h> #include <math.h> /* 功能&#xff1a;循环嵌套 乘法表 时间&#xff1a;2024年10月 地点&#xf…

可编辑73页PPT | 企业智慧能源管控平台建设方案

荐言分享&#xff1a;随着全球能源形势的日益紧张和智能化技术的快速发展&#xff0c;企业对于能源的高效利用和精细化管理需求愈发迫切。智慧能源管控平台作为一种集成了物联网、大数据、云计算、人工智能等先进技术的综合管理系统&#xff0c;旨在帮助企业实现能源数据的实时…

【线性回归分析】:基于实验数据的模型构建与可视化

目录 线性回归分析&#xff1a;基于实验数据的模型构建与可视化 1. 数据准备 2. 构建线性回归模型 3. 可视化 数据分析的核心 构建预测模型 应用场景 预测模型中的挑战 结论 线性回归分析&#xff1a;基于实验数据的模型构建与可视化 在数据分析领域&#xff0c;线性…

永恒之蓝漏洞

MS17-010是微软于2017年3月发布的一个安全补丁&#xff0c;旨在修复Windows操作系统中的一个严重漏洞&#xff0c;该漏洞被称为“永恒之蓝”&#xff08;EternalBlue&#xff09;。这个漏洞影响了Windows的Server Message Block&#xff08;SMB&#xff09;协议&#xff0c;允许…