pullup和pulldown在verilog中的使用方法

news2025/1/24 17:57:41

0 前言

这段时间涉及到了IO-PAD,在IO-PAD的RTL的时候注意到了pullup和pulldown,对这个知识比较好奇,就研究了一下,顺便记录下来,IO-PAD的内容等我再研究研究再考虑记录吧 >_<

1 pullup和pulldown的介绍

pullup和pulldown并非是verilog的内置原语,仅在仿真或综合过程中起作用,用来设置信号的默认状态

在实际的硬件电路中,用来代表上拉和下拉,就比如在I2C中,SCL和SDA两个信号是open-drain的,在实际使用过程中往往需要接上拉电阻,如下图

接在VCC的两个电阻就是上拉电阻,这个上拉电阻在verilog中就可以用pullup表示

下面结合实例来看看怎么使用

2 不使用pullup和pulldown的情况

`timescale 1ns/10ps
module tb;
   logic dout;
   logic sel;
   
   assign dout = sel ? 1'bz : 1'b0;
   
   
   initial begin
      sel = 1'b0;

      #10;
      sel = 1'b1;

      #10;
      sel = 1'b0;

      #10;
      $finish;
      
   end // initial begin

   initial begin
      $monitor("\t", $time, ,"sel = %0b,  dout = %0b", sel, dout);
   end
   
endmodule

在这个例子中,当sel = 1'b1时输出highzsel = 0时输出0,在initial·中对sel先后赋值0和1,来看看运行结果

可以看到当sel = 0时,dout = 0,当sel = 1时,dout = z,这个结果符合预期

注意,在这个例子中,并没有使用到pullup,下面给出使用pullup的例子

2 使用pullup和pulldown的情况

`timescale 1ns/10ps
module tb;
   logic dout;
   logic sel;
   
   assign dout = sel ? 1'bz : 1'b0;
   pullup(dout);
      
   initial begin
      sel = 1'b0;

      #10;
      sel = 1'b1;

      #10;
      sel = 1'b0;

      #10;
      $finish;
      
   end // initial begin

   initial begin
      $monitor("\t", $time, ,"sel = %0b,  dout = %0b", sel, dout);
   end
 
endmodule

同样的例子,加上了pullup(dout)语句(第7行),其他的均为改变,首先可以看到pullup有被highlight,说明这是一个关键词

下面开始编译

报错了,给的原因是logic声明的变量不能连接到带有驱动强度的gate输出端,那把logic声明改成wire,修改后的代码如下

