Verilog HDL内部定义了12个基本门级元件可以直接用,用这些门级原件直接对逻辑图进行描述,称为门级建模。

每个门输入可能是逻辑0,逻辑1,不确定态x和高阻态z四个值之一。

1.多输入门

主要有与门(and),与非门(nand),或门(or),或非门(nor),异或门(xor),同或门(xnor)



符号都知道,为了省事我选择直接拍照。





相比于之前,就加了一个高阻态和不确定态,除了正常用法,其他输出的值都是x,多输入门不可能输出z。

在verilog中,一般引用格式为:

Gate_name <instance> (OutputA, Input1, Input2, ..., InputN);

输出在前,输入在后,instance是我们自己命名的实例引用名字,可以省略。

举例:

and U1(out, in1, in2);
xnor (out, in1, in2, in3, in4); //省略instance

2.多输出门

主要有缓冲器(buf),反相器(非门,not)。

还是输出在前,输入在后。图和真值表如下:

举例:

buf B1(out1, out2, ..., in);
not (out1, out2, ..., in) //省略instance

3.三态门

输出为低电平0,高电平1,高阻态z,所以叫三态门。verilog中有四个元件模型,分别是bufif1,bufif0,notif1,notif0。图、功能、真值表分别如下:





4.门级建模举例

一个2线-4线译码器,功能和真值表如下:



(1)verilog HDL门级代码Decoder2x4_gates.v

module Decoder2x4_gates(
input [1:0]A,
input En,
output [3:0]Y); wire A1not, A0not; //声明电路内部节点
not (A0not, A[0]);
not (A1not, A[1]);
nand U0(Y[0], En, A0not, A1not),
U1(Y[1], En, A[0], A1not),
U2(Y[2], En, A0not, A[1]),
U3(Y[3], En, A[0], A[1]);
endmodule

(2)激励文件Test_Decoder2x4.v

`include "Decoder2x4_gates.v"

`timescale 1us/1us
module Test_Decoder2x4;
reg En;
reg [1:0] A;
wire [3:0] Y;
Decoder2x4_gates U0(A, En, Y); initial begin
En = 1'b0; A = 2'b10;
#4 En = 1'b1;
end always begin
#2 A = A + 1'b1;
end initial begin
//变化一次monitor执行一次
$monitor($time, ":A[2]A[1]A[0]=%b%b%b\ten=%b\tY[2][1][0]=%b%b%b\t\ttest=%d", A[2], A[1], A[0], En, Y[2], Y[1], Y[0], 4'sd9);
$dumpfile("Decoder2x4.vcd");
$dumpvars;
#15 $finish;
end endmodule

(3)我用$dumpfile生成了Decode2x4.vcd文件,直接使用vscode的WaveTrace插件打开即可,嘎嘎好用啊。

Verilog HDL门级建模的更多相关文章

  1. Verilog门级建模

    门级建模就是将逻辑电路图用HDL规定的文本语言表示出来,即调用Verilog语言中内置的基本门级元件描述逻辑图中的元件以及元件之间的连接关系. Verilog语言内置了12个基本门级元件模型,如下表所 ...

  2. 【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)

    Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis) ...

  3. 【黑金教程笔记之003】【建模篇】akuei2的Verilog hdl心路

    Verilog hdl不是“编程”是“建模” Verilog hdl语言是一种富有“形状”的语言. 如果着手以“建模”去理解Verilog hdl语言,以“形状”去完成Verilog hdl语言的设计 ...

  4. Verilog HDL的程序结构及其描述

    这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog  HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...

  5. 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...

  6. Verilog HDL设计规范及经验谈(转载)

    1. 规范很重要      工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现 ...

  7. Verilog HDL实用教程笔记

    Verilog HDL实用教程笔记 DRC - Design Rule Check 几何规则检查ERC - Electrical Rule Check 电学规则检查自动参数提取LVS - Logic ...

  8. No.1 Verilog HDL简介

       硬件描述语言HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言.设计者利用HDL可以从抽象到具体逐层描述自己的设计思想,用一系列的分 ...

  9. Verilog HDL模型的不同抽象级别

    所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...

  10. Gate level Simulation(门级仿真)

    1 什么是后仿真? 后仿真也成为时序仿真,门级仿真,在芯片布局布线后将时序文件SDF反标到网标文件上,针对带有时序信息的网标仿真称为后仿真. 2 后仿真是用来干嘛的? 检查电路中的timing vio ...

随机推荐

  1. C# 中的 数组[]、ArrayList、List

    C# 中的 数组[].ArrayList.List 数组 在 C# 中,数组实际上是对象,而不只是如在 C 和 C++ 中的连续内存的可寻址区域. 属性: 数组可以是一维.多维或交错的. 创建数组实例 ...

  2. 【做题笔记】树形 dp

    luoguP1122 最大子树和 Solve 设计状态 \(dp[i]\) 表示子树 \(i\) 的最大点权和,则有: 当 \(dp[son[i]] > 0\) 时,选以 \(son[i]\) ...

  3. asp.net core之异常处理

    在开发过程中,处理错误是一个重要的方面.ASP.NET Core提供了多种方式来处理错误,以确保应用程序的稳定性和可靠性. TryCatch TryCatch是最常见也是最基础的一种异常处理方式,只需 ...

  4. 1.0 Python 标准输入与输出

    python 是一种高级.面向对象.通用的编程语言,由Guido van Rossum发明,于1991年首次发布.python 的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发.py ...

  5. 表格JS实现在线Excel的附件上传与下载

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在本地使用Excel时,经常会有需要在Excel中添加一 ...

  6. C#系统锁屏事件例子 - 开源研究系列文章

    今天有个网友问了个关于操作系统锁屏的问题. 我们知道,操作系统是基于消息和事件处理的,所以我们只要找到该操作系统锁屏和解屏的那个事件,然后在事件里进行处理即可.下面是例子介绍. 1. 项目目录: 下面 ...

  7. 2023-08-24:请用go语言编写。给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长。 请输出

    2023-08-24:请用go语言编写.给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长. 请输出 ...

  8. .NET周刊【9月第1期 2023-09-03】

    国内文章 如何正确实现一个自定义 Exception https://www.cnblogs.com/kklldog/p/how-to-design-exception.html 最近在公司的项目中, ...

  9. 【Qt6】列表模型——抽象基类

    列表模型(Item Model),老周没有翻译为"项目模型",因为 Project 和 Item 都可以翻译为"项目",容易出现歧义.干脆叫列表模型.这个模型也 ...

  10. Solution Set -「ARC 113」

    「ARC 113A」A*B*C Link. 就是算 \(\sum_{i=1}^{k}\sum_{j=1}^{\lfloor\frac{k}{i}\rfloor}\lfloor\frac{k}{j\ti ...