自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络TCP协议详解

我们知道,TCP采用了累积确认的方式,如果某个报文段发生了丢失,即便收到了后面的数据,接收方返回的ACK也是一样的。最常见的选项字段是MSS(Maximum Segment Size最长报文大小),每个连接方通常都在通信的第一个报文段(SYN标志为1的那个段)中指明这个选项字段,表示当前连接方所能接受的最大报文段的长度。在ESTABLISHED(建立连接后),序列号的变化规则为,seq=上一条已方发送报文段的seq+TCP报文的净荷字节数(不包含TCP头)=上一条已方收到报文段的ACK number。

2024-08-08 15:44:37 1206 1

原创 Linux内核中的延迟工作delayed_work

对于周期性的任务,除了定时器以外,在Linux内核中还可以利用一套封装得很好的快捷机制,其本质是利用工作队列和定时器实现,这套快捷机制就是delayed_work.msecs_to_jiffies(​)用于将毫秒转化为jiffies。的作用为在指定延时后将任务,放到工作队列执行。取消delay_work的函数。

2025-12-22 20:14:24 130

原创 deepin系统崩溃/无法启动修复

【代码】deepin系统崩溃/无法启动修复。

2025-12-22 19:37:29 193

原创 C语言_X-Macro

其将数据列表和命令分开,通过X宏你可以实现对同一组数据列表,执行不同命令的操作。X-Macro (X宏)我愿称为其为超级宏。

2025-12-18 15:12:51 386

原创 Linux platform总线驱动框架

在 Linux 系统中,每个设备都用一个实例来表示。但需要注意的是,这些设备通常不仅仅是用一个简单的实例来表示。相反,通常是嵌入在更高级别的设备表示结构中。每个设备的子系统(如 PCI、USB、平台设备等)都会在基础上扩展,以包含子系统特定的信息。//代表该设备挂在哪条总线上//release 是必须实现的//用于设备匹配的结构体//用于表示设备树节点的结构体...//通常会与 of_device_id 结构体来匹配设备。

2025-12-12 15:58:52 587

原创 示波器的使用-如何测量时钟信号

探头通过在探头尖端串联一个大电阻(通常约。可以在交互界面(电脑界面)那选择测量项。)和并联一个补偿电容网络,大大提高了。- 应该可以选择,测量点数的多少。示波器探头档位×1,×10。

2025-12-03 16:04:08 940

原创 deepin安装VScode显示仓库中缺失的依赖包 libxkbfile1:amd64 1:1.1.0

wget http://ftp.debian.org/debian/pool/main/libx/libxkbfile/libxkbfile1_1.1.0-1_amd64.debwget http://ftp.debian.org/debian/pool/main/libx/libxkbfile/libxkbfile1_1.1.0-1+b1_amd64.debsudo dpkg -i libxkbfile1_*.debsudo apt install -f

2025-12-02 11:58:07 192

原创 git基础

git如同一颗树,每个树上都可以有多个分支,每个分支上又可以有多个节点。1. 每个 commit 是你整个工作区所有文件的一个完整快照(snapshot), 但 Git 使用哈希指向机制让它看起来像是“增量”。

2025-11-28 11:59:04 869

原创 原码,反码,补码

下图中的0亦是16。也可以从16开始逆时钟转3个单位,16-3=13,13的二进制原码为1101,其刚好为-3的补码。注意:在Verilog中,对一个数的符号进行取反,例如“-a”​,直接写成-a和写成2n-a,在语法上是完全等价的,都是取补码,其等价关系与信号a是否被声明为signed无关,因而设计者使用最简单的“-a”表达即可。但其存在特殊情况,对4位的有符号数,其表示范围为-8~7。对-8来说,在你不扩展位宽的情况下,无法表达其负数8。在扩宽一个符号位的情况下,对其高位补符号位1,可解决问题。

2025-11-13 09:58:38 269

原创 verilog中的signed有符号

一个非signed的信号a转换为有符号信号的语法是signed’({1’b0,a}),即先给a的高位扩展一位,然后转换,目的是避免综合器误将a的最高位认为是符号位,造成转换错误。需要特别注意的是,若比较的对象是-a,并且a是正数,则需要使用signed’(-{1’b0,a}),不可使用-signed’({1’b0,a}),该表达不能通过语法检查,也不可简单地写为signed’(-a),虽然语法检查是正确的,但运行结果将是错的。问题的难点在于信号a是有符号数,因而对幅度的限制还需要讨论符号。

2025-11-13 09:56:43 991

原创 FPGA状态机按键消抖

