verilog基础语法入门

news2024/9/20 9:19:05

文章目录

  • 前言
  • 一、模块定义
    • 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.coloradmin.cn/o/1936124.html

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

相关文章

第1关 -- Linux 基础知识

闯关任务 完成SSH连接与端口映射并运行hello_world.py ​​​​ 可选任务 1 将Linux基础命令在开发机上完成一遍 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 创建新的虚拟环境lm3 可选任务 3 创建并运行test.sh文件 参考文档 文档:https://g…

tcp协议下的socket函数

目录 1.socket函数 2.地址转换函数 1.字符串转in_addr的函数:​编辑 2.in_addr转字符串的函数:​编辑 1.关于inet_ntoa函数 3.listen函数 4.简单的Server模型 1.初步模型 1.sock函数和accept函数返回值的sockfd的区别 2.运行结果和127.0.0.1的意义 2.单进…

如何设计数据中心100G网络光纤布线

随着全球企业对带宽的需求呈指数级增长,数据中心需要升级以增强其计算、存储和网络能力。数据中心从10G/25G向100G迁移成为必然趋势。随着网络升级,数据中心的光纤布线系统也需要随之优化。本文将指导您如何设计数据中心100G网络光纤布线。 100G以太网的…

【LSTM和GRU极简,和最新的TT也就是状态】机器学习模型来学习状态

LSTM(长短期记忆网络)中的关键参数包括输入门、遗忘门、输出门、细胞状态和隐藏状态。以下是如何进行推理计算的示例: LSTM参数和公式 输入门(i_t):决定输入的信息量。 遗忘门(f_t&#xff0…

路网双线合并单线——ArcGIS 解决方法

路网双线合并成单线是一个在地图制作、交通规划以及GIS分析中常见的需求。双线路网定义:具有不同流向、不同平面结构的道路。此外,车道数较多的道路(例如,双黄实线车道数大于4的道路)也可以视为双线路网,本…

appium自动化测试报错。

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

sip-URI的基本结构

sip-URI(sip Uniform Resource Identifier:会话初始协议统一资源标识符)的一般格式: sip:[userinfo]host[:port][;transporttcp|udp|tls|sctp][?parameters] sip: 协议标识符,表示这是一个SIP URI。userinfo&#x…

智慧煤矿:AI视频智能监管解决方案引领行业新变革

随着科技的飞速发展,人工智能(AI)技术已经渗透到各个行业,为传统产业的转型升级提供了强大的动力。在煤矿行业中,安全监管一直是一个重要的议题。为了提高煤矿的安全生产水平,降低事故发生率,智…

pytorch学习(八)Dataset加载分类数据集

我们之前用torchvision加载了pytorch的网络数据集,现在我们用Dataset加载自己的数据集,并且使用DataLoader做成训练数据集。 图像是从网上下载的,网址是 点这里,标签是图像文件夹名字。下载完成后作为自己的数据集。 1.加载自己…

基于纹理和统计图像特征集成的计算机辅助乳腺癌检测

诊断通常使用组织病理学切片,可以确定组织是否处于导管原位癌(DCIS)阶段,其中癌细胞尚未扩散到周围乳腺组织,或浸润性导管癌(IDC)阶段,其中细胞已渗透到邻近组织。对于医生来说,检测IDC非常耗时且具有挑战性。因此&…

搜集日志。

logstash 负责: 接收数据 input — 解析过滤并转换数据 filter(此插件可选) — 输出数据 output input — decode — filter — encode — output elasticsearch 查询和保存数据 Elasticsearch 去中心化集群 Data node 消耗大量 CPU、内存和 I/O 资源 分担一部分…

分布式搜索引擎ES-elasticsearch入门

1.分布式搜索引擎:luceneVS Solr VS Elasticsearch 什么是分布式搜索引擎 搜索引擎:数据源:数据库或者爬虫资源 分布式存储与搜索:多个节点组成的服务,提高扩展性(扩展成集群) 使用搜索引擎为搜索提供服务。可以从海量…

Linux下docker快速安装gitea

之前在服务器上装的gitlab来管理个人项目,但是gitlab服务启动后能明显感受到占用资源比较严重。最近服务器到期,换了个服务器还没来得及装gitlab,刚好最近接触到gitea,网上是这么说的 占用资源少,适合个人开发者&…

【数据结构】:时间和空间复杂度在这篇里面一点都不复杂

目录 如何衡量一个代码的好坏 时间复杂度 概念 计算方法 实例计算 【实例1】 【实例2】 【实例3】 【实例4】:冒泡排序的时间复杂度 【实例5】:二分查找的时间复杂度 【实例6】:阶乘递归的时间复杂度 【实例7】:斐波那契…

P3-AI产品经理-九五小庞

AI产品的数据流向 美团外卖,实时只能调度 美团28分钟送达需求的分析 AI产品常用的算法 常用算法 常见的AI算法解析 自然语言生成NLG语音识别:科大讯飞,通义千问 虚拟现实机器学习平台 决策管理系统生物特征识别技术 RPA(机器人流程自动…

百日筑基第二十五天-java开发程序员常犯的错总结

百日筑基第二十五天-java开发程序员常犯的错 一、将数组转换为ArrayList 要将数组转换为ArrayList&#xff0c;开发人员通常会这样做&#xff1a; List<String> list Arrays.asList(arr);**Arrays.asList()将返回 ArrayList私有静态类的 Arrays&#xff0c;而不是 ja…

《数据结构:栈和队列》

文章目录 一、栈1、概念与结构 二、栈的实现1、栈的结构和功能2、初始化栈3、入栈4、出栈5、判断栈是否为空6、取栈元素和栈有效个数7、销毁栈 三、队列1、概念与结构 四、队列的实现1、队列的实现结构和功能2、队列初始化3、入队列4、判断队列是否为空5、出队列6、取队头/队尾…

WPF+Mvvm 项目入门完整教程(一)

WPF+Mvvm 入门完整教程一 创建项目MvvmLight框架安装完善整个项目的目录结构创建自定义的字体资源下载更新和使用字体资源创建项目 打开VS2022,点击创建新项目,选择**WPF应用(.NET Framework)** 创建一个名称为 CommonProject_DeskTop 的项目,如下图所示:MvvmLight框架安装…

C++基础语法:STL之容器(5)--序列容器中的list(二)

前言 "打牢基础,万事不愁" .C的基础语法的学习 引入 序列容器的学习.以<C Prime Plus> 6th Edition(以下称"本书")内容理解 本书中容器内容不多只有几页.最好是有数据结构方面的知识积累,如果没有在学的同时补上 接上一篇C基础语法:STL之容器…

自己用vps起网页(用于测试题目回显)

0x01 首先要有一台vps&#xff0c;这里我推荐dk盾 base64 UVGkGjcyNzA3NzA1NQ0x02 那么我们就可以进行环境的配置了 我是选择的nginx&#xff0c;因为挺好用的吧&#xff0c;各方面参数也还行 我是使用的Ubuntu 的vps所以下面的命令也只有Ubuntu可以使用sudo apt updatesu…