当前位置: 首页 > article >正文

Verilog学习-1.模块的结构

module aoi(a,b,c,d,f);/*模块名为aoi,端口列表a、b、c、d、f*/
input a,b,c,d;/*模块的输入端口为a,b,c,d*/
output f;;/*模块的输出端口为f*/
wire a,b,c,d,f;/*定义信号的数据类型*/
assign f=~((a&b)|(~(c&d)));/*逻辑功能描述*/
endmodule
  • veirlog hdl 程序是由模块构成的。每个模块的内容都嵌在module和endmodule两个关键字之内,每个模块实现特定的功能。
  • 每个模块首先要进行端口定义,并说明输入口和输出口(input 、output或inout),然后对模块
  • Verilog HDL程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写
  • 除了endmodule等少数语句外,每个语句的最后必须有分号。
  • 每个Verilog HDL程序包括4个主要部分:模块声明、端口定义、信号类型声明和逻辑功能定义
module <模块名称> (<输入输出两边>);
input 输入端口列表;
output 输出端口列表;
/*定义数据、信号的类型、函数声明,用关键字wire、reg、task和function等*/
wire 信号名;
reg 信号名;
//逻辑功能定义
assign <结果信号名>=<表达式>;
//用always块模式逻辑功能
always @(<敏感信号表达式>)begin//过程赋值//if-else、case语句;for循环语句//task、function调用end
//调用其他模块
<调用模块名><例化模块名>(<端口列表>)
//门元件例化
门元件关键字 <例化元件名>(<端口列表>)
endmodule

1.模块声明

模块声明包括模块名称、模块输入、输出端口列表。模块定义格式如下:

module 模块名称(端口1,端口2,端口3,...);

模块结束的标志为关键字endmodule。

2.端口定义

对模块的输入、输出端口要明确说明,其格式为:

input 端口名1,端口名2,...,端口名n;//输入端口

output 端口名1,端口名2,...,端口名n;//输除端口

inout 端口名1,端口名2,...,端口名n;//输入/输出端口

定义端口时应注意:

  • 每个端口出来要声明是输入、输出还是双向端口外,还要声明其数据类型,是wire型、reg型,还是其他类型。
  • 输入和双向端口不能声明为reg型。
  • 在测试模块中不需要定义端口。

3.信号类型声明

对模块中所有用到的信号都必须进行信号类型的定义。如果信号的数据类型没有定义,则默认为wire型。

reg cout;

可将端口定义和信号类型声明仿真一条语句中完成。

output reg cout;

还可以将端口定义和信号类型声明仿真模块列表中,而不是放在模块内部。

module aoi(input a,b,c,d,output f);

assign f=~((a&b)|(~(c&d)));

endmodule

4.逻辑功能定义

模块中最核心的部分就是逻辑功能定义。有多种方法可以在模块中描述和定义逻辑功能,还可以调用函数(function)和任务(task)来描述逻辑功能,几种基本方法为:

1.用assign 持续赋值语句定义

2.用always过程定义

always过程语句既可以用来描述组合电路,也可以用来描述时序电路。

3.调用元件(元件例化)

  • 可以调用Verilog HDL内置门元件(门级结构描述)
  • 可以调用开关级元件(开关级结构描述)
  • 在多层次结构电路设计中,高层次可以调用低层次模块

相关文章:

Verilog学习-1.模块的结构

module aoi(a,b,c,d,f);/*模块名为aoi&#xff0c;端口列表a、b、c、d、f*/ input a,b,c,d;/*模块的输入端口为a,b,c,d*/ output f;;/*模块的输出端口为f*/ wire a,b,c,d,f;/*定义信号的数据类型*/ assign f~((a&b)|(~(c&d)));/*逻辑功能描述*/ endmoduleveirlog hdl 程…...

Linux驱动-块设备驱动

Linux驱动-块设备驱动 一&#xff0c;块设备驱动简介二&#xff0c;无请求队列情况&#xff08;EMMC和SD卡等&#xff09;三&#xff0c;请求队列情况&#xff08;磁盘等带有I/O调度的设备&#xff09;四&#xff0c;两者在驱动上区别 一&#xff0c;块设备驱动简介 块设备驱动…...

ffmpeg函数简介(封装格式相关)

文章目录 &#x1f31f; 前置说明&#xff1a;FFmpeg 中 AVFormatContext 是什么&#xff1f;&#x1f9e9; 1. avformat_alloc_context功能&#xff1a;场景&#xff1a; &#x1f9e9; 2. avformat_open_input功能&#xff1a;说明&#xff1a;返回值&#xff1a; &#x1f9…...

Android10.0 framework第三方无源码APP读写断电后数据丢失问题解决

1.前言 在10.0中rom定制化开发中,在某些产品开发中,在某些情况下在App用FileOutputStream读写完毕后,突然断电 会出现写完的数据丢失的问题,接下来就需要分析下关于使用FileOutputStream读写数据的相关流程,来实现相关 功能 2.framework第三方无源码APP读写断电后数据丢…...

[随笔] nn.Embedding的前向传播与反向传播

