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

FPGA基础 -- 什么是 Verilog 的模块(`module`)

一、什么是 Verilog 的模块(module

模块用于定义输入、输出端口功能逻辑,它支持层级结构,即模块可以实例化子模块。

module 模块名 (端口列表
);// 信号声明// 行为或结构描述
endmodule

二、模块的组成部分

组成部分说明
module开始模块定义
input/output/inout定义端口方向,数据类型默认为 wire
内部信号声明wire, reg, integer, parameter
过程语句assign(组合逻辑), always, initial(时序或行为描述)
子模块实例化使用 模块名 实例名(...) 实例化子模块
endmodule结束模块定义

三、Verilog 模块示例

✅ 示例1:简单与门模块

module and_gate (input wire a,input wire b,output wire y
);assign y = a & b;endmodule

说明:

  • 使用 assign 实现组合逻辑
  • 输入输出均为 wire 类型

✅ 示例2:时序逻辑模块(D触发器)

module dff (input wire clk,input wire rst,input wire d,output reg q
);always @(posedge clk or posedge rst) beginif (rst)q <= 1'b0;elseq <= d;
endendmodule

说明:

  • always 块建模时序逻辑(posedge clk)
  • qreg 类型 → 可以在过程块中赋值

✅ 示例3:带参数的模块

module adder #(parameter WIDTH = 8
)(input  wire [WIDTH-1:0] a,input  wire [WIDTH-1:0] b,output wire [WIDTH-1:0] sum
);assign sum = a + b;endmodule

说明:

  • parameter 允许模块泛化,支持宽度自定义
  • 使用 #(...) 参数化模块

✅ 示例4:模块实例化

module top;wire a, b, y;// 实例化 and_gate 模块and_gate u1 (.a(a),.b(b),.y(y));endmodule

说明:

  • u1 是实例名,可以实例化多个相同模块
  • .连接形式是命名端口连接,推荐使用

四、模块间的层级结构

Verilog 模块支持层次化设计:

top
├── uart_ctrl
│   ├── baud_rate_gen
│   └── parity_check
└── memory_ctrl└── fifo
  • 每层都是一个独立的 module
  • 支持模块复用(Reusable IP)

五、Verilog 中常见模块类型(工程实用)

模块类型功能说明
数据通路模块加法器、乘法器、比较器、位移器等
状态机模块控制逻辑,如 FSM(有限状态机)
接口模块UART、SPI、I2C、AXI-Lite、FIFO 控制等
存储模块寄存器文件、RAM/ROM、双端口存储器等
验证模块Testbench、驱动器、监控器、断言等

六、模块设计建议(工程实战)

  1. 模块只做一件事,职责清晰(单一职责)
  2. 端口宽度参数化,提升模块复用性
  3. 避免组合逻辑中使用 reg,使代码可综合
  4. 子模块之间通过明确的端口接口通信,避免全局变量
  5. 所有时序逻辑使用同步时钟边沿描述,避免异步时序错误
  6. 注意“组合逻辑漏赋值”问题,需使用 defaultcase default

七、小结

模块元素描述
module定义逻辑功能的实体单元
input/output声明端口
assign组合逻辑建模
always时序或行为逻辑建模
parameter提高模块通用性
实例化将子模块嵌套到顶层或中间模块中

相关文章:

  • 如何本地无损放大图片保持高清画质
  • Ubuntu 22.04.5 LTS 安装搜狗输入法后,无法在Chrome使用
  • Goland使用手册(1)
  • 全面理解BUUCTF-rip1
  • 【MV】key_moments 与 continuous_timeline的编排权衡
  • 数字人矩阵源码技术开发核心功能,定制化开发
  • vue mod方法
  • Record of mounting hard disk on Hikvision platform server
  • 爱普生SG5032EEN差分晶体振荡器的特点
  • 从“执行规则”到“智能决策”,IAM+AI是身份与访问管理的新形态
  • 强化学习:策略梯度概念
  • 如何在 Discourse AI 中设置 Gemini API
  • python打卡day52@浙大疏锦行
  • 国产最高性能USRP SDR平台:国产USRP X440 PRO, 搭载UltraScale+ XCZU48DR芯片
  • 《TCP/IP协议卷1》第14章 DNS:域名系统
  • 让报表成为生产现场的“神经系统”,推动管理自动化升级
  • Vue.js 中 “require is not defined“
  • 使用AkShare获取大A列表
  • GCC编译/连接/优化等选项
  • JavaWeb期末速成 JSP
  • 网站推广方法/全国新增确诊病例
  • 做网站推广用优化还是竞价/怎么提升关键词的质量度
  • 山东建设网站首页/自动点击器安卓
  • 南通网站开发公司/短视频seo关键词
  • 讯响模板网站/外链下载
  • 北京专业网站改版公司/网络广告营销成功案例