更新时间: 2023-01-13
总体硬件设计
外部数据采集系统是2个40MHz采样的16位A/D通道,所以设计时分成两个通道独立设计。虽然K9F2G08U0M的数据寄存器写入速度可达33MB/s,但在FPGA设计时,为了在时序上更加可靠,选择使用25MHz的时钟设计,则K9F2G08U0M的写入速度为50MB/s(把两个K9F2G08U0M并成16bit,写入速度即为25M×l6b/s)。这样,在FPGA内部开辟3个页大小的双口RAM作为缓存区就能满足40M×16b/s的写入速度,即在写第2、3个RAM的时间(25ns×2048×2=102.4μs)内,启动第1个RAM把数据写
入Flash的数据寄存器,所需时间为40ns×2048=81.92μs,小于102.4μs。
在读回数据时,如以20MHz读取Flash,以40MHz读出缓冲区中的数据,3个双口RAM就能刚好满足要求,如图1。读取K9F2G08U0M一页数据能达到33MHz的速度,为了让读写Flash使用同一时钟,读Flash也采用25MHz的速度。同时为了增加系统设计的冗余,采用4页的双口RAM作为缓冲区。所以每片FPGA内部至少需要4×2048×16bit="131"072bit的存储空间。
回放时内部缓存区个数
由于数据在写入Flash后还有较长的编程时间,一页的编程时间典型值为300μs,**值为700μs。数据在存储上不能有任何的停顿,否则就会丢失数据,所以不能使用R/B信号进行设计。为了系统更加可靠,选择**编程时间700μs。两次对同一组Flash进行写操作的时间间隔为700μs+81.92μs=781.92μs,一页的数据写到双口RAM要
用25ns×2048=51.2μs。总时间除以写一页数据的时间:781.92/51.2=15.3μs,说明一个循环内至少需要16组Flash才能满足要求。所以在设计中,对于每路A/D采样通道都用一片FPGA作为缓冲和控制系统,在每片FPGA内部都采用4个缓冲区,每个缓冲区对应一条外部总线,每条总**挂有4组K9F2G08U0M×2(将两片Flash并成16位操作,即把I/O并成16位,共用控制信号线)。系统整体框图如图2所示。
系统整体框图
图2中2个外部接口连接2个A/D通道,采用两片FPGA作为控制和缓冲区,每片控制16组Flash。存储板通过PCI9054与CPCI总线相连,通过CPCI总线可以将存储板数据高速读回计算机。