按键消抖,模块端口列表如下:信号名方向位宽说明clki1时钟rest_ni1复位keyi1按下时为0key_po1按键按下脉冲。当按键下降沿时开始计时,计20ms且按键一直为0,时输出key_ro1按键输出脉冲。o1消抖后的按键信号2.3.4.5.6.7.8.

2025-10-30 19:03:30 176

原创 FPGA中复位信号的省略

必须拥有复位信号的场景:控制逻辑,状态位,重要计数器,重要状态寄存器。复位信号在某些时候可以省略,从而节省LUT和布线资源。可以不加复位信号的场景:数据传输的中间寄存器。

2025-10-29 09:41:04 460

原创 FPGA-状态机架构

计数器结构适用与,状态只会按顺序执行的情况,如1->2->3->4这种情况。当出现1->3->1->4这状态跳转顺序不固定,要处理的输出信号复杂时的情况,就需要使用状态机了。其表示也可以用更高的抽象级表示如下图,可以方便后续代码的编写。

2025-10-29 09:38:30 407

原创 FPGA-状态机

现象见[[#状态机实例分析]]中的图。因为moore类型的输出比mealy类型的输出晚了一个周期,在there阶段,其就可能有新的硬币投进来,需要进入one状态。但在mealy类型的最后一个状态,two有硬币投入,其就输出一瓶可乐,并进入了最开始的准备态。

2025-10-29 09:36:20 591

原创 FPGA跨时钟域分析

但出于鲁棒性,通用性(假如这两个时钟是可以配置的,未来的快慢关系是不一定的)考虑,将b脉冲信号,在慢时钟域clk2转换成b_feedback_latch电平信号作反馈信号。a_latch变为0后,其在慢时钟域的两拍信号b_latch,b_latch_r相继变为0,b_feedback_latch的下降沿条件为b_latch_r为0。a_latch信号先在慢时钟域打两拍,生成b_latch,b_latch_r解决亚稳态问题,其实还要再一拍(图中没画)用于,电平信号转上升沿脉冲b。不确定,欢迎评论区讨论。

2025-10-14 15:42:21 965

原创 FPGA时序分析-亚稳态问题

数据信号在不满足建立时间和保持时间的情况下被采样,或者复位信号不满足恢复时间和移除时间的情况下。此时触发器的输出仍在0-1间震荡,信号并不稳定。在此期间采样的值,其最后输出结果与输入结果无关,是随机的。打两拍,虽然就算不打两拍,亚稳态最终也会稳定。但通过打两拍,可以将亚稳态问题控制在指定的区域和时间,而不是任由其在系统扩散,造成不可控,乃至系统崩溃的场景。为什么不打3拍,4拍?当然可以,不过从工程/概率学的角度上看,打两拍已经足够了和更多拍差别不大。

2025-10-14 15:37:38 408

原创 FPGA设计方法-电平信号与脉冲信号的转换

电平信号(Latch信号):持续多个时钟周期为1的信号脉冲信号:持续一个时钟周期为1的信号。

2025-10-13 15:51:01 475

原创 SPDIF数字音频传输协议

SPDIF 是由 Sony 和 Philips 定义的一种。

2025-10-10 19:03:41 462

原创 I2S通信协议

需要注意的是,I2S中位宽和位深都是由Master决定的。下面以32位位宽,32/24/20/16位位深为例,说明位宽与位深的区别(以下例子的数据格式均为I2S格式)。飞利浦标准模式(I2S mode),左对齐(Left Justified)和右对齐(Right Justified)三种传输模式。I2S分为主模式(Master Mode)和从模式(Slave Mode),主模式的那台机子提供BCLK和LRCK。32位位宽,32位位深。32位位宽,24位位深。32位位宽,20位位深。32位位宽,16位位深。

2025-10-10 19:01:20 894

原创 FPGA时序分析基础-恢复时间与移除时间

恢复时间(recovery time):- 指异步控制信号,从有效状态变为无效状态后,到下一次时钟有效边沿到来的最小时间间隔。类似于同步电路中的setup time。- 例:结合always块的一般模板分析,以低电平有效复位信号从0变成1时刻,作为起点分析。rst_n置1时always块不会触发,但在下一个时钟升沿到来时,rst_n需要保持稳定的1,避免if(!rst_n)判断错误。- 即恢复时间是指,复位信号从有效0变无效1,后到下一个时钟升沿的时间。

2025-10-10 15:23:53 339

原创 FPGA时序分析基础-建立时间和保持时间

建立时间(setup time):在时钟采样沿到来前,数据信号需要建立的时间保持时间(hold time):在时钟采样沿到来后,数据信号必须保持的时间。

2025-10-09 18:53:35 705

原创 FPGA计数器架构设计思想/规则

接下来只需按上述模板填充即可,

2025-09-30 16:05:20 200

原创 VScode中ctags配置

3. 在vscode中打开Verilog-HDL/SystemVerilog/Bluespec SystemVerilog设置。1. 下载ctags安装包,并解压到想到的安装目录。4.重启就能实现,verilog的变量声明跳转。2. 在环境变量中添加该目录。

2025-09-25 19:18:47 308

原创 vivado的编辑器改成VScode后出现以下报错A JavaScript error occurred in the main process

这是最可能解决问题的方案,核心是修改Vivado中调用VSCode的命令参数。

2025-09-25 17:04:51 368

原创 new/malloc与free/delete的区别

从语言特性角度:new、delete是C++中的操作符,而malloc和free是标准库函数。从根源上看构造函数和析构函数的支持:new/delete能够自动调用对象的构造函数和析构函数,而malloc/free只能简单的分配内存和释放。内存管理的便捷性:new会返回指向对象的指针,自动计算申请内存大小。而malloc需要我们将返回类型强制类型转换,并手动计算申请内存大小。

2024-08-27 08:35:16 203

原创 进程与线程

线程是一种特殊的进程,轻量级的进程。如果多个进程共享了地址空间、文件系统信息、打开的文件信息、信号处理信息,那么他们就是同属于一个进程的线程。线程和进程一样,拥有一个task_struct结构体,这是进程控制块pcb(Process Contronl Block)的具体体现。线程间共享代码区,数据区,堆区。因为共享了这部分资源,所以线程切换开销会比进程切换开销小。线程间通信会比进程间通信方便。各线程有专属的栈区、程序计数器、栈指针以及函数运行使用的寄存器。

2024-08-15 20:24:17 250

原创 守护进程(Daemon Process)

守护进程不受终端控制,其信息也不会在终端显示。终端:启动进程的那个窗口,一般来说,进程会受该窗口的控制,该窗口关闭,进程也随之关闭。从作用上看,该进程会守护其他进程,即周期性地执行某种任务或等待处理某些发生的事件。常见的用途:系统服务,网络服务,日志记录。

2024-08-14 21:09:27 563

原创 IP地址与MAC地址关系

IP 地址(Internet Protocol Address):定义:IP 地址是分配给网络中每个设备的唯一标识符,允许设备在网络上进行通信。它是在网络层使用的地址,用于标识网络上的设备和路由数据包。IP 地址可以是 IPv4(32 位,通常表示为四组十进制数字)或 IPv6(128 位,通常表示为八组十六进制数字)。

2024-08-13 22:21:20 557

原创 网络编程socket,TCP实现,网络字节序详解

客户端经socket,bind后调用connect时,触发了连接请求,向服务器发送了第一次握手,这时connect进入阻塞状态,即客户端进入SYN-SENT状态。向客户端发送第二次握手后,accept进入阻塞状态,即服务器端进入同步已接收状态。客户端收到第二次握手之后,这时connect返回,并发出第三次握手,客户端进入连接已建立状态。服务器收到第三次握手,accept返回,至此三次握手完毕,服务器端也进入连接已建立状态。IPV4的地址描述结构体,只要管端口号和互联网地址就行,其他系统帮你搞定了。

2024-08-11 16:06:52 1169

原创 Linux系统无法打开中文目录

进入设置将语言改为英文,或通过图形界面将文件夹名改为英文.

2023-04-10 20:49:14 923

原创 Keil5不显示结构体提示的办法

Keil5不显示结构体提示的办法Show Code Completion List for

2023-03-13 20:46:05 6431 1

原创 Verilog 16选1数据选择器

Verilog 16选1数据选择器

2022-09-25 21:01:43 2954

原创 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

2022-09-14 21:28:30 661

原创 编译出现stray ‘\243‘ in program,stray ‘\273‘ in program

C语言编译出现stray\xxx in program

2022-09-08 20:58:15 2629

原创 实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=∑ i=0n​ (a[i]×x i ) 在x点的值。(PTA,6-2多项式求值)

多项式求值

2022-09-08 14:48:26 2012

原创 为什么txt文件加.c后缀还是txt文件而不是c文件

1、首先你要有C/C++软件,如DEV-C(下载地址如下Dev-C++ download | SourceForge.net)2、如果你是WIN10系统。首先打开“此电脑”,依次点“查看”-“选项”-“查看”,将“隐藏已知文件类型的扩展名”前面的勾去掉,再确定,让系统显示完整的文件全名。然后.c后缀就能直接改成C文件。...

2022-01-16 11:41:28 3026

空空如也

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

TA关注的人

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