目录

1、Verilog例化说明

2、接口(interface)例化说明

3、SV(class)例化说明

1、Verilog例化说明

1.什么是模块例化?为什么要例化?

模块例化可以理解成模块调用。对于一个FPGA工程,通常是由一个顶层模块与多个功能子模块组成,为了实现顶层模块与子模块的连接,需要进行模块间的例化(或说是调用)。在一个FPGA项目工程中,其输入、输出端口命名通常在设计前期就已确定下来,但会存在一些中间变量,一个工程可能会让不同的工程师在不同的时间段内共同完成,不同的人对于这些变量的命名会有所不同,故例化很有必要。

注:一个顶层模块可在其内部例化多个相同的模块。

2.实例说明例化方法

实例:静态数码管显示
根据功能将 FPGA 顶层例化了以下两个功能子模块:计时模(time_count)和数码管静态显示模块(seg_led_static),

1.计时模块(仅显示端口及参数)

module time_count(input      clk ,                       // 时钟信号input        rst_n ,                     // 复位信号output reg  flag                        // 一个时钟周期的脉冲信号
);//parameter defineparameter MAX_NUM = 25000_000;         // 计数器最大计数值
......(省略功能代码)endmodule

2.数码管静态显示模块(仅显示端口及参数)

module seg_led_static ( input             clk ,                // 时钟信号input           rst_n ,              // 复位信号(低有效)input            add_flag,            // 数码管变化的通知信号output reg [5:0] sel ,                // 数码管位选output reg [7:0] seg_led              // 数码管段选);
......(省略功能代码)endmodule

3.顶层模块(着重看下面“例化计时模块”、“例化数码管静态显示模块”)

module seg_led_static_top (input          sys_clk ,              // 系统时钟input         sys_rst_n,             // 系统复位信号(低有效)output [5:0] sel ,                  // 数码管位选output [7:0] seg_led                // 数码管段选);//parameter defineparameter TIME_SHOW = 25'd25000_000;   // 数码管变化的时间间隔0.5s//wire definewire add_flag;                         // 数码管变化的通知信号//例化计时模块
time_count #(                           //参数例化使用’#‘.MAX_NUM (TIME_SHOW)
) u_time_count(.clk (sys_clk ),.rst_n (sys_rst_n),.flag (add_flag ));//例化数码管静态显示模块
seg_led_static u_seg_led_static (.clk (sys_clk ),.rst_n (sys_rst_n),.add_flag (add_flag ),.sel (sel ),.seg_led (seg_led ));endmodule

上面给出了顶层模块的完整代码,子模块只有模块的端口和参数定义的代码。这是因为顶层模块对子模块做例化时,只需要知道子模块的端口信号名,而不用关心子模块内部具体是如何实现的。

如果子模块内部使用parameter 定义了一些参数,Verilog 也支持对参数的例化(也叫参数的传递),即顶层模块可以通过例化参数来修改子模块内定义的参数。

下图为模块例化。

上图右侧是例化的数码管静态显示模块,子模块名是指被例化模块的模块名,而例化模块名相当于标识,当例化多个相同模块时,可以通过例化名来识别哪一个例化,我们一般命名为“u_”+“子模块名”。信号列表中“.”之后的信号是数码管静态显示模块定义的端口信号,括号内的信号则是顶层模块声明的信号,这样就将顶层模块的信号与子模块的信号一一对应起来,同时需要注意信号的位宽要保持一致。

接下来再来介绍一下参数的例化,参数的例化是在模块例化的基础上,增加了对参数的信号定义。

下图为参数例化:

在对参数进行例化时,在模块名的后面加上“#”,表示后面跟着的是参数列表。计时模块定义的MAX_NUM 和顶层模块的 TIME_SHOW 都是等于25000_000,当在顶层模块定义 TIME_SHOW=12500_000时,那么子模块的 MAX_NUM 的值实际上是也等于 12500_000。当然即使子模块包含参数,在做模块的例化时也可以不添加对参数的例化,这样的话,子模块的参数值等于该模块内部实际定义的值。

值得一提的是,Verilog 语法中的localparam 代表的意思同样是参数定义,用法和 parameter 基本一致,区别在于 parameter 定义的参数可以做例化,而 localparam 定义的参数是指本地参数,上层模块不可以对localparam 定义的参数做例化。

注:以上参考正点原子FPGA开发文档。

2、接口(interface)例化说明

3、SV(class)例化说明

参考:最强Verilog例化说明_奇点FPGA的博客-CSDN博客_verilog例化

02、Verilog例化说明相关推荐

  1. Vs code如何快速生成Verilog例化模板

    问题描述 用过很多种编辑器,Vs code对与Verilog的语法支持,以及Vivado关联都是目前我最满意的. 也是我用过安装插件最方便的一款软件,最关键的是它不需要破解,直接在官网下载正版,安装即 ...

  2. 【 Sublime Text 】如何使用Sublime Text直接生成Verilog例化模板

    目录 背景 具体实现方式 其他方法 参考链接 背景 可以这么说,我们使用Sublime Text来编写Verilog代码最希望拥有的功能也就是自动生成Verilog例化模板,这也是我准备弃用notep ...

  3. (41)System Verilog 例化System Verilog模块

    (41)System Verilog 例化System Verilog模块 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 例化Sys ...

  4. (42)System Verilog 例化Verilog模块

    (42)System Verilog 例化Verilog模块 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 例化Verilog模块 ...

  5. FPGA学习-Verilog例化说明

    原文作者:FPGA设计论坛 Verilog例化说明 1.什么是模块例化?为什么要例化? 模块例化可以理解成模块调用.对于一个FPGA工程,通常是由一个顶层模块与多个功能子模块组成,为了实现顶层模块与子 ...

  6. 最强Verilog例化说明

    文章目录 Verilog例化说明 1.什么是模块例化?为什么要例化? 2.实例说明例化方法 Verilog例化说明 1.什么是模块例化?为什么要例化? 模块例化可以理解成模块调用.对于一个FPGA工程 ...

  7. Verilog初级教程(7)Verilog模块例化以及悬空端口的处理

    博文目录 写在前面 正文 按顺序排列的端口连接 按名称排列的端口连接 未连接/悬空端口处理 关于模块端口的说明 参考资料 交个朋友 写在前面 此系列相关博文: Verilog初级教程(6)Verilo ...

  8. (16)Verilog模块例化-基本语法(四)(第4天)

    (16)Verilog模块例化-基本语法(四)(第4天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Verilog模块例化-基本语法(四)(第4天) 5)技术 ...

  9. (11)VHDL例化system Verilog

    (11)VHDL例化system Verilog 1.1 目录 1)目录 2)FPGA简介 3)VHDL简介 4)VHDL例化system Verilog 5)结语 1.2 FPGA简介 FPGA(F ...

最新文章

  1. 为什么以太坊能成为区块链2.0的代表之作?
  2. iOS中构造函数与析构函数
  3. 互联网协议 — HTTP/3 超文本传输协议第 3 版
  4. LLVM 与 Clang 介绍 — LinuxTOY
  5. python使用ffmpeg截取视频段
  6. linux中如何复制文件并重命名_linux 下怎么复制一个文件到另外一个目录并且重命名...
  7. 关于 redis crackit 安全事件分析
  8. POI java导出Excel宏文件
  9. redis实现分布式锁的几种方式
  10. 2023成都理工大学计算机考研信息汇总
  11. 全网无损音乐、超清视频免费下!
  12. 企业内部短信模板大全分析
  13. back_insert_iterator
  14. OSChina 周三乱弹 —— 念念不忘,必有回响
  15. python好学吗要有什么基础-Python0基础好学吗?
  16. debussy下载及安装
  17. msp心形16个闪灯c语言程序,心形流水灯程序
  18. DOCTYPE 的作用是什么
  19. Codeforces 1635 E. Cars 二分图+拓扑排序
  20. 中小学语文在线学习辅导哪家好?优质课程随你挑

热门文章

  1. 华为服务器在哪里看型号,服务器型号怎么看
  2. 解决ECharts中使用tooltip时鼠标移入抖动问题
  3. 累了、倦了、撑不下去了,静下心来看一看
  4. Arduino 下初试 stm32开发板
  5. 【iOS】苹果登录Sign in with Apple
  6. 乐高教育版45544零件---分类识别
  7. 贝壳找房APP安装包瘦身
  8. 怎html样在图片两边加上空白,怎样在博客两边空白处加上自己喜欢的图片?
  9. Lombok 的作者,成功讨伐 IntelliJ IDEA!
  10. Python实现行业轮动量化选股【附完整源码】