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

FPGA基础 -- Verilog 结构建模

Verilog 的结构建模(Structural Modeling),以适用于初学者打基础、高阶用户实现模块化设计、以及用于大规模设计的系统集成。


一、Verilog 三种建模风格概述

在 Verilog 中,描述硬件系统主要有三种建模方式:

建模方式描述层次特点
行为建模(Behavioral)算法层或行为层使用 always, if, case 等结构建模逻辑功能
数据流建模(Dataflow)数据流层使用连续赋值 assign 语句来描述电路的逻辑关系
结构建模(Structural)结构层使用模块例化(module instantiation)来组装整个系统结构

➡️ 结构建模最接近实际硬件连接方式,适合做系统集成、层次化设计。


二、结构建模的核心思想

🔧 核心概念:模块例化与信号连接

结构建模就是像搭积木一样地“连接模块”,通过顶层模块将各个功能模块组合成一个系统。

比如我们有两个模块:

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

我们可以在顶层结构中例化它:

module top_module;wire x, y, z;and_gate u1 (.a(x), .b(y), .y(z));  // 结构建模实例endmodule

三、结构建模完整实例讲解

1️⃣ 设计目标

设计一个 1 位半加器(half-adder),它由两个基本门电路(异或门 XOR 与 与门 AND)构成:

输入 A输入 B和 Sum进位 Carry
0000
0110
1010
1101

2️⃣ 基本模块实现

XOR 门模块:
module xor_gate (input a,input b,output y
);assign y = a ^ b;
endmodule
AND 门模块:
module and_gate (input a,input b,output y
);assign y = a & b;
endmodule

3️⃣ 结构化地组合半加器

module half_adder (input a,input b,output sum,output carry
);wire xor_out, and_out;xor_gate u1 (.a(a),.b(b),.y(xor_out));and_gate u2 (.a(a),.b(b),.y(and_out));assign sum = xor_out;assign carry = and_out;
endmodule

📌说明:

  • u1u2 是实例化名;
  • xor_gateand_gate 是我们提前写好的模块;
  • assign 是顶层连接语句;

四、结构建模的进阶技巧

✅ 命名规范与层次设计

结构建模适合使用模块分层设计(Hierarchical Design):

module ALU;     // 高层
module adder;   // 中层
module full_adder; // 底层

✅ 支持参数化模块(parameter

结构建模配合参数化可以复用模块:

module mux #(parameter WIDTH = 8) (input [WIDTH-1:0] a, b,input sel,output [WIDTH-1:0] y
);assign y = sel ? b : a;
endmodule

✅ 多实例管理(结构化复用)

mux #(8) u1 (.a(a1), .b(b1), .sel(s1), .y(y1));
mux #(8) u2 (.a(a2), .b(b2), .sel(s2), .y(y2));

五、结构建模适用场景

场景是否推荐结构建模原因
简单逻辑(如小FSM)不如行为建模直观
多模块协同(如图像流水线)✅✅✅可视化连接、清晰层次结构
软核 SoC 搭建(如 CPU + RAM + IO)✅✅✅每个 IP 模块用结构方式集成
Verilog Testbench 验证DUT 模块通常通过结构建模方式加载

六、小结

结构建模是:

  • 通过模块例化 + 信号连接来描述硬件系统;
  • 适合模块层次清晰、功能组合明确的工程;
  • 是实现大规模可复用 FPGA 系统的主流方法。

相关文章:

  • 百度下拉框出词技术解密:72小时出下拉词软件原理分享
  • 零基础开始的网工之路第二十一天------性能优化
  • 从 native 获取 AndroidId,Frida 获取 native 堆栈
  • Vue.js第二节
  • 使用duckduckgo_search python api 进行免费且不限次数的搜索
  • 【unitrix】 3.1 新基本结构体(types1.rs)
  • Python从入门到精通
  • WebRTC(六):ICE协议
  • c++面试题(24)-----数组中出现次数超过一半的数字
  • VisionMaster标定板像素标定,测量尺寸以及opencv/C++实现
  • 【C语言极简自学笔记】重讲运算符
  • 自动打电话软件设计与实现
  • FPGA基础 -- Verilog行为级建模之alawys语句
  • FPGA基础 -- Verilog 行为级建模之条件语句
  • 爬虫技术:从数据获取到智能分析的进阶之路
  • Mac 安装 finalshell
  • WebFuture:PDF页面去掉下载按钮
  • 【算法 day06】LeetCode 454.四数相加II | 15. 三数之和 | 18. 四数之和
  • 23.查询增强
  • 【入门算法】枚举:有序穷举,分步排查
  • 建站行业前景怎么样/北京seo专员
  • 郑州上海做网站的公司有哪些/网店运营工资一般多少
  • wordpress 友言/徐州关键词优化排名
  • 可视化网站建设平台/中国培训网
  • 企业营销微网站建设/百度网站排名搜行者seo
  • 网上购物网站设计/2021年热门关键词