Verilog 实例demo

2025/05/11 digital Verilog,code 共 1348 字,约 4 分钟
ICCI

用一个简单的例子来介绍verilog的用法

目录


verilog概述

Verilog能够在多种抽象级别对数字逻辑系统进行描述,Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。当前广泛使用的硬件描述语言包括VHDL以及Verilog HDL(VHSIC Hardware Description Language);同时verilog还衍生出了一些变种语言如System Verilog、Verilog-AMS等等,丰富了Verilog语言的应用场景。

不同语言在芯片设计上的主流场景

verilog语言和VHDL语言功能基本相同,在目前的项目上可以支持混用,但是VHDL的语法上更加严格一些,verilog语言更倾向于C语言,如果是入门学习,作者个人认为学习verilog语言就足够了,学完了Verilog语言基本就能看懂VHDL程序的意思。

实例

话不多说,先看看verilog程序整什么样: Verilog程序一般分为程序和测试程序(一般习惯叫Testbench),测试程序会依据程序的功能尽可能的覆盖多的场景。

verilog程序实例

// and2x模块:实现两个输入信号的与逻辑
module and2x(
    input a,  // 输入信号a
    input b,  // 输入信号b
    output r  // 输出信号r,等于a和b的与逻辑结果
);
    // 由于a和b已经定义为input,这里不需要再次定义wire
    // wire a, b, r; 这行代码是多余的,应该删除

    // assign语句将a和b的与逻辑结果赋值给输出r
    assign r = a & b;
endmodule

verilog testbench程序实例

再看看verilog程序的测试程序长什么样子

`timescale 1ns / 1ps

module tb_and2x;

  // 定义信号
  reg a;
  reg b;
  wire r;

  // 实例化 and2x 模块
  and2x uut (
    .a(a),
    .b(b),
    .r(r)
  );

  // 测试过程
  initial begin
    // 初始化输入
    a = 0;
    b = 0;
    #10; // 等待 10ns

    // 测试第一个条件
    a = 1;
    b = 0;
    #10; // 等待 10ns

    // 测试第二个条件
    a = 0;
    b = 1;
    #10; // 等待 10ns

    // 测试第三个条件
    a = 1;
    b = 1;
    #10; // 等待 10ns

    // 测试结束
    $finish;
  end

  // 监控输出
//end    
  initial begin
    $dumpfile("out.vcd");
    // This will dump all signal, which may not be useful
    //$dumpvars;
    // dumping only this module
    //$dumpvars(1, testbench);
    // dumping only these variable
    // the first number (level) is actually useless
    $dumpvars(0, testbench);
end  

endmodule

verilog有什么用

数字芯片设计流程

参考资料

verilog wiki
verilog语言同类
verilog和VHDL的区别
数字IC基本设计流程
verilog 验证
Verilog Tutorial

文档信息

Search

    Table of Contents