nn.Embedding的前向传播与反向传播 nn.Embedding的前向计算过程 embedding module 的前向过程其实是一个索引&#xff08;查表&#xff09;的过程 表的形式是一个 matrix&#xff08;embedding.weight, learnable parameters&#xff09; matrix.shape: (v, h) v&#xff1a;…...

搜广推校招面经七十一

滴滴算法工程师面经 一、矩阵分解的原理与优化意义 矩阵分解在推荐系统中是一个非常核心的方法&#xff0c;尤其是在 协同过滤(Collaborative Filtering) 中。我们可以通过用户对物品的评分行为来推测用户的喜好&#xff0c;从而推荐他们可能喜欢的内容。 1.1. 直观理解&…...

【算法学习】链表篇:链表的常用技巧和操作总结

算法学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言&#xff1a; 在各种数据结构中&#xff0c;链表是最常用的几个之一&#xff0c;熟练使用链表和链表相关的算法&#xff0c;可以让我们在处理很多问题上都更加…...

View UI (iview)表格拖拽排序

在使用 iView UI 的 Table 组件进行拖拽排序时&#xff0c;可以通过以下步骤获取最新的排序数据&#xff1a; 1. 启用拖拽功能 在 Table 组件上设置 draggable 属性&#xff0c;并绑定拖拽结束事件 on-row-drop。 <template><Table:columns"columns":dat…...

OpenNMT 部署和集成指南

OpenNMT&#xff08;Open Neural Machine Translation&#xff09;是一个开源的神经机器翻译&#xff08;NMT&#xff09;系统&#xff0c;由 Systran 和 Harvard NLP Group 在 2016 年联合推出。它的目标是为研究人员和企业开发者提供一个高质量、灵活且易于扩展的机器翻译框架…...

2台8卡L20服务器集群推理方案

1、整体流程梳理 #mermaid-svg-0aNtsWUnOH7ewXpN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0aNtsWUnOH7ewXpN .error-icon{fill:#552222;}#mermaid-svg-0aNtsWUnOH7ewXpN .error-text{fill:#552222;stroke:#55…...

HarmonyOS:使用geoLocationManager (位置服务)获取位置信息

一、简介 位置服务提供GNSS定位、网络定位&#xff08;蜂窝基站、WLAN、蓝牙定位技术&#xff09;、地理编码、逆地理编码、国家码和地理围栏等基本功能。 使用位置服务时请打开设备“位置”开关。如果“位置”开关关闭并且代码未设置捕获异常&#xff0c;可能导致应用异常。 …...

系统分析师(二)--操作系统

概述 进程管理 选项A&#xff1a;该进程中打开的文件 进程中打开的文件是由整个进程来管理的&#xff0c;同一进程下的各个线程都可以对这些打开的文件进行访问和操作&#xff0c;所以进程中打开的文件是可以被这些线程共享的。 选项B&#xff1a;该进程的代码段 进程的代码…...

安科瑞测频仪表:新能源调频困局的破局者

安科瑞顾强 在“双碳”目标推动下&#xff0c;风电、光伏等新能源正加速成为电力供应的核心力量。然而&#xff0c;新能源发电的间歇性与波动性&#xff0c;如同一把“双刃剑”&#xff0c;在提供清洁电力的同时&#xff0c;也给电网稳定运行带来了前所未有的挑战。国家能源局…...

富士相机照片 RAF 格式如何快速批量转为 JPG 格式教程

富士&#xff08;Fujifilm&#xff09;相机拍摄的 RAW 格式文件&#xff08;RAF&#xff09;因其高质量和丰富的图像信息而受到摄影师的喜爱。然而&#xff0c;RAF 文件通常体积较大且不易于分享或直接使用。为了方便处理&#xff0c;许多人选择将其转换为更通用的 JPG 格式。在…...

Linux 入门指令(1)

&#xff08;1&#xff09;ls指令 ls -l可以缩写成 ll 同时一个ls可以加多个后缀 比如 ll -at (2)pwd指令 &#xff08;3&#xff09;cd指令 cd .是当前目录 &#xff08;4&#xff09;touch指令 &#xff08;5&#xff09;mkdir指令 &#xff08;6&#xff09;rmdir和rm…...

Redis缓存数据库一致性

前言&#xff1a; 在系统开发中经常使用关系型数据库&#xff0c;为了提升关系型数据库的读性能&#xff0c;一般会使用redis加一层缓存&#xff0c;缓存和数据库是分离的两次操作&#xff0c;本文用来分析如何操作能保证缓存和数据库的数据一致性。 一、读场景 二、写场景 …...

Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图,Kotlin

Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图&#xff0c;Kotlin <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><u…...

文件相关:treecpmv命令扩展详解

拷贝和移动文件 序号命令对应英文作用01tree [目录名]tree以树状图列出文件目录结构02cp 源文件 目标文件copy复制文件或者目录03mv 源文件 目标文件move移动文件或者目录&#xff0f;文件或者目录重命名 一、 tree命令 &#xff08;1&#xff09;定义 tree 命令可以以树状…...

