本帖最后由 zengkf0102 于 2017-9-17 16:43 编辑
一、项目概述 本项目是在学习了小梅哥团队创作的《 FPGA自学笔记——设计与验证》一书中串口传图帧缓存设计和小梅哥在 电子发烧友上“【小梅哥2017力作】详细的FPGA以太网设计教程,76页精华PDF”中以太网UDP发送设计的基础上进行设计的,一方面是复习巩固学习的知识,一方面是作为练习,检验自己是否真正的理解了这些设计的思想。项目实现了PC机上的上位机通过以太网UDP协议将图片数据传输给AC620 FPGA 开发板,AC620接收图片数据后将图片缓存在片外的SDRAM中,最后将缓存的图片数据显示在4.3寸TFT屏上的功能。整个实现过程与串口传图帧缓存设计类似,学过那个之后,再来看这个并不复杂,本设计中有关模块设计是与串口传图帧缓存设计中有些模块是相同的,这里就简单介绍下该模块,不再详细讲述,想了解的可以购买《FPGA自学笔记——设计与验证》一书进行学习,上面有比较详细的讲解。
二、硬件平台 本项目设计的硬件平台是小梅哥出品的AC620 FPGA开发板和4.3寸TFT显示屏,自己并未增加额外的硬件模块,这里要非常感谢电子发烧友平台和小梅哥提供的试用机会,让我有幸能免费使用AC620 FPGA开发板进行学习,该开发板的资源丰富,加上相应的学习资料也丰富,对于像我这样的初学者来说,是不错的选择。废话不多说,下面就进行项目具体内容的描述。
三、系统设计 1、 整个系统的设计框图如下:
从系统的框图可以很清楚的知道,需要进行的设计主要包括以太网数据接收模块、SDRAM控制器模块、和TFT屏显示控制模块3个模块。这里的SDRAM控制器和TFT控制器模块均可采用串口传图帧缓存设计中对应的模块,下面重点讲解以太网数据接收模块的设计过程。 2、以太网数据接收模块设计
以太网数据接收模块相对于数据发送模块来说简单一点,如果认真学习了小梅哥以太网的教程,写一个数据接收模块应该是信手拈来的事。下图是借用小梅哥以太网中的图,数据接收模块主要用到MII接口中的RX_DV,RX_CLK,RXD[3:0]三个信号,RX_ER信号在这里就不考虑了。
先来看看RTL8201 网络PHY芯片关于接收数据部分的时序图,如下:
通过看以太网接收数据的时序可以很清楚的知道,当RX_DV为低电平时,RXD上是没有数据传输的,当为高电平时,表示有数据传输,在RX_CLK上升沿对RXD进行采样就能接收到以太网帧的数据,在接收完后对帧数据进行响应的解析和校验判断是否为有效接收帧,若为有效数据则将数据存起来用于其他处理,若数据无效则就丢弃。 具体的设计代码可参见附件,下面是实现的效果图, |