Verilog基本语法

2023-11-03

一.模块结构

在这里插入图片描述

二、信号类型

在这里插入图片描述
首先必须知道该信号的最大值(计算该信号的位宽)

wire

wire用于结构化器件之间物理连线的建模

在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑;并且只能在assign左侧赋值,不能在always @ 中赋值。
在这里插入图片描述

reg寄存器

reg可以综合成register,latch,甚至是wire(当其只是中间变量的时候),能存储数据,有驱动能力,可以用于组合逻辑或者时序逻辑;在always @模块表达式左侧被赋值。
在这里插入图片描述
只要在always中设计的信号都用reg,其他信号都定义为wire型。

Example: 信号x是用always设计的,所以要定义为reg型,但是实际的电路中x不是寄存器类型,但仍然定义为reg型。

扩展:reg、wire怎么确定?明德扬总结了以下的3句话,大家记好啦:

1、功能文件:由本模块产生,并且用always产生的信号,就定义成reg
2、测试文件:由初始化initial产生(一般是对测模块的输入)的信号,就定义成reg
3、除了以上两种情况,就定义成wire型

(一个模块中可以有许多个initial块,它们都是并行运行的。initial语句最常见的是用于测试文件里面的初始化语句,用来产生测试环境和设置信号记录。)

在这里插入图片描述
在这里插入图片描述

* 组合逻辑和时序逻辑**

数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。掌握组合逻辑和时序逻辑的区分手段与实现方法是数字系统设计的基本要求。
8.1.1 组合逻辑设计
1.组合逻辑概念
组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关。无存储电路,也没有反馈电路其典型结构如图8-1所示。从电路行为上看,其特征就是输出信号的变化仅仅与输入信号的电平有关,不涉及对信号跳变沿的处理。

根据组合逻辑的电路行为,可以得到两种常用的RTL 级描述方式。第一种是always模块的触发事件为电平敏感信号列表;第二种就是用assign 关键字描述的数据流赋值语句。
(1)always 模块的敏感表为电平敏感信号的电路
这种方式的组合电路应用非常广泛,几乎可以完成对所有组合逻辑电路的建模。always模块的敏感列表为所有判断条件信号和输入信号,但一定要注意敏感列表的完整性。在always模块中可以使用if、case 和for 等各种RTL关键字结构。由于赋值语句有阻塞赋值和非阻塞赋值两类,建议读者使用阻塞赋值语句“=”,详细原因将在8.3.1 节进行说明。
always 模块中的信号必须定义为reg 型,不过最终的实现结果中并没有寄存器。这是由于在组合逻辑电路描述中,将信号定义为reg型,只是为了满足语法要求。
(2)assign语句描述的电路
利用条件符“?”可以描述一些相对简单的组合逻辑电路,信号只能被定义为wire型。当组合逻辑比较复杂时,需要很多条assign语句或者多重嵌套“?”,使得代码可读性极差,因此此时推荐第一种组合逻辑建模方式。

时序电路
1.时序逻辑中的always定义的 reg 型信号都被综合成 reg (寄存器),一般建议使用非阻塞赋值操作 “<=”,但是要注意并行执行的语句可能会带来的delay_cycle的问题
2.敏感变量表中只要有时钟沿的变化即可,即每次触发输出变化都是时钟沿引起的

数字表示方式

在这里插入图片描述

不定态(X态)
在这里插入图片描述
常用于判断条件,
如果有影响的话,考虑其是0还是1,不影响的话,不考虑。

=”和“”不同体现在对含有不定制X和高阻态Z数据的处理中:

先说结论:

==为逻辑相等,没有x/z时相同输出1,不同输出0;有x/z时,若其余位相同,输出是x,其余位不同,输出为0;
!=为逻辑不等,没有x/z时相同输出0,不同输出1;有x/z时,若其余位相同,输出是x,其余位不同,输出为1;
===与!===为逻辑全等和逻辑不全等,x/z当作普通元素处理。

高阻态(Z态)

表示不会驱动这个信号,(既不给也不给1)。通常用于三态门中。

