- 博客(88)
- 收藏
- 关注
原创 12 AXI 总线协议简介
ZYNQ是ARM双核处理器,在此架构中含有AXI HP0-3四个高性能接口,用于传输高速数据流,这里可以直接访问内存,不通过其他缓冲器。通信协议遵循AXI3协议,但是可以在PL中使用AXI总线矩阵IP核转换为AXI4协议,所以接下来主要介绍AXI4协议。
2026-08-04 21:29:21
235
原创 10 2ASK自发自收
有限冲击响应滤波器(即FIR滤波器)处理公式如下:框图如下:如下是一个4抽头FIR滤波器计算过程:其中x(n)表示输入延迟零拍,x(n-1)表示输入延迟一拍,x(n-2)表示输入延迟两拍,x(n-3)表示输入延迟三拍,有时为了获得更好的时序也会将x(n)延迟一拍。有限冲击响应补充:单位冲激响应仅包含有限个非零值,系统函数极点仅位于z=0处,采用非递归结构实现,不存在输出反馈路径,总结一下就是给一个冲击信号,输出能回归0。
2026-07-19 20:59:14
205
原创 08 AD9361自发自收PS工程搭建
本文介绍了在Vitis环境下创建Platform工程和Application工程的具体步骤,包括平台工程配置、应用工程创建流程,以及如何将AD9361官方代码集成到Application工程中。主要内容包括:通过向导创建Platform工程并配置驱动参数;创建应用工程并选择依赖平台;从GitHub获取AD9361官方代码并复制必要文件到工程目录;修改parameters.h和platform.c文件以适配硬件配置。特别说明了需要移除ADI自定义IP核相关代码,并提供了关键配置文件的修改示例。
2026-05-31 22:02:19
322
原创 07 AD9361自发自收PL工程搭建
打开或创建一个Vivado工程,在菜单栏点击“Tools->Create and Package New IP…"打开创建或打包IP的向导。点击”Nexit"选择“Package a specified directory”将编写的代码复制到另一个目录(后面打包的IP核便在此目录),然后在向导中选择代码所在目录确定编辑IP的临时工程名称和路径,点击next点击finish,打开编辑IP的临时工程在临时工程的“Compatibility”中选择IP核支持的芯片。
2026-05-18 22:29:21
413
原创 06 AD9361 LVDS接口实现和仿真
IBUFDS是xilinx FPGA的原语,用于将差分输入转换为单端输入例化模板:OBUFDSOBUFDS是xilinx FPGA的原语,用于将单端输出转换为差分输出例化模板:IDDRIDDR是xilinx FPGA的原语,用于将双边沿信号转换为单边沿信号。OPPOSITE_EDGE模式:SAME_EDGE模式:SAME_EDGE_PIPELINED模式:原语框图:信号定义:参数定义:例化模板:ODDRODDR是xilinx FPGA的原语,用于将单边沿信号转换
2026-04-28 22:25:57
495
原创 05 AD9361 LVDS数字接口简介
AD9361是一款高性能、高度集成的射频捷变收发器™,专为3G和4G基站应用而设计。其可编程性和宽带特性使其成为广泛收发器应用的理想选择。该器件将射频前端与灵活的混合信号基带部分及集成频率合成器相结合,通过提供可配置的数字处理器接口简化了设计流程。AD9361接收器本地振荡器工作频率范围为70 MHz至6.0 GHz,发射器本地振荡器工作范围为47 MHz至6.0 GHz,覆盖了大多数许可和非许可频段。支持从小于200 kHz到56 MHz的信道带宽。
2026-04-07 20:59:22
497
原创 04 DDS信号发生器
DDS信号发生器如上图所示,大致可分为4个部分:相位累加器、相位量化器、波形ROM表、 D/A 转换器构成。相位累加器:宽度为N位,它在系统时钟的控制下按相位步进K进行累加运算,并向相位量化器输出结果(相位步进在有些地方又被称之为频率控制字)。相位量化器:对相位累加器输出的N位相位控制字在进行截断,输出M位结果到波形ROM表。波形ROM表:一共存储有2^M个波形参数,它根据相位量化器输出的值从ROM中取出数据,并输出到DA转换器。D/A 转换器:将数字量转换为模拟量输出。
2026-03-22 21:37:29
429
原创 03 xilinx除法IP核的使用
Xilinx除法器IP核配置与使用摘要 本文详细介绍了Xilinx除法器IP核的配置方法、工作模式和输出格式。IP核支持三种算法类型(High Radix、LutMult、Radix2),可选择有/无符号运算,可配置被除数和除数的位宽。输出支持余数或小数模式,小数模式下需指定小数位宽。时序方面介绍了阻塞和非阻塞两种工作模式的区别。重点阐述了有符号模式下商和小数部分的7种可能组合,并提供了两种合并方法(拼接法和相加法)将商和小数合并为定点数。最后通过仿真验证了除法器IP核的功能,展示了不同输入组合下的输出结果
2026-03-12 22:20:16
508
原创 02 FPGA中的定点数及其加法和乘法
符号位决定正负,0是正1是负整数位决定浮点数的最大范围,如0位可表示[-1, +1)之间的浮点数,3位可表示[-8, +8)之间的浮点数小数位数决定浮点数的精度,如7位二进制小数位则是将浮点数放大2^7倍,10位二进制小数位则是将浮点数放大2^10倍。
2026-03-07 23:42:25
139
原创 01 Modelsim软件的使用
在仿真页面的Instance中选择对应的模块,此时Objects会中显示对应模块中的信号,通过ctrl键或者是shift键结合鼠标左键选择要观察的信号,选择完成后点击鼠标右键,在弹出的菜单中选择add Wave即可将需要观察的信号添加到波形图中,并自动打开波形窗口。切换到Library 页面,展开work,选择顶层的仿真文件点击鼠标右键,在弹出的菜单中选择Simulate打开仿真页面。在波形图中选择需要分组的信号,然后按ctrl+G即可快速根据模块进行分组。按如下步骤将所有仿真文件和设计文件添加到工程中。
2026-03-06 22:37:57
823
原创 07 基于OpenAMP的核间通信方案
赛灵思官方的测试程序使用的是通用RPMsg驱动进行ceho测试的,此方案应用层代码比较繁琐(需要先利用通用驱动创建一个设备,然后在对设备进行读写操作),而且无法在内核层与核1进行交互,因此便编写了echo测试的Linux驱动,使用此驱动结合应用层的设备读写程序进行ceho测试。
2024-12-29 22:10:13
4033
5
原创 06 实现自定义AXI DMA驱动
ZYNQ 的 AXI DMA 在 Direct Register DMA (即 Simple DMA)模式下可以通过 AXIS 总线的 tlast 提前结束传输,同时还可以在 BUFFLEN 寄存器中读取到实际传输的字节数,但是通过 Linux 的 DMA 驱动框架控制 AXI DMA 时无法获取实际传输的字节数,因此这里便基于字符设备驱动框架实现一个 AXI DMA 的驱动(只支持 Simple 模式)。
2024-12-19 21:23:31
947
1
原创 05 在 Linux 使用 AXI DMA
AXI4 Memory Map Read:用于从 DDR3 中读取数据AXI4 Memory Map Write:用于向 DDR3 中写入数据AXI4 Stream Master(MM2S):接口用于向外设写入数据AXI4-Stream Slave(S2MM):接口用于从外设读取数据AXI Control stream (MM2S):是控制流接口,该接口的主要作用是 AXI DMA 对目标设备写入数据时进行节流。
2024-12-08 17:50:40
2507
原创 04 搭建linux驱动开发环境
虽然 petalinux 功能很全面,但是其编译速度较慢,不适用于驱动调试阶段(因为驱动调试阶段会频繁修改驱动模块、内核、设备树等),因此本章将采用分步编译的方式来编译启动开发板所需要的各种镜像文件,虽然步骤比较繁琐,但灵活性比较高,方便在驱动调试过程中单独对某一部分进行修改。
2024-11-17 21:16:01
1762
2
原创 02-ZYNQ linux开发环境安装,基于Petalinux2020.2和Vitis2020.2
Petalinux 工具是 Xilinx 公司推出的嵌入式 Linux 开发套件,包括了 u-boot、Linux Kernel、device-tree、rootfs 等源码和库,以及 Yocto recipes,可以让客户很方便的生成、配置、编译及自定义 Linux 系统。
2024-09-28 20:33:38
3086
3
原创 01-ZYNQ linux开发环境安装,基于Petalinux2023.2和Vitis2023.2
Vitis 是用来开发 Linux 应用的软件,使用这个软件开发 Linux 应用,既方便了工程管理,也免去了自己写Makefile的必要,此外在移植一些Linux 库或软件的时候还需要用到 Vitis 提供的编译工具链(因为petalinux2023.2没有直接提供编译Linux应用程序的编译器)。Petalinux 工具需要主机系统的/bin/sh 是 bash,而 Ubuntu 默认的/bin/sh 是 dash,所以这里需要进行更改。下载 Vitis 安装包,这里下载的是离线安装包。
2024-09-21 22:57:39
2271
1
原创 19 MDIO 接口读写以太网PHY寄存器
以太网(Ethernet)是应用最普遍的局域网技术。IEEE组织的 IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网凭借其成本低、通信速率高、抗干扰性强等优点被广泛应用在网络远程监控、交换机、工业自动化等对通信速率要求较高的场合。
2024-09-16 15:17:04
3605
原创 18 EEPROM读写
EEPROM (Electrically Erasable Progammable Read Only Memory,E2PROM)即电可擦除可编程只读存储器,是一种常用的非易失性存储器(掉电数据不丢失),EEPROM 有多种类型的产品,此次实验使用的是ATMEL 公司生产的 AT24C 系列的 AT24C64 这一型号。AT24C64 具有高可靠性,可对所存数据保存 100 年,并可多次擦写,擦写次数达一百万次。
2024-06-02 18:56:03
1781
原创 17 SPI FLASH读写
SPI 协议简介SPI 即 Serial Periphera linterface 的缩写,顾名思义就是串行外围设备接口,主要用于与FLASH、实时时钟、AD 转换器等外设模块的通信,它是一种高速的全双工同步的通信总线。SPI 设备分为主设备和从设备,SPI 通信必须由主设备发起,主设备通过片选引脚(CSn)来选择对应的从设备,通过时钟引脚(SCK)向从设备提供时钟,通过数据输出引脚(MOSI)引脚向从设备发送数据,通过数据输入引脚(MISO)引脚来读取从设备返回的数据,如下是 SPI 的总线拓扑图(分
2024-05-12 22:14:06
1511
原创 16 RGB-LCD 彩条显示
TFT-LCD 的全称是 Thin Film Transistor-Liquid Crystal Display,即薄膜晶体管液晶显示屏,它显示的每个像素点都是由集成在液晶后面的薄膜晶体管独立驱动,因此 TFT-LCD 具有较高的响应速度以及较好的图像质量。液晶显示器是现在最常用的显示器,如手机、电脑等各种人机交互设备基本都用到了 LCD。
2024-04-03 23:13:43
2519
原创 15 UART回环
常用的通信方式可分为为串行通信(serial communication)和并行通信(parallel communication)两种。并行通信是多比特数据同时通过并行线进行传送(一般以字或字节为单位并行进行传输),这种传输方式用的线多、成本高、速率高、要考虑时延匹配,不宜进行长距离通信,因此并行通信一般用于板载外设的通信。串行通信是数据在一条线上一比特接一比特地按顺序进行传送,这种传输方式线少、成本低、速率低,事宜用于长距离通信,因此串行通信常用于不同设备之间的通信。
2024-03-24 20:59:28
1589
原创 14 FIFO IP核
FIFO(First In First Out,即先入先出)是一种数据缓存器,用来实现数据先入先出的读写方式。FIFO由 RAM 加读写控制逻辑构成,其与普通 RAM 的区别在于 FIFO 没有外部读写地址线,使用起来非常简单,但 FIFO 只能顺序写入数据,并按顺序读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。根据 FIFO 工作的时钟域,可以将 FIFO 分为同步 FIFO 和异步 FIFO。
2024-03-10 12:53:25
3133
原创 13 双口 RAM IP 核
双口 RAM IP 核有两个端口,它又分为伪双端口 RAM 和真双端口 RAM,伪双端口 RAM 一个端口只能读,另一个端口只能写,真双端口 RAM 两个端口都可以进行读写操作。同时对存储器进行读写操作时就会用到双端口 RAM,例如有一个 FIFO 存储器,需要同时对其进行数据的写入和读出,这时候就需要一个写端口和一个读端口。
2024-03-02 21:36:26
3053
1
原创 12 单口RAM IP核
RAM 是随机存取存储器(Random Access Memory)的简称,它是一种易失性存储器,RAM 工作时可以随时从任意一个合法地址写入或读取数据。Vivado 软件自带的 Block Memory Generator IP 核(缩写为 BMG,中文名为块 RAM 生成器),可以用来配置单口RAM、伪双口RAM、真双口RAM、ROM( ROM 是一种只读存储器,也就是说,在工作时只能读出数据,而不能写入数据)。对于单端口 RAM,读写操作共用一组地址端口和数据端口,因此读写操作不能同时进行;对于伪双
2024-02-29 21:43:55
1773
原创 11 PLL IP核
锁相环(PLL)作为一种反馈控制电路,其特点是利用外部输入的参考信号来控制环路内部震荡信号的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。锁相环拥有强大的性能,可以对输入到 FPGA 的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟;
2024-02-27 21:42:37
2115
原创 10 在线逻辑分析仪的使用
传统的 FPGA 板级调试是将逻辑分析仪连接到 FPGA 的 IO 引脚上 ,然后将内部信号引出至 IO 引脚,再进行板级调试,这种方法的缺点是我们需要一个逻辑分析仪,且还要在 PCB 中预留测试点。
2024-02-25 19:05:52
2627
1
原创 09 呼吸灯
呼吸灯实际展示的效果就是一个 LED 灯的亮度由亮到暗,再由暗到亮的变化过程,并且该过程是循环往复的,像呼吸一样那么有节奏。呼吸灯通常是采用 PWM(Pulse Width Modulation,即脉冲宽度调制) 的方式实现,在 PWM 频率固定的情况下,通过调整其占空比来控制 LED 灯亮度的变化。在固定周期的 PWM 信号下,如果其占空比为 0,则 LED 灯不亮;如果其占空比为100%,则 LED 灯最亮。
2024-02-25 10:54:09
2907
原创 08 按键消抖
蜂鸣器按照结构原理不同可分为压电式蜂鸣器和电磁式蜂鸣器。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成;电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。压电式蜂鸣器是利用压电效应原理工作的,当对其施加交变电压时它会产生机械振动发声;电磁式蜂鸣器是接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。蜂鸣器按照驱动方式不同又可分为有源蜂鸣器和无源蜂鸣器,其主要区别为蜂鸣器内部是否含有震荡源。
2024-02-21 20:33:35
1640
原创 07 按键控制 LED
按键开关是一种电子开关,属于电子元器件类。常见的按键开关有两种,第一种是轻触式按键开关(简称轻触开关),使用时以向开关的操作方向施加压力使内部电路闭合接通,当撤销压力时开关断开,其内部结构是靠金属弹片受力后发生形变来实现通断的;第二种是自锁按键,自锁按键第一次按下后保持接通,即自锁,第二次按下后,开关断开,同时开关按钮弹出来。
2024-02-18 17:11:45
2869
原创 06 分频器设计
实现分频一般有两种方法,一种方法是直接使用 PLL 进行分频,比如在 FPGA 或者 ASIC 设计中,都可以直接使用 PLL 进行分频。但是这种分频有时候受限于 PLL 本身的特性,无法得到频率很低的时钟信号,比如输入 100Mhz 时钟,很多PLL 都无法得到 1Mhz 以下的时钟信号。另外一种方法是直接使用 Verilog 代码来实现分频。
2024-02-18 12:11:52
2006
1
原创 05 状态机
Verilog 是硬件描述语言,它所生成的电路都是并行执行的,当需要按照流程或者步骤来完成某个功能时,可以使用多个 if 嵌套语句来实现,但是这样就增加了代码的复杂度,使得代码可读性差、维护困难,此时若通过状态机来控制程序流程即可解决这个问题。状态机相当于一个控制器,它将一项复杂流程的流程分解为若干步,每步对应于一个状态,通过预先设计的规则在各状态之间进行跳转,从而控制程序执行流程的目的。
2024-02-02 19:49:31
1690
原创 04 避免 Latch 的产生
latch 即锁存器,是一种对电平敏感的存储单元电路,和寄存器一样都是基本存储单元,但是寄存器是边沿触发的存储器,锁存器是电平触发的存储器。
2024-01-31 21:13:29
1140
原创 03 Verilog HDL 语法
Verilog HDL(Hardware Description Language)是在 C 语言的基础上发展起来的一种硬件描述语言(用它可以表示逻辑电路图、逻辑表达式、数字逻辑系统所完成的逻辑功能等)具有灵活性高、易学易用等特点。Verilog HDL 可以在较短的时间内学习和掌握,目前已经在 FPGA 开发/IC 设计领域占据绝对的领导地位。
2024-01-29 21:30:32
4284
原创 02体验FPGA开发流程
发光二极管的原理图如下所示,发光二极管LED0阴极连到 S8050(NPN三极管)的集电极上,阳极通过电阻与 3.3V 电压相连,三极管的基极与 FPGA 的V9脚相连。可以通过改变三极管的状态来控制 LED 的亮灭,当 FPGA 输出到为高电平时,三极管导通,LED 灯亮,当 FPGA 输出到为低电平时,三极管截止,LED 灯灭。
2024-01-23 21:00:14
1665
原创 1 FPGA开发环境安装
Vivado 设计套件是 FPGA 厂商赛灵思(Xilinx)公司于 2012 年发布的全新集成开发环境,以提升生产力、缩短产品上市时间、实现可编程系统集成等为目的而设计的软件,是设计开发赛灵思(Xilinx)FPGA必不可少的软件根据,Modelsim 是 Mentor 公司设计的业界最优秀的语言仿真工具,它支持 VHDL 与 Verilog 混合仿真,具有编译仿真速度快、编译的代码与平台无关等特性。
2024-01-21 15:39:14
2170
原创 12.5在Linux中编写队列模式的SPI控制器驱动
在Linux内核中更加推荐使用队列模式的SPI控制器驱动,而且队列模式的SPI控制器驱动也更加简单,只需要在驱动中实现单个spi_transfer的传输即可,将spi_message拆解为spi_transfer、片选GPIO控制、统计信息更新等均由SPI核心去完成。
2024-01-20 12:52:50
1188
原创 12.4在Linux中编写阻塞模式的SPI控制器驱动
用make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- dtbs -j8编译设备树,用新的.dtb文件启动系统。这里编写一个虚拟的SPI控制器驱动,通过printk来输出SPI控制器的工作状态。
2024-01-14 21:04:17
1235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