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

【Verilog】Verilog 基础【1】从零到一:语法核心与设计起点

1. 为什么Verilog是数字电路的起点第一次接触Verilog时很多人会疑惑为什么不用C语言直接写硬件这要从数字电路设计的本质说起。想象一下你要设计一个自动售货机的控制芯片需要处理硬币识别、商品选择、找零计算等复杂逻辑。如果用传统电路设计方法可能需要画上千个逻辑门和触发器工作量堪比用积木搭建摩天大楼。Verilog就像硬件设计的高级语言它允许我们用代码描述电路功能比如如果投币满10元就亮绿灯自动转换成实际电路综合工具完成仿真验证后再生产芯片避免百万美元的流片失误我在设计第一块FPGA板卡时曾用两周时间手绘状态机电路图后来用Verilog重写只用了3天。这种效率差异在复杂设计中会呈指数级放大。2. 从灯泡到芯片Verilog基础语法精要2.1 硬件世界的变量线网与寄存器想象你在连接电路板wire线网就像裸露的铜线wire button_press; // 一根连接按钮的导线 assign button_press ~btn; // 按钮按下时为低电平reg寄存器则是带记忆的元件reg [7:0] counter; // 8位计数器 always (posedge clk) counter counter 1; // 每个时钟周期加1关键区别特性wirereg是否需要驱动源必须可选能否存储值不能能典型用途模块间连接状态保持2.2 数字的方言Verilog数值表示Verilog的数字声明像带口音的英语8hFF // 8位十六进制数255 16b1010_1100_1111_0000 // 16位二进制数下划线增强可读性 32d100 // 32位十进制数100特别注意未指定位宽时默认32位x表示未知值仿真时常见z用于三态总线比如共享内存接口2.3 模块硬件世界的乐高积木一个完整的LED闪烁模块示例module blink( input wire clk, // 50MHz时钟输入 input wire rst_n, // 低电平复位 output reg led // LED输出 ); reg [23:0] counter; // 24位计数器 always (posedge clk or negedge rst_n) begin if(!rst_n) begin counter 0; led 0; end else begin counter counter 1; if(counter 24hFFFFFF) // 约0.3秒翻转一次 led ~led; end end endmodule这个例子展示了模块的输入/输出声明时序逻辑的always块非阻塞赋值()的使用简单的复位控制3. 硬件思维的培养从语法到电路3.1 连续赋值与组合逻辑assign语句就像用永久马克笔在电路板上画线wire [3:0] sum a b; // 4位加法器 wire eq (a b); // 比较器实测经验所有右值变化会立即更新左值适合实现解码器、多路选择器等组合逻辑要避免组合逻辑环路比如assign a ~a3.2 过程块与时序逻辑always块是构建存储元件的关键// D触发器实现 reg q; always (posedge clk) begin q d; // 时钟上升沿锁存数据 end常见模式同步复位always (posedge clk)异步复位always (posedge clk or posedge rst)电平敏感always (*)组合逻辑3.3 运算符的硬件意义Verilog每个运算符都对应硬件结构wire [1:0] sel; wire [3:0] out (sel 2b00) ? 4b0001 : (sel 2b01) ? 4b0010 : (sel 2b10) ? 4b0100 : 4b1000; // 2-4译码器运算符硬件映射表运算符硬件等效延迟特性与门阵列随输入数增加而增大移位寄存器几乎零延迟加法器链进位传播延迟?:多路选择器传输延迟4. 新手避坑指南4.1 阻塞与非阻塞赋值的血泪史我曾调试一个状态机三天最终发现是赋值用错// 错误示范混合使用 always (posedge clk) begin a b; // 阻塞赋值 c a; // 非阻塞赋值 end // 正确做法统一风格 always (posedge clk) begin a b; // 非阻塞用于时序逻辑 c a; end记忆口诀阻塞赋值()像C语言立即生效用于组合逻辑非阻塞赋值()所有赋值同时生效用于时序逻辑4.2 位宽不匹配的隐藏陷阱这是FPGA设计中最常见的错误之一reg [7:0] result; reg [3:0] a, b; always (*) begin result a b; // 可能溢出应改为result {4b0,a} {4b0,b} end安全做法所有运算前统一扩展位宽使用$signed()处理有符号数关键路径手动指定位宽4.3 仿真与现实的差距在仿真中能跑≠能综合成硬件// 不可综合的代码示例 always (posedge clk) begin #10 result input; // 仿真延迟在硬件中不存在 end可综合代码的特征明确时钟和复位信号不使用initial块少数FPGA支持避免无限循环和动态内存分配5. 实战从零设计一个PWM控制器让我们用刚学的知识实现呼吸灯效果module pwm_breath( input wire clk, // 50MHz input wire rst_n, // 异步复位 output wire pwm_out // PWM输出 ); reg [7:0] counter; // 8位PWM计数器 reg [7:0] duty_cycle; // 占空比 reg direction; // 增减方向 // PWM生成 assign pwm_out (counter duty_cycle); // 计数器递增 always (posedge clk or negedge rst_n) begin if(!rst_n) begin counter 0; duty_cycle 0; direction 0; end else begin counter counter 1; // 每256个周期调整一次占空比 if(counter 255) begin if(direction) duty_cycle duty_cycle - 1; else duty_cycle duty_cycle 1; if(duty_cycle 255) direction 1; else if(duty_cycle 0) direction 0; end end end endmodule这个设计包含8位PWM计数器0-255循环可调占空比duty_cycle自动呼吸效果增减方向控制纯同步逻辑设计烧录到FPGA后你会看到LED呈现平滑的呼吸效果。通过这个实例可以直观理解寄存器如何保持状态组合输出如何生成时钟同步的重要性参数化设计的思想建议尝试修改调整呼吸速度修改计数位宽增加多个PWM通道添加外部控制接口

