「HDLBits题解」Verification: Writing Testbenches

news/2024/9/6 6:10:30 标签: fpga开发, Verilog

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益


题目链接:Tb/clock - HDLBits

`timescale 1ps/1ps
module top_module ( );
    parameter time_period = 10 ; 
    reg clk ; 
    initial clk = 0 ; 
    always  begin
        # (time_period / 2) clk = ~clk ; 
    end

    dut u1(
        .clk(clk)
    );
endmodule

题目链接:Tb/tb1 - HDLBits

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

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

endmodule

题目链接:Tb/and - HDLBits

`timescale 1ps/1ps

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 u1(
        .in(in),
        .out(out) 
    );

endmodule

题目链接:Tb/tb2 - HDLBits

`timescale 1ps/1ps
module top_module();
    reg clk, in ; 
    reg [2:0] s ; 
    wire out ; 
    initial begin
        clk = 0 ; 
        in = 0 ; 
        s = 2 ; 
        # 10 
        s = 6 ; 
        # 10 
        in = 1 ; 
        s = 2 ; 
        # 10 
        in = 0 ; 
        s = 7 ; 
        # 10 ; 
        in = 1 ; 
        s = 0 ; 
        # 30 ; 
        in = 0 ; 
    end

    always  begin
        # 5 ; 
        clk = ~clk ;
    end

    q7 u1(
        .clk(clk), 
        .s(s),
        .in(in), 
        .out(out) 
    );

endmodule

题目链接:Tb/tff - HDLBits

module top_module ();
    reg clk ;
    reg reset ; 
    reg t ;
    wire q ;

    tff u1(
        .clk(clk),
        .reset(reset),
        .t(t),
        .q(q)
    );

    initial begin
        clk = 1'b0 ; 
        forever begin
            # 5 ;
            clk = ~clk ;
        end
    end

    initial begin
        reset = 1'b0 ; 
        # 3 ; 
        reset = 1'b1 ; 
        # 10 ; 
        reset = 1'b0 ;  
    end

    always @(posedge clk) begin
        if (reset) t <= 1'b0 ;
        else t <= 1'b1 ; 
    end


endmodule

http://www.niftyadmin.cn/n/5363646.html

相关文章

【软件设计师笔记】深入探究操作系统

【软件设计师笔记】计算机系统基础知识考点(传送门) &#x1f496; 【软件设计师笔记】程序语言设计考点(传送门) &#x1f496; &#x1f413; 操作系统的作用 1.通过资源管理提高计算机系统的效率 2.改善人机界面向用户提供友好的工作环境 &#x1f413; 操作系统的特征 …

Docker应用之Container容器随系统启动(三)

目录 存在问题具体操作1、查看docker容器&#xff0c;关闭容器2、docker服务开机自启动3、设置容器状态4、重启docker服务5、验证容器是否开机自启动总结 存在问题 今天重启虚拟机发现&#xff0c;Docker中的容器没有完全启动&#xff0c;导致部署的Springboot项目还要手动输入…

uniapp父子组件通信

在Uni-app中&#xff0c;可以使用props和$emit方法实现父子组件之间的通信。 父组件向子组件传递数据&#xff08;props&#xff09;&#xff1a; 1. 在父组件中&#xff0c;在子组件的标签上使用属性绑定方式传递数据 <template> <child-component :message"p…

SpringBoot注解--07-- lombok 注解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1 Lombok介绍1.1 Lombok是什么?1.2 如何安装Lombok? 2 Lombok注解2.1 GetterSetter2.2 ToString2.3 EqualsAndHashCode2.4 NoArgsConstructor &#xff0c; Requi…

Docker第一章 : 初识Docker与容器

第一章 : 初识Docker与容器 本章知识点: 本章介绍了容器虚拟化的基本概念、Docker的诞生历史,以及容器在云时代应用分发场景下的巨大优势。与传统的虚拟机方式相比,容器虚拟化方式在很多场景下都存在极为明显的优势。无论是系统管理员、应用开发人员、测试人员,还是运维…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

【Chrono Engine学习总结】1-安装配置与程序运行

本文仅用于个人安装记录。 官方安装教程 https://api.projectchrono.org/8.0.0/tutorial_install_chrono.html Windows下安装 windows下安装就按照教程好了。采用cmake-gui进行配置&#xff0c;建议首次安装只安装核心模块。然后依此configure下irrlicht&#xff0c;sensor…

Rust-谈谈为什么要学Rust

文章目录 前言一、RustRust的特点 二、Rust与其他语言比较三 、Rust 特别擅长的领域 前言 Rust系列-简单认识下Rust&#xff0c;与c/c &#xff0c;java .net 等对比下。Rust能干啥&#xff0c;有没有学习的必要性&#xff1f;看了以下内容再作决定也不迟&#xff5e;&#xf…