本帖最后由 littleshrimp 于 2020-4-3 15:26 编辑
这些年一直想玩玩高速AD采集,因为没弄过FPGA很多时候都放着现成的ADC用不了变着法的通过MCU解决,比如使用MCU的现有接口控制一些低速的ADC芯片,或者使用MCU内部的ADC。
前段时间弄过Cypress的PSOC,因为是可硬件编程的还可以使用Verilog,玩了一段时间发现内部资源有限加上频率不够,太复杂太高速的ADC玩不起来。
后来又弄过STM32G474和TMS320F28379D,使用STM32G474把基本功能实现了,但是总是还差那么一点想提高一下,后来鼓捣TMS320F28379D时废了几天劲最后把板子给玩坏了。玩MCU做采集花了不少时间也走了不少弯路,现在没有FPGA这首关是过不去了,一气之下决定学FPGA。
这几年一直关注FPGA的开发板,我需要一个不太贵的一搬在1K以下、内存大一点的、有一个能和电脑高速通信的比如USB2.0 HS或者100M以太网接口USB3.0最好、可用I/O多一些的、体积小一点的、带LVDS接口的。可能是我的要求太高,一直没找到合适的,有的不是太贵就是板子太大、功能太多、有用接口太少,像有些学习板带的各用按键、数码管或者那种大板贴最小系统板的,看着就没有兴趣。
后来我买了EP4CE10E22C8N、下载器和一些相关器件准备画一个板子,选EP4CE10E22C8N是因为它看着简单,没有操作系统,网上的资源还多。某宝上写的全新的EP4CE10E22C8N收到后一看,MD,表面破头烂齿的全是划痕,店家说不影响使用,我哪敢用,关键是折腾不起。
后来无意间看到有卖EBAZ4205这个矿板的,想起以前chenzhufly发过贴子,二手货40块钱不到,资料齐全。可是当时一看有操作系统,能跑Linux就怕了。因为怕这个Linux一直没敢玩MPU这类的东西,这次没别的选择了,Linux就Linux,怼吧。
买了两片EBAZ4205又买了仿真器,然后开始各种补习资料,黑金和正点原子这些大神把他们整理的资料都全部开放出来了,非常适合新手学习,我看了几天发现学这个FPGA好像也不难,ARM9原来还可以不跑Linux,把它当单片机裸跑玩起来也挺容易,Verilog语言好像也挺好学的。然后这几天一直兴奋的睡不着觉,好像发现新大陆了,各种查资料各种学习。
EBAZ4205在收到后跑了一下helloworld,发现FPGA没那么难挺好入手的。后来又继续调试也发现EBAZ4205的一些问题,比如接口排序有点乱,相同的差分对不是挨着的,和ADC扩展板连接会有困难。另外就是板子上的BANK34和BANK35R VCCO是3.3V供电,没法使用LVDS_25。查看原理图发现这个板子设计巧妙的地方是VCC(3.3V)是通过FB15和FB16这2颗磁珠连接到BANK34和BANK35的VCCO的,需要LVDS时只要把磁珠取下外加一个2.5V的供电就可以。
看了一下PCB布局发现这个供电还挺好改,可以通过D22下边的接口直接供电,也可以在板子上放一个LDO把VCC(3.3V)转成2.5V,焊盘够大焊起来也比较方便。
供电没什么问题了然后我又按照需求去调一下以太网,EBAZ4205上使用的是100M的RMII PHY速度虽然不高但也够用,因为板子内存够大数据可以先放内存里慢慢传。当我把以太网配置好跑了一下例程后发现它最大只能跑10Mbps的速度,即使IP101G这颗以太网芯片已经承认它工作在100M模式下了,但通过软件收发数据的吞吐还是限制在10Mbps以下,相当于USB-FS的速度这就有点坑了,研究了几天没找到原因。
后来我又在网上找到一个蚂蚁矿机S9的控制板,旧板子的价格也和EBAZ4205差不多新版子贵了些,bitmain官方报价400大洋,相对其它开发板还是便宜不少,关键是设计紧凑这点我比较喜欢。板子上集成的是1000M以太网接口直接与PS连接 (EBAZ4205的以太网是连接到PL,需要用EMIO方式连接),为了这个高速以太网我准备再试试,于是买了一块新的蚂蚁矿机S9的控制板又买了资料准备再研究研究。
板子现在还在飞来的路上,没有板子可以先研究下资料,在研究资料的过程中又发现了新问题,这个S9控制板的BANK34、BANK35的VCCO接的都是3.3V而且全是直连,没有PCB布局图,想断开3.3V接2.5V是不可能了(即使有也几乎不可能)。
路走到这不能走死,还要继续折腾,想到能不能把3.3V电源改成2.5V,找了一圈3.3V发现它除了给XC7Z010供电,还给有源晶振、SD卡、NAND FLASH、以太网、JTAG电平转换、串口电平转换供电,晶振和接口这部分不用考虑、SD卡也可以不用,关键是NAND和以太网,查询发现NAND的供电电压最是2.7V,我想能不能把V3P3改成2.7V呢?
顺着这个思路再看LVDS_25的资料发现LVDS_25的最大VCCO电压为2.625V,但是在网上查询发现有人提到ug471里说VCCO超过2.85时LVDS输出会变成高阻,如果是2.7V呢,能不能工作?先假设它可以工作。
然后再看B50612以太网这块,有2处连接了3.3V, AVDD这部分和REGSUPPLY。
REGSUPPLY这部分是给内部1.2VLDO供电的,可以使用2.5V供电,而且好像还可以节省功耗。
但是AVDD这些电压只能在3.3V的5%上下浮动,想全部使用2.7V是不可能了。
不过这个电路有一个比较讲究的地方是AVDD这组供电和3.3V之间串了一颗磁珠,如果断开磁珠把V3P3降到2.7V,然后再使用其它3.3V给B50612的AVDD组供电或许可行。
现在LVDS功能只能寄望于XC7Z010在BANK34和BANK35在VCCO为2.7V时能够正常使用。不过即使XC7Z010内部的LVDS不能用,在ADC总线速度不高的情况下使用CMOS通信或者使用LVDS转CMOS应该也可行。
网上有网友提到XC7Z010的LVDS_25在3.3V供电时不能输出,可以作为输入使用(AR# 43989),但是不能使用DIFF_TERM,需要在外部设置电阻,因为很多高速ADC都提供时钟输出,所以如果这种操作可行,那么很多ADC还是可以使用这个板子做采集的。
除了LVDS_25的VCCO供电,这个板子也有一些不足的地方,比如在I/O接口处加了测试点,高速信号应该会有影响,使用时可以把测试点的线切断。