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

FPGA基础 -- Verilog 门级建模

一、什么是 Verilog 的门级建模?

Verilog 中的建模方式有三种层级:

建模层级描述适用场景
行为级建模(Behavioral)使用 alwaysif/elsecase 描述行为通用逻辑/控制流程建模
数据流级建模(Dataflow)使用运算符表达式(assign简单组合逻辑、加法器、比较器等
门级建模(Gate-Level)使用 Verilog 内建的基本门元件进行建模结构级建模、与电路原理图一致的设计表达

门级建模是通过调用 Verilog 中的内建原语(primitive gates)来构造电路,模拟出真实门电路逻辑连接过程。可理解为电路图的代码表达方式。


二、Verilog 常用的门级原语(Primitive Gates)

Verilog 提供了以下内建逻辑门:

1. 基本逻辑门

原语逻辑功能描述
and与门输出为所有输入之与
or或门输出为所有输入之或
not非门输出为输入的取反
xor异或门两输入不同为1
nand与非门and 的反逻辑
nor或非门or 的反逻辑
xnor同或门xor 的反逻辑

2. 三态门

原语描述
bufif1, bufif0条件缓冲器:高电平/低电平使能下输出
notif1, notif0条件非门:高电平/低电平使能下输出反

三、Verilog 门级建模代码实例

例1:构建一个简单的与非门电路 nand_out = ~(a & b)

module nand_gate_example(output y, input a, input b);wire w1;and (w1, a, b);     // and门:w1 = a & bnot (y, w1);        // not门:y = ~w1
endmodule

或者更简洁地:

module nand_gate_example(output y, input a, input b);nand (y, a, b);     // 直接使用 Verilog 的 nand 原语
endmodule

例2:构建半加器 Half Adder

输入输出
A, BSum, Carry
module half_adder(output sum, carry, input a, b);xor (sum, a, b);    // sum = a ^ band (carry, a, b);  // carry = a & b
endmodule

四、门级建模的工程价值与局限

优势

  • 非常贴近硬件原理图,适合教学、逻辑级仿真或逆向工程场景;
  • 可以用于 自动生成 Netlist 的回灌仿真(Back Annotation)
  • 便于理解布局布线后的逻辑功能;

局限

  • 不适合开发复杂系统(FSM、CPU 等);
  • 可读性差、难以维护;
  • 可综合性较差(部分原语不能直接综合);
  • 时序和 CDC(跨时钟域)不易表达;

五、门级建模在实际工程中的应用场景

场景示例
1. 回灌仿真(Gate-Level Simulation)Vivado/Quartus P&R 后导出 .v netlist 文件进行功能仿真与功耗分析
2. 静态分析(STA)路径可视化与 TimeQuest/Vivado STA 工具配合调试逻辑路径
3. 教学/电路结构设计练习初学者构建逻辑门电路模型
4. 自定义原语模型/库与模拟建模混合设计中自定义门级行为,如 delay 模型

六、门级建模与延迟(延伸)

Verilog 支持在门级建模中使用 延迟模型

and #(5) u1 (y, a, b);         // 传播延迟 5 时间单位
and #(3, 4) u2 (y, a, b);      // 上升延迟 3,下降延迟 4

用于 延时仿真建模、时序验证、行为近似建模,但实际综合会忽略这些延迟信息。


总结

项目描述
适用阶段初学者、结构电路建模、Netlist 仿真
编码方法使用 and/or/nand/nor/not/xor/xnor 等原语
工程建议用于结构表达与验证回灌,不适合构建复杂系统
与 P&R 关系门级建模常用于 P&R 后回灌仿真与功耗估计
补充工具搭配 Vivado Netlist Viewer、RTL Viewer 使用

相关文章:

  • MIT 6.S081 2020 Lab9 File Systems 个人全流程
  • 【Java并发】volatile 与 synchronized 关键字
  • MySQL的事务隔离级别、锁机制、MVCC的原理
  • 【pytest进阶】pytest详解及进阶使用
  • 开源 Arkts 鸿蒙应用 开发(一)工程文件分析
  • QT中使用QVTKOpenGLNativeWidget显示三维图形(VTK9.x以上版本)
  • Python FastAPI详解
  • CentOS7 安装最新版 Docker
  • LLM大模型系列(十):深度解析 Prefill-Decode 分离式部署架构
  • 代码随想录打卡第三十天 动态规划
  • java集合(十七) ---- TreeSet 类
  • win10系统外接触控显示屏触摸校准
  • mysql 学习
  • Sequelize mysql2驱动 不支持 caching_sha2_password
  • 【wsl】docker
  • datawhale Dify动手实践教程 第1次笔记
  • 课设作业图书管理系统
  • UWB协议精读:IEEE 802.15.4z-2020,15. HRP UWB PHY, STS, HRP-ERDEV, BPRF, HPRF,
  • 探秘卷积神经网络(CNN):从原理到实战的深度解析
  • 红队攻防渗透技术实战流程:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • 适合0基础网站开发软件/商品标题优化
  • 移动商城网站建设 深圳/武汉推广系统
  • h5case什么网站/怎么让百度搜索靠前
  • 建设银行网站的机构/网络科技公司经营范围
  • 做淘宝图的素材搜索网站/找代写文章写手
  • ps做网站主页图片/软文写作发布