相关文章:

【Verilog】Verilog 基础【1】从零到一:语法核心与设计起点

1. 为什么Verilog是数字电路的起点? 第一次接触Verilog时,很多人会疑惑:为什么不用C语言直接写硬件?这要从数字电路设计的本质说起。想象一下,你要设计一个自动售货机的控制芯片,需要处理硬币识别、商品选择…...

大学生C语言课设实战:五子棋项目开发避坑指南(附完整源码)

大学生C语言课设实战:五子棋项目开发避坑指南(附完整源码) 五子棋作为经典棋类游戏,是C语言课程设计的常见选题。它不仅涵盖基础语法训练,还能锻炼模块化设计、算法实现和图形交互等核心能力。但在实际开发中&#xf…...

HeyGem批量版WebUI实测:口型同步自然,数字人视频生成效果展示

HeyGem批量版WebUI实测:口型同步自然,数字人视频生成效果展示 1. 数字人视频生成技术概览 数字人视频生成技术正在重塑内容创作方式。这项技术通过AI算法将输入的音频与视频素材智能结合,生成口型完全同步的数字人视频。相比传统视频制作需…...

PyTorch 2.8镜像创意应用:短视频创作者私有化AI视频生成工作流搭建

PyTorch 2.8镜像创意应用:短视频创作者私有化AI视频生成工作流搭建 1. 为什么短视频创作者需要私有化AI工作流 短视频创作行业正面临内容同质化严重、制作成本高企的痛点。传统工作流中,一个专业视频从创意到成品需要经历脚本创作、分镜绘制、素材拍摄…...

保姆级教程:在Ubuntu 24.04上从零部署Cloudreve私有网盘(含Nginx反代与HTTPS配置)

在Ubuntu 24.04上构建企业级私有云盘:Cloudreve全栈部署指南 当数据主权成为数字时代的新命题,越来越多的技术团队开始重新审视公有云存储的边界。本文将带您从零构建一个支持多存储后端、具备生产级可靠性的私有云盘系统——基于开源项目Cloudreve的完整…...

VMware macOS解锁神器:Auto-Unlocker完全指南与实战解析

