自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 verilog实现STFT

短时傅里叶变换(STFT, Short Time Fourier Transform),是处理采样数据、获取信号时频特征的一种常用方法。然而其消耗的计算资源较为庞大,在数据采集设备全速运行时,若在上位机进行 STFT 的计算,则很难做到实时性。因此尝试将 STFT 步骤迁移到 FPGA 端进行,从而减轻上位机的计算压力。

2024-08-19 14:20:18 1013

原创 vivado FFT IP Core

vivado FFT IP核详解,以及verilog控制代码示例

2024-07-18 17:58:10 1491

原创 RTL8211FSI PHY电路设计

一个关于瑞昱 Realtek 的 RTL8211FSI PHY 电路设计的工作记录。

2024-07-05 13:42:22 3615 3

原创 VIO(Virtual_Input_Output) IP 使用笔记

VIO(Virtual Input/Output)IP 核,即虚拟输入输出 IP,可以通过调试界面模拟 IO 的变化,这可以在板子没有按键等外设、或外设不足的情况下,来模拟外部输入。

2024-07-04 11:44:30 491

原创 K7系列FPGA多重启动(Multiboot)

Xilinx 家的 FPGA 支持多重启动功能(Multiboot),即可以从多个 bin 文件中进行选择性加载,从而实现对系统的动态更新,或系统功能的动态调整。这一过程可以通过嵌入在 bit 文件里的 IPROG 命令实现上电后的自动加载。而同时 Xilinx 也提供了 ICAP 原语,给用户提供了访问配置功能的权限(对于 7 series 的芯片,需要使用 ICAPE2 原语),从而获得更加灵活的多重启动方式。本文即介绍 Multiboot 以及这两种启动方式,并对两种 Multiboot 进行实现。

2023-12-02 12:30:01 7531 67

原创 S25FL系列FLASH读写的FPGA实现

实现 S25FL-S 系列 FLASH 的读写控制,verilog 实现。实现了 SDR 时钟模式下,Quad 模式的主存读写,以及擦除、寄存器读写等功能。

2023-11-26 13:03:11 1441 17

原创 vivado调试核ILA使用技巧

ILA(Integrated Logic Analyzer)IP Core 是 vivado 的调试核,具体如何创建、调用不详说了。这里主要记录一个 ILA 的使用技巧,可以大大提高调试效率。

2023-11-22 14:20:28 1774

原创 S25FL256S介绍及FPGA实现思路

S25FL-S 系列 FLASH 介绍,以及 FPGA 实现思路

2023-11-16 12:03:02 2185 8

原创 K7系列FPGA进行FLASH读写1——CCLK控制(STARTUPE2原语)

要进行 FLASH 的读写控制,却发现CCLK_0管脚不可直接配置,这实际上是因为 CCLK_0 管脚在内部已经被占用,我们必须通过其他方式获取/设置它。本文即介绍如何使用STARTUPE2原语,自定义CCLK。

2023-11-03 14:17:13 5337 3

原创 matlab奇技淫巧——绘制三维地图

matlab绘制三维地图(地球仪)

2023-10-18 12:09:42 3631

原创 PLL 的 verilog 实现

锁相环(PLL)是一种常用的频率、相位追踪算法,在信号解调、交流并网等领域有着广泛的应用。本文对全数字锁相环的原理进行介绍,随后给出 verilog 实现及仿真。

2023-08-06 15:44:07 4816 10

原创 通用FIR滤波器的verilog实现(内有Lowpass、Hilbert参数生成示例)

设计了通用的 FIR 滤波器(verilog),以及自动生成滤波器参数.v文件的 matlab 代码,示例包括一个 Lowpass Filter 和实现90度移相功能的 Hilbert Filter

2023-08-06 14:47:40 4870 28

原创 通用读写仲裁模块(FPGA实现)

当涉及多个模块向同一个模块进行读写操作、向一个半双工模块请求读写,甚至综合一下,多个模块向一个半双工模块发起读写请求,那就要涉及读写仲裁。因为最近做的项目中涉及的读写仲裁太多了,所以就想还是要写一个通用的读写仲裁模块,最好还是具备“凡请求,必执行”的功能的(因为一般简单实现的仲裁在发生冲突时,会选择执行一个,而直接忽视其他请求,这就对发起读写请求的模块的控制逻辑造成了不必要的麻烦),于是就有了这篇文章。由于每个人实现的模块控制信号不尽相同,因此本文档中的代码仅作为一种实现思路的参考。

2023-06-01 15:48:47 1880 3

原创 以太网——MDIO(SMI)接口的FPGA实现

在 MAC 与 PHY 之间,有一个配置接口,即 MDIO(也称 SMI,Serial Management Interface),可以配置 PHY 的工作模式、获取 PHY 芯片的工作状态等。本文以 PHY 芯片 B50610 为例,实现 MDIO 接口,以实现对传输速度、接口类型的自协商。

2023-06-01 14:13:40 4258 4

原创 线性插值提高DDS相位分辨率

