Verilog语法笔记(夏宇闻第三版)-简单的Verilog HDL模块

news2025/1/17 23:11:28

目录

简单的Verilog HDL程序介绍:

模块的结构 :

模块的端口定义:

模块内容:

I/O说明的格式:

内部信号说明:

功能定义:


简单的Verilog HDL程序介绍:

下面先介绍几个简单的Verilog HDL程序,然后从中分析Verilog HDL程序的特性。

这个例子通过连续赋值语句描述了一个名为adder的三位加法器可以根据两个三比特数a、b和进位 (cin)计算出和(sum)和进位(count)。 从例子中可以看出整个Verilog HDL程序是嵌套在module 和 endmodule 声明语句里的。


这个程序通过连续赋值语句描述了一个名为compare的比较器。对两比特数 a、b 进行比较,如a与b 相等,则输出equal为高电平,否则为低电平。在这个程序中,/*........*/和//.........表示注释 部分,注释只是为了方便程序员理解程序,对编译是不起作用的。


这个程序描述了一个名为trist2的三态驱动器。程序通过调用一个在Verilog语言库中现存的三态驱 动器实例元件bufif1来实现其功能。


 • Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个 语句之间。每个模块实现特定的功能。模块是可以进行层次嵌套的。正因为如此,才可 以将大型的数字电路设计分割成不同的小模块来实现特定的功能,最后通过顶层模块 调用子模块来实现整体功能。

• 每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行行为逻辑描述。

• Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。

• 除了endmodule语句外,每个语句和数据定义的最后必须有分号。

• 可以用/*.....*/和//.......对Verilog HDL程序的任何部分作注释。一个好的,有使 用价值的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。


模块的结构 :

Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成的,一部分描述接口,另一部 分描述逻辑功能,即定义输入是如何影响输出的。下面举例说明:

Verilog结构完全嵌在module和endmodule声明语句之间,每个Verilog程序 包括四个主要部分:端口定义、I/O说明、内部信号声明、功能定义。


模块的端口定义:

模块的端口声明了模块的输入输出口。其格式如下:

module 模块名(口1,口2,口3,口4, ………);

模块内容:

模块的内容包括I/O说明、内部信号声明、功能定义。

I/O说明的格式:

输入口: input 端口名1,端口名2,………,端口名i; //(共有i个输入口)

输出口: output 端口名1,端口名2,………,端口名j; //(共有j个输出口)

 I/O说明也可以写在端口声明语句里。其格式如下:

module module_name(input port1,input port2,…

                                   output port1,output port2… );

内部信号说明:

在模块内用到的和与端口有关的wire 和 reg 变量的声明。

reg [width-1 : 0] R变量1,R变量2 。。。。;

wire [width-1 : 0] W变量1,W变量2 。。。。;

………..

功能定义:

模块中最重要的部分是逻辑功能定义部分。有三种方法可在模块中产生逻辑。

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

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

相关文章

高可用Keepalived在Linux中的应用

一、高可用 1.高可用介绍 (1)普通理解 两台服务器启动相同的业务系统,当有一台机器宕机,另外一台服务器快速接管服务,对于用户来讲是无感知的。 (2)专业理解 高可用是分布式系统架构设计中必…

Linux安装Docker与基本使用

Docker 常用于服务部署的一种方案 准备 1.云服务器或者虚拟机 2.Centos 系统 3.下载XFtp 和 XShell 安装Docker 首先删除系统中旧版本Docker或者残留文件 #卸载所有 yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-lo…

Spring从入门到精通 | 动力节点老杜

目录 一、Spring启示录 1、OCP开闭原则 2、依赖倒置原则(DIP原则) 3、控制反转(重点) 4、Spring框架(重点) 二、Spring概述 Spring的8大模块 ​编辑 Spring特点 1、轻量 2、控制反转IOC 3、面向…

Qt Mac阻止和启用休眠

阻止电脑休眠,在win下是使用win api实现的,用Qt跨平台开发,实现Mac的阻止休眠,也需要Mac本身的api来实现。经过网上查资料,找到了一个能用的,链接如下。原生mac开发用的是Object-c,所以该实现用…

Kyligence 客户案例“泰康集团精细化经营分析与运营平台”获评数据智能最佳实践案例

近日,“2022 爱分析中国数据智能最佳实践案例”评选结果正式揭晓。Kyligence 携手泰康集团申报的“泰康集团精细化经营分析与运营平台”项目经过多轮角逐脱颖而出,最终获评“中国数据智能最佳实践案例”。同时,Kyligence 通过综合能力评估&am…

Linux Shell脚本编程提高

Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应…

保姆级教程 | 将Oxylabs住宅代理和数据中心代理与MultiLogin集成的操作步骤

