模型功能

  • module是verilog中层次划分的基本单元
  • 通过module之间的调用,可以实现硬件描述层次的提高
  • 端口列表则是module的输入输出,和数字电路的走线连接等效
  • 基于module的不断地叠加,verilog可以完成从底层的与或门到复杂数字系统的逐步设计

模型框图

//module define
module A#(
input i_clk
)( );
//module application
B #(
.MD_SIM(1'b1)
)u_B(
.i_clk(i_clk)
); endmodule

实现步骤

  1. 确认模块的名称
  • 模块名是调用该模块的句柄,一个工程中不允许存在同一个模块
  • 但是如果是封装为IP,采用OOC的综合方式,则vivado是支持在不同IP中使用同样命名的模块
  • 一般模块的命名突出功能特点
  • 比如硬件模块BRAM、FIFO,总线转接模块AXISMART,测试激励模块tb_bram等
  • 只要能一眼看出模块的作用即可
  1. 确认模块的参数列表
  • 和C语言的函数的参数类似,verilog的模块也是可以传递参数的
  • 参数作为整个模块的常数项,可以随意插入而不用考虑时序问题,是模块灵活通用的关键所在
  • 一般位宽、硬件信息、延时大小等用户参数,均需要通过参数列表进行传递
  1. 确认模块的信号列表
  • 与参数不同,信号的输入输出必须考虑到时序问题和方向问题
  • 一般信号的输入用于该模块的控制和数据的输入
  • 而信号的输出则是该模块的标志位和数据的输出
  • 但是这个只是对于一般模块级别的设计
  • 更加复杂的系统会引入各种操作总线,利用通用协议,实现各种握手交互
  • 所以
    • 一个信号列表应该对信号输入、信号输出、总线交互三个部分进行明确的区分
    • 才能具备很好的区分度和可维护性
  1. 模块的调用方法
  • 如前所示,模块的调用同样包括了参数部分和信号部分
  • 其中参数部分可以缺省
  • 信号部分输出可以缺省,输入缺省的话,则依赖编译器的处理逻辑
    • 比如vivado一般将缺省的输入置零
    • modelsim一般置为X
  1. generate在模块调用中的应用
  • 在C语言中,函数可以在for、if等结构中进行重复调用
  • 而verilog中,所有硬件并行执行,无法实现在for中按照步骤执行
  • 为了实现顺序执行,常采用状态机或者流水线去构建级联的硬件
    • 显然,这种方法将会造成很大调用问题
  • 在verilog中,实现级联逻辑一般用generate for
    • for的含义是将模块多次重复,依靠级联信号实现处理逻辑的步步执行
    • 这个方法可以有效地解决模块重复调用地问题
  • 当然,可以使用generate if对某些模块进行选择性执行
    • 但是,这里必须由常数对if的条件进行控制
    • 也就是说,信号是无法控制模块是否调用的
    • 要实现类似C的两个函数中选择一个执行,verilog需要将判断条件施加在输出上
  • 还有一个generate case,和if是类似的效果
