自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Verilog的代码编写技术

本文系统阐述了硬件描述语言(HDL)的高级编码规范与工程实践准则。重点内容包括:基础编码规范(命名规则、文件头信息、端口声明);时钟复位设计策略(同步释放、多时钟域处理);可综合编码要点(敏感信号列表、阻塞/非阻塞赋值);模块划分原则(寄存器输出、关键路径隔离);以及验证调试技巧(测试平台编写、后端仿真流程)。全文构建了一套完整的代码编写方法论,旨在提升代码质量、可维护性和设计可靠性,帮助开发者规避常见陷阱,优化综合结果。

2025-10-08 23:01:22 1045

原创 Verilog代码书写规范

本文介绍了Verilog代码的可综合指导原则和风格规范。可综合部分强调代码需能被正确转换为硬件电路,列举了initial语句、不确定循环等不可综合结构,并提出了同步设计、进程分离、赋值方式等核心原则。代码风格部分则从模块化、命名规则、端口定义等方面规范编码实践,强调注释完整、格式整洁以提高可读性和可维护性。全文旨在帮助开发者编写高质量、可综合的Verilog代码。

2025-10-08 20:26:38 451

原创 汇编语言Debug工具与常用指令完全指南

本文系统介绍了汇编语言的核心指令和Debug调试工具的使用方法。主要内容包括:1) Debug调试工具的常用命令详解(A、T、R、D、E等);2) 汇编语言基本指令分类讲解,重点涵盖数据传送、算术运算、逻辑处理等核心指令;3) 通过计算累加和、字符串复制等实战案例演示汇编编程;4) 提供常见问题解决方案和调试技巧。文章采用"理论+实例"的教学模式,适合汇编语言初学者快速掌握基础知识和调试技能,强调通过Debug工具验证指令功能是学习汇编语言的有效途径。

2025-10-03 14:48:51 606

原创 【最终章】-串口收发指令处理器-Verilog语法学习EP12

这篇文章介绍了将串口接收和发送模块整合为指令处理系统的过程。主要内容包括:1)创建cmd_pro.v模块实现指令处理功能,包含4种运算指令的状态机控制;2)构建UART_top.v顶层模块,集成串口收发和指令处理模块;3)编写测试平台UART_top_tb进行功能验证。系统通过状态机依次接收指令和操作数,执行运算后返回结果,测试波形验证了设计的正确性。该设计可作为FPGA串口通信的入门实例,文章还提到这是基于李老师课程的学习成果,代码已公开供参考。

2025-09-23 21:13:17 302

原创 Verilog语法学习EP11:串口发送模块

该设计实现了一个UART串口发送模块,主要功能包括:1. 支持8位数据发送,包含起始位和停止位;2. 采用5000个时钟周期的波特率;3. 提供就绪信号rdy指示空闲状态。模块通过状态机控制发送过程:状态0等待使能信号,状态1完成数据移位发送。测试向量验证了模块的基本功能,包括复位、使能信号触发和数据发送过程。仿真波形显示模块能正确响应使能信号并按预期输出串行数据。

2025-09-23 17:25:23 322

原创 Verilog语法学习EP10:串口接收模块

本文设计了一个串口接收模块UART_RXer,采用状态机实现4800波特率的数据接收。模块包含空闲检测、起始位识别、8位数据接收和输出使能等状态,通过计数器精确控制采样时序。测试平台UART_RXer_tb验证了模块功能,成功接收并输出测试数据0xaa。关键设计包括:1)状态机控制接收流程;2)计数器实现精确位采样;3)移位寄存器处理串行数据。该模块实现了稳定的串口数据接收功能,适用于低速通信场景。

2025-09-18 20:51:26 181

原创 什么是Verilog中的阻塞式赋值和非阻塞式赋值,一篇文章说清楚!