DDS(Direct Digital Synthesizer)即技术,主要由正弦查找表与控制器组成,通过控制器给出的相位,在正弦查找表中查找对应的正余弦值并予以输出。通过多个 DDS 信号的组合,可以进一步构建出 AM、FM、PM 等信号发生器。关于 DDS 的知识不多赘述,本文主要介绍正弦波生成模块的 FPGA 实现,里面涉及一个在的方法(线性插值)。如果需要更高的精度,可以更进一步采用三次样条差值等技术。

2023-05-17 15:56:45 1142

原创 DDR3(MIG核配置&官方demo&FPGA代码实现及仿真)

由于直接对 DDR3 进行控制很复杂,因此一般使用 MIG IP 来实现,同时为了更简单地使用 MIG IP,我们采用 AXI4 总线协议进行控制。下面首先介绍 MIG IP 的配置,然后看看官方 demo (里面包含一个仿真要用到的 DDR3 模型)及其仿真结果,最后进行我们自己的控制代码实现。

2023-05-04 13:29:17 7863 16

原创 M序列(任意阶数)生成器——FPGA实现

直接上代码,此模块只需要指定本原多项式,就可以自动生成对应阶数的 M 序列,泛用性比较好。至于本原多项式,可以用 matlab 的 primpoly 函数生成,然后随便选一个,我这里默认的是 10 阶的第一个本原多项式 1033,读者可自行修改为其他值。M 序列是一种伪随机序列,常用于保密通信、信道抗干扰测试等,关于生成原理等可见我之前的文章,此处不表。仿真结果保存到 m_seq.txt 文件中,然后可以自行与 matlab 的生成结果比对。

2023-05-04 11:07:51 1023

原创 M序列测量幅频特性

M 序列是一种伪随机序列,具有很好的伪噪声特性,常用于信道噪声测试和保密通信。不过 M 序列还有一个用途,也就是本文所介绍的——通过 M 序列测量频率响应。在讨论这个问题之前,我们先介绍 M 序列的特征与生成方法。M 序列通过 N 阶线性反馈移存器生成,其周期为2N−1。

2023-04-28 12:38:05 1240

原创 AXI4总线学习笔记

AXI4 总线是 ARM 公司开发的一种总线,广泛应用于 Xilinx 的 IP 核中,比如笔者近期涉及 DDR 的读写控制,需要用到 MIG IP 核,这个 IP 核就通过 AXI4 总线进行控制。AXI4 共有 5 种通道:读地址通道 ARC,读数据通道 DRC,写数据通道 AWC,写数据通道 DWC,写回复通道 RC。以上 5 种通道都是单向通道,通过 Valid/Ready 握手机制实现读写控制。

2023-04-22 19:12:43 974

原创 USB3.0芯片FT601Q简介及FPGA实现

FT601Q 是 FTDI 推出的一款超高速 USB3.0 芯片,提供高达 5Gbps 的带宽。该芯片不需要额外的固件开发,共有 4 个写通道和 4 个读通道,每个通道的缓冲大小均为 4KB。FT601Q 具有多种工作模式,本文介绍并实现相对简单的同步 FIFO 模式——245 mode。FT601Q 工作模式在上电时检测 GPIO0/GPIO1 来确定,当 {GPIO1,GPIO0}=2‘b00 时,FT601Q 将进入 245 工作模式。首先对 FT601Q 的引脚功能进行介绍,QFN76 封装如下。

2023-04-06 16:13:50 9343 27

原创 温湿度传感器 SHT3x-DIS 详解 & FPGA驱动

SHT3x-DIS 是一款温湿度传感器,I2C 接口,通信速度最高可达 1MHz,测量精度±1.5%RH±0.1∘C。数字输出经过校准和线性化,并进行了温度补偿。

2023-03-21 23:28:49 3144 6

原创 I2C协议简介 & Verilog实现

IIC 协议是三种最常用的串行通信协议(I2C,SPI,UART)之一,接口包含 SDA(串行数据线)和 SCL(串行时钟线),均为双向端口。I2C 仅使用两根信号线,极大地减少了连接线的数量,支持多主多从,且具有应答机制,因此在片间通信有较多的应用。

2023-03-21 22:34:53 5756 8

原创 磁环天线参数

磁环天线的参数,天线设计

2023-03-12 16:47:13 712 8

原创 adb使用笔记

adb tool 使用笔记

2022-11-19 17:44:08 1035

原创 异步FIFO的原理及verilog实现(循环队列、读写域数据同步、Gray Code、空满标志、读写域元素计数)

在FPGA开发中,我们经常会遇到数据跨时钟域的情况,在不需要缓存的情况下,直接对clk1域下的数据,使用clk2打两拍以消除亚稳态,即可实现数据的跨时钟域,而如果遇到需要数据缓存的情况,一般会使用**异步FIFO**。本文首先对异步FIFO的跨时钟域同步原理进行介绍,然后给出异步FIFO的verilog实现。

2022-10-01 16:12:48 2744

原创 格雷码与二进制相互转换的verilog实现

格雷码是一种错误最小化的编码方式,其相邻两编码之间,因此有很强的抗干扰性。在 异步FIFO 中就使用到了 Gray Code。本博文给出自然二进制码(Binary Code)与格雷码(Gray Code)相互转换的 Verilog 实现。

