(2) FPGA逻辑设计[5-6]
本系统大部分功能通过FPGA实现,使用Verilog编写程序。由于采用的是逐位比较式方案,因此,首先由m序列产生模块产生4.096 Mb/s码率的m序列,送入反相器作为源端。反相器是为了人为产生误码而设置的。当按下按键时,反相器使能,将m序列1位反相后输出,即相当于产生了1个误码。m序列和时钟同时输出给被测系统,经被测系统后再返回给误码测试仪。误码测试仪对输入的m序列和本地产生的m序列进行同步,同步以后,在固定寄存器中置入64位m序列数据。在源端,固定寄存器和移位寄存器不断进行比较,直到两者一致,则启动延时计数器,同时接收端移位寄存器与固定寄存器进行比较,当两者一致时关闭计数器,此时计数器中的数值即为被测系统的延时。另一方面,同步以后,开始进行误码统计。若在设置的测试周期内误码率大于设定的门限值,则认为失步,重新开始同步。最后,将误码数和系统延时数通过SPI接口送给单片机,进行误码率和系统延时的计算,将计算结果显示在LCD上。SPI接口是通过软件进行模拟的。整个FPGA内部的模块框图如图4所示。
5 系统设计仿真
对设计完成后的主要功能模块进行了仿真以验证其功能的正确性。
(1) m序列产生器仿真
本设计采用了23级m序列以确保伪随机序列的特性,其本原多项式为f(x)=1+x5+x23,仿真波形如图5所示。
(2) SPI接口仿真
FPGA与单片机之间采用SPI接口进行通信。外围设备接口SPI通常有3~4条信号线,本文采用3线方式,即片选线SS、时钟线SCK和数据线SDIO。SS为低时有效,在SCK的同步下传送数据,仿真波形如图6所示。
(3) 系统仿真
系统开始工作并正确同步后,开始误码和延时的统计。每当单片机发送1个请求数据信号,就送出当前的误码数和延时数,单片机进行计算后送显示器显示。系统仿真波形如图7所示。
6 调试
调试是整个设计实现的关键步骤。经过调试,最终实现了设计的所有功能。下面给出在设计和调试中的一些经验教训以供参考。
(1) 51单片机的Port 1端口默认情况下没有上拉电阻,因此需要特别注意。在调试初期就是因为没有在外部加上拉电阻而导致与FPGA通信不正常。
(2) RS485接口芯片对于差分线的输入输出阻抗匹配要求比较严格,需要根据手册要求选择合适的匹配电阻,否则会导致输入输出差分信号质量严重劣化,影响系统正常工作。
(3) FPGA与单片机通信等功能需要特别注意时序的配合问题,否则可能导致通信不正常。可以通过选择适当的触发沿来调整时序。
本文介绍了一种基于FPGA的RS485接口的误码测试仪的设计原理和实现过程。与传统的误码测试仪相比,本误码测试仪具有原理简单、接口独特、可测试系统延时等特点。此外,由于FPGA良好的可扩展性,可以在不改变硬件电路的基础上方便地增加或修改相应的功能,增加了系统的可扩展性。