S32K144的m_data_2地址不够存,重新在LD文件中配置地址区域

在开发平台软件的时候代码中超出了64K的内存&#xff0c;单纯在ld文件中&#xff0c;增加m_data_2的存储长度&#xff0c;原先是0x00007000,我将长度修改为0x00008000,起始地址还是0x20000000,软件编译没有报错堆栈超出&#xff0c;但是软件下载到单片机中之后&#xff0c;144不…...

基于 SysTick 定时器实现任务轮询调度器

文章目录 前言一、SysTick 定时器介绍二、SysTick 驱动设计1. 初始化方法2. SysTick 中断函数3. 时间类 API 三、任务调度器设计1. 任务结构体2. 任务初始化3. 主调度器4. 调度器更新 四、任务函数实现五、总结1. 优缺点分析2. 扩展建议 前言 在嵌入式系统中&#xff0c;对于资…...

【STM32】综合练习——智能风扇系统

目录 0 前言 1 硬件准备 2 功能介绍 3 前置配置 3.1 时钟配置 3.2 文件配置 4 功能实现 4.1 按键功能 4.2 屏幕功能 4.3 调速功能 4.4 倒计时功能 4.5 摇头功能 4.6 测距待机功能 0 前言 由于时间关系&#xff0c;暂停详细更新&#xff0c;本文章中&#xff0c;…...

MyBatis 动态 SQL 使用详解

&#x1f31f; 一、什么是动态 SQL&#xff1f; 动态 SQL 是指根据传入参数&#xff0c;动态拼接生成 SQL 语句&#xff0c;不需要写多个 SQL 方法。MyBatis 提供了 <if>、<choose>、<foreach>、<where> 等标签来实现这类操作 ✅ 二、动态 SQL 的优点…...

【重装系统】大白菜自制U盘装机,备份C盘数据,解决电脑启动黑屏/蓝屏

1. 准备 U 盘 U 盘容量至少 8G&#xff0c;备份 U 盘的数据&#xff08;后期会格式化&#xff09; 2. 从微软官网下载操作系统镜像 https://www.microsoft.com/zh-cn/software-download/windows11 3. 下载安装大白菜 https://www.alipan.com/s/33RVnKayUfY 4. 插入 U 盘&#…...

vue实现目录锚点且滚动到指定区域时锚点自动回显——双向锚点

最近在用vue写官网&#xff0c;别问我为什么用vue写官网&#xff0c;问就是不会jq。。。。vue都出现11年了。。。 左侧目录&#xff1a;点击时&#xff0c;右侧区域可以自动滚动到指定的位置。 右侧区域手动滚动时&#xff0c;左侧锚点可以自动切换到对应的目录上 从而实现…...

python——正则表达式

一、简介 在 Python 中&#xff0c;正则表达式主要通过 re 模块实现&#xff0c;用于字符串的匹配、查找、替换等操作。 二、Python的re模块 使用前需要导入&#xff1a; import re 三、常用方法 方法描述re.match(pattern, string)从字符串开头匹配&#xff0c;返回第一个匹…...

Flutter Invalid constant value.

0x00 问题 参数传入变量&#xff0c;报错&#xff01; 代码 const Padding(padding: EdgeInsets.all(20),child: GradientProgressIndicator(value: _progress), ),_progress 参数报错&#xff1a;Invalid constant value. 0x01 原因 这种情况&#xff0c;多发生于&#xff…...

libev实现Io复用及定时器事件服务器

客户端和服务器都绑定在了enp2s0网卡&#xff0c;需要SERVER_IP和SERVER_PORT改为其ip&#xff0c;注意不能是127.0.0.1&#xff0c;因为这个是lo虚拟网口。 安装libev sudo apt-get install libev-dev客户端&#xff1a; #include <iostream> #include <string>…...

【精品PPT】2025固态电池知识体系及最佳实践PPT合集(36份).zip

精品推荐&#xff0c;2025固态电池知识体系及最佳实践PPT合集&#xff0c;共36份。供大家学习参考。 1、中科院化学所郭玉国研究员&#xff1a;固态金属锂电池及其关键材料.pdf 2、中科院物理所-李泓固态电池.pdf 3、全固态电池技术研究进展.pdf 4、全固态电池生产工艺.pdf 5、…...

如何计算设备电池工作时长?

目录 【mAh&#xff08;毫安时&#xff09;计算方法】 【Wh&#xff08;瓦时&#xff09;计算方法】 【为什么仅用电流&#xff08;mA&#xff09;和时间&#xff08;h&#xff09;就能计算电池使用时长&#xff08;mAh&#xff09;&#xff1f;】 1. mAh 的本质是“电荷量…...

抽象类及其特性

目录 1、概念2、语法3、特性4、作用 1、概念 在面向对象中&#xff0c;所有对象都是通过类来描述的&#xff0c;但是并不是所有的类都可以用来描述对象。比如下述例子中的 Animal 类&#xff0c;Dog 类和 Cat 类是 Animal 类的子类&#xff0c;可以分别描述小狗和小猫&#xf…...