结果揭晓:
32bit位宽,600MB/s的输入输出带宽,要求输入输出时钟达到150MHz以上,这样你的逻辑也得做到150MHz以上
FIFO深度64M,那总的内存需求位256MB,从成本考虑不能选择SRAM,而只能选择DDR(1,2,3) SDRAM.
总的内存带宽大于1.2GB/s,很多人说这个很好做,DDR400,32bit,这不就有1.6GB/s了吗?理论总与实际相差太远,在计算机采用一次读取大量数据以及BANK管理,能达到60%的带宽,在实际应用中,xilinx最高性能的MIG-DDR2也只能达到50%,多数情况下只能达到40%,altera的可能更糟糕(从评估的DDR3,SODIMM性能看,最高只有40%)
初步计算,采用DDR2 SDRAM,至少需要2.4GB/s的总内存带宽,因此选择256MB的DDR2,工作在至少150MHz(300Mbps),64bit位宽.为节省焊接成本(DDR2是0.8mm的球间距,焊接成本较高),选用SODIMM,那留给FPGA的成本只有100块出头了.
好了,有了内存条,内存控制器可以用官方提供的ipcore,似乎胜利在望了.
等等,还有一部分工作必须得靠经验完成.
这是一个FIFO,收发时钟未必相同,如果输入端只有1个数据,数据不够一次长的burst,但是你又不能等数据足够之后再输出,因此这里有一个复杂的数据管理机制,这个机制决定你把收到的数据放到内存还是放到输出口.
这里要设计一个CACHE,并配以复杂的数据管理,而且只能选择100块左右的FPGA芯片
这个地方,足以让多数人抓狂,只有100块左右的FPGA,面临两大挑战
1.性能受限,这个价格的FPGA性能不会怎么样,必须谨慎的设计代码,才能跑到150MHz
2.资源受限,这个价格的FPGA,前面已经用了DDR2控制器了,剩下的资源不多了.
总的来说,需要逻辑和DDR2内存能跑到150MHz,有效引脚超过180根(36为读,36位写,110根DDR2)
总成本(包括配置flash)100块左右的FPGA
我这里的解决办法
1.spartan-3AN的400AN(内置配置flash),100块
2.256MB的DDR2内存条,能跑DDR2-400就可以了50块.
3.各种电阻电容,电源,接插件,20块
4.BGA焊接费用20块
5.4层板,批量生产成本20块
算起来多了10块,这只是估计值,实际上电阻,电容,电源这些都降下来 |