Verilog中阻塞赋值与非阻塞赋值的核心区别在于执行方式:阻塞赋值(=)顺序执行,会阻塞后续语句;非阻塞赋值(<=)并行执行,所有计算同时开始,赋值在当前时间步结束时完成。阻塞赋值适用于组合逻辑,非阻塞赋值必须用于时序逻辑以避免竞争冒险。关键设计原则包括:时序电路/锁存器用非阻塞赋值,组合逻辑用阻塞赋值,同一always块中不混用两种赋值,不为同一变量设置多驱动源。正确使用这两种赋值方式是编写可靠Verilog代码的基础。

2025-09-18 09:50:17 381

原创 【总结】Verilog语法学习基础合集

本文摘要: Verilog语法分为三部分重点内容:1)模块结构:包括端口定义、I/O说明和功能定义三种方法,强调输入输出端口只能为wire类型;2)数据类型:包括net(线网)、register(寄存器)和parameter(参数)三类,重点说明reg和wire的使用场景及常见错误;3)流程控制:详细讲解if-else语句的嵌套规则、case语句三种形式及避免锁存器的方法,以及for/repeat/while/forever四种循环语句的特点和应用场景。文章特别强调可综合设计中的注意事项,如阻塞与非阻塞赋值

2025-09-18 08:42:19 942

原创 为STM32F1和F4系列的单片机CMAKE工程打开软硬件浮点加速,解决无法sprintf浮点数的问题

摘要:本文介绍了在STM32F411CEU6(Cortex-M4F)和STM32F103C8T6(Cortex-M3)上配置CMake支持浮点运算的方法。对于F411需添加硬件FPU编译选项(-mfpu=fpv4-sp-d16 -mfloat-abi=hard)和printf浮点支持(-u_printf_float);F103仅需添加-u_printf_float实现软件浮点打印。两者都需要正确实现串口重定向函数。文章对比了两款芯片的浮点性能差异,并提醒注意硬件特性区别及资源消耗问题。

2025-09-17 21:39:07 918

原创 Verilog语法学习EP9:最简单的状态机,三角波发生器模块

本文介绍了一个带平顶功能的三角波发生器Verilog实现。该设计采用4状态状态机控制波形生成过程:上升、上平顶、下降、下平顶。通过8位计数器con控制平顶持续时间,9位输出d_out实现0-299的三角波输出。测试波形验证了设计的正确性,展示了状态机在数字电路设计中的重要性。代码简洁规范,体现了Verilog状态机设计的基本方法。

2025-09-14 20:30:37 220

原创 Verilog语法学习EP8:相邻16点相加模块

该设计实现了一个16点相邻采样累加器模块,可将输入的8位采样信号(转换为补码形式)进行16次累加。关键设计包括:1) 通过补码转换处理有符号数;2) 采样时钟上升沿检测;3) 16次循环计数控制累加过程;4) 累加结果12位输出并产生同步脉冲。测试平台验证了全1输入时的正确累加功能,仿真波形显示模块能正确完成16次累加(0+1×16=16)并输出结果,符合设计要求。

2025-09-14 17:05:40 168

原创 Verilog语法学习EP7:秒脉冲计数器0-9模块

本文介绍了一个0-9循环秒计数器的Verilog实现。该模块包含24MHz时钟分频逻辑,每秒产生一个脉冲信号驱动计数器。测试脚本通过初始化时钟和复位信号进行验证,仿真波形显示功能符合设计预期。代码采用参数化设计便于修改时钟频率,并通过条件编译加快了仿真速度。

2025-09-14 15:41:32 214

原创 Verilog语法学习EP6:四位伪随机码生成器模块

本文设计了一个四位伪随机码生成器模块及测试脚本。该模块采用线性反馈移位寄存器结构,在时钟上升沿或复位信号下降沿触发,通过模2加法实现伪随机序列生成。测试脚本通过Modelsim仿真验证了模块功能,结果显示输出波形符合设计标准。仿真过程中设置了17ns的初始复位时间,600ns后停止仿真,验证了模块在正常工作和复位状态下的正确性。

2025-09-13 16:39:28 185

原创 Verilog语法学习EP5:计数器模块

