verilog基础语法入门

文章目录

  • 前言
  • 一、模块定义
    • 1. 模块声明
    • 2. 端口定义
    • 3. 信号类型声明
    • 4. 逻辑功能定义
  • 二、运算符与表达式
    • 1. 算术运算符
    • 2. 逻辑运算符
    • 3. 位运算符
    • 4. 关系运算符
    • 5. 等式运算符
    • 6. 缩减运算符
    • 7. 移位运算符
    • 8. 条件运算符
    • 9. 位拼接运算符
  • 三、语句
    • 1. 赋值语句
    • 2. 块语句
    • 3. 条件语句
    • 4. 循环语句
    • 5. 结构说明语句
    • 6. 编译预处理语句
  • 总结


前言

Verilog是一种硬件描述语言,用于描述数字电路的行为和功能。
在这里插入图片描述

一、模块定义

Verilog程序的最基本设计单元是“模块”,模块从关键字module开始,到endmodule结束,其中每条语句以";"分隔。
一个完整的模块由以下四个部分组成:

1. 模块声明

格式如下:
module 模块名(端口名1,端口名2,…,端口名n);
模块名只能以下划线和字母****开头!!!

2. 端口定义

●输入端口定义为
input 端口名1,端口名2,…,端口名n;
●输出端口定义为
output 端口名1,端口名2,…,端口名n;
●双向端口(不常用)
inout 端口名1,端口名2,…,端口名n;
定义完要有分号!

3. 信号类型声明

最常用的类型有wire(连线)和reg(寄存器):
●wire类型表示一条连线,只要输入有变化输出马上无条件反映;
●reg类型表示一定要有触发,输出才会反应输入;
声明类型时也可以声明其位宽,如reg [2:0] A,其表示A为3bit位宽的寄存器。
不声明类型时默认为wire类型

4. 逻辑功能定义

通常采用assign持续赋值语句、always过程赋值块和调用元件(元件例化)等三种方式构成逻辑功能。
在这里插入图片描述
在这里插入图片描述
Verilog模块的模板如下所示。
在这里插入图片描述
在这里插入图片描述
模块的总结如下。
在这里插入图片描述

二、运算符与表达式

表达式就是用运算符把操作数组合起来,并按照运算符的语义计算出结果。在Verilog中,运算符用于对信号进行数学和逻辑运算。运算符的分类如下所示。
在这里插入图片描述

1. 算术运算符

在这里插入图片描述

2. 逻辑运算符

在这里插入图片描述

3. 位运算符

在这里插入图片描述

4. 关系运算符

在这里插入图片描述

5. 等式运算符

在这里插入图片描述

6. 缩减运算符

在这里插入图片描述

7. 移位运算符

在这里插入图片描述

8. 条件运算符

在这里插入图片描述

9. 位拼接运算符

在这里插入图片描述

下面是运算符的优先级。
在这里插入图片描述

三、语句

Verilog的语句分类如下。
在这里插入图片描述
在这里插入图片描述

1. 赋值语句

在这里插入图片描述

2. 块语句

在这里插入图片描述

3. 条件语句

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

4. 循环语句

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

5. 结构说明语句

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

6. 编译预处理语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是,begin…end里面的语句是顺序执行的,always、assign、实例原件是并行执行的。


总结

Verilog是一种基于硬件描述语言的编程语言,用以设计和模拟数字电路。它支持门级、寄存器传输级、行为级等多层次的建模方式,并可用于仿真、综合和验证数字电路。

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

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

相关文章

HarmonyOS NEXT学习——@Styles、@Extend、stateStyles

Styles装饰器 定义组件重用样式 仅支持通用属性和通用事件不支持参数可以定义全局和组件内使用,全局使用需要加function // 全局 Styles function functionName() { ... }// 在组件内 Component struct FancyUse {Styles fancy() {.height(100)} }组件内Styles的优…

C# 之工控机数据类型 高低位(大小端)、BitConverter、IsLittleEndian、字节数组转换(高低位)

八种基本数据类型:byte、short、int、long、float、double、boolean、char byte 8位、有符号的以二进制补码表示的整数 min : -128(-2^7) max: 127(2^7-1) default: 0 对应包装类:Byte short 16位、有符号的以二进制补码表示…

keil中GD32 MCU IAP中APP的存储地址如何设置?

前面和大家聊过什么是IAP,那么IAP中APP的存储地址该如何设置呢? 以keil为例,打开工程的option选项卡: 将IROM1中的地址改为你想要保存的位置,比如0x08008000开始的位置: 这样通过keil烧录,程序…

光伏电站设计的关键部分