`timescale 1ns/10ps
module tb;
   wire dout;
   logic sel;
   
   assign dout = sel ? 1'bz : 1'b0;
   pullup(dout);
      
   initial begin
      sel = 1'b0;

      #10;
      sel = 1'b1;

      #10;
      sel = 1'b0;

      #10;
      $finish;
      
   end // initial begin

   initial begin
      $monitor("\t", $time, ,"sel = %0b,  dout = %0b", sel, dout);
   end
   
   
endmodule

再次编译

编译通过,下面执行仿真,来看看仿真结果

可以看到在这个例子中,当sel = 1时,dout = 1,不再是highz

3 push-pull和open-drain的介绍

就拿mos管来简单介绍一下吧

这是一个push-pull的电路,由两个mos管组成,上面的是PMOS,下面的是NMOS

IN = 1时,NMOS导通,PMOS截止,最终OUT = 0,电流方向为OUT -> NMOS,这个过程叫

IN = 0时,NMOS截止,PMOS导通,最终OUT = 1,电路方向为PMOS -> OUT,这个过程叫

这就是push-pull(推挽)

这是open-drain,与push-pull不同的是上面的PMOS换成了电阻,这个电阻就是上拉电阻

同样的,当IN = 1时,NMOS导通,OUT = 0

那当 IN = 0时呢?NMOS截止,如果此时不接上拉电阻,那么OUT端此时的状态是不确定的(单看这个电路的情况下)

当接入一个上拉电阻后,由于MOS管截止后,电阻可以看做是无穷大,此时从VDD -> GND就可以看做是一个电阻R和一个电阻无穷大的NMOS串联,那么在OUT点的电压自然约等于VDD


OK,先这样,至于在用pullup的时候为什么不能用logic声明,下次介绍吧

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

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

相关文章

springboot3错误处理机制源码分析

ErrorMvcAutoConfiguration 在springboot启动时会自动装配默认的错误处理机制 ErrorMvcAutoConfiguration springboot正在运行&#xff0c;此时发生了404的错误。&#xff08;业务错误场景&#xff09;分析底层处理流程。 1.如果在对应的controller层中设置了对应的错误处理器…

【裸机开发】链接脚本(.lds文件)的基本语法

目录 一、什么是链接脚本&#xff1f; 二、链接脚本的基本语法格式 1、常用命令 2、内置变量 三、链接脚本的简单案例 一、什么是链接脚本&#xff1f; 一段程序的编译需要经历四个阶段&#xff08;预处理—编译—汇编—链接&#xff09;&#xff0c;而链接脚本管理的就是…

专业实习报告范本4篇

专业实习报告范本1 一、实习起止日期&#xff1a; 二、实习单位及部门&#xff08;岗位&#xff09;&#xff1a; 三、主要实习内容&#xff1a; 对基础知识和专业理论知识的掌握及运用情况&#xff1a; 通过两年半的学习和两个月的紧张培训&#xff0c;让我学会了电路图的分析…

彻底关闭 Win10 系统自动更新【四大步骤】

Windows 10 的自动更新非常顽固&#xff0c;多用户在网上试了各种关闭win10自动更新的方法&#xff0c;刚开始看着好像是关闭更新了&#xff0c;可没过多久系统就又开始自动更新了。今天笔者就来教大家如何彻底关闭win10自动更新&#xff0c;该方法亲测有效。 一、禁用 Window…

【AIGC】15、Grounding DINO | 将 DINO 扩展到开集目标检测

文章目录 一、背景二、方法2.1 特征抽取和加强2.2 Language-Guided Query Selection2.3 Cross-Modality Decoder2.4 Sub-sentence level text feature2.5 Loss Function 3、效果3.1 zero-shot transfer of grounding DINO3.2 Referring Object detection3.3 Ablations3.4 从 DI…

java springboot工程整合JUnit测试

好啦从此文开始 我们开始学习整合第三方技术的知识 后续 我们会整合一下第三方技术 后续也还会用到很多 但大家要学的是思想 而不是某某技术怎么去整合 当你会任何一种技术 你都能自如的整合到项目中 你才算掌握了整合技术 好 那么开始先整合 JUnit 我们打开idea 打开我们的 …

VC6创建工程的各种类型

各个工程类型的含义是什么&#xff1f; ATL COM AppWizard 用ATL技术制作COM程序&#xff0c;例如:WORD里面用的公式编辑器 ATL: Active Template Library活动模板库。ATL是COM的开发工具。 COM: 1993年Microsoft首次公布了COM技术. Wizard:向导 什么是ATL&#xff1f; &…

十分钟,零基础使用uniCloud完成后端管理系统搭建二

上一节我们已经成功搭建基础版的后端管理系统&#xff0c;这一节我们将利用uniCloud给我们提供的schema2code自动生成代码&#xff0c;快速完成&#xff1a;列表、增加和修改页面创建。 上一节&#xff1a; 十分钟&#xff0c;零基础使用uniCloud完成后端管理系统搭建一_szii…

图论算法 --Dijkstra

当谈到计算机科学时&#xff0c;算法是一个重要的话题&#xff0c;因为它们能帮助解决很多问题。而有些算法&#xff0c;其高效性和惊人表现&#xff0c;令人感到惊艳。一起来分享一下你认为令人惊艳的高效算法吧&#xff01; Dijkstra算法 一、你在工作和学习中用到过哪些惊艳…

半导体器件基础(期末模电速成)

目录 1、半导体分类 2、PN结 3、二极管 4、稳压二极管 5、三极管 6、场效应管 1、半导体分类 2、PN结 3、二极管 伏安特性&#xff1a; 我们第七版模电书上给的正向导通压降分别约为0.7和0.2V&#xff0c;且硅的单向导电性更好 如何确定二极管状态&#xff1f; 阳极电压…

C++ 输出格式控制

C 输出格式控制 需包含头文件&#xff1a; 浮点数精度、域宽、填充 操作符功能right-alignedright-alignedsetprecision(int n)设置以n表示的数值精度setw(int n)设置以n表示的域宽setfill(char c)设置以c表示的填充字符 输出格式 操作符功能oct以八进制格式输出数据dec以…

事件循环机制

基本概念 聊一下事件循环机制&#xff0c;在开始这篇文章之前&#xff0c;先明确一个概念&#xff0c;js本身是没有事件循环这个定义的。是js被嵌入相应的执行环境&#xff08;浏览器 / Nodejs&#xff09;&#xff0c;配合当前事件循环的组成部分&#xff0c;具体来说分下面两…

【基于容器的部署、扩展和管理】3.4 灰度发布和A/B测试

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【3.1 容器编排系统和Kubernetes集群的构建】 第三章&#xff1a;【3.2 基于容器的应用程序部署和升级】 第三章&#xff1a;【3.3 自动…

【C++】引用和右值引用

目录 1. 引用 1.1 引用的概念 1.2 引用的特性 1.3 引用的使用场景 1.3.1 作为参数 1.3.2 作为返回值 1.4 常量引用 1.5 引用和指针的区别 2. 左值和右值 3. 右值引用 3.1 右值引用的概念 3.2 左值持久&#xff1b;右值短暂 3.3 变量是左值 3.4 标准库move函数 1.…

docker使用与服务器上的可视化(ROS rviz等)

1.安装docker 安装docker&#xff1a;官网教程&#xff0c;按照官网命令一步步来即可。 添加当前用户到docker用户组&#xff1a; 【docker】添加用户到docker组&#xff0c;这样后面运行docker的时候前面不需要加sudo命令&#xff0c;否则运行docker的时候一直需要在前面加su…

开发人员必备的万能工具箱:He3

目录 1.简介2.安装3.详细功能清单4.常用快捷键5.使用示例5.1 测试正则表达式5.2 文本比较 He3官网&#xff1a; https://he3.app/zh/ 1.简介 今天&#xff0c;给大家推荐一款开发人员必备的万能工具箱&#xff1a;He3&#xff0c;这是一款免费的开发者工具箱&#xff0c;截至…

十分钟,零基础使用uniCloud完成后端管理系统搭建一

本文主要是通过uniCloud搭建后端管理系统&#xff0c;适合小白开发者、个人开发者&#xff0c;零后端基础&#xff0c;快速、低成本完成后端管理系统搭建。 还未创建uniCloud服务空间的开发者可以查看我的文章&#xff1a;Dcloud开发者注册&#xff0c;uniCloud服务空间创建。…

电脑显示屏不亮但是主机已开机?5种原因以及解决方案

电脑与我们的日常生活和工作密切相关&#xff0c;缺了它我们工作就很难正常展开。电脑使用久了&#xff0c;难免出现一些小问题&#xff0c;比如&#xff1a;电脑显示屏不亮但是主机已开机&#xff0c;这是什么原因造成的&#xff1f;我们应该怎么处理&#xff1f; 可能很多人…

随机数发生器设计(四)

随机数发生器设计&#xff08;四&#xff09;- DRNG 概述1 内部状态2 初始化函数3 SM3派生函数4 其他部分 概述 本示例DRNG设计参考了GM/T 0105 &#xff0c;基于SM3算法实现&#xff0c;内部功能接口包括初始化函数、重播种函数、输出函数和已知答案自测试函数&#xff0c;同…

正点原子STM32(基于HAL库)5

目录 SRAM 实验存储器简介SRAM 方案简介硬件设计程序设计程序流程图程序解析 下载验证 内存管理实验内存管理简介硬件设计程序设计程序流程图程序解析 下载验证 SD 卡实验SD 卡简介SD 物理结构命令和响应卡模式数据模式 SDIO 接口简介SDIO 主要功能及框图SDIO 的时钟SDIO 的命令…