MultiLogin是一款集多账户管理、浏览器指纹隐藏等功能于一体的实用解决方案。在您抓取所需公共数据时,将MultiLogin与值得信赖的代理结合使用,可以大幅降低被网站阻止情况发生的概率。 在本篇教程中,将带您学习简单的集成流程,手把…

数说热点 | 2022商业地产的“破局”与“新生”——逆境之下探索新兴可能

2022年,受国内新冠肺炎疫情因素影响,我国经济下行压力明显加大,尤其是部分产业链、供应链受到冲击;部分区域接触型、聚集型特征明显的线下消费表现低迷,给实体商业经营带来挑战。从市场表现看,2022年1-9月&…

数据架构之数据血缘:数据从哪里来,到哪里去

为了直观的感受数据血缘,先从网上找了两张典型的数据血缘的图。下图特点是按照数据仓库数据管理模型给出了基于表(实体)的数据血缘图。 此图是截取Solidatus软件生成的数据血缘图,该图与上图的区别在于给出了基于属性的数据血缘图…

【纯净题目版】笔试题-2023禾赛-FPGA

题目背景 笔试时间:2022.06.22应聘岗位:FPGA开发工程师 题目评价 难易程度:★★☆☆☆知识覆盖:★☆☆☆☆超纲范围:☆☆☆☆☆值得一刷:★☆☆☆☆ 文章目录1. 使用最少的电路实现二分频,给出…

ubuntu20.04 arm-linux-gnueabihf交叉编译opencv4.7.0 与opencv-contrib-4.7.0

安装交叉编译工具链编译的目标硬件是RV1126,编译工具链为32位的arm-linux-gnueabihf,本次使用的是8.3版本,可在Downloads | GNU-A Downloads – Arm Developer进行下载。下载后,解压到自己的安装目录,比如解压到/opt目…

Seata客户端

一个调用链中的所有微服务都是seata的客户端,都必须走下面的步骤 第一步:创建undo_log表 下载地址:https://github.com/seata/seata/tree/develop/script/client/at/db -- for AT mode you must to init this sql for you business databa…

海南三亚游记2022-2023跨年

文章目录1、概述2、交通2.1、广州飞三亚2.2、做高铁,三亚到海口2.3、海口飞广州3、风景3.1、吉阳区3.2、天涯区4、美食5、住宿6、补充2014年海南游记1、概述 2022-12-30~2023-01-04,海南三亚游记,旨在记录攻略 之前已经去过海南2次&#xff…

数据结构的相关概念

基本概念和术语 数据是对客观信息的一种描述,它是由能被计算机识别与处理的数值、字符等符号构成的集合。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 关键码值的是数据元素中能起标识作用的数据项。 关系指的是集合…

MFC/WIN32程序美化之使用skinH更换皮肤

官网 https://www.skinsharp.com/htdocs/index.htm 使用比较简单 使用到skinH.dll,这是程序运行的动态支撑库,还有skinH.lib文件,编译时用到的。还有SkinH.h头文件,里面包含了skinH.dll的库函数和功能注释、宏定义 使用VS创建一个WIN32项目 这就是默认的窗体效果了 加了…

SpringBoot AOP

SpringBoot AOP 目录SpringBoot AOP写法一: Before("execution(* com.bjpowernode.springboot07.javabean.Man.eat(..))")一、AOP开发1.1 概述1.2使用方法1.3创建项目并添加maven依赖1.4 创建Javabean测试类1.5 创建切面1.6 测试类1.7 测试结果1.8 结论1.…

pytest学习和使用16-HTML报告如何生成?(pytest-html)

16-HTML报告如何生成?(pytest-html)1 插件介绍2 pytest-html安装3 生成报告3.1 插件执行方式3.2 执行效果3.3 指定报告生成的路径4 合并css5 报告中的行显示设置6 报告增强6.1 自定义css6.2 报告标题6.3 环境6.4 其他摘要信息6.5 Extra内容6.…

198. 打家劫舍

198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

MySQL调优-Innodb引擎SQL执行的BufferPool缓存机制

目录 Innodb引擎SQL执行的BufferPool缓存机制 为什么Mysql不能直接更新磁盘上的数据而且设置这么一套复杂的机制来执行SQL了? 为什么直接更新磁盘是随机读写?为什么读写磁盘的日志文件是顺序读写? 为什么不直接读写磁盘而是选择读写Buffer…

【吐槽贴】项目经理的进阶日常:项目要收尾了,我却慌了

最近忙着写年终总结,还以为这次的年终奖稳了,结果犯了一个致命的错误,年终奖差点都没了。我负责的一个项目由于客户方比较着急,计划在过年放假前要完成交付,项目进度都完成的差不多了。现在还剩近10天的工期&#xff0…