VMware macOS解锁神器:Auto-Unlocker完全指南与实战解析 【免费下载链接】auto-unlocker Unlocker for VMWare macOS 项目地址: https://gitcode.com/gh_mirrors/au/auto-unlocker 在虚拟化技术日益普及的今天,许多开发者和技术爱好者都希望在Win…...

多链路聚合路由终端 高速网络与便携性的完美融合 YUOUT 宇东技术 5G HDMI视频无线图传 雄师M9多链路聚合终端 支持双向语音对讲 北斗定位 多链路聚合终端 YD-LY3001-5G

随着万物互联时代的到来,很多行业对网络传输的稳定性,高速传输性,安全性,随时随地性,提出来更高的要求,例如:应急指挥、施工现场、多场景直播、安防特种车辆、对视频传输这一块有极高的需求。该…...

TI F28P65 使用 ePWM 模块模拟 SPI 时钟的详细方法

引言 在嵌入式开发中,当芯片自带的硬件SPI接口数量不足,或者需要适配非标准时钟极性与相位的SPI从设备时,利用TI C2000系列芯片(如F28P65x)强大的ePWM(增强型脉宽调制)模块来模拟SPI时钟是一种…...

告别提示词工程:用RL训练你的LLM智能体,让它学会自己“上网搜答案”

智能体进化论:用强化学习解锁大模型的自主工具调用能力 当ChatGPT第一次展示出惊人的文本生成能力时,整个科技界为之震动。但很快,开发者们发现了一个尴尬的现实——这些看似无所不知的模型,在实际应用中常常表现得像个"书呆…...

深入解析Neurosim芯片架构设计(二):从Tile到PE的层次化实现

1. Neurosim芯片的层次化架构全景 第一次看到Neurosim芯片的架构图时,那种感觉就像初次拆解俄罗斯套娃——从最外层的Chip Level开始,逐层打开Tile、PE、Sub-array这些精妙的层级结构。这种层次化设计可不是为了好看,而是实实在在解决了神经网…...

副篇:从元融合到意义工程学——DOS痕迹论的实证转化方案

副篇:从元融合到意义工程学 ——DOS痕迹论的实证转化方案 引言:诊断之后是什么 《全球元融合史——DOS历史唯物观》完成了一项诊断工作。它以“痕迹”为微观中介,重新描述了从狩猎采集到算法时代的意义生态系统演化,揭示了现代性意…...

Cursor破解工具终极指南:三步解锁AI编程助手完整功能

Cursor破解工具终极指南:三步解锁AI编程助手完整功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tria…...

ClickOnce部署避坑指南:解决.NET Framework 4.7.2系统必备组件本地化下载失败问题

1. ClickOnce部署中的.NET Framework多语言包问题 最近在用Visual Studio的ClickOnce技术部署一个多语言Windows应用时,遇到了一个让人头疼的问题。每次发布都会报错说找不到.NET Framework 4.7.2的英文和中文安装包。错误信息明确提示需要两个文件:NDP…...

如何快速抢到演唱会门票:DamaiHelper抢票工具完整指南

如何快速抢到演唱会门票:DamaiHelper抢票工具完整指南 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 还在为抢不到心仪演唱会门票…...

微信群消息自动流转:3分钟搭建你的智能同步系统

微信群消息自动流转:3分钟搭建你的智能同步系统 【免费下载链接】wechat-forwarding 在微信群之间转发消息 项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding 你是否厌倦了在多个微信群之间手动转发重要消息?是否曾因信息同步不及…...

西安交通大学学位论文LaTeX模板终极使用指南:从安装到定稿的完整流程

西安交通大学学位论文LaTeX模板终极使用指南:从安装到定稿的完整流程 【免费下载链接】XJTU-thesis 西安交通大学学位论文模板(LaTeX)(适用硕士、博士学位)An official LaTeX template for Xian Jiaotong University d…...

织梦素材站网站源码 资源付费下载交易平台源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 织梦素材站网站源码 资源付费下载交易平台源码 安装教程: 测试环境:Nginx PHP5.6 MySQL5.7 导入数据库文件:数据库.sql 数据库修改文件&#xf…...

