学员王斌 明德扬FPGA科教
本文为明德扬原创文章,转载请注明出处!
很多朋友在工程模块划分的时候总会遇到很多问题,比如不知道如何下手、模块划分不合理等;我开始也是这样的,在学习了明德扬的几项工程以后,按照老师分享的思路,也对模块划分有了一定的小经验,今天通过案例的方式与大家分享。
今天分享的案例是千兆以太网工程。该工程是明德扬的网络班、就业班的其中一个项目,涉及到MAC协议、ARP协议、IP协议和UDP协议的实现,协议较多,划分的模块也较多。
一、模块划分要点总结
1、列出项目的功能要求(客户提出的产品功能要求)
2、画出硬件的系统结构框图(添加外设)
3、框图中每个外围接口都对应有一个接口转换模块
接口转换模块的作用是将外围器件的接口时序转为通用的接口时序,或者将通用接口时序转换为外围器件接口时序,这样使得FPGA内部其他模块不用再关心外围接口的时序了。
MDY规范通用接口时序:
- data以及对应的vld,传输单个数据格式
- MDY的包文格式,din,vld,SOP,EOP,MTY,ERR
- wren,waddr,wdata;rden,raddr,rdata,rdata_vld
4、考虑是否涉及指令系统(操作码+数据格式)
上位机,例如PC,ARM,DSP或者其他的器件,只涉及到一个接口,但是却有很多指令或者命令功能要发送,因此就需要一个指令系统。
指令系统一定会涉及到命令、地址和数据。这种情况,肯定会有一个“寄存器解析模块”,根据命令、地址和数据,改变相应的寄存器的值。
5、考虑外围器件是否涉及寄存器配置
项目中有某些外设,上电工作前需要进行配置才能按要求工作。因此需要对外设内部寄存器进行读写,这一流程是通过FPGA来进行配置。
遇到这个情况,使用MDY推荐的模块寄存器配置结构:
寄存器配置表模块+寄存器读写配置模块+外设配置接口时序转换模块
6、根据实际情况,增加、补充或者拆分,优化对应模块,