FPGA基础知识-模块和端口

news2025/2/12 7:54:18

目录

学习目标

学习内容

 端口

端口列表

端口声明

端口链接规则

学习时间

总结


学习目标:

1.说明Verilog 模块定义中的各个组成部分,例如模块名、端口列表、参数、变址声明、数据流描述语句、行为语句、调用(实例引用》其他模块以及任务和函数等。

2.说明verilog模块定义中的各个组成部分,例如模块名、端口列表、参数、变址声明、数据流描述语句、行为语句、调用(实例引用“其他模块以及任务和函数等.


3.理解如何定义模块的端口列表以及在 Verilog中如何声明,理解如何定义模块的端口列表以及在verilog中如何声明.


4.讲述模块实例的端口连接规则。讲述模块实例的端口连接规则.


5.理解如何通过有序列表和名字将端口与外部信号相连。·解释对verilog标识符的层次引用。 理解如何通过有序列表和名字将端口与外部信号相连.·解释对verilog标识符的层次引用.


学习内容:

          通过对学习,我们知道了模块是设计中的基本功能块;在忽略模块实现的同时,重点讨论了如何对模块进行定义和调用(实例引用)。在本章中,我们将对模块的内部实现做深入的分析。 通过学习,我们知道了模块是设计中的基本功能块;在忽略模块实现的同时,重点讨论了如何对模块进行定义和调用(实例引用)。在本章中,我们将对模块的内部实现做深入的分析.

       模块定义以关键字module开始,模块名、端口列表、端口声明和可选的参数声明必须出现在其他部分的前面,endmodule语句必须为模块的最后一条语句。端口是模块与外部环境交互的 、模块定义以关键字模块开始,模块名、端口列表、端口声明和可选的参数声明必须出现在其他部分的前面,终端模块语句必须为模块的最后一条语句。端口是模块与外部环境交互的 。

       只有在模块有端凹的情况下才需要有端П列表和端口声明。模块内部的5个组成部分是:变量声明、数据流语句、低层模块实例、行为语句块以及任务和函数。这些部分可以在模块中的任意位置,以任意顾序出现。在模块的所有组成部分中,只有module、模块名和endmodule 必须出现,其他部分都是可选的,用户可以根据设计的需要随意选用。在一个Verilog源文件中可以定义多个模块,Verilog 对模块的排列顾序没有要求, 通道,只有在模块有端凹的情况下才需要有端П列表和端口声明.模块内部的5个组成部分是:变量声明、数据流语句、低层模块实例、行为语句块以及任务和函数.这些部分可以在模块中的任意位置,以任意顾序出现.在模块的所有组成部分中,只有模块、模块名和终端模块必须出现,其他部分都是可选的,用户可以根据设计的需要随意选用。在一个verilog源文件中可以定义多个模块,verilog对模块的排列顾序没有要求。

       为了理解模块的各个组成部分,下面我们以SR锁存器为例进行详细说明,

SR锁存器有两个输人端口S和R以及两个输出端口,SR锁存器及其激励的Verilog 描述如例所示。 锁存器有两个输人端口S和R以及两个输出端口,SR锁存器及其激励的Verilog描述如例所示. 

        在SR锁存器的描述中,显示的各组成部分并未全部出现,例如变量声明、数据流( assign)语句和行为语句块( aways和 initial结构); ·在SR锁存器的描述中,中显示的各组成部分并未全部出现,例如变量声明、数据流(Ascription)语句和行为语句块(Aways和Initial结构);

     在SR锁存器的激励模块中包括了模块名、线网/寄存器/变量声明、低层模块实例、行为语句块和endmodule语句,但是没有包括端口列表、端口声明和数据流( assign )语句;除了module和endmodule这一对关键字以及模块名,其他部分都是可选的,可以根据设计需要混合使用。 ·在SR锁存器的激励模块中包括了模块名、线网/寄存器/变量声明、低层模块实例、行为语句块和终端模块语句,但是没有包括端口列表、端口声明和数据流(赋值)语句;除了模块和终端模块这一对关键字以及模块名,其他部分都是可选的,可以根据设计需要混合使用。

 端口

端口是模块与外界环境交互的接口,例如芯片的输人、输出引脚就是它的端口。对于外部环境来讲,模块内部是不可见的,对模块的调用(实例引用〉只能通过其端口进行。这种特点为设计者提供了很大的灵活性:只要接口保持不变,模块内部的修改并不会影响到外部环境。我们也常常将端口称为终端( terminal ) 端口是模块与外界环境交互的接口,例如芯片的输人、输出引脚就是它的端口.对于外部环境来讲,模块内部是不可见的,对模块的调用(实例引用>只能通过其端口进行.这种特点为设计者提供了很大的灵活性:只要接口保持不变,模块内部的修改并不会影响到外部环境.我们也常常将端口称为终端(终端).

端口列表

        在模块的定义中包括一个可选的端口列表。如果模块和外部环境没有交换任何信号,则可以没有端口列表。考虑一个在顶层模块Top中被调用(实例引用)的四位加法器、显示了输人/输出端口的示意图。在中,Top是一个顶层模块,在其中调用(实例引用)了模块fulladd4,模块fulladd4从端口a,b和c_in读人数据,将结果从 sum和c_out 端口送出,这样它就可以作为加法器被外界调用(实例引用)。模块‘Top的作用是作为仿真中的顶层模块,调用(实例引用)设计模块。它无需和周围环境交换信息,因此没有端口列表。两个模块定义中的模块名和端口列表如所示。

 

 

端口声明

 在Verilog 中,所有的端口隐含地声明为wire类型,因此如果希望端口具有wire数据类型,将其声明为三种类型之一即可;如果输出类型的端口需要保存数值,则必须将其显式地声明为reg数据类型。在下面的中,DFF触发器模块的输出端口q需要保持它的值,直到下一个时钟边沿,其端口声明如所示。

端口链接规则

我们可以将-个端口看成是由相互连接的两个部分组成,一部分位于模块的内部,另一部分位于模块的外部。当在一个模块中调用(实例引用)另--个模块时,端口之间的连接必须遵守一些规则。如果违反了这些规则,则Verilog仿真器会报错。中对这些规则进行了总结。

输入端口:从模块内部来讲,输入端口必须为线网数据类型;从模块外部来看,输入端口可以连接到线网或reg数据类型的变量。

输出端口:从模块内部来讲、输出端口可以是线网或reg数据类型;从模块外部来看,输出必须连接到线网类型的变量,而不能连接到reg类型的变量。

输入输出端口:从模块内部来讲,输入/输出端口必须为线网数据类型;从模块外部来看,输人/输出端口也必须连接到线网类型的变址。


学习时间:

   2023.6.12晚

总结:

提示:这里统计学习计划的总量

        模块定义包括多个组成部分。关键字module 和endmodule是必须使用的。其他各个部分,诸如端口列表、端口声明、变量和信号声明、数据流语句、行为语句块.低层模块实例以及任务和函数都是可选的,由用户根据需要进行添加。 模块定义包括多个组成部分.关键字模块和终端模块是必须使用的。其他各个部分,诸如端口列表、端口声明、变量和信号声明、数据流语句、行为语句块.低层模块实例以及任务和函数都是可选的,由用户根据需要进行添加.

       端口是模块与其他模块或外部环境通信的渠道。模块可以具有一个端口列表,其中的每个端口必须在模块中声明为输入、输出或输人/输出三种类型之一。在对模块进行调用(实例引用)的时候,必须遵守有关端口连接的规则、ANSI C风格的端口声明将端口声明嵌人到端口列表中。

      端口的连接方法有两种:顺序连接和命名连接. ·端口的连接方法有两种:顺序连接和命名连接.

      设计中的每个标识符都具有惟一的层次名,它使得用户可以在设计中的任何位置访问设计中的每个标识符。

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

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

相关文章

Java网络开发(Filter过滤器)—— tomcat的过滤器 编码控制 + 网页权限控制

目录 引出1.过滤器简介2.用过滤器实现全局编码控制(1)导包import javax.servlet.*;(2)如果是tomcat8.5,要把3个方法都实现(3)代码如下,要点:放行,chain.doFil…

Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer

ConnectionResetError: [Errno 104] Connection reset by peer 0. 错误介绍1. 解决思路1.1 添加代码 force_downloadTrue1.2 删除缓存1.3 科学上网1.4 线下下载 2. 解决方法2.1 清除缓存2.2 线下下载模型(强烈建议) 3. 总结 0. 错误介绍 当使用transfor…

4.将图神经网络应用于大规模图数据(Cluster-GCN)

到目前为止,我们已经为节点分类任务单独以全批方式训练了图神经网络。特别是,这意味着每个节点的隐藏表示都是并行计算的,并且可以在下一层中重复使用。 然而,一旦我们想在更大的图上操作,由于内存消耗爆炸&#xff0c…

【Python 生成器与迭代器】零基础也能轻松掌握的学习路线与参考资料

一、Python生成器与迭代器概述 Python是一种高级编程语言,其中非常重要的概念就是生成器和迭代器。Python生成器和迭代器联合使用,能够实现高效的迭代操作,避免增加额外的内存消耗,同时提高代码的可读性。Python中常见的生成器和…

单机多节点 elasticsearch 集群安全认证

es 版本:7.6.2 部署环境:CentOS Linux release 7.6.1810 (Core) 一:生成 ca 证书 cd 到 es 的安装目录,并执行下面的命令来生成 ca 证书: ./bin/elasticsearch-certutil ca Elasticsearch碰到第一个直接回车&#xf…

面试专题:Mysql

1.说说自己对于 MySQL 常见的两种存储引擎:MyISAM与InnoDB的理解 关于二者的对比与总结: 1.count运算上的区别:因为MyISAM缓存有表meta-data(行数等),因此在做COUNT(*)时对于一个结构很好的查询是不需要消耗多少资源的…

[CKA]考试之K8s 版本升级

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 现有的Kubernetes 集群正在运行版本1.22.0。仅将master节点上的所有 Kuberne…

【Python】集合 set ② ( 集合常用操作 | 集合中添加元素 | 集合中移除元素 | 集合中随机取出元素 )

文章目录 一、集合中添加元素二、集合中移除元素三、集合中随机取出元素 在 Python 中 , 集合 set 是无序的 , 因此 集合 数据容器 不支持 使用 下标索引 访问 集合元素 ; 一、集合中添加元素 调用 集合#add(新元素) 函数 , 可以将新元素添加到 集合 数据容器中 ; 集合添加元素…

Vue- ref属性

ref属性 被用来给元素或者子组件注册引用信息(id的替代者) 通过案例来演示_ref属性 1 编写案例 如图:有一个按钮,点击按钮可以输出dom元素 备注:虽然vue不用我们亲自操作dom,但是有的特殊的情况下就要…

【2023华中杯】B题 小学教学应用题 相似性度量及难度评估 29页论文及MATLAB代码

1 题目 B 题 小学数学应用题相似性度量及难度评估 某 MOOC 在线教育平台希望能够进行个性化教学,实现用户自主学习。在用户学习时,系统从题库中随机抽取若干道与例题同步的随堂测试题,记录、分析学生的学习和答题信息,并且课后会自…

【Pytest实战】解决ModuleNotFoundError: No module named ‘pytest’问题

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…

JAVA程序的性能优化实践总结

1、 衡量程序性能的指标 可以从常用的性能评估指标入手: 并发:同一时间有多少请求访问TPS:transaction per second(每秒的事物数)QPS:query per second(每秒请求数)耗时:端到端耗时,服务端耗时&#xff…

并行计算——MPI编程

目录 基础知识 进程与线程,并行与并发 奇偶排序 MPI实现 odd-even sort 思路 环境部署 编程实现(C) “若干”的问题 参考链接 一个偶然的机会,我接触到了国立清华大学的MPI编程作业,也就接触到了并行计算。这…

基于Python3接口自动化测试初探

自动化测试是什么? 自动化测试简单来说就是借助工具的方式来辅助手动测试的行为就可以看做是自动化测试。 自动化测试工具有哪些? 现在常用的自动化测试工具包括: QTP:主要用于回归测试和测试同一软件的新版本 Robot Framewor…

大数据ETL工具Kettle

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言最近公司在搞大数据数字化,有MES,CIM,WorkFlow等等N多的系统,不同的数据源DB,需要将这些不同的数据源DB里的数据进行整治统一…

【算法】模拟,高精度

高精度加法 P1601 AB Problem(高精) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路就是模拟,值得注意的就是要用字符串类型输入。存进自己的int数组时要倒着存,因为如果是正着存的话,进位会有点trouble。 时间…

Spread.NET v16.0.20222.0 ASP.NET cRACK

关于 Spread.NET 提供类似 Excel 的电子表格体验。 Spread.NET 可帮助您创建电子表格、网格、仪表板和表单。它包括一个强大的计算引擎,具有450 函数以及导入和导出Excel电子表格的能力。利用广泛的 .NET 电子表格 API 和强大的计算引擎来创建分析、预算、仪表板、…

【C++ 基础篇:24】:【重要模板】C++ 输入输出运算符重载【以 Date 日期类为例】

系列文章说明 本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大…

Mysql Access denied for user ‘root‘@ ‘*.*.*.*‘ (using password: YES)异常处理

目录 一、异常错误二、原因三、解决方法 一、异常错误 PS C:\Users\10568> mysql -u root -p Enter password: **** ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES)Access denied表示拒绝访问,using password:NO/…

计算机视觉 | 语义分割与Segmentation

前 言 「MMSegmentation」 是一个基于 PyTorch 的语义分割开源工具箱。它是 OpenMMLab 项目的一部分。 MMSegmentation v1.x 在 0.x 版本的基础上有了显著的提升,提供了更加灵活和功能丰富的体验。 主要特性 统一的基准平台 我们将各种各样的语义分割算法集成到了…