
FPGA基础模块
文章平均质量分 94
电路_fpga
闻道有先后 术业有专攻
展开
-
fpga通过uart向上位机传输ad7606采集数据
通过串口将AD7606采集的8路ADC数据传输至PC显示。AD7606模块将采集的16位补码数据转换为电压值,并转换为BCD码。系统设计包括数据处理模块和UART字节发送模块,前者负责数据转换,后者负责将数据以ASCII编码形式发送。原创 2025-01-21 20:07:37 · 968 阅读 · 0 评论 -
基于FPGA的AD7606并行接口驱动程序仿真及上板
本文介绍了AD7606并行接口驱动程序的仿真及上板测试过程。首先,使用Matlab生成200KHz采样率下的2KHz正弦波二进制文件。接着,在Altera开发板上,通过Quartus和Modelsim进行联合仿真,测试AD7606驱动代码。仿真中,使用readmemb函数读取二进制数据,模拟AD7606的输入数据。上板测试时,使用Signal Tap II逻辑分析器验证接口时序,确认采样率和数据采集正确。测试结果与预期一致,验证了驱动程序的正确性。最后提供了获取Quartus和Vivado工程文件的方式。原创 2024-12-25 11:30:00 · 964 阅读 · 0 评论 -
基于FPGA的AD7606并行接口驱动程序
本文介绍了基于FPGA实现AD7606并行接口数据采集的方法。首先,通过状态机和计数器实现AD7606的复位、采样锁存、数据读取等时序控制。在FPGA中,使用计数器确保信号持续时间满足AD7606要求,如RESET、CONVSTA/B的持续时间。状态机在检测到BUSY下降沿后读取数据,CS和RD信号的生成也通过计数器控制。原创 2024-12-18 11:30:00 · 1576 阅读 · 2 评论 -
详解AD7606引脚及接口时序参数
AD7606是一款8通道16位同步采样ADC芯片,支持200KSPS采样率,可选±5V或±10V输入电压范围,5V供电。具有并口和SPI串口通信接口,8通道同时采样,简化PCB设计。内部无配置寄存器,通过引脚配置功能。支持过采样,但通常不使用。数据可通过并行或串行接口读取,FPGA常采用并行模式。原创 2024-12-11 11:30:00 · 4217 阅读 · 0 评论 -
基于FPGA的WM8371从机模式驱动设计(含源码)
本文介绍了基于FPGA的WM8371从机模式驱动设计,包括系统框图、I2S模式时序、程序设计和工程仿真。在从机模式下,FPGA提供三个时钟信号,采用24位音频数据和可配置的采样率。详细描述了时钟分频、寄存器配置、数据接收和发送模块的设计。通过仿真验证了时钟分频、数据采集和输出的正确性,并展示了上板测试结果。用户可以根据需要修改顶层参数来设置采样率和数据位宽。原创 2024-12-04 11:30:00 · 713 阅读 · 0 评论 -
记录开发WM8371主机模式遇到的问题
本文描述了在编写WM8371驱动时遇到的问题及其解决过程,最初选择了主机模式和I2S左对齐数据传输模式,但在50MHz FPGA时钟下遇到了耳机输出噪声问题。通过硬件回环测试排除了硬件故障,确定问题在于FPGA代码。分析发现,由于系统时钟频率较低,导致DACDAT信号与BCLK上升沿重合,违反了WM8371的时序要求。解决方案是将系统时钟频率提高至100MHz,以满足BCLK的建立和保持时间要求,从而消除噪声。原创 2024-11-27 11:30:00 · 787 阅读 · 0 评论 -
基于FPGA的WM8371主机模式驱动设计(含源码)
本文介绍了基于FPGA的WM8371音频编解码器驱动模块,包括寄存器配置、音频采集和输出模块。音频采集模块通过I2S接口采集ADC数据,音频输出模块将数据通过DAC输出。文中详细描述了I2C配置过程、I2S左对齐模式时序、音频数据位宽参数化设计,以及如何同步和转换数据。最后提供了上板测试结果,包括麦克风输入和左右声道音频输入测试,并说明了如何修改ADC/DAC采样率。工程代码可在公众号后台获取。原创 2024-11-20 11:45:00 · 1094 阅读 · 0 评论 -
详解wm8371音频采集芯片的寄存器
本文详细介绍了WM8731编解码器的寄存器配置和电路设计。WM8731具有24位ADC和DAC,支持16至32位音频输入字长和8kHz至96kHz采样率。阐述了如何通过I2C或三线模式配置内部寄存器,并详细讲解了11个寄存器的功能,包括左右声道线路、耳机放大器、模拟音频路径控制、数字音频路径控制、省电模式、数字音频接口格式和复位寄存器。强调了省电模式、音频输入和DAC输出静音设置、I2S协议模式和格式设置、采样率设置的重要性。文档内容基于WM8731手册,提供了设计思路和配置参考。原创 2024-11-15 12:15:00 · 1789 阅读 · 0 评论 -
详解I2S协议
音频采集芯片WM8731的I2S协议包括ADCRC、DACRC、BCLK、ADCDAT和DACDAT五个信号。I2S协议有四种模式:左对齐、右对齐、I2S和DSP,推荐左对齐或I2S模式。WM8731音频数据可编程为16、20、24或32位。原创 2024-11-06 20:35:21 · 1763 阅读 · 0 评论 -
Xilinx的JESD204B PHY层IP仿真及上板测试(JESD204B四)
本文详细介绍了在FPGA上配置和仿真JESD204B PHY IP的全过程。首先,在IP Catalog中配置了PHY参数,包括收发器数量和动态线速率范围。然后,通过分析示例工程,理解了时钟处理、数据生成和检测模块的功能,并重点观察了axi_lite配置接口的时序。仿真验证了配置过程和数据收发的一致性。最后,针对开发板上板测试,对端口信号和时钟处理进行了必要的修改,并使用ILA捕获关键信号,成功验证了PHY IP的通信功能。整个过程展示了从理论配置到实际验证的完整步骤。原创 2024-09-26 12:33:30 · 2151 阅读 · 0 评论 -
基于GTX的64B/66B编码的自定义接收模块(高速收发器二十二)
本文完成了64B66B自定义PHY的顶层模块设计,包括发送、加扰、接收对齐、解扰和接收数据模块。重点设计了接收端同步模块,通过检测同步头状态调整串并转换起始位置实现数据对齐,并增加了同步失败的判断条件。接收数据模块负责解析数据输出到axi_stream。通过仿真验证了设计的正确性,准备进行上板测试。原创 2024-07-17 10:54:13 · 1204 阅读 · 1 评论 -
基于FPGA的SM3加密算法优化(SM3加密算法三)
本文通过流水线优化,提升了FPGA实现的SM3加密算法性能。在消息扩展和迭代过程中,通过插入触发器将并行计算转换为串行,大幅提高时钟频率至200MHz。详细描述了代码实现,并经过仿真和上板测试验证了优化效果。原创 2024-06-11 11:14:06 · 1549 阅读 · 0 评论 -
xilinx的Aurora8B10B的IP仿真及上板测试(高速收发器十七)
本文介绍了Xilinx Aurora 8B/10B IP的配置、仿真和上板测试流程。首先在Vivado中配置IP参数,生成示例工程并进行模块仿真,验证数据收发正确性。然后修改工程以适应开发板,包括时钟和复位信号处理,设置回环模式,最后下载到开发板进行调试验证。通过ILA抓取发送和接收数据,确认IP收发数据时序无误。原创 2024-06-10 18:58:25 · 2583 阅读 · 3 评论 -
FPGA实现SM3加密算法(SM3加密算法二)
本文详细讲述了利用FPGA实现SM3加密算法的工程实践。首先分析了sm3_encrypt模块,包括消息填充、扩展和迭代运算三个子模块。消息填充将输入数据扩展到512比特,消息扩展模块生成132个字的扩展数据,迭代模块完成64轮加密运算。还介绍了模块的端口信号、数据存储和转换过程,以及迭代运算中使用的函数和布尔操作。通过仿真和上板测试,验证了设计的准确性和效率,最终得出在Zynq7030ffg676-2上以50MHz频率运行,每2个周期完成一次加密的结论。原创 2024-06-10 09:00:00 · 1506 阅读 · 0 评论 -
基于FPGA的计算器(含源码)
本文详细介绍了基于FPGA的8位十进制数计算器的设计和实现过程。计算器通过矩阵键盘输入数据和运算符,利用数码管显示计算结果。设计包括消抖的按键检测模块、控制计算模块、乘法器、除法器、二进制转BCD模块、数码管刷新控制模块和74HC595驱动模块。各模块功能明确,通过状态机实现按键识别、运算执行和数据显示。乘除法运算采用移位和加法器实现,优化了资源消耗和运行频率。所有模块经过仿真测试,验证了功能正确性。最终在开发板上进行实测,验证了计算器的基本运算功能,包括连续运算和运算符更正,结果与理论值一致,展示了良好的原创 2024-05-01 13:39:27 · 5298 阅读 · 6 评论 -
基于FPGA的AXI_FULL主机模块测试(含源码)
本文通过Verilog HDL实现了一个AXI_FULL主机模块,用于验证读写时序和数据一致性。模块采用状态机控制读写操作,避免同时读写同一地址导致错误。提供了状态转换图、代码实现细节和仿真测试结果,证明了模块设计的正确性。原创 2024-03-29 14:06:36 · 1665 阅读 · 0 评论 -
基于FPGA的OV7725网络摄像头(含源码)
本文档描述了如何将OV7725摄像头采集的图像数据通过FPGA和千兆以太网传输到PC端上位机显示。系统设计包括初始化摄像头、封装图像数据、FIFO暂存、以太网发送和锁相环时钟模块。测试结果显示,帧率可达30帧/秒,且可以通过调整时钟频率提高至60帧/秒。文档提供了获取工程文件的方法。原创 2024-03-23 12:15:25 · 2339 阅读 · 5 评论 -
基于Verilog HDL的axi-lite主机模块
本文介绍了如何使用Verilog HDL实现一个axi_lite_master模块,该模块将通用接口转换为axi_lite接口协议。首先说明了在Vivado中生成AXI模块的方法,然后提出了两种设计思路:使用忙闲指示信号或FIFO来处理用户端口的数据。最终选择了FIFO方案,详细描述了模块的端口信号、FIFO实例化、读写时序和错误指示信号。最后,通过仿真验证了模块的正确性。原创 2024-03-23 12:13:03 · 2019 阅读 · 2 评论 -
将Xilinx DDR3 MIG IP核的APP接口封装成FIFO接口(含源码)
文档介绍了如何将Xilinx DDR3 MIG IP核封装成FIFO接口,以便于在图像处理等场景中存储和处理大量数据。内容包括设计思路、状态机实现、读写FIFO配置、顶层模块连接以及仿真测试。通过封装,简化了读写操作,增加了乒乓模式以优化数据刷新。文档还提供了获取工程文件的方法。原创 2024-03-10 11:56:14 · 3038 阅读 · 8 评论 -
基于fpga的ds1337读写控制
本文介绍了如何使用FPGA实现对DS1337实时时钟芯片的读写控制。首先,通过初始化日历寄存器,然后定期读取数据,使用ILA工具抓取时序以验证DS1337的正常工作。接着,通过I2C总线与DS1337通信,并采用74HC595芯片驱动4位数码管显示时间。文章还提供了顶层模块框图和I2C读写时序的分析,最后通过ILA抓取的数据验证了DS1337和I2C模块的功能。工程文件可通过公众号获取。原创 2024-02-28 09:55:21 · 1236 阅读 · 0 评论 -
调试eeprom过程中遇到的I2C接口问题,谁知道根本原因?
本文记录了在设计I2C主机时遇到的问题,特别是在EEPROM和RTC共用同一I2C接口时的读写稳定性问题。经过仿真和硬件测试,发现写操作正常,但读操作时EEPROM输出数据错误。通过调整读写间隔时间并保持数据线在空闲时不释放,问题得以解决。作者寻求解释为何释放数据线会导致读操作失败,并提供了相关工程文件。原创 2024-02-21 14:35:17 · 1450 阅读 · 0 评论 -
基于FPGA的实用UDP设计(包含源工程文件)
本文介绍了对FPGA上UDP协议实现的优化设计,通过整合ARP、ICMP、UDP协议模块,实现了一个更高效的网络通信模块。新设计减少了资源消耗,简化了用户接口,并通过上板测试验证了其功能。文章详细描述了以太网接收和发送模块的工作原理,以及如何通过状态机和控制逻辑处理不同协议的数据。最终,通过wireshark和网络调试助手展示了UDP数据的收发过程,证明了设计的实用性和有效性。原创 2024-02-19 11:22:12 · 4399 阅读 · 22 评论 -
通过eeprom验证FPGA实现的单字节/页读写IIC接口时序
本文档介绍了基于FPGA的I2C EEPROM读写模块的设计和验证。通过使用两个按键控制,实现了对24C02 EEPROM的前64个地址的读写操作。文档详细描述了EEPROM的原理图、单字节和页读写时序,并展示了顶层模块的RTL视图。通过仿真和实际硬件测试,验证了I2C接口模块的设计正确性,包括单字节读写和页读写功能。资源消耗分析显示了模块的高效性。文档还提供了获取工程文件的方法,以便读者可以进一步研究和使用。原创 2024-02-17 11:51:42 · 1492 阅读 · 0 评论 -
基于FPGA的I2C接口控制器(包含单字节和多字节读写)
本文档详细阐述了基于FPGA实现的I2C接口控制器设计,支持可变长度的寄存器地址和数据读写。通过分析EEPROM的单字节和页读写时序,提出了一个通用模块,使用状态机和计数器实现I2C通信。设计考虑了I2C的时序要求,如应答机制和数据线状态变化。文档提供了详细的端口信号列表、状态机设计和参考代码,以及对模块的仿真和资源消耗分析。原创 2024-02-14 14:37:06 · 3935 阅读 · 11 评论 -
基于FPGA的高效除法器
本文通过移位实现除法运算,设计中只使用到加法器,所以能够运行的最大时钟频率会得到提高。原创 2024-01-25 10:10:44 · 3174 阅读 · 5 评论 -
基于FPGA的74HC595数码管驱动
通过74HC595芯片驱动数码管,不管数码管扩展成多少个,引脚个数和刷新率均不会发生变化,如何使用FPGA进行驱动?原创 2024-01-23 17:05:10 · 2422 阅读 · 0 评论 -
基于FPGA的高效乘法器
通过移位实现乘法运算,运算时间与乘数的位宽和数值有关,最多经过乘数位宽个时钟周期输出数据,由于只使用了加法器,可以运行在较高时钟频率。原创 2024-01-23 11:25:53 · 2519 阅读 · 0 评论 -
基于FPGA的矩阵键盘驱动
通过FPGA驱动矩阵键盘,提供源代码及TestBench文件,比较常见的模块,便于后续使用。原创 2024-01-22 15:07:05 · 3105 阅读 · 4 评论 -
基于FPGA的UART接收模快(全模式设置)
本次设计新增可以设置校验位,停止位等参数。原创 2023-03-23 19:26:19 · 1190 阅读 · 0 评论 -
uart串口接收模块
该代码不包含校验,含校验位的见下一篇,本文主要是讲解如何根据协议时序确定设计思路,明确各个信号变化后,直接写出所有代码,并进行上板测试。调用该模块只需要设置几个parameter参数即可,模块内部参数无须做任何修改。原创 2023-03-06 18:43:11 · 2344 阅读 · 7 评论 -
基于FPGA的二进制转BCD码模块
一个普通的二进制转BCD码模块,接口时序简单,例化只需要输入输入数据位宽即可,其余参数无须设置。原创 2023-02-19 17:16:41 · 2247 阅读 · 5 评论 -
基于FPGA按键消抖检测模块(讲解可综合for循环的使用)
通过按键消抖扩展讲解FOR循环的使用原创 2022-09-03 15:07:14 · 1788 阅读 · 0 评论 -
基于FPGA的八段数码管动态显示(输入数据为BCD编码)
FPGA位选驱动任意个八段数码管显示的驱动代码,以两个计数器为主要架构,使用自动计算位宽函数,参数化设计,例化方便。原创 2022-08-15 13:50:10 · 18245 阅读 · 4 评论