FPGA多重加载技术的设计模块及其在硬件平台上的多模式启动测试并分析
扫描二维码
随时随地手机看文章
摘 要: Xilinx 7系列FPGA是Xilinx公司最新推出的一个芯片系列,Kintex7是该系列芯片中的一种,拥有大量的可编程资源。即便如此,在一些多模式的大型复杂的系统设计中,芯片的资源还是远远不能满足设计需求。FPGA的多重加载可以解决可编程资源不足的难题。FPGA多重加载是将设计的多个模式的比特文件存储到Flash,用户可以根据需要选择加载不同模式的比特文件。FPGA的多重加载解决了可编程资源不足的问题,提高了FPGA可编程资源的利用率。
随着通信技术的快速发展,多模式通信体制在现代通信中广泛存在,如时分多址、空分多址、空分多址、频分多址等。而调制、解调技术又分为FM、FSK、BPSK、QPSK等多种调制及解调技术。在一个通信系统中往往采用多种通信模式,这对硬件设备资源提出了比较高的要求,特别是对可编程芯片资源的要求。另外,多模式系统设计的复杂性也大大提高,同时对系统的维护和升级提出了挑战。
近些年FPGA技术得到了飞速的发展,其作为可编程资源广泛应用在大型复杂通信系统设计中。尽管FPGA在资源集成度方面近些年取得了可观的成果,但是在多模式的大型系统设计中,单片FPGA资源远远不能够满足设计需求,有时可能需要多个芯片。然而FPGA价格相对较高,这大大提高了设计成本,而且不易于产品升级和维护。
FPGA多重加载技术[1-2]实际是对可编程资源的复用,用户可以根据需求选择加载不同的比特文件,从而实现多模式功能。FPGA多重加载技术可以解决可编程资源不足的问题,提高了可编程资源的利用率,同时降低了系统设计的复杂性,增加了系统设计的灵活性,减小了多模式系统的耦合性,便于系统升级和维护。
1 硬件设计Kintex7和SPI Flash物理连接的硬件设计如图1所示。SPI Flash的容量选择与设计的加载模式的个数和FPGA芯片的种类有关,本设计实现4种模式切换,SPI Flash内存储4个比特文件,SPI Flash的容量是512 Mbit。
2 控制部分的设计
控制部分的设计是基于PowerPC[3]处理器实现的,用于对整个数据采集系统的控制,这里只对FPGA模式加载控制做简单说明。FPGA的加载模式控制信息由上位机发送,上位机的1 G(TCP协议)网络将加载模式控制信息发送到数据采集系统的1 G网络;数据采集系统控制部分解析TCP数据包,提取有效信息,判断加载模式,将加载信息通过EPC(外设控制器)写到FPGA的寄存器中,Kintex7会根据寄存器中的值选择加载模式。外设控制器(EPC)是FPGA与PowerPC之间通信的桥梁,在重加载控制过程中主要负责传递加载模式信息到FPGA寄存器内,另外还需要将加载成功后的模式信息进行回读,并且通过1 G网络送到上位机界面,判断是否重加载成功。嵌入式控制部分的设计如图2所示。
3 重加载模块的设计
IRPOG命令序列是实现FPGA重加载的重要环节。IPROG命令的效果与在PROGRAM_B引脚产生一个脉冲的效果类似,但是IPROG命令不对重配置[4]逻辑进行复位。Kintex7内部ICAPE2模块能够执行IPROG命令,IPROG命令触发FPGA从SPI Flash中重新加载比特文件,加载地址是Kintex7中WBSTAR寄存器指定的地址。IPROG命令发送后,FPGA完成3个动作:发送同步字节(AA995566);向Kintex7的WBSTAR寄存器写入下一个加载地址(表1地址为00000000);发送IPORG命令(0000000F)。表1是通过ICAPE2向重配置模块发送IPROG命令的比特流,MulTIboot[5]控制器用一个状态机向ICAPE2发送表1中的IPROG命令序列。一般情况下,重配置控制器等待外部的激励信号,当激励信号到达后,控制器向ICAPE2发送表1命令序列,在发送命令序列之前,控制器先把WRITE端口置为低电平,在下一个时钟的上升沿把CE端口置为低电平,接下来发送表1指令序列。
FPGA内的重配置逻辑接收到IPROG命令后,FPGA执行复位操作,但不对重配置逻辑进行复位,并且将INIT_B和DONE引脚拉低。FPGA清除了所有的配置存储后,INIT_B端口被拉高。最后,WBSTAR寄存器的值被用来重新配置FPGA。
IPROG命令序列通过状态机实现,状态机中最少有8个状态才能生成整个IPROG命令序列,否则,IPROG命令序列不能够生成,FPGA不能重新配置。另外,IPROG命令的发送由ICAPE2模块执行,ICAPE2模块的输出时序和SelectMAP的输出时序是一致的,SelectMAP的输出数据格式是位转换格式,所以IPROG命令序列生成的过程中需要将配置数据进行位转换。这里位转换是指字节内位转换,即最高有效位变为最低有效位,以此为规则进行字节内的位互换。位转换结果如表2所示。