generate genvar i;
for(i = 0; i < 3; i = i + 1)
begin:FOR_3
A u_A(
.i_clk(i_clk),
.i_dat1(3'h111),
.i_dat2(2'b11),
.i_dat3(1'b1)
);
end
endgenerate
  • 如上所示

    • 在for级联逻辑中,位宽的匹配是一个比较重要的点
    • 为了保证信号的准确性,位宽连接只存在两种格式:
      • 复制:输入信号不大于端口位宽,则复制该信号到所有模块
      • 对齐:输入信号位宽大于端口位宽,则将输入信号对齐至N*端口位宽(高位补零),然后按名称顺序匹配
    • 则示例中的三个数据结果为
      • FOR_3[2].u_A.i_dat1 = 1'b1(对齐)
      • FOR_3[1].u_A.i_dat2 = 1'b0(对齐)
      • FOR_3[0].u_A.i_dat3 = 1'b1(复制)
  • 所以,在使用generate for时,需要严格控制位宽,缺省位宽是不可取的,而直接写整型,则会被认为是32位宽的数据进行对齐

最终效果



调用接口

  • 示例模型,无调用接口

module的定义及端口的作用的更多相关文章

  1. TCP和UDP的135、137、138、139、445端口的作用

    如果全是2000以上的系统,可以关闭137.138.139,只保留445 如果有xp系统,可能以上四个端口全部要打开 无论你的服务器中安装的是Windows 2000 Server,还是Windows ...

  2. [转帖]TCP和UDP的135、137、138、139、445端口的作用

    TCP和UDP的135.137.138.139.445端口的作用 https://www.cnblogs.com/IvanChen/p/4500698.html 竟然不知道 端口具体是干什么的.. 如 ...

  3. font-family:黑体;导致css定义全部不起作用

    css文件里font-family: "黑体";这句会导致后面的css定义全部不起作用了. 只要把font-family: "黑体"; 改成 font-fami ...

  4. tomcat server.xml各个端口的作用

    <Server port="8005" shutdown="SHUTDOWN"> <!-- port:指定一个端口,这个端口负责监听关闭Tom ...

  5. OS考研复习笔记——操作系统的定义、目标、作用和发展的主要动力

    计算机系统由硬件和软件两部分组成.操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次补充. 硬件:计算机物理设备,即各种处理机存储器.输入/输出设备 ...

  6. 网络端口的作用及分类(转发:http://blog.csdn.net/dream_1996/article/details/73481201)

    一.什么是端口? 在开始讲什么是端口(port)之前,我们先来聊一聊什么是 port 呢?常常在网络上听说『我的主机开了多少的 port ,会不会被入侵呀!?』或者是说『开那个 port 会比较安全? ...

  7. tomcat 的配置文件server.xml 几个端口的作用

    tomcat中server.xml配置文件中几个port的作用和区别 在tomcat的server.xml中有这么几个port,很多人虽然一直在使用tomcat,但是却不知道这几个port各有什么作用 ...

  8. 关于tomcat中的三个端口的作用及其相关细节

    [一]端口内容 tomcat的端口号相关信息: Tomcat admin port——管理端口,允许你远程配置tomcat HTTP——正常的http协议 AJP——Apache JServ Prot ...

  9. Tomcat 8005/8009/8080/8443端口的作用

    --关闭tomcat进程所用.当执行shutdown.sh关闭tomcat时就是连接8005端口执行“SHUTDOWN”命令--由此,我们直接telnet8005端口执行“SHUTDOWN”(要大写, ...

  10. 原 tomcat的server.xml配置文件中三个端口的作用

    以Tomcat7.0为例, 在安装目录下. conf/server.xml 中可以配置三个端口号, 如果使用多个tomcat 是需要配置这三个. 该Connector 用于监听请求. protocol ...

随机推荐

  1. Swoole从入门到入土(6)——TCP服务器[粘包]

    在了解Swoole下如何处理粘包问题之前,我们需要先了解什么是"粘包".我们以下面这张图进行普及: 假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是 ...

  2. [BUUCTF][Web][极客大挑战 2019]Havefun 1

    打开靶机的URL,看到一个页面 右键查看源代码,看到有用信息 <html> ... <!-- $cat=$_GET['cat']; echo $cat; if($cat=='dog' ...

  3. 小程序threejs参考

    之前做了一个小程序眼镜试戴的功能,涉及了人脸识别和3D模型渲染等.暂时记录一些参考的东西,有时间再整理. threejs官方文档(一定要看看) https://threejs.org/docs/ind ...

  4. Java JVM——3.运行时数据区概述及线程

    运行时数据区概述 在JVM 中的位置 内部划分 当我们通过前面的:类的加载 → 验证 → 准备 → 解析 → 初始化 这几个阶段完成后,执行引擎就会对我们的类进行使用,同时执行引擎将会使用到我们的运行 ...

  5. Oracle 插入数据报错 ORA-00918

    1. 报错内容 ErrorCode = 918, SQLState = 23000, Details = ORA-00918: column 'TO_DATE('2023-12-1809:13:45' ...

  6. 第135篇:Three.js基础入门

    好家伙,这东西太帅了,我要学会   先放张帅图(都是用three.js做出来的,这我学习动力直接拉满)    还有另外一个 Junni is... 帧数太高,录不了   开始学习 官方文档 1.Thr ...

  7. 机器学习策略篇:详解满足和优化指标(Satisficing and optimizing metrics)

    满足和优化指标 要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧. 假设已经决定很看重猫分类器的分类准确度,这可以是\( ...

  8. 【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答

    一:云服务后端是2台虚拟机,Work Role,Web Role,可以RDP进去,但是为什么在虚拟机列表里看不到呢? 因为云服务(经典)是PaaS服务,有别于传统的IaaS服务,其提供的WebRole ...

  9. RocketMQ(2) 消息的生产和存储

    ## 一 : 消息的生产 1. 消息的生产过程 Producer在发送消息时可以将消息写入到指定topic的某Broker中的某Queue中,其经历了如下过程: Producer发送消息之前,会先向N ...

  10. linux下查看文件时显示行号

    1.用 vi 或 vim 打开文件后显示行号: 显示当前行号: :nu 显示所有行号: :set nu     2.设置服务器显示行号 2.1:编辑~/.vimrc文件,在该文件中加入         ...