文献标识码:A
DOI:10.16157/j.issn.0258-7998.175127
中文引用格式:罗军,范剑峰,吕宏峰,等. 基于FPGA的块存储器资源功能验证及实现[J].电子技术应用,2018,44(9):44-47.
英文引用格式:Luo Jun,Fan Jianfeng,Lv Hongfeng,et al. Function verification and implementation of block random access memory based on FPGA[J]. Application of Electronic Technique,2018,44(9):44-47.
0 引言
可编程逻辑阵列(FPGA)由于其具有可编程、上市时间短、灵活性及高吞吐量等特性广泛应用于数字信号处理、接口电路控制、图像处理及算法加速等领域,如在接口协议并串转换电路[1]、图像算法加速电路[2]及矩阵分解电路加速[3]等领域应用广泛。随着微电子工艺技术的进步,FPGA器件向集成更多资源、更高速度及片上系统方向发展。FPGA器件内部具有丰富的可编程逻辑资源、输入输出口资源、锁相环及频率合成器资源以及嵌入式块存储器资源(BRAM)[4]等,其中FPGA片内丰富的块存储器资源使数据与处理模块的延迟更短,极大地提升了FPGA器件的处理性能和吞吐量。
随着工业界对FPGA器件的质量与可靠性要求越来越高,对FPGA器件片内资源进行充分的测试验证变得日益迫切。因而,近年来针对FPGA器件片内逻辑资源[5-6]及存储器资源[7-8]的测试逐渐成为研究热点。微电子工艺技术的进步推动了FPGA器件片内块存储器资源速度性能的提升,如何在其标称速度下进行功能验证变得日益重要。为了验证FPGA器件片内块存储器资源在标称速度下的功能是否正常,需要对FPGA器件的高速块存储器资源进行测试和验证。在高速大规模FPGA器件片内块存储器资源的测试中,通常包含输入激励模块、待测模块、时钟模块及输出比较模块等,如何保证在满足高速数据传输的基础上提升测试系统的时序收敛余量成为设计的重要挑战。
针对上述问题,设计提出了一种采用跨时钟域并结合扁平化策略与流水线技术的FPGA器件片内块存储器资源功能验证方法,通过合理地划分块存储器资源测试模块的时钟域,利用FPGA器件中的数字时钟管理单位(DCM)产生跨时钟域的时钟信号,并通过把输入激励模块从待测模块的高速时钟域中独立出来,从而使高速块存储器资源可以在高速下进行功能测试验证,达到时序收敛的要求。该方法采用双口读写存储器(RAM)或者先进先出存储器(FIFO)来实现跨时钟域的数据传输,利用扁平化策略及流水线技术设计数据比较模块,并结合模块复用技术达到针对FPGA器件块存储器资源功能测试灵活、高效的目的。在高速或者极限速度测试中,文中方法能够尽量减少输入激励逻辑资源的对待测模块的时序约束影响,提升测试系统的时序收敛余量,具有测试速度高、灵活性强等特点,应用范围广泛。
1 硬件电路设计
为了对FPGA器件片内的块存储器资源进行测试验证,基于FPGA器件中的已有逻辑资源设计硬件测试电路。FPGA器件单个块存储器资源功能验证方案如图1所示,主要包含数据激励模块、跨时钟域数据传输模块、待测块存储器资源模块、数据比较模块、结果显示模块及时钟管理单元。在该功能验证框架中,主要采用两个时钟域,分别为时钟域1(CLK1)和时钟域2(CLK2)。CLK1为低频时钟域,主要负责产生随机数据和测试结果的显示控制等工作。CLK2为高频时钟域,主要负责对待测块存储器资源进行读写测试以及数据的比较等工作。
数据激励模块采用PRBS23多项式产生伪随机数据, 如式(1)所示。数据激励模块的硬件电路结构如图2所示,通过移位寄存器与异或门可以实现1个位宽的伪随机数据产生。文中针对每个待测的BRAM资源设计36位位宽及512个存储地址,因此设计的数据激励模块包含36个独立移位寄存器和异或门,从而实现36位位宽数据的测试激励产生。
跨时钟域数据传输采用双口RAM实现,通过两个独立的读写端口及握手机制保证了不同时钟域数据的正常传输。设计的CLK1时钟域为200 MHz,CLK2时钟域为400 MHz,通过利用FPGA器件片内部分BRAM资源对待测BRAM资源进行测试,可以有效地保证待测BRAM的数据读写频率为400 MHz,提升设计时序余量。
在对待测BRAM资源进行高速下的功能验证时,首先往待测BRAM资源写入伪随机数据,然后从待测BRAM资源里面读取写入的伪随机数据,并且把其与写入待测BRAM资源之前的伪随机数据进行比较,最后依据比较结果判定待测BRAM资源是否功能正常。双口RAM及待测BRAM资源依据FPGA器件提供的配套开发工具自带的知识产权(IP)核进行配置。
数据比较模块由于处在高频时钟域CLK2中,因而需要进行扁平化及流水线的设计以便在高速下能够正常工作,其硬件实现结构如图3所示。采用四级流水线对从待测块存储器资源中读取的数据(data_rd)和预期的正确数据(data_cmp)进行数据比较,最后得到待测块存储器资源功能是否正确的标志信号(cmp_result)。
结果显示模块工作在低频时钟域CLK1,其通过控制7位数码管进行待测块存储器资源读写数据比较结果的显示。若待测块存储器资源读写数据一致,则7位数码管显示“P”,若不一致,则显示“F”。
时钟管理单元基于外部输入的差分时钟信号,分别产生低频与高频时钟域。
图1所示的块存储器资源功能验证框架为针对1个BRAM资源的功能验证实现结构,由于FPGA器件内的BRAM资源众多,如典型Xilinx的Virtex4系列的XC4-VSX55型FPGA器件具有320个BRAM资源,每个BRAM资源拥有18 Kb的存储资源,因而需要设计针对多个BRAM资源的功能验证方案,其结构框架如图4所示。通过对单个块存储器资源功能验证模块进行复用,可以方便地移植到多个块存储器资源的功能测试中。图4中所示方案采用资源复用的优点是可以满足高速(400 MHz及以上)BRAM资源的测试和验证需求,其不足是对硬件资源的消耗比较大。
2 功能仿真及验证
采用Xilinx的Virtex4系列FPGA器件对设计的两种块存储器资源功能验证电路进行功能仿真及验证,块存储器资源功能验证顶层模块接口信号如图5所示,包含差分时钟输入信号(CLK_N和CLK_P)、复位信号(rst_n)、时钟管理元输出锁定信号(LOCKED_OUT)及数码管显示信号(HEX_LED)。
设计的两种块存储器资源功能验证电路分别针对FPGA器件中的1个BRAM资源和24个BRAM资源进行功能验证,采用Verilog硬件描述语言对上述两种不同待测块存储器资源数量的硬件电路进行设计实现,并基于ISE 14.7及Modelsim SE 10.2c对设计电路进行了综合、布局布线及仿真。块存储器资源功能仿真结果如图6所示,从图中可以看出设计的硬件电路达到了预期对待测BRAM资源进行功能验证的目的。
文中设计的针对块存储器资源功能验证的两种不同硬件电路采用基于Xilinx的FPGA器件硬件验证测试板进行测试验证,如图7所示。该测试板包含FPGA器件、开关按钮、拨码开关、数码管、晶振、LED灯、JTAG接口、串口及SMA接口等电子元器件,采用数码管对块存储器资源的功能验证结果进行显示,时钟管理元输出锁定信号采用LED灯显示,复位信号采用开关按钮输入,差分输入时钟信号采用板上晶振或者外部差分输入信号输入。基于硬件验证测试板的块存储器资源功能验证结果表明文中提出的块存储器资源功能验证硬件电路能够满足400 MHz速度下块存储器资源的读写数据需求,在该速度下针对1个BRAM资源和24个BRAM资源的测试结果全部通过。
3 综合结果及性能分析
针对不同块存储器资源数量功能验证的硬件电路综合结果如表1所示,从表中可以看出在对BRAM资源时序约束为400 MHz的条件下,验证1个BRAM资源(硬件电路1)和验证24个BRAM资源(硬件电路2)分别消耗了1%和100%的Slices资源、分别消耗了1%和15%的片内BRAM资源,在验证24个BRAM资源的硬件电路中,各项资源消耗迅速增加,这是由于文中的硬件电路采用了全并行和全流水线结构设计,可满足高端FPGA器件高速片内BRAM资源的测试验证要求。
为了测试文中提出的块存储器资源功能验证硬件电路所能够达到的极限工作速度,基于图7所示的硬件验证测试板,通过SMA接口采用外部输入差分时钟信号的方式对24个待测BRAM资源的硬件电路(硬件电路2)进行了不同工作速度下的读写数据测试,测试结果如表2所示。从表中可以发现文中提出的块存储器资源功能验证硬件电路最高能够达到640 MHz的BRAM资源读写速度测试需求,具备灵活、可复用及高速等特点。
4 结论
块存储器资源是FPGA器件中重要且丰富的资源,基于FPGA的块存储器资源功能验证硬件电路在高端FPGA器件中BRAM资源的测试验证中具有广泛的应用。结合扁平化设计策略及流水线设计技术,设计实现了一种灵活、可复用以及可适应高速BRAM资源测试的块存储器资源功能验证硬件电路,该硬件电路通过实际测试可满足最高640 MHz的BRAM资源测试验证需求,能够方便地适应于高端FPGA器件内部BRAM资源的功能验证及性能测试中,应用前景广泛。
参考文献
[1] 罗军,肖芳,毛雪莹,等.基于FPGA的方向滤波指纹图像增强算法实现[J].电子技术应用,2010,36(6):13-16.
[2] 刘焱,周圣泽,罗军,等.基于FPGA的并串转换电路硬件实现[J].电子技术应用,2017,43(12):21-24.
[3] Luo Jun,Huang Qijun,Chang Ssheng,et al.High throughput Cholesky decomposition based on FPGA[C].6th International Congress on Image and Signal Processing,2013:1649-1653.
[4] 余慧,王健.一种专用可重配置的FPGA嵌入式存储器模块的设计和实现[J].电子学报,2012,40 (2):215-222.
[5] 张惠国,徐彦峰,曹正州,等.FPGA逻辑资源重配置测试技术研究[J].固体电子学研究与进展,2011,31 (3):292-297.
[6] 邱云峰,秦鲁东.FPGA可编程逻辑单元测试方法研究[J].计算机与数字工程,2015(1):65-69.
[7] 李圣华,王健,来金梅.基于部分重配置的FPGA内嵌BRAM测试方法[J].复旦学报(自然科学版),2016,55(6):806-814.
[8] 阎哲,张洪,介百瑞,等.基于位流回读的Virtex Ⅱ内嵌BRAM的测试方法研究[J].微电子学与计算机,2016,33(5):58-61.
作者信息:
罗 军,范剑峰,吕宏峰,王小强,罗宏伟
(工业和信息化部电子第五研究所,广东 广州510610)