论文部分内容阅读
随着技术的发展,人工神经网络的应用在过去几年中发生了重大的变化,如今这项技术被广泛的应用在计算机视觉、语音识别、自然语言处理、音频识别等领域。但基于传统指令集的处理器如x86、ARM等往往需要几百甚至上千条指令才能完成一组神经元的处理,处理效率低、功耗大。神经网络加速器芯片是直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理,极大的提高了机器学习的效率,开展对这类处理器的研究具有重大的意义。本文立足于神经网络加速器芯片的功能需求,鉴于高速接口协议复杂、调试周期长,难以准确测试芯片运行状态。SPI接口具有协议简单、易于集成、速度适中等优点,能够快速、准确的确定芯片的运行状态,对芯片的后续设计与调试具有良好的指导意义。在SPI模块设计过程中采用了自底向上的设计方法,将SPI模块划分为若干个子模块,根据需求设计了五个主要子模块。采用IP模块集成技术,将设计的子模块进行例化综合,实现了完整SPI模块的功能。设计的带AXI接口的SPI模块能够支持主从模式选择、四种时钟传输模式、高/低位先传输、时钟分频、多从机通信、中断等功能。由于采用AXI接口标准,SPI模块的可移植性强且符合IP复用标准,能够作为一个通用SPI核例化到其它应用中。完成SPI模块逻辑电路设计后,采用了三种不同的验证方案对设计的模块进行仿真测试,依次进行了功能仿真、FPGA测试验证、芯片成品测试验证。在功能仿真中,先对子模块进行验证随后对整体模块进行验证。在FPGA与芯片成品测试验证过程中,采用了软硬件协同验证的思想。并根据测试需求,利用虚拟串口技术制作了USB转换SPI接口电路,同时编写了基于Ubuntu操作系统的上位机驱动程序。利用虚拟串口技术制作了USB转接SPI接口电路,不仅简化了Ubuntu操作系统下上位机驱动的编写,而且上位机对神经网络加速器的SPI接口传输数据速度不受影响。通过对SPI接口进行功能仿真、FPGA测试验证、芯片成品测试验证,验证结果表明SPI模块设计正确,功能符合设计要求。通过对神经网络加速器SPI接口传输数据,在同等条件下神经网络加速器芯片与通用处理器运行相同的手写识别程序,测试结果表明神经网络加速器性能远优于通用处理器,具有良好的应用前景。