“不驱动总线”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Verilog基本语法 的相关文章

  • python列表增加元素的三种方法

    本文主要介绍了关于python列表增加元素的几种操作方法 主要有insert方法 extend方法和append方法 每种方法给大家介绍的非常详细 希望对你有所帮助 1 insert方法 该方法包含两个参数 第一个参数为插入的位置参数 第二
  • 电力行业数字孪生技术应用白皮书(2022)

    白皮书从产学研用多视角出发 结合电力行业的特性 分析阐述了数字孪生概念 核心技术 应用价值以及数字孪生电网标准体系 从数字感知 混合建模 高效仿真 可视化和虚实迭代等不同方面介绍了数字孪生的支撑技术以及应用现状 梳理了当前电力行业数字孪生技
  • n行Python代码系列:两行代码去除抖音快手短视频尾部Logo

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知识 带来了阅读量 撩动了老猿的心 决定跟风一把 推
  • 我的图床解决方案,超详细!

    图床就是将你的本地图片上传到相关服务商或者个人服务器 然后获取图片对应的网络访问地址 使用者可以方便快速的将图片插入到文章中 后续图片二次使用 迁移 分享都会非常简单 我之前常用的图床方案是使用Gitee的仓库来实现 我的博客 1 周刊 2
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • 哈工大2020软件构造Lab3实验报告

    本项目于4 21日实验课验收 更新完成 如果有所参考 请点点关注 点点赞GitHub Follow一下谢谢 2020春计算机学院 软件构造 课程Lab3实验报告 Software Construction 2020 Spring Lab 3
  • 手机知识:手机的快充技术是什么,看完本文你就懂了

    目录 1 什么是手机快充 2 目前主流的手机快充协议 2 1 PD协议 2 2 PE协议 联发科 2 3 QC协议 高通 2 4 VOOC闪充 OPPO厂商 2 5 SCP FCP闪充 华为厂商 2 6 FlashCharge闪充 Vivo
  • 送书|入门Python之后还是搞不定面试、做不来项目,推荐读读这本书

    又到了每周三送书的时刻啦 本周送书 Python工匠 Python 能干的事情实在太多了 掰着指头数有点不够用 Web 开发 数据分析 网络爬虫 自动化运维 后台开发 机器学习 如果你知道主攻哪个方向 只需重点去学习 不过 不论哪个方向 P
  • Python 程序设计习题(4) —— 列表与元组

    目录 1 Python 习题部分 2 Python 习题讲解 列表 元组 其他 1 Python 习题部分 要想学习一门语言 便少不了练习 故附上部分 Python 习题 供大家学习参考 如有错误之处 还望指正 1 二年级一班举行了数学考试
  • jvm之栈、堆

    1 Java Virtual Machine 人群当中 一位叫java的小伙子正向周围一众人群细数着自己取得的荣耀与辉煌 就在此时 c老头和c 老头缓步走来 看着被众人围住的java c老头感叹地对着身旁的c 说道 原以为你就可以挑起我的梁
  • 64 位 ALU 输出在 TestBench 波上显示高阻抗

    我必须制作一个 64 位 ALU 它接受 A 和 B 64 位输入 进位输入输入并输出 64 位结果以及 1 位进位输出 还有一个 5 位功能选择 FS 其中 FS 0 控制 B 是否反转 使用 2to1 多路复用器 F 1 对 A 执行相
  • 用python接收高速率的UDP数据包

    我正在使用 python 来从 FPGA 接收 UDP 数据包流 并尝试丢失尽可能少的数据包 数据包速率从大约 5kHz 到一些 MHz 我们希望在特定时间窗口 代码中的 acq time 内获取数据 我们现在有这样的代码 BUFSIZE
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • 在 C 中操作 80 位数据类型

    我正在用 C 实现一些加密算法 其中涉及 80 位密钥 特定操作涉及将密钥旋转移位 x 个位数 我已经尝试过 long double 类型 如果我没记错的话 它是 80 位 但这不适用于位移运算符 我能想到的唯一替代方案是使用 10 个元素
  • 使用 VHDL 实例化 FPGA 中的 RAM

    我试图按照中的指导实现双端口 RAM这篇优秀的博文 http danstrother com 2010 09 11 inferring rams in fpgas 然而 ModelSim 在编译时给出以下警告 Warning fifo ra
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • C# 介绍、应用领域、入门、语法、输出和注释详解

    什么是 C C 发音为 C Sharp 是一种由 Microsoft 创建的面向对象的编程语言 运行在 NET Framework 上 源于 C 家族 与流行的语言如 C 和 Java 相近 首个版本发布于 2002 年 而最新版本 C 1
  • Python 中多态性的示例和类的继承多态性

    单词 多态 意味着 多种形式 在编程中 它指的是具有相同名称的方法 函数 操作符 可以在许多不同的对象或类上执行 函数多态性 一个示例是 Python 中的 len 函数 它可以用于不同的对象 字符串 对于字符串 len 返回字符的数量 示