HunterPie终极指南:如何用这款免费工具提升《怪物猎人世界》狩猎体验

HunterPie终极指南:如何用这款免费工具提升《怪物猎人世界》狩猎体验 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/h…...

智慧停车系统无人值守停车、充电系统(含小程序源码、后端源码、岗亭端源码)

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 无人值守停车、充电系统(含小程序源码、后端源码、停车屏,岗亭源码) 智慧停车系统,智慧充电系统、主要实现车辆停车系统操作管理、车辆充电管理、车辆停车…...

5步掌握gInk:Windows上最轻量的免费屏幕标注工具完整教程

5步掌握gInk:Windows上最轻量的免费屏幕标注工具完整教程 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk 你是否需要在演示时快速圈出重点内容,或…...

Dism++终极指南:快速清理优化Windows系统的免费利器

Dism终极指南:快速清理优化Windows系统的免费利器 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 你的Windows电脑是不是越来越慢?C盘空…...

从流量包到Flag:一次CTF Misc挑战中的Python加密流量逆向实战

1. 初识CTF流量分析题 第一次接触CTF Misc类题目时,面对pcap流量包总有种无从下手的感觉。记得那次攻防世界的比赛,题目给了一个名为xxx.pcap的文件,打开Wireshark一看,满屏的TCP和HTTP流量让人眼花缭乱。当时我尝试用http.reques…...

Oracle EBS运行时接口漏洞导致数据泄露 (CVE-2025–61884) 技术分析

CVE-2025–61884 已被披露,涉及 Oracle E-Business Suite (EBS)。受影响组件为 Oracle Configurator Runtime UI,攻击者可在登录前通过未认证的 HTTP 请求利用该漏洞。成功利用可能导致配置相关数据被未授权访问。官方报告的受影响版本为 12.2.3–12.2.1…...

如何用WeChatMsg一键永久保存微信聊天记录:从数据备份到AI训练完全指南

如何用WeChatMsg一键永久保存微信聊天记录:从数据备份到AI训练完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_T…...

ExtractorSharp终极指南:5步掌握游戏资源编辑神器

ExtractorSharp终极指南:5步掌握游戏资源编辑神器 【免费下载链接】ExtractorSharp Game Resources Editor 项目地址: https://gitcode.com/gh_mirrors/ex/ExtractorSharp 如果你正在寻找一款强大的游戏资源编辑工具,ExtractorSharp绝对是你的不二…...

【香橙派实战指南】从零到一:系统镜像烧录与首次启动全解析

1. 硬件准备与选型指南 第一次拿到香橙派开发板时,我盯着那个巴掌大的小盒子看了半天——这玩意儿真能当电脑用?后来折腾了三天三夜才明白,选对硬件配件比技术操作更重要。先说TF卡这个最容易翻车的部件,去年双十一贪便宜买了某杂…...

用PyTorch从零复现U-Net:手把手教你搞定医学图像分割(附完整代码)

用PyTorch从零复现U-Net:手把手教你搞定医学图像分割(附完整代码) 医学图像分割一直是计算机视觉领域最具挑战性的任务之一。想象一下,当医生需要从CT扫描中精确识别肿瘤边界,或是研究人员要分析显微镜下的细胞结构时&…...

解锁AI编程新境界:Cursor-Free-VIP全面指南

解锁AI编程新境界:Cursor-Free-VIP全面指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request…...

3步实现飞书文档本地转换:Cloud Document Converter全场景解决方案

3步实现飞书文档本地转换:Cloud Document Converter全场景解决方案 【免费下载链接】cloud-document-converter Convert Lark Doc to Markdown 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-document-converter 想象一下,当你需要将飞书文…...

WebPShop:Adobe Photoshop插件架构深度解析与WebP格式集成技术实现

WebPShop:Adobe Photoshop插件架构深度解析与WebP格式集成技术实现 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop 在数字图像处理领域,WebP格式以其卓…...