光伏设计,作为光伏发电项目成功实施的前提与基础,其科学性与合理性直接关乎项目的发电效率、经济性及环境适应性。本文将从选址规划、系统设计、组件选型、电气布局及运维考虑等几个方面,探讨光伏设计的关键部分。 一、选址踏勘 光伏项目踏勘…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

c++人脸识别项目,满足工业界对于人脸识别系统的高标准需求!(一)

目录 引言: 环境构建(本文使用cmake,开发环境ubuntu22.04,IDE为clion) 项目文件构造 CMakeLists.txt编写 简单头文件 最初成员函数实现 add函数实现思路 search函数实现思路 main函数简单实现 思路 添加环…

Spring Boot集成qwen:0.5b实现对话功能

1.什么是qwen:0.5b? 模型介绍: Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型,在大量数据(包括网页文本、书籍、代码等)进行了预训练。 硬件要求:…

Spring Web MVC入门(2)(请求2)

目录 1.传递JSON数据 传递JSON对象 2.获取URL中的参数PathVariable 3.上传文件RequestPart 4.获取Cookie/Session (1)获取Cookie 简洁获取Cookie (2)获取Session Sesson读取 简洁获取Session(1) 简洁获取Session(2) 5.获取Header 简洁获取Header 1.传递JSON数据 J…

大模型计算及GPU相关概念记录

浮点运算 算力最基本的计量单位是 FLOPS,英文 Floating-point Operations Per Second,即每秒执行的浮点运算次数。浮点运算其实就是带小数的加减乘除运算。 算力的计量单位,除了 FLOPS,从小到大还有: KFLOPS&#x…

新建一个git仓库并且把已有项目推送到git远程仓库

总贴 1. 创建一个空项目,不会看新建仓库 2. 克隆这个项目到某个文件夹去,比如我想克隆到我的E盘的code下面 3. 我的这个文件夹下面是有东西的,一点都不影响 . 4. 用命令行进入这个文件夹 命令行已经显示了已经在E盘下面code文件夹, 不会…

【TortoiseGitPlink提示输入密码解决方法】

问题:TortoiseGitPlink提示输入密码 解决方案 参考链接:TortoiseGitPlink提示输入密码解决方法 但后半部分和上文不同,点击图中 Load Putty Key 即可。

CrowdStrike更新导致蓝屏事件

1. 事件描述 网络上发现大量企业Windows系统主机出现BSOD(Bluescreen of Death)并循环重启。 观察蓝屏信息,发现造成蓝屏的程序均是csagent.sys,该程序为CrowdStrike终端安全软件组件。 经确认,CrowdStrike是造成本…

第5章 单片机的中断系统

5.1 中断的概念 5.2 中断控制系统 5.3 中断处理过程 5.4 中断的编程及应用举例 5.1 中断的概念 日常生活的中断现象举例 中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处&#xff…

【STM32】LED闪烁LED流水灯蜂鸣器(江科大)

LED正极:外部长脚、内部较小 LED负极:外部短脚、内部较大 LED电路 限流电阻:保护LED,调节LED亮度(本实验用面包板为了方便,省去了限流电阻,设计电路时要加上) 左上图:低…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十六章 Linux驱动初探

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

阿尔泰科技工业电脑IPC-8363工控机

概述: IPC-8363是一款支持 LGA 1200 Intel 10th/11th Generation Core™ i9/i7/i5/i3, Celeron and Pentium processor 的工业电脑。配置2组独立 SO-DIMM DDR4 2666/2933MHz内存,最大可扩展至128GB。 主要技术指标: 产品图示: 系…

Codeforces Round 672 (Div. 2) C1. Pokémon Army (easy version) (DP)

不知道能不能用贪心,反正我是没看出来,所以用DP求解。 首先分析一下题意,我们要在一段序列中取出一段子序列,然后让这段子序列按顺序逐个先加后减最终得到的结果最大。 如果要用DP,那么我们首先就要思考怎么表示状态…

Apache SeaTunnel——OLAP 引擎的数据动脉

导读本文将分享如何利用 Apache SeaTunnel 将各个业务系统的数据同步到 OLAP 引擎。 主要内容包括以下六大部分: 1. Apache SeaTunnel 项目介绍 2. Apache SeaTunnel 核心功能 3.SeaTunnel 在 OLAP 场景下的应用 4. 社区近期计划 5. WhaleTunnel 产品特性 6. …

idea怎么配置gradle多个版本

1.背景 gradle版本很多,而且很多时候版本是不兼容的,我们希望拉取下来的代码就包含已经配置好的版本,而不是去配置本机的gradle版本..... 意思就是要实现项目A可以用6.X版本 项目B可以使用7.X版本 项目C可以用9.X版本..... 2.配置方式 步骤一:项目根路径下保留一个文件夹…

MySQL事务管理详解:特性、问题与解决方案

什么是事务? 事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务的四大特…