FPGA基础 -- Verilog行为级建模之alawys语句

Verilog 中的 always 语句块,这是行为级建模的核心结构之一,在 RTL 级设计中广泛用于时序逻辑组合逻辑的建模。


一、什么是 always 语句?

✅ 定义:

always 语句用于描述可综合的硬件行为逻辑,表示一个**“事件驱动”的过程块**,当敏感列表中某个信号发生变化时,always 块会立即触发执行。


二、基本语法格式

always @(sensitivity_list)begin// 过程性代码end

sensitivity_list 是触发该块执行的信号列表。


三、分类:三种常见 always 使用方式

类型敏感列表用途典型应用
时序逻辑posedge clk / negedge rst_n同步逻辑寄存器建模、状态机
组合逻辑(*) 或所有组合信号列出无时序行为算术逻辑单元(ALU)
异步逻辑posedge clk or negedge rst异步复位结构上电初始化控制

四、时序逻辑建模(推荐使用方式)

4.1 同步复位寄存器建模:

always @(posedge clk) beginif (!rst_n)q <= 0;elseq <= d;
end

✅ 非阻塞赋值 <=,确保“并行硬件”的表达。

4.2 异步复位建模:

always @(posedge clk or negedge rst_n) beginif (!rst_n)q <= 0;elseq <= d;
end

posedge clk or negedge rst_n:表示 rst_n 变化时立即响应。


五、组合逻辑建模

推荐使用 always @(*)

always @(*) begincase (sel)2'b00: y = a;2'b01: y = b;default: y = 0;endcase
end

✅ 使用 = 阻塞赋值。
✅ 确保对每个输出都完全赋值,否则综合工具会推断出 latch(锁存器)!


六、敏感列表详解

✅ 常见写法对比:

写法解释建议
always @(a or b or c)显式列出每个信号✅ 可控但冗长
always @(*)隐式敏感列表,表示所有用到的组合信号✅ 推荐用于组合逻辑
always @(posedge clk)上升沿触发(时序逻辑)✅ 推荐用于寄存器

七、阻塞/非阻塞赋值回顾(重点)

场景使用赋值类型示例
时序逻辑(同步时钟)非阻塞 <=q <= d;
组合逻辑阻塞 =y = a + b;

⚠️ 错误示例:混用赋值类型

always @(posedge clk) begina = b;   // ❌ 错误:阻塞赋值在时序逻辑中易引发竞态c <= a;  // 实际 c 得到的是旧值,不是当前周期的 b
end

八、综合注意事项(总结)

误用影响修正建议
@(*) 中漏掉信号可能漏更新,综合错误使用 @(*) 自动推导
混用 =<=引起竞态与不符合意图遵循赋值语义规则
不完全赋值可能推断 latch加默认路径 / default 分支
变量多处被赋值冲突或竞态避免变量在多个 always 中赋值

九、典型设计范式:分离时序与组合逻辑

// 状态寄存器
always @(posedge clk or negedge rst_n)if (!rst_n) state <= IDLE;else        state <= next_state;// 下一状态逻辑
always @(*) begincase (state)IDLE:      if (start) next_state = RUN;RUN:       if (done)  next_state = IDLE;default:             next_state = IDLE;endcase
end

✅ 这是 FSM 设计的推荐结构:组合逻辑决定 next_state,时序逻辑更新 state。


