ARM实现2M测试系统

ARM实现2M测试系统,第1张

  1引言

  目前我国工程技术人员所使用的测试仪多为国外进口产品,产品价格昂贵。而国产的测试仪功能相对简单。为此我们研究设计了一款基于ARM的2M传输口测试系统。2Mb/s是我国数字时分复用基群2048kbit/s 的简称,是PCM传输与交换的基础。本文涉及的2M传输口测试系统为手持式PCM 2M综合测试仪器。

  本文作者创新点:在2M测试系统中采用时隙交换芯片与语音检测芯片组合成语音在线监听模块,能实现任一时隙的语音监听,以及任一时隙的线路信号状态检测,能更好的帮助工程技术人员对2M线路的测试和维护。

  2系统硬件设计

  根据2M测试系统的性能要求,硬件层主要由系统核心部分、检测模块部分和语音监听部分组成。硬件原理框图如图1。

ARM实现2M测试系统,第2张

  2.1 系统核心组成设计

  在此系统中我们选用三星公司的S3C2410[1]微控制器芯片,内含一个由ARM公司设计的16/32位ARM920T RISC处理器核,ARM920T为低功耗、高性能的16/32核。S3C2410微控制器芯片在本系统中的主要作用是:(1)读写和控制各模块芯片;(2)读取键值;(3)控制液晶屏的显示;(4)在测量时进行数据的读取和处理;(5)对存储器进行读写;(6)通过串行口与微机进行通讯,将测试结果上传微机。存储器以HY29LV160 FLASH作为程序存储器,以HY57V641620SDRAM作内存,构成嵌入式系统核心。S3C2410芯片内含一个IIC总线控制器,可方便的与各种带有IIC接口的器件相连。在该系统中,外扩一片AT24C01作为IIC存储器。可存放在系统掉电时需要保存的数据。

  2.2 检测模块部分的设计

  检测模块部分由芯片DS21354[2]和芯片DS21372组成,这两块芯片协同工作共同完成检测功能。DS21354芯片主要完成发送和接收2048kbit/s 的PCM 信号,并从中检测误码和告警状态。DS21372是一种软件可编程的测试图样产生、接收、分析器,能适用于对差错性能要求最严格的数字传输设备的能力。具有两种测试图样的生成方式(伪随机序列和重复序列)。符合CCITT/ITU O.151,O.152,O.153和 O.161标准。DS2172 可以工作在直流到20MHz,这样宽的频率工作范围使它可以灵活地使用在现有的设备和处于测试阶段的新设备中,如:传输设备,交换设备,复用器,DAC,路由器,桥设备等。

  DS21372[3]中包含有4个功能块:图样产生,图样检测,差错计数和控制接口,具有完全独立的传输和接收部分,8bit的并行处理器接口,可以编程产生最大长度为(232-1)bits的伪随机序列图样,可编程的多项式长度和反馈量可以用于任意伪随机序列图样的生成,包括:26-1、29-1、211-1、215-1、220-1、223-1和232-1。或者用户编程的自定义长度从1到32bits的重复序列图样。拥有32bit差错计数器和比特计数器。软件编程的比特差错插入,最大比特差错率图样的检测可达10-2。DS21372能向线路插入单个bit或从10-1bit到10-7bit误码率的误码,以检验设备的 *** 作状态和连通性。用于分析、评测、解决数字通信系统中出现的问题。

  2.3 语音监听模块部分的设计

  语音监听部分采用时隙交换电路和语音检测模块组成,语音检测模块采用ZARLINK的3.3V多功能CODEC MT91L60[4]。这款芯片能实现声音信号的A/D、D/A转换,并为标准的电话机手柄等接收发送装置提供模拟接口。当E1接口电路与2M实际线路连通后,2M 链路上的话音时隙要通过时隙交换电路与MT91L60电路相连,构成了话音时隙收发的通道。在这个过程中要初始化时隙交换电路,将2M链路上的需要监测的话音时隙交换至MT91L60。打开MT91L60接收通路至电话机手柄输出,设置ITU-T A-law话音编码方式,设置接收增益+6dB,设置非消侧音非环回模式等。这些设置是通过设置MT91L60内部寄存器完成的,完成这一系列设置后,语音测试就可以开始了,语音可以通过电话机手柄听到,其他测试内容可以从MT91L60内部寄存器读到结果。

  3系统软件设计

  软件部分主要由启动代码的设计和应用程序的设计,基于ARM是复杂的片上系统(SOC),这种复杂系统里的多数硬件模块都是可配置的,需要由软件来设置其需要的工作状态。因此在用户的应用程序启动之前,需要有专门的一段启动代码来完成对系统的初始化。由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言写的。启动代码就是完成各种初始化工作,并引导进入C程序。

  3.1 bootloader设计

  启动代码[5]的主要实现功能包括以下部分:

  (1)设置程序入口指针;

  (2)设置中断向量表;

  (3)初始化存储器系统;

  (4)初始化CPU各种模式的堆栈和寄存器;

  (5)初始化目标系统中要使用的各种片内外设;

  (6)初始化用户程序执行环境;

  (7)引导主应用程

  具体实现的部分代码如下:

  AERA Init, CODE,READONLY

  ENTRY ;定义入口点

  B SYS_RST_HANDLER ;系统上电复位 *** 作

  B UDF_INS_HANDLER ;处理未定义中断模式

  B SWI_SVC_HANDLER ;处理软件中断

  B INS_ABT_HANDLER

  B DAT_ABT_HANDLER ;处理中止异常

  B .

  B IRQ_SVC_HANDLER ;处理IRQ 中断

  B FIQ_SVC_HANDLER ;处理FIQ中断

  SYS_RST_HANDLER

  MSR R0, CPSR ;禁止中断

  ORR R0,R0,#0XC0

  MSR CPSR_C,R0

  BL initcpu ;调整PLL和时钟

  BL initmem ;初始化存储器

  BL initstack ;设置堆栈

  … …

  … …

  … …

  B main ; 跳转到主应用程序

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713446.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存