- 博客(154)
- 收藏
- 关注
原创 vivado遇到[Common 17-165] Too many positional options when parsing 问题,别慌
应该是生成了某个文件造成的,理论上删除该文件即可,但若是不小心删除错了文件,有可能白忙活一场;生意建议小白:重新建立工程,把源代码发展过来再。前仿真能通过,但一跑。
2024-12-18 18:16:58
323
原创 使用3-8译码器实现全减器(Verilog详细解析设计篇)
使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。逻辑真值表中,输入信号的每种组合对应着一个输出端的高电平信号,即输出端为高电平(1) 时认为该输出端有输出信号。当然,根据有需要也可以定义输出端为低电平(0) 时认为该输出端有输入信号,此时称输出端低电平有效。
2024-09-13 16:10:26
3143
原创 DDR3 SDRAM操作流程
DDR3 SDRAM的相关操作主要包括上电(Power on)、复位(Reset procedure)、初始化(Initialization)、ZQ对齐(ZQ calibration)、模式寄存器配置(MRS)、自刷新(Selfrefresh)、刷新(Refreshing)、激活(Activating)、读(Reading)、写(Writing)、预充电(Precharging)及低功耗模式。下的相关操作等,而 DDR3 存储控制器的主要功能就是按照操作流程的要求,实现对。
2024-09-09 16:39:46
1150
原创 FPGA Verilog模块化设计入门篇一
FPGA模块化设计是一种重要的设计策略,能够显著提高FPGA设计的可重用性和灵活性。通过合理的模块划分、设计、实现和测试验证等步骤,可以构建出稳定可靠、易于维护和扩展的FPGA系统。在实施FPGA模块化设计时,应注意接口标准化、模块化程度、模块化测试和文档管理等关键问题。
2024-06-03 23:17:14
1428
原创 FPGA verilog入门案例笔记一
Verilog 是一种功能强大的硬件描述语言,支持从简单的逻辑门到复杂的数字系统的建模。通过掌握其基本语法和用法案例,我们可以使用 Verilog 来设计和模拟各种数字电路和系统。希望本文提供的内容能帮助你更好地理解和使用 Verilog。
2024-06-03 22:58:34
1148
原创 操作NUCLEO-G474RE开发板进行串口通信
本文详细介绍了如何操作NUCLEO-G474RE开发板的串口(UART),并通过代码实现数据的发送与接收。通过STM32CubeMX配置UART接口、生成代码、配置串口调试软件和编写代码等操作步骤,可以成功实现开发板与电脑之间的串口通信。同时,通过串口分析可以验证UART接口的正常工作并进行调试和测试。
2024-05-30 20:55:08
1489
原创 FPGA DMA IP核使用指南
数据传输:支持从源地址到目标地址的数据传输。中断管理:提供中断信号,便于CPU处理传输完成事件。传输控制:支持传输大小、方向和暂停/恢复控制。
2024-05-30 20:17:20
1986
原创 FPGA时钟:驱动数字逻辑的核心
在FPGA(现场可编程门阵列)设计中,时钟信号是不可或缺的关键要素。时钟信号作为时序逻辑的心跳,推动着FPGA内部各个存储单元的数据流转。无论是实现复杂的逻辑运算还是处理高速数据流,都需要精确的时钟信号来保证时序的正确性和数据的准确性。本文将详细介绍FPGA时钟的基本概念、时钟电路结构原理以及时钟设计中的重要考量。
2024-05-28 23:33:42
1335
1
原创 FPGA DMA技术分享(赋能高速数据处理的新动力介绍篇)
DMA技术,即直接内存访问技术,允许计算机内部的硬件子系统独立地直接读写系统内存,而无需CPU的介入。在FPGA中,DMA控制器扮演了关键角色,它负责管理数据在FPGA内部和外部存储器之间的传输。具体而言,DMA控制器通过地址总线、数据总线和控制寄存器与内存和其他外设进行通信,实现数据的高效传输。高效性:DMA控制器可以独立地进行数据传输,从而解放了CPU,使其能够专注于其他任务。这大大提高了系统的整体性能。
2024-05-28 20:28:15
3691
原创 C语言中的指针第2篇
指针是C语言中一个强大而复杂的特性,它允许我们直接操作内存地址,实现高效的数据访问和操作。通过深入理解指针的概念和用法,我们可以编写出更加灵活和高效的C语言程序。在前面的部分中,我们探讨了指针的基本概念、指针与数组、指针与函数、指针与动态内存分配等高级话题。这些概念都是相互关联的,它们共同构成了C语言中指针的完整体系。然而,指针的应用远不止于此。在实际开发中,我们可能会遇到更加复杂和多样的场景,需要更加深入地理解和运用指针。例如,在操作系统、嵌入式系统或底层编程中,指针的使用变得尤为重要。
2024-05-21 22:59:14
735
原创 FPGA状态机设计详解
• IDLE:初始状态,对输入的码流进行检测,若为1则跳转到状态A,则为0保留在该状态• A: 对输入的码流进行检测,若为0则跳转到状态B(10),则为1保留在该状态• B: 对输入的码流进行检测,若为0则跳转到状态C(100),则为1则跳转到状态A(101)• C: 对输入的码流进行检测,若为1则跳转到状态D(1001),则为0则跳转到状态IDLE(1000)• D: 对输入的码流进行检测,若为0则跳转到状态E(10010),则为1则跳转到状态A(10011)
2024-05-21 14:50:39
1519
原创 FPGA时序约束(解决满足建立和保持时间,最大时钟频率确定,避免时序违规,优化性能,支持多时钟域设计,支持异步接口等等问题)
FPGA时序约束是确保FPGA设计在各种操作条件下都能满足其时序要求的关键技术。通过合理设置和应用时序约束,设计者可以确保设计的正确性、稳定性和性能优化。在FPGA设计中,时序约束的应用体现在满足建立和保持时间、确定最大时钟频率、优化性能、支持多时钟域设计和支持异步接口等方面。通过案例分析,我们可以看到时序约束在实际设计中的具体实现方法。
2024-05-19 22:16:06
1841
原创 C语言中的指针第1篇(指针的基本概念、指针指针的概念、指针指针的应用、动态内存分配、函数指针、指针指针与数据结构、指针指针与多维数组、总结、指针指针与动态内存分配)
指针指针是C语言中一个强大且灵活的工具,它允许我们直接操作指针本身,从而实现更高级的内存管理和数据结构操作。然而,使用指针指针也需要谨慎,因为不正确的操作可能导致内存泄漏、野指针等问题。因此,在使用指针指针时,我们需要确保对C语言的内存管理规则有深入的理解,并仔细检查我们的代码以确保其正确性和安全性。
2024-05-17 22:28:23
979
1
原创 c语言bug汇总终篇
代码版本控制是团队协作开发中的重要环节,它可以帮助跟踪代码的变更历史、管理不同的代码分支和协作解决冲突。持续集成和持续部署是一种自动化的软件开发实践,可以确保代码变更的及时集成和验证,提高开发效率和质量。忽视代码的可扩展性和可维护性会导致软件难以适应未来的变化,增加后期开发的难度和成本。软件的维护和演进是一个持续的过程,需要不断地更新和改进代码以适应新的需求和变化。忽视代码的重构和优化会导致代码质量下降,影响软件性能和稳定性。随着项目的发展和需求的变更,代码结构和逻辑可能会变得复杂和冗余。
2024-05-17 22:06:30
863
原创 c语言bug汇总中篇5
如果团队成员使用不同的代码风格,会导致代码看起来杂乱无章,增加阅读和理解的成本。文档注释是代码中非常重要的部分,它可以帮助其他开发者了解代码的功能、参数和返回值等信息。忽视这两个方面可能导致其他开发者难以理解和修改代码,增加了维护成本和出错的风险。遵循编码规范和标准可以提高代码的一致性和可读性,减少错误和缺陷的发生。合理的代码组织可以提高代码的可读性和可维护性。- 如果确实需要使用全局变量,应该在头文件中声明,并在一个单独的源文件中定义,同时提供清晰的注释说明其用途和修改规则。
2024-05-16 22:45:08
999
原创 解决Linux系统磁盘空间不足的问题
Linux系统磁盘空间不足是一个常见的问题,但可以通过多种方法解决。在清理无用文件和日志、使用磁盘清理工具以及移动或扩展数据存储空间等策略的帮助下,我们可以有效地释放磁盘空间并保持系统的稳定运行。在实际操作中,请确保在执行任何删除操作之前都进行了充分的备份和确认,以避免数据丢失。
2024-05-16 17:59:39
4437
原创 C语言中的控制语句:深入解析与案例实践3
在这个例子中,我们定义了一个`divide`函数,当除数为0时,函数设置全局变量`errno`为`EINVAL`(表示无效的参数),并返回-1作为错误标识。在`main`函数中,我们检查`divide`函数的返回值,如果返回-1,则调用`perror`函数打印出与`errno`对应的错误消息。在上面的例子中,我们使用了`#define`来定义宏,`#ifdef`和`#else`来进行条件编译。在上述代码中,我们使用了`malloc`函数来分配内存,并用`free`函数来释放内存。
2024-05-14 21:55:51
985
原创 c语言bug汇总中篇4
宏定义是C语言中的一种预处理指令,用于定义常量或简单的代码片段。然而,滥用宏定义可能导致代码难以阅读和理解,且容易出现未预期的行为。为了避免滥用宏定义,程序员应该:- 仅在必要时使用宏定义,并确保其定义清晰、简洁。- 避免使用复杂的宏定义,尤其是包含多个语句或逻辑判断的宏。- 使用内联函数或模板等更安全的机制来替代可能导致问题的宏定义。
2024-05-14 21:47:07
946
原创 C语言中的控制语句:深入解析与案例实践2
表达式1 : 表达式2`,如果条件为真,则整个表达式的值为`表达式1`,否则为`表达式2`。在这个例子中,我们首先定义了一个整数数组,并使用`sizeof`运算符计算数组的大小。然后,我们使用`for`循环遍历数组中的每个元素,将它们累加到`sum`变量中。虽然`goto`语句在现代编程实践中往往被避免使用,因为它可能导致代码难以理解和维护,但在某些特定情况下,它仍然可以作为一种解决方案。在这个例子中,我们定义了一个5x5的二维数组,并使用嵌套的`for`循环遍历数组中的每个元素,将它们打印到控制台上。
2024-05-13 23:44:56
711
原创 100条常见的c语言bug汇总上篇3
编写高质量的C语言代码需要关注多个方面,包括注释和文档、代码格式、逻辑结构、代码审查以及性能优化等。通过遵循最佳实践、保持代码清晰简洁、利用团队资源和工具,我们可以提高代码质量,减少错误和漏洞,从而构建出更加可靠和高效的软件产品。同时,持续学习和探索新的编程技术和方法也是保持代码质量的关键。
2024-05-13 23:31:35
794
原创 100条常见的c语言代码bug上篇2(类型转换错误,忽略返回值,浮点数精度问题,逻辑错误,指针操作错误)
当我们试图将它转换为`int`类型时(假设`int`是32位有符号整数),数据会发生丢失,因为`int`类型无法表示这么大的正数,结果通常是得到一个负数。在这个例子中,我们创建了一个指向整数`x`的指针`p`,并通过`*p`正确地访问了`x`的值。然而,在增加指针`p`的值后,我们尝试通过`*p`访问一个未定义的内存位置,这可能导致未定义的行为,包括程序崩溃或数据损坏。在这个例子中,虽然程序在语法上是正确的,但它包含一个逻辑错误:`if`语句的条件检查`a`是否大于`b`,而实际上`a`是小于`b`的。
2024-05-11 21:29:09
1149
原创 C语言中的控制语句:深入解析与案例实践1
在C语言中,控制语句是编程的核心,它们允许我们根据条件或循环的逻辑来决定代码的执行流程。本文将详细探讨C语言中的几种主要控制语句,并通过案例代码来展示其实际应用。
2024-05-11 21:15:40
933
原创 100条常见的c语言bug汇总上篇1(内存泄漏,数组越界,空指针解引用,类型转换错误,缓冲区溢出,野指针,逻辑错误,文件操作错误,错误的函数参数等等)
bug都没有修理完,那有时间来修理你。--颜无双。
2024-05-10 21:58:47
1152
原创 C语言运算符详解
在C语言中,运算符是用于执行各种操作的符号,这些操作包括算术运算、关系比较和逻辑判断等。本文将详细介绍C语言中的算术运算符、关系运算符和逻辑运算符,并通过代码案例来展示它们的使用方法和效果。算术运算符用于执行基本的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)等。这段代码定义了两个整数变量a和b,并使用了各种算术运算符来计算它们的和、差、积、商和余数。然后,使用`printf`函数输出这些结果。关系运算符用于比较两个值的大小或是否相等,返回布尔值(真或假)。
2024-05-10 16:27:44
2004
原创 C语言内存泄漏查找
使用更高级的数据结构和容器,如`std::vector`、`std::list`或智能指针(如`std::unique_ptr`和`std::shared_ptr`),可以大大简化内存管理,并减少内存泄漏的风险。了解堆、栈和静态存储区的区别,以及`malloc`、`free`、`calloc`和`realloc`等函数的工作原理,可以帮助你更好地编写不泄漏内存的代码。检查你的代码,确保所有的`malloc`,`calloc`,`realloc`等函数调用的地方都有相应的`free`函数调用。
2024-05-08 17:09:15
819
原创 C语言数据类型详解
1. C语言提供了丰富的数据类型和内存管理功能,这使得C语言在底层编程和系统级开发中具有很高的灵活性和效率。然而,这也要求程序员对数据类型和内存管理有深入的理解,以确保程序的正确性和性能。通过学习和实践,我们可以逐步掌握C语言的数据类型和内存管理技巧,并编写出高效、健壮的程序。2. C语言的数据类型不仅仅是简单的变量声明,它们还涉及到内存布局、对齐、动态内存管理、抽象与封装等多个方面。熟练掌握和灵活运用C语言的数据类型,可以帮助我们编写出高效、可维护、可移植的C程序。
2024-05-08 15:37:05
2807
原创 DDR5:新一代内存技术解析(讲解篇)
总之,DDR5内存作为一种新一代的内存技术,不仅在性能上有了显著的提升,还在设计、散热、兼容性、扩展性、安全性和环保等方面进行了大量的创新和优化。随着DDR5内存的逐步普及和应用,我们相信它将为计算机硬件性能的提升带来更加广阔的空间和可能性,同时也将为用户带来更加稳定、高效和安全的计算体验。这一降低不仅有助于减少内存的功耗,提高能源利用效率,同时也为内存的超频提供了更大的可操作空间。采用了全新的架构设计,包括更高的等效频率、更大的内存容量、更低的工作电压以及引入了全新的On-die ECC纠错机制等。
2024-05-07 23:13:24
2810
原创 C语言从入门到入门
函数定义的一般形式为:返回类型 函数名(参数列表) {// 函数体其中,返回类型指定了函数返回值的类型,参数列表包含了传递给函数的参数,函数体是函数的具体实现。指针定义的一般形式为:数据类型 *指针变量名;其中,数据类型指定了指针所指向的数据类型,*表示这是一个指针变量。实现程序功能的函数。本教程介绍了C语言的基本语法、函数、指针和文件操作等方面的知识,希望能够帮助初学者快速入门C语言编程。当然,C语言还有很多高级特性和技巧,需要不断学习和实践才能掌握。
2024-05-07 23:01:05
634
原创 基于TMF8801芯片测距iic驱动的编写
TMF8801芯片是一款集成了多种功能的芯片产品,具有高性能、低功耗、易于操作等特点。该芯片内部包含丰富的功能模块,可以满足不同应用场景的需求。同时,TMF8801芯片还具有良好的兼容性和扩展性,方便用户进行定制化开发。
2024-04-15 22:20:36
537
原创 __attribute__((optimize(“O0“)))阻止了编译器进行可能的性能改进
然而,需要注意的是,过度使用此属性可能会导致代码膨胀和性能下降,因为它阻止了编译器进行可能的性能改进。因此,应该谨慎使用,并确保了解其影响。当你在一个函数前加上这个属性时,你告诉编译器:“对于这个特定的函数,请不要应用任何优化,即使我为整个项目设置了其他优化级别。会被编译为不经过优化的代码,而其他没有此属性的函数则可能受到项目整体优化设置的影响。是一个函数属性,用于指示编译器在编译该函数时应用特定的优化级别。指示编译器不进行任何优化,并生成最直接的代码。
2024-03-28 17:49:12
871
原创 内核空间<---->用户空间互传之mmap技术
内核空间与用户空间的通信一般可以通过用驱动方式实现,相对于使用mmap技术来说比较复杂;mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。
2024-03-28 17:43:31
822
原创 常用的IDE推荐
请注意,每个IDE都有其独特的特点和优势,适用于不同的编程语言和项目需求。因此,在选择IDE时,程序员应该根据自己的具体需求进行评估和比较,以找到最适合自己的工具。是一款强大的代码编辑器和源代码分析工具,它具备众多优点,使得程序员在开发过程中能够更高效地浏览、编辑和理解源代码。是一个强大的文本编辑器,具有许多优点,使其受到广大程序员和文本编辑者的喜爱。:免费开源的集成开发环境,主要用于Java开发,但也支持其他语言和框架。:专为Python开发而设计的IDE。:功能强大的Java IDE。
2024-03-22 16:03:11
2308
原创 机器学习概念
机器学习是一门涉及多个学科领域的交叉学科,专门研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构,从而不断改善其性能。其中,监督学习是从示例对中学习统计规律,然后对于新的输入,给出对应的输出;实践机器学习时,通常需要结合具体的应用场景和问题特性,选择合适的算法和模型,并进行数据的预处理、特征提取、模型训练和优化等步骤。总的来说,机器学习是一个复杂且不断发展的领域,它涉及到多个学科的知识和技术的融合,具有广泛的应用前景和潜力。
2024-03-22 15:39:22
431
1
原创 makefile:2: *** 遗漏分隔符 。 停止。
我本次造成makefile:2: *** 遗漏分隔符。出现这种问题,一般是书写Makefile文件不规范导致的。makefile:2: *** 遗漏分隔符。1.注意Makefile的空格,一般是用tab键;自动生成了/* */,并且改动。项目中的Makefile文件。中用了/* */来屏蔽,导致。2.屏蔽代码用的是#号等等。自动生成的/* */。
2024-03-20 17:50:55
1807
原创 [Labtools 27-2223] Unable to connect to hw_server with URL(FPGA远程仿真器连接不上服务器问题)
1.查看电脑防火墙有没有关闭(确保电脑能与服务器ping通)FPGA远程仿真器连接服务器原因:(报错如下)3.重新编译生成.bin文件。2.可能线路没连接好。
2024-03-20 17:34:02
900
原创 FPGA AXI4总线信号介绍篇
AXI是一种总线协议,可以挂在多个master和slave: (1)AXI4:主要面向高性能地址映射通信的需求;(突发数据)(地址映射模式) (2)AXI4-Lite:是一个轻量级的,适用于吞吐量较小的地址映射通信总线;(无突发)(地址映射模式) (3)AXI4-stream:面向高速流数据传输(流模式)AXI4、AXI4-LITE总线信号组成:写地址通道、写数据通道、写响应通道、读地址通道、读数据通道。
2024-03-07 16:39:57
931
1
原创 FPGA AXI4总线操作教程
AXI总线是一种基于数据包传输的接口,它采用主从设备模式进行通信。主设备负责发起数据传输请求,而从设备则响应这些请求,完成数据传输。AXI总线支持多种数据传输模式,包括单向和双向传输,以及不同的数据宽度和突发长度。下面是关于AXI总线数据宽度和地址宽度的初始化代码。AXI总线作为一种高性能、低延迟的片上系统接口标准,为现代数字系统设计提供了强大的支持。通过掌握AXI总线的基本操作和关键概念,读者可以更好地利用AXI总线实现高效、可靠的数据传输和控制功能。
2024-03-07 16:04:43
1369
原创 FM波的调制与解调
调频信号的解调有相干解调和非相干解调两种。而非相干解调不需同步信号,且对于NBFM信号和WBFM 信号均适用,因此是 FM 系统的主要解调方式。BPF 的作用是抑制调频信号带宽 B,w以外的噪声,其输出噪声 n(1)为窄带高斯噪声;限幅器的作用是消除信道中噪声和其他原因引起的调频波的幅度起伏。产生调频信号有两种方法,直接调频法和间接调频法。FM非相干解调时的抗噪声性能分析方法,也和线性调制系统的一样,先分别计算解调器的输入信噪比和输出信噪比,最后通过信噪比增益来反映系统的抗噪声性能。
2024-02-01 13:29:52
4701
13
C语言常见的100多条bug汇总
2024-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人