秦韵FPGA 转载或原创(九)
----------基于高云fpga ------ GW2A18
pcb板卡(项目实战)
主要贴几张图,板卡的功能简单的介绍一下,抽空还会出类似的基本功能板卡,这张板卡仅供大家参考,可以学习或者参考做板卡。
这是板卡的顶层图(部分),采用的是高云的GW2AR18k芯片,片内自带psram,下载接口为JTAG,因此要万这块板卡的朋友可以买一个高云的下载器,推荐官网的,不过价格比较高,当前这块板卡成本比较高,主要是为了某个固定的项目来开发的,有特定用途,当然这只是一部分,该部分还涉及到背板和其他的功能。
pcb板卡(功能介绍)
大概介绍一下该板卡的主要功能,主要是做高速数据采集和数据传输,顶层的主要功能呢,就是实现数据采集,然后将数据暂存在片内psram中,通过千兆phy将数据透传到服务器。(简单的介绍一下,有兴趣的朋友可以私信我,发给你们fpga部分的原理图,后续我会出基本功能的板卡)。
以太网部分简介
在这里简单的介绍一下以太网的操作流程,具体的协议理论我就不多说了,我简单的列举一下udp协议的实现过程,代码呢我会扔出来部分,可以参考进行移植和开发。
- udp协议 : 是一种不可靠的通信协议,简单来说(相比于TCP/IP协议)就是两个人(A.B)通信,A知道B的通信地址,然后A就直接给B说话,也不管B是否在听讲,说完了就结束了,不在乎结果,对于B来说,机会有两种结果,接受到了和没接收到。
- 协议包: 关于这部分网上讲解的比较多,也比较详细,我只是简单的说一下,也不需要将理论搬运过来,只是介绍一下代码的实现过程。简单来说,组包,有两种简单的方式: 1)用状态机,2)用计数器。
- 简单介绍两种方法:
- 1) : 定义状态机,推荐3段式状态机,清除明了,将整个udp分成几个状态,然后通过控制条件进行跳转,完成组包;
- 2) : 简单的就是线性序列机(名称参考的书本上) 。 实现起来就直接定义一个计数器就行。
- 懂了实现方式,其他的就好办了,把协议中空缺的位置填上就行了,比如: 包头,目的端口,源端口,目的地址,源地址,生存周期,协议解析,以及数据段,crc检查等等。
- 文件组成
- 将底层写好的驱动封装一层,建议在底层封装fifo,将顶层的接口整理成标准的fifo接口,方便后续调用。