Board logo

标题: C8051F005在高速误码测试系统中的运用 [打印本页]

作者: porereading    时间: 2012-12-11 14:58     标题: C8051F005在高速误码测试系统中的运用

本文根据Vitesse公司的VSC8228芯片特点,利用C8051F005单片机设计出一种价廉的高速误码测试仪。下面将对其软硬件设计,特别是C8051F005与上位机的串口通信以及与VSC8228的SPI通信进行详细探讨。
  1 误码测试系统概述
  Cygnal公司的单片机C8051F005具有高速8051微控制器内核,速度可达25 MIPS,指令为流水线指令结构,70%的指令的执行时间为1个或2个系统时钟周期;可片内JTAG调试和边界扫描,这样可提供全速、非侵人式的在系统调试(不需仿真器);片内有多达60 KB的FlashROM和2 KB RAM,用户无需再外扩存储器;可同时使用的硬件SMBus(I2C兼容)、SPI及UART串口,4个通用16位计数器/定时器。
  VSC8228可提供的一个双通道重发器或重定时器,能应用于光纤信道、千比特以太网、SONET/SDH以及无限带宽等多种领域。设备支持速率从125 Mbps~4.25Gbps。该芯片可以将输入的串行数据在重定时器模式下与本地的参考时钟同步,内置的码型产生器与检测器可以产生与探测27、223、231的伪随机码,40或64位用户定义码型以及光纤信号CRPAT、CJTPAT、CSPAT码型。它含128个寄存器,可通过SPI或者I2C串行总线设置相关寄存器,可以实现误码检测功能。
  误码测试系统可分为两个部分:误码测试部分和人机界面。测试部分由VSC8228芯片来实现。它完成伪随机码型的产生、同步及对比检测,计算出误码个数。人机界面子系统在整个测试系统中作为系统控制核心单元,通过人机界面完成系统作业。以C8051F005单片机作为人机界面硬件的控制部分,对VSC8228芯片的控制、误码率的计算以及测试子系统的各状态的显示都通过PC机的界面来实现。PC界面采用Delphi语言编写。
  误码测试仪的工作流程如下:PC界面通过RS232串口实现与C8051F005的通信,将对VSC8228各寄存器的没置发送给C8051F005单片机,每个控制命令为16位;单片机通过SPI口将上位机发送过来的控制命令转发给VSC8228,完成VSC8228各寄存器的设置。为了实时地显示误码测试仪的工作状态,单片机每秒扫描一次各寄存器,将其值通过RS232串口上传到PC界面。
  由此可见,C8051F005单片机起着VSC8228与上位机通信的桥梁作用,它与上位机的串口通信以及与VSC8228的SPI通信在误码测试仪的实现过程中起着十分重要的作用。下面通过软硬件设计详细分析这两种通信。
  2 误码测试系统的实现
  2.1 硬件设计
  利用C8051F005单片机的串行接口,通过RS232异步通信接口与上位机进行通信。C8051F005通过串行口直接接收PC上位传送来的串行数据,然后把接收的数据存入数据存储器;同样,C8051F005通过串行口直接把数据传送给PC机。系统结构框图如图1所示。
  

  C8051F005有一个特别的交叉开关,可将数字I/O资源分配到物理I/O端口引脚。C8051F005通过设置交叉开关来同时使用SMBus(I2C兼容)、SPI及UART串口等。VSC8228也可通过SPI或者I2C串行总线设置相关寄存器,但由于SPI通信的速率比I2C通信快,因此为了实现误码的高速测试,这里选择SPI作为C8051F005与VSC8228的通信协议。
  SPI接口协议要求接口设备按主从方式进行配置,且同一时间内总线上只能有一个主器件。一般情况下,实现SPI接口需要3或4根线。其中:主出从入(MOSI)信号是主器件的输出和从器件的输入,数据传输时最高位在先;主人从出(MISO)信号是从器件的输出和主器件的输入,数据传输时也是最高位在先。当SPI从器件未被选中时,它将MISO引脚置于高阻状态。串行时钟(SCK)信号是用于同步主器件和从器件之间在MOSI和MISO线上的串行数据传输。从选择(NSS)信号是一个输入信号,主器件用它来选择处于从方式的SPI模块,在主方式时用于禁止SPI模块。当处于从方式时,它被拉为低电平以启动一次数据传输,并在传输期间保持低电平。
  

  误码测试系统中,以C8051F005作为主器件,VSC8228为从器件,由于NSS为从器件选择使用,将单片机的NSS引脚(P0.5)置高,用P2.4引脚与VSC8228的NSS引脚(PIO3)相连。根据MOSI及MISO上的数据在SCK的哪种极性和相位上有效,单片机上的SPI通信有四种工作模式;但是VSC8228的SPl只有一种工作模式,故在对单片机的SPI控制器进行设置时必须考虑这点。图2是VSC8228的SPI通信时序。在SPI通信时,先传输7位地址,后传输读写控制位OP(OP为0时表示读,OP为1时表示写),最后传输8位数据,故SPI通信的命令字长度为16位。
  2.2 下位机软件设计
  下位机采用中断方式实现与上位机的通信,单片机用SPI与VSC8228误码测试模块的通信。每当串行口接收或发送完一组串行数据时,就产生一个中断请求。串行中断请求在单片机芯片内部自动由硬件置位发生,具有实时性高的特点。图3是单片机的控制程序流程。
  对单片机进行程序初始化,包括看门狗、系统时钟、I/O口、SPI寄存器、UART口等。C8051F005单片机具有看门狗,但是看门狗到一定时间,将重启单片机,为防止这种现象的产生,初始化里禁止了看门狗。SPI的初始化主要是对启动SPI的相关控制寄存器进行配置。UART的初始化主要是对串口的控制字进行设置。I/O口的初始化通过设置交叉开关来启动SPI与UART口,并将有关输出设置为推挽输出。
  

  系统时钟初始化模块,由于是选择外部晶振作为时钟源,根据C8051F005的要求,在通过外部振荡器控制寄存器OSCXCN选择了外部晶振后,需等待至少1ms后再查询等待OSCXCN寄存器中的D7位,即XTLVLD位变为1,表明外部晶振正在运行并已工作稳定,然后才能通过内部振荡器控制寄存器OSCICN的D3位,即CLKSL置1来选择外部晶振。
  具体的参考程序如下:
  





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0