本文设计了一个8位计数器模块,包含时钟和复位信号输入,输出计数结果。测试脚本通过初始化时钟和复位信号,验证了模块功能:复位时输出清零,正常工作时每个时钟周期加1。使用ModelSim进行仿真,结果符合预期,验证了设计的正确性。

2025-09-13 15:40:15 251

原创 Verilog语法学习EP4:七段数码管译码器模块

本文展示了一个七段数码管译码器的Verilog实现及测试脚本。该译码器将4位二进制输入转换为对应的七段数码管控制信号,支持0-9数字显示。测试模块通过Modelsim仿真验证了设计的正确性,波形图与预期逻辑相符。代码采用case语句实现数字到段码的转换,并包含错误处理默认值。测试脚本以10ns间隔递增输入信号,经200ns仿真后停止运行。

2025-09-13 11:56:06 196

原创 基于Keysking教程的STM32单片机开发环境的搭建指引

摘要 本文对比介绍了两种STM32开发环境搭建方案:传统Keil5+STM32CubeMX组合适合初学者快速上手,而现代VSCode+CMake+GCC方案则提供更优的代码编辑体验和跨平台支持。文章详细说明了各工具功能及安装配置步骤,包括STM32CubeMX核心配置、Keil/VSCode环境搭建、交叉编译工具链安装等。特别推荐配合Keysking的视频教程使用,两种方案均需STLink驱动支持。方案选择建议:追求简单选Keil,注重开发体验选VSCode+开源工具链。

2025-09-13 10:07:38 1881

原创 Verilog语法学习EP3:二进制数的补码生成模块

本文介绍了一个8位二进制数补码生成模块的设计与测试。该模块通过检测最高位判断正负:正数补码与原码相同,负数则执行取反加1操作。测试脚本使用ModelSim仿真验证,结果显示正数输出与原码一致,负数补码符合取反加1的计算规则,模块功能正确实现。该设计采用Verilog HDL语言编写,包含模块定义和测试平台,能正确处理8位有符号二进制数的补码转换。

2025-09-12 22:00:02 263

原创 Verilog语法学习EP2:四选一选择器模块