2022-10-01 13:00:39 1745

原创 并行加法的Verilog实现 (二路归并)

并行加法运算的Verilog实现,实现思路:二路归并。

2022-09-30 10:42:04 1088

原创 一个驱动控制多个设备&每个设备拥有私有数据

本文主要记录一下使用单一驱动,控制多个设备,且每个设备拥有私有数据。使的主要思路为:在驱动侧 open 函数中,读取 inode 的设备号,通过次设备号,从而判断打开的是哪一个设备,从而将其对应的私有数据传递给 file 结构体。在 write/read 函数中就可以通过 file->private_data 获取到本设备的私有数据。

2022-09-27 17:32:46 689

原创 GNU Symbolic Debugger(gdb) 命令整理

gdb(GNU Symbolic Debugger)是 Linux 下的 调试器,支持包括 c/c++ 在内的多种语言,本博文主要记录整理了 gdb 工具的常见命令,便于在命令行模式下对 c 程序进行调试。(在VSCode里似乎可以通过配置 gdb 进行代码调试,之后应该会研究一下怎么弄(**))要生成可调试的程序,需要保留符号表,因此在编译时,应使用 gcc -g 命令gdb直接执行gdb ./main命令。

2022-09-24 14:43:10 1000

原创 使用make工具编译任意目录下所有.c并链接 & 指定输出目录

如何编写makefile,指定编译任意源文件夹下的所有.c并链接,自动分析.c文件的依赖关系,并可指定输出目录

2022-09-07 17:20:30 6451 1

原创 Linux交叉编译生成驱动模块.ko

编写了一个字符设备 chrdevbase.c ,在本机编译运行通过了,准备进行交叉编译,主要涉及makefile的编写。

2022-08-09 14:50:38 5486 2

原创 Linux驱动开发

本文为一个简单的字符设备驱动,涉及驱动编写、测试程序编写、Makefile编写、驱动加载/卸载,运行于Linux虚拟机,不涉及底层配置。撰写本文的主要目的为记录一下驱动的开发流程,参考了正点原子的驱动开发指南。......

2022-08-08 15:13:35 3141

原创 RK3588固件生成

RK3588固件(.img)生成

2022-08-03 12:40:29 2844 11

原创 SPWM波调制度原理

SPWM波调制度原理

2022-07-30 10:44:24 11444 6

原创 Ubuntu启动ftp服务

Ubuntu启动ftp服务

2022-07-28 10:00:53 7745

原创 Altium Designer原理图的几种连接线方式

AD绘制原理图的几种连接线绘制方式

2022-07-21 10:56:40 21713 4

原创 卡尔曼(Kalman)滤波器的FPGA实现

关于kalman滤波器的原理我这里就不介绍了,直接贴出代码,代码注释中有简要的介绍。该模块适用于一维数据的滤波处理,通过设置Q、R两个参数可以改变其滤波特性。testbench使用matlab生成噪声数据的.hex文件时序仿真...

2022-06-24 15:32:29 3195 2

原创 vscode远程控制Ubuntu(remote -ssh)

  我以往做嵌入式,一般都要在Ubuntu下进行开发,进行文件传输的时候,又要回到windows下进行操作,来回操作两台电脑/设备,实在有些麻烦。不过VScode下有个插件remote -ssh,可以远程访问其他带ssh的设备。下面对该插件的安装、配置与使用进行简单介绍。至此,我们已经安装好了remote-ssh插件,同时设置了一个待连接用户如果连接成功,左下角的">...

2022-06-23 14:15:28 5910 4

原创 以太网学习笔记1——主要协议及帧结构

目录奉上,用者自取:文章目录1. 以太网主要协议关系介绍2. 协议介绍及帧结构2.1 媒体访问控制子层协议MAC2.2 地址解析协议ARP2.2.1ARP帧结构2.2.2 ARP协议工作原理2.3 网际互连协议IP2.3.1 IP协议帧2.3.2 IP数据报分片重组2.4 互联网控制消息协议ICMP2.5 用户数据报协议UDP2.6 传输控制协议TCP3. 最后的话1. 以太网主要协议关系介绍  网络结构可以分为五层,自底向上依次为:物理层、数据链路层、网络层、传输层、应用层,每一层都有相应的协议。网

2022-05-05 21:59:26 7177 3

原创 三段式有限状态机

    一段式、二段式、三段式状态机是按照书写FSM时使用的always块数目进行划分的,一般而言对于简单的状态机,可以使用一段式,其代码量以及使用资源都最少,但如果状态机较复杂,一段式状态机会对代码维护产生很大的不便,因此多使用便于维护的三段式状态机。下面对几种状态机进行介绍。一段式状态机   一段式FSM在一个时序always块中完成所有的状态转移以及输出工作,使用非阻塞赋值,如以下代码//一段式状态机module FSM1(input clk,input rst_n,inpu

2022-04-29 13:53:04 6239 9

RK3588开发资料(文档),509MB

RK3588开发资料(pdf文档),509MB,Rockchip Linux 开发指南

2022-08-24

空空如也

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

TA关注的人

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