- 博客(14)
- 收藏
- 关注
原创 VITIS嵌入式学习(三)AXI BRAM和PS-PL AXI互联
本文探讨了ZYNQ MPSOC中PS与PL端通过AXI BRAM进行数据交换的方法。首先介绍了PS-PL互联的AXI总线结构,包括地址映射原理和BLOCK DESIGN中的配置要点。然后详细说明了AXI BRAM的创建过程、地址分配注意事项以及驱动程序实现,提供了读写测试代码示例。最后指出了缓存一致性问题对PS-PL数据交换的影响,并建议通过中断机制等方式解决。文章强调深入理解硬件结构对MPSOC开发的重要性,为后续学习AXI DMA等内容奠定了基础。
2025-11-26 21:11:48
561
原创 VIVADO/VITIS ZYNQ修改自定义IP核驱动不生效问题
这两天在捣鼓ZYNQ的PS-PL的相关内容,想试着自己在PL端创建一个AXI IP核来给PS进行控制,顺便写一写驱动代码,但是在实验的中途就遇到了几个比较奇怪的问题,最主要的是在生成完IP核后我再去修改驱动,发现在使用XSA文件导入硬件平台后,vitis中显示我的修改并没有生效,在到处搜索了一下答案后发现了问题所在,这里记录一下。
2025-11-14 12:42:10
339
原创 AXI总线学习
这几天学习了下AXI总线协议,其实AXI总线的内容已经被总结和归纳的非常完善了,几乎随便上网一搜就有总结好的内容,所以这一篇文章主要是作为备忘录来记录一下,如果对你有帮助就好。文章的内容来源知乎,优快云以及各种网站上的文章还有我自己的总结,当然最重要的是ARM的官方文档IHI0022D AMBA AXI and ACE Protocol Specification,文章的大部分截图也是来源于此。
2025-11-13 14:47:26
734
原创 VITIS嵌入式学习(二)EMIO与AXI GPIO
本文主要探讨了ZYNQ MPSOC开发中EMIO和AXIGPIO两种连接方式的差异。EMIO通过PL端扩展MIO接口,与PS端GPIO外设直接连接,操作方式与MIO相同但引脚更灵活。AXIGPIO则是PL端独立的GPIO外设,通过AXI总线与PS通信,功能较PS内置GPIO有所简化。通过分析两种方式的硬件结构和控制代码。
2025-11-13 10:39:25
935
原创 VITIS嵌入式学习(一)GPIO结构与代码解析
本文深入解析了ZYNQ MPSOC嵌入式系统开发中的关键概念与技术要点。文章首先剖析了MPSOC的整体架构,随后详细演示了MIO作为GPIO外设的使用方法,通过代码实例详细解读了Xilinx驱动库中各API函数的实现原理,包括设备查找机制、寄存器操作封装层次等底层实现细节。文章特别强调了嵌入式编程与硬件架构的紧密关联,指出理解底层硬件结构对于开发的重要性。最后预告后续将探讨EMIO和AXI GPIO相关内容。
2025-10-30 16:16:28
560
原创 VITIS 解决暗色主题下文本编辑器高亮代码看不见的问题
VITIS切换暗色主题后,发现C文件中if块高亮显示异常。解决方法是在Windows→Preference→C/C++→Editor中修改Inactive Code Highlight颜色,选择较深色即可。注意需在C/C++的Editor设置中修改,在General下的Editor修改无效。调整后if块高亮显示恢复正常。
2025-09-26 12:55:30
190
原创 FPGA读写DDR4 (三)DDR4读写控制仿真
本文介绍了DDR4读写控制模块的仿真方法。首先通过XILINX IP核的示例项目获取仿真文件sim_tb_top,将其导入工程并进行四方面修改:调整DDR参数、删除宏定义、修改DDR4例化、替换主工程模块。仿真时需注意编译顺序问题,作者提供了解决方案链接。仿真结果显示写DDR和读DDR的时序均正常,并通过板级验证。虽存在部分DRC警告,但最终满足时序要求,完成了DDR4读写控制模块的整个开发流程。
2025-09-24 18:05:44
1059
原创 FPGA读写DDR4 (二)MIG读写控制与FIFO缓冲
本文介绍了DDR4存储器与FIFO缓冲协同工作的Verilog实现方案。针对高低带宽转换问题,提出使用深度FIFO进行缓冲,并分析了单次与多次突发传输对DDR效率的影响。重点阐述了FIFO配置原则(写FIFO需采用FWFT模式)、状态机设计(包含初始化/空闲/读/写4个状态)以及关键控制信号处理。提供了完整的DDR读写控制模块代码,包含地址计算、突发长度管理和FIFO交互逻辑。文章最后指出将进行下期仿真验证,为DDR4高效操作提供了一套可行的硬件实现方案。
2025-09-24 17:19:03
1241
原创 FPGA读写DDR4 (一)MIG IP核控制信号
本文总结了DDR4内存控制IP核MIG的使用方法。主要内容包括:1)MIG IP核的创建界面和关键参数(如BurstLength=8)的说明;2)MIG控制信号分类详解,包括全局接口、命令接口、写接口和读接口;3)重点分析了写操作的两种时序(非背靠背和背靠背)和读操作的时序特点;4)指出在高速应用中需要配合FIFO实现跨时钟域数据传输的问题。文章为后续DDR4的实际应用提供了基础性的控制信号操作指南。
2025-09-23 21:06:43
2248
原创 VIVADO 仿真时出现‘arch_package‘ is not declared的解决方法
摘要:作者在仿真DDR4 IP核时遇到两个编译错误:'arch_package'和'_8G'未声明。通过检查确认arch_package.sv文件已包含在工程中,并在编译顺序设置中将该文件调整到sim_tb_top.sv文件之上后,问题得到解决,仿真可正常启动。
2025-09-19 16:39:46
270
原创 FPGA实现以太网ARP与UDP协议内容总结
本文总结了FPGA实现以太网ARP和UDP协议的关键要点。首先介绍了ARP协议原理,包括MAC帧格式(前导码、帧头、数据段等)和ARP帧格式(硬件类型、操作码等)。接着解析了UDP协议,说明其位于IP层数据段的特点,详细阐述了IP帧头和UDP帧头格式。文章还讲解了RGMII与GMII接口转换的技术实现,以及Xilinx FPGA中的DDR转换原语使用。最后对UDP接收状态机代码进行了详细注释,展示了从MAC帧解析到UDP数据提取的完整流程。这些内容为FPGA开发以太网通信功能提供了实用参考。
2025-08-28 00:06:55
921
原创 FPGA驱动I2C协议OLED屏幕
本文介绍了基于FPGA的I2C协议驱动SSD1306 OLED显示器的实现过程。作者通过设计I2C单次发送状态机模块,实现了基本的I2C通信功能,并在此基础上构建了OLED驱动状态机,完成了屏幕初始化和数据传输控制。文章详细阐述了状态机的设计思路和实现细节,包括时钟分频、状态转移条件和执行模块等关键部分。同时,作者也指出了当前设计的局限性——由于每次传输都需要发送额外的地址和控制指令,导致帧率最高只能达到13帧,存在明显闪烁问题。最后,作者提出了优化建议,如改用连续数据发送模式,可将帧率提升至约50帧。
2025-08-15 14:00:41
1826
1
原创 VIVADO 后仿真报错:[VRFC 10-2063] Module <XXX> not found while processing module instance <XXX>解决方法之一
EEPROM_AT24C64是用来作为外部EEPROM的仿真模块,在行为级仿真时还能正常找到,后仿真时就会报错说找不到模块。然后右键这个文件扔到simulation sources就行了。然后就能正常后仿真了。
2025-07-10 19:26:27
380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