该文展示了一个4选1选择器的Verilog实现,包含模块代码和测试平台。模块根据2位选择信号sel对输入a、b执行不同逻辑运算:与、或、异或及同或。测试平台通过循环递增absel寄存器值来验证所有输入组合,仿真波形验证了设计功能正确。代码采用时序控制(#10延时)进行全覆盖测试,最终通过$stop结束仿真。

2025-09-12 21:52:31 234

原创 Verilog语法学习EP1:Verilog语法学习的环境配置基于vscode+modelsim

本文介绍了在没有FPGA硬件的情况下,使用Modelsim仿真工具和VSCode编辑器学习Verilog语法的方法。推荐安装Modelsim2020.4SE版本和VSCode的Verilog插件,建议在VSCode中新建专用配置文件管理开发环境,以便实现代码补全功能。文中参考了北京交通大学李金城老师的Verilog入门课程,并对比了不同编辑器(UltraEdit和VSCode)的使用效果。

2025-08-27 16:46:57 255

原创 基于逐飞科技的DRV8701E双路有刷电机驱动设计分析_智能车竞赛

本文介绍了基于DRV8701E的有刷电机驱动板设计方案。系统采用RT1064主板供电,通过LR8341A-T33稳压器输出3.3V工作电压。隔离电路使用SN74HC125PWR实现信号隔离,DRV8701E芯片驱动H桥电路,配备滤波和保护电路确保稳定工作。H桥采用东芝N沟道MOSFET,支持30V/150A大电流驱动,通过PWM控制实现电机正反转。该设计集成了多重保护机制,显著提升了系统可靠性,适用于智能车等需要精准调速的应用场景。

2025-07-22 13:58:24 2358

原创 Quartus (Quartus Prime 18.1)出现元器件,标签显示不全解决方案

在上模数电实验的时候,发现自己的元器件放上去会有名称显示不全的情况,搜索了一些资料终于解决了问题,以下是未修改之前的效果👇。接着连按两次确定,不要按了一次确定之后就关闭属性框。3.选中之后,确定,确定,直到所有窗口关闭。1.关闭Quartus软件,右键属性。再次打开软件,问题已经解决。

2025-03-06 09:20:53 875

原创 Quartus Prime Lite安装教程 | 以v18.1为例子(FPGA仿真软件安装)

Quartus 是由英特尔(Intel)旗下子公司 Altera(现已并入英特尔)开发的一款用于 FPGA(现场可编程门阵列)和 CPLD(复杂可编程逻辑器件)设计的集成开发环境(IDE)。它提供了从设计输入、综合、仿真、布局布线到最终编程和调试的完整工具链,广泛应用于硬件设计和嵌入式系统开发中。下载我们需要的包,具体下载可以在。

2025-03-04 11:28:33 5450

原创 解决git出现Git: fatal: Unable to create ‘yourprojectpath/.git/index.l报错

Git作为强大的版本管理工具,在使用过程中难免会遇到一些问题。通过这次排查,我更加熟悉了Git的内部机制,也积累了解决类似问题的经验。希望我的分享能帮助到大家,如果还有其他问题,欢迎在评论区交流讨论!今天在使用VSCode提交代码时,遇到了一个报错问题,经过排查和分析,总结了一套解决方案,分享给同样遇到类似问题的同学。完成上述操作后,返回VSCode,重新尝试提交代码。文件夹可能被隐藏,导致无法直接查看。这种情况下,可以通过手动输入路径进入文件夹。文件夹,但提交时仍然报错,可能是索引文件。

2025-02-16 18:59:00 713

原创 STM32实战项目“口袋示波器与信号发生器” | 按键卡顿问题竟因“静态变量”?按键识别问题解决思路

解耦模块:模块间通过接口通信,降低耦合度保护数据:防止外部模块意外改写关键变量提升性能:消除忙等待,释放CPU资源多模块共享状态标志需要保护的关键配置参数中断与主循环的数据交互如果你遇到过类似问题,或者有更好的优化方案,欢迎在评论区讨论!💬(END)更多嵌入式实战技巧持续更新中...

2025-02-16 14:58:17 492 1

原创 采用硅基流动平台+CherryStudio方案解决网页/APP使用deepseek出现服务器繁忙的问题

由于deepseek的服务器大量访问,自己本地部署deepseek-R1模型满血版本至少需要4张RTX4090显卡,最好需要8张RTX4090显卡,所以本地部署大模型的方案pass。+Cherry Studio来实现流畅使用deepseek-R1满血大模型。,可以选择填写我的邀请码。就行,如果有帮到您的话。4.确认自己选择的是。

2025-02-08 18:14:36 694 1

原创 解决STM32CubeMX安装后只出现启动页面,不显示主页面

这几天一直在折腾stm32cubemx的小毛病,最经常遇到的就是STM32CubeMX安装后只出现启动页面,不显示主页面这样的问题,经过我不断的摸索,提供了以下解决思路。这个解决的是,有可能会出现为所有用户安装,你需要用管理员身份打开STM32CubeMX,然后还是复现这个问题,比较玄学,可以自己试试有没有帮助。2.下载安装时,选择为本用户安装,不要选为所有用户安装。在这个目录下的有关.stm的所有文件夹。弹出以下内容即为java环境成功配置。1.java环境没有正常配置。

2025-01-24 17:22:44 8392 27

原创 解决STM32CubeIDE安装出现error launching installer和Error! can‘t initialize plug-ins directory报错问题

接着你有可能遇到问题2:Error!can't initialize plug-ins directory, Please try again later.安装包的路径存在中文,例如“G\下载”,有中文路径就会这样报错,所以把下载的安装包移到一个全英文路径就行,此时报错解决。你的用户名是中文,修改系统环境变量TMP和TEMP为全英文路径即可。最近在安装STM32CubeIDE1.16.1的时候出现了以下问题。系统属性->环境变量->用户变量 进行修改。

2025-01-24 17:10:13 4335 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除