随机推荐

  • 带宽的含义解释

    参考博客 https blog csdn net Ideality hunter article details 77923335 depth 1 utm source distribute pc relevant none task ut
  • 在anaconda中安装pillow(Python Image Library,PIL)以供某些图像操作

    pillow库安装的来由 安装anaconda时 会自动安装python 当需要使用PIL时 可能会发生报错 这时要安装对应的库 也可理解为模块 包 这时可以通过安装pillow调用PIL PIL只是存在于python2中 它没有随pyth
  • 测试开发实战项目

    预研背景 目前系统研发多为前后端分离 当后端接口研发完成后 可以不依赖前端界面通过接口测试提前发现问题并解决 同时由于软件迭代周期不断缩短 开发新功能后又担心影响原有功能 可以通过接口自动化进行原有功能快速回归测试 将更多精力专注于迭代功能
  • C#读取Modbus数据

    前面连续写了关于SOCKET编程的东西 似乎有点高大上 为了学习而学习 因此这里我们来整点实际应用的东西 C 如何读取Modbus数据 Modbus很多人可能一点都不知道 也正常 隔行如隔山嘛 Modbus在自动化行业就不一样 属于路人皆知
  • leetcode链表相关的题

    总结一下最近做过的链表相关的题目 后续不定时更新内容 1 反转链表 本题使用指针反转 其他的方法 可以先遍历head 把数据保存到数组中 数组反转 然后定义一个新指针类遍历复制即可 1 gt 2 gt 3 gt 4 gt 5反转输出为 5
  • 读者写者问题的三种打开方式——写者优先

    读者写者问题的三种打开方式 读者优先 今天遇到了操作系统的世 界 名 题 读者写者问题 经过我一两天的不懈努力 我终于没能想出来 再经过一两天的不懈努力 我终于勉勉强强地看懂了别人写的是什么 在这里 我会把我自己写的版本放上来 然后尽可能地
  • 【华为OD机试真题2023B卷 JS】生日礼物

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 生日礼物 知识点排列组合 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 小牛的孩子生日快要到了 他打算给孩子买蛋糕和小礼物 蛋糕和小礼物各买一个 他的预算不超过x元
  • 2023年第六届先进控制,自动化与机器人国际会议(ICACAR 2023)

    2023年第六届先进控制 自动化与机器人国际会议 ICACAR 2023 重要信息 会议网址 www icacar org 会议时间 2023年4月7 9日 召开地点 中国广州 截稿时间 2023年3月10日 录用通知 投稿后2周内 收录检
  • 结构体(声明、初始化、内存对齐、如何传参)

    结构基础知识 聚合数据类型能够同时存储超过一个的单独数据 C提供了两种类型的聚合数据类型 分别是数组和结构体 数组是相同元素的集合 它的每个元素是通过下标引用或指针间接访问的 结构体也是一些值的的集合 这些值称为它 的成员 但一个结构的成员
  • 2023年最新前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新

    专项练习 持续更新 HTML篇 CSS篇 JS篇 Vue篇 TypeScript篇 React篇 微信小程序篇 前端面试题汇总大全二 含答案超详细 Vue TypeScript React 微信小程序 Webpack 汇总篇 持续更新 前端
  • mybatisPlus 将已有集合进行分页(非plus自带方法)

    最想有一个比较烦的需求 想破脑袋还没有想出来 根据同一搜索字段 不同条件搜索的集合进行合并并分页 看了相关api 想了一个折中的方法 正常情况框架使用mybatisplus分页会使用IPage 但是IPage获取的集合无法合并 已知两个集合
  • Vue脚手架配置代理

    Vue脚手架中配置代理是在vue config js增加配置 1 单代理配置 devServer proxy http localhost 5001 总结 优点 配置简单 缺点 不能配置多个代理 不能灵活控制请求是否走代理 工作方式 如上配
  • 获取时间的方法(四种)

    Java 获取系统时间的四种方法 1 Date day new Date SimpleDateFormat df new SimpleDateFormat yyyy MM dd HH mm ss System out println df
  • JWT技术

    JWT 一 JWT 实现无状态 Web 服务 1 什么是有状态 有状态服务 即服务端需要记录每次会话的客户端信息 从而识别客户端身份 根据用户身份进行请求的处理 典型的设计如tomcat中的session 例如登录 用户登录后 我们把登录者
  • 算法训练 P1103

    算法训练 P1103 时间限制 1 0s 内存限制 256 0MB 编程实现两个复数的运算 设有两个复数 和 则他们的运算公式为 要求 1 定义一个结构体类型来描述复数 2 复数之间的加法 减法 乘法和除法分别用不用的函数来实现 3 必须使
  • QT多线程 信号槽收不到信息 Q_OBJECT关键

    信号和槽是Qt应用开发的基础 它可是将两个毫无关系的对象连接在一起 槽和普通的C 函数是一样的 只是当它和信号连接在一起后 当发送信号的时候 槽会自动被调用 只有加入了Q OBJECT 你才能使用QT中的signal和slot机制 如在新建
  • 一款windows的终端神奇,类似mac的iTem2

    终于找到了一款windows的终端神奇 类似mac的iTem2 来 上神器 cmder cmder是一款windows的命令行工具 就是我们的linux的终端 用起来和linux的命令一样 所以我们今天要做的是安装并配置cmder 在这里插
  • Android约束布局ConstrainLayout

    基本方向约束 layout constraintLeft toLeftOf layout constraintRight toRightOf 这两个基本上用不上因为 layout constraintStart toStartOf就相当于l
  • Linux新手入门

    1 什么是Linux系统 Linux 全称GNU Linux 是一种免费使用和自由传播的类UNIX操作系统 其内核由林纳斯 本纳第克特 托瓦兹于1991年10月5日首次发布 它主要受到Minix和Unix思想的启发 是一个基于POSIX的多
  • Verilog基本语法

    一 模块结构 二 信号类型 首先必须知道该信号的最大值 计算该信号的位宽 wire wire用于结构化器件之间物理连线的建模 在Verilog中 wire永远是wire 就是相当于一条连线 用来连接电路 不能存储数据 无驱动能力 是组合逻辑