十、仿真辅助结构(testbench 中的 always

always #5 clk = ~clk;  // 每 5ns 翻转一次
  • 通常用于生成仿真用时钟;
  • 非综合代码,仅用于 initial 或 testbench。

十一、拓展:SystemVerilog 中的 always_ff / always_comb

类型SystemVerilog 替代特点
时序逻辑always_ff自动检查敏感列表,防止误用
组合逻辑always_comb自动推导敏感列表

✅ 更强语义检查,更安全可维护,但需要 SystemVerilog 工具支持。


十二、实战示例总结:组合 + 寄存器 + 状态机

// 组合逻辑:计数器是否达到最大值
always @(*) begindone = (cnt == 15);
end// 时序逻辑:计数器累加
always @(posedge clk or negedge rst_n) beginif (!rst_n)cnt <= 0;else if (en)cnt <= cnt + 1;
end

小结

内容核心要点
语义always 块是硬件中的过程行为
时序建模使用 posedge clk + 非阻塞赋值
组合建模使用 @(*) + 阻塞赋值,完整赋值
综合约束不可在综合逻辑中使用 #延迟
推荐实践将时序逻辑与组合逻辑分离建模,提高可读性与综合效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87567.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣 简单 C】704. 二分查找

目录 题目 解法一&#xff1a;二分查找 题目 解法一&#xff1a;二分查找 int find(const int* nums, int size, int target) {int left 0, right size - 1;while (left < right){int mid (left right) / 2;if (nums[mid] < target)left left 1;else if (nums[m…

Java并发编程实战 Day 30:并发编程未来展望与最佳实践总结

【Java并发编程实战 Day 30】并发编程未来展望与最佳实践总结 文章简述 经过30天的系统学习&#xff0c;我们从Java并发编程的基础知识逐步深入到高并发系统的架构设计与性能优化。本文作为“Java并发编程实战”系列的收官之作&#xff0c;将全面回顾整个系列的核心内容&#…

量化面试绿皮书:23. 醉酒乘客

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 23. 醉酒乘客 100名乘客排队登机&#xff0c;每人持有一张对应座位的机票&#xff08;第n位乘客的座位号为n&#xff09;。 第一位乘客喝醉后…

AntV G6入门教程

以下教程聚焦于 AntV G6 的 数据操作 API,详细介绍各个方法的用途、参数以及完整的使用示例,帮助你在图实例上精细地读取、修改和管理节点/边/组合等数据。文中示例代码均基于 G6 v5.0.47 官方文档 ([g6.antv.antgroup.com][1])。 一、获取完整图数据 1.1 graph.getData() …

67、数据访问-crud实验-分页数据展示

67、数据访问-crud实验-分页数据展示 分页数据展示是数据访问中常见的功能&#xff0c;用于将大量数据分割成多个页面显示&#xff0c;提升用户体验和系统性能。以下是分页数据展示的相关介绍&#xff1a; #### 基本原理 1. **确定每页显示数量**&#xff1a;设定每页显示的数…

常见 Web 服务器

Web 服务器有很多种&#xff0c;功能和用途略有不同&#xff0c;下面我会分类介绍主流的 Web 服务器&#xff08;包含静态/动态/反向代理支持&#xff09;并重点说明类似 Tomcat 的 Java 支持型。 常见 Web 服务器分类 类型名称描述与特点&#x1f310; 静态资源服务器Nginx高…

【MacOS】M3 Pro芯片MacBook极速搭建Kubernetes

M3 Pro 芯片 MacBook 2023上使用 Colima 安装 Kubernetes。 Colima 轻量、高效&#xff0c;并且在 Apple Silicon 架构上表现出色。 下面是详细的、一步一步的安装和配置指南。 核心思路 我们将通过以下步骤完成整个过程&#xff1a; 准备工作: 安装必要的工具&#xff0c;…

import { Add, Dongdong, UserAdd } from ‘@nutui/icons-react‘ 使用图标导入库报错

import { Add } from "nutui/icons-react-taro"; 官网的导入的库名字不全&#xff0c;后面要加-taro&#xff0c;就行了

猿人学js逆向比赛第一届第七题

分析响应 看到响应体里面的data是个字体加密&#xff0c;于是这里可以看到woff文件也给返回了&#xff0c;这里现分析这个文件。 打开可以看到这里a351对应的是3和页面中的3是对应的&#xff0c;于是用ddddocr动态识别字体文件中的字体&#xff0c;然后对应对应的字体替换是不…

股票心理学习篇:交易的人性弱点 - 频繁交易

以下内容为学习时的笔记整理&#xff0c;视频作者来自B站&#xff1a;老猫与指标 视频链接&#xff1a;频繁交易必死&#xff1f;底层逻辑深度剖析&#xff0c;老猫的的破局心法与实战策略分享 交易的人性弱点 - 频繁交易 主讲人&#xff1a; 老猫 1. 引言&#xff1a;问题的…

WPF入门 #1 WPF布局基础、WPF样式基础、WPF数据模板、WPF绑定

WPF当中有许多的布局容器控件&#xff0c;例如<Grid>、<StackPanel>、<WrapPanel>、<DockPanel>、<UniformGrid>。接下来分别介绍一下各个布局容器控件。 布局基础 Grid <Grid><Grid.RowDefinitions><RowDefinition Height&qu…

开源大型语言模型的文本记忆新突破!

在现代科技的推动下&#xff0c;人工智能领域正在不断地突破人类认知的极限。今年&#xff0c;由斯坦福大学、康奈尔大学和西弗吉尼亚大学的计算机科学家们&#xff0c;与法律学者共同展开了一项引人入胜的研究&#xff0c;聚焦于开源大型语言模型的文本记忆表现。这项研究不仅…

LeetCode 3090.每个字符最多出现两次的最长子字符串

题目链接 https://leetcode.cn/problems/maximum-length-substring-with-two-occurrences/ 题目描述 给定一个字符串 s&#xff0c;找出满足每个字符最多出现两次的最长子字符串&#xff0c;并返回其长度。 示例 输入&#xff1a;s "aabba" 输出&#xff1a;5解…

使用开源NVIDIA cuOpt加速决策优化

使用开源NVIDIA cuOpt加速决策优化 文章目录 使用开源NVIDIA cuOpt加速决策优化决策优化的现实挑战供应链优化的复杂性实时决策的挑战计算复杂性的挑战 NVIDIA cuOpt&#xff1a;GPU加速的决策优化解决方案cuOpt的核心技术架构支持的优化问题类型性能优势分析 实际应用案例&…

【JVM 09-垃圾回收】

垃圾回收 笔记记录 1. 如何判断对象可以回收1.1 引用计数法1.1.1 缺点 1.2 可达性分析算法1.2.1 可达分析、根对象1.2.2 优缺点 1.3 四种引用(强软弱虚)1.3.1 软引用的实际使用案例1.3.2 软引用-引用队列1.3.3 弱引用的实际使用案例 2. 垃圾回收算法2.1 标记清除算法2.2 标记整…

《二叉搜索树》

引言&#xff1a; 上次我们结束了类和对象的收尾&#xff0c;之后我们就要学习一些高级的数据结构&#xff0c;今天我们先来看一个数据结构-- 二叉搜索树。 一&#xff1a; 二叉搜索树的概念(性质) 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是…

【Redis】Sentinel哨兵

&#x1f6e1;️ 深入理解 Redis Sentinel&#xff1a;高可用架构的守护者 在实际开发中&#xff0c;我们常用 Redis 构建缓存系统或数据中间件。然而&#xff0c;主从复制虽然能实现数据同步&#xff0c;但无法自动故障转移&#xff08;failover&#xff09;&#xff0c;这就…

Shell脚本应用及实战演练

文章目录 一、Shell脚本语言的基本结构1、Shell脚本的用途&#xff1a;2、 Shell脚本基本结构&#xff1a;3、 创建Shell脚本过程4、 脚本注释规范 二、Shell脚本语言的变量用法详解位置与预定义变量 三、 Shell字符串详解1、Shell字符串拼接2、Shell字符串截取3、 Shell的格式…

软件工程瀑布模型学习指南

软件工程瀑布模型学习指南 一、瀑布模型核心概念 1.1 定义与特点 瀑布模型是一种经典的软件开发流程,将项目划分为顺序性的阶段,每个阶段有明确的输入和输出,如同瀑布流水般单向推进。其特点包括: 阶段间具有明确的顺序性和依赖性强调文档驱动和阶段评审适合需求明确、稳…

获取gitlab上项目分支版本(二)

获取gitlab上项目分支版本_gitlab代码分支版本在哪-CSDN博客 原先写过一版&#xff0c;但是这次想更新一下项目的分支信息时&#xff0c;提示我 git服务器上的Python版本是2.7.3&#xff0c;这个错误表明当前Python环境中没有安装requests库&#xff0c;服务器也没有连接外网&…