数据传送查看源代码讨论查看历史
数据传送 | |
---|---|
数据传送,是指在数据源和数据宿之间传送数据的过程,也称数据通信。
整体
综合考虑到测试系统实时性和可靠性的要求,选择以太网口作为数据传送总线变换器与上位机的数据转发接口,以高速串口作为控制口,采用FPGA+DSP+ARM的架构作为实时信息处理平台。
数据传送总线变换器的系统框图如图1所示。其中,FPGA作为数据预处理器,完成并行数据到串行数据的转换等数据预处理任务;DSP读取FPGA处理后的数据并完成数据压缩的任务;ARM作为中央处理控制器,主要完成从DSP系统中读取已经编码好的数据并通过以太网口完成与上位机的实时通信任务。
上位机按照数据传输协议、产品的数据遥测协议解调出各类物理变量,记录并存储。测试人员通过上位机完成工作状态的远程控制与各种信息交互任务。在该系统中采用了FPGA+DSP+ARM的高端架构,但是衡量一个系统的整体性能不仅要看所使用的器件和所完成的功能,还要看各个器件之间的接口形式。
在FPGA+DSP+ARM的信息处理平台上,三者之间的接口形式将决定整个系统的性能。为满足实时的信号处理任务,在选择DSP芯片时,不仅要考虑DSP芯片的处理速度,还要考虑DSP芯片与FPGA、ARM的接口能力,选择带有EMIF和HPI接口的DSP使其与FPGA、ARM无缝连接成为该系统设计的关键一环。
选型
在该数据传送总线变换器中,FPGA选用Xilinx公司最新推出的低成本现场可编程门阵列Spartan-3E 系列中的XC3S500E。XC3S500E包含有20个Block RAM,每个RAM块中的18 KB的模块存储器,是完全同步、真正的双端存储器。用户可独立地从每个端口读出或向每个端口写入(但同一地址不能同时进行读和写)。另外,每个端口都有一个独立的时钟,对每个端口的数据宽度都可以独立进行配置。
ARM芯片选用Samsung公司的S3C4510B。S3C4510B是基于以太网应用系统的高性价比16/32 bit RISC微控制器,内含一个由ARM公司设计的16/32 bit ARM7TDMI RISC处理器核。除了ARM7TDMI核以外,S3C4510B还有许多重要的片内外围功能模块,其中就有一个以太网控制器,用于S3C4510B系统与其他设备的网络通信[1]。
DSP芯片选用TI公司的TMS320C6416。TMS320C6416是TI公司推出的高速定点DSP,它拥有处理能力强大的CPU、高达1 MB的RAM、丰富的外设接口。外设包括CPU访问外围设备提供无缝接口的灵活的外部存储器接口EMIFA和EMIFB,一个使得DSP很容易通过PCI接口无缝连接到一个具有PCI功能的外部主CPU上的PCI接口,一个16/32 bit宽的异步并行接口HPI(和PCI共用相同的引脚),一个提供64 bit数据通道访问的增强型EDMA等。其高速的处理速度满足系统的实时性要求,并能实现与多种外设无缝连接。
软件设计
嵌入式操作系统
在该数据传送总线变换器中,实时数据压缩的任务由DSP完成。ARM S3C4510B完成与PC之间的以太网通信,其软件实现所要求的实时性、可靠性和复杂性使得选择一种带有TCP/IP协议包的嵌入式实时操作系统成为必需,而μCLinux是一个带有完整的TCP/IP协议的操作系统,在μCLinux中加入实时RT-Linux模块以满足对嵌入式操作系统的实时性要求。
基带频带和数字数据传输
①基带传输是指由数据终端设备(DTE)送出的二进制"1"
数据传输
或"0"的电信号直接送到电路的传输方式。基带信号未经调制,可以经过码形变换(或波形变换)进行驱动后直接传输。基带信号的特点是频谱中含有直流、低频和高频分量,随着频率升高,其幅度相应减小,最后趋于零。基带传输多用在短距离的数据传输中,如近程计算机间数据通信或局域网中用双绞线或同轴电缆为介质的数据传输。
②大多数传输信道是带通型特性,基带信号通不过。采用调制方法把基带信号调制到信道带宽范围内进行传输,接收端通过解调方法再还原出基带信号的方式,称为频带传输。这种方式可实现远距离的数据通信,例如利用电话网可实现全国或全球范围的数据通信。[1]
③数字数据传输是利用数字话路传输数据信号的一种方式。例如,利用PCM(脉冲编码调制)数字电话通路,每一个话路可以传输64kbit/s的数据信号,不需要调制,效率高,传输质量好,是数据通信很好的一种传输方式。[2]
并行传输与串行传输
①并行传输是构成字符的二进制代码在并行信道上同时传输的方式。例如,8单位代码字符要用8条信道并行同时传输,一次传一个字符,收、发双方不存在同步问题,速度快,但信道多、投资大,数据传输中很少采用。②串行传输是构成二进制代码在一条信道上以位(码 元)为单位,按时间顺序逐位传输的方式。按位发送,逐位接收,同时还要确认字符,所以要采取同步措施。速度虽慢,但只需一条传输信道,投资小,易于实现,是数据传输采用的主要传输方式。
异步传输和同步传输
①异步传输是字符同步传输的方式,又称起止式同步。当发送一个字符代码时,字符前面要加一个"起"信号,长度为1个码元宽,极性为"0",即空号极性;而在发完一个字符后面加一个"止"信号,长度为1,1.5(国际2号代码时用)或2个码元宽,极性为"1",即传号极性。接收端通过检测起、止信号,即可区分出所传输的字符。
字符可以连续发送,也可单独发送,不发送字符时,连续发送止信号。每一个字符起始时刻可以是任意的,一个字符内码元长度是相等的,接收端通过止信号到起信号的跳变("1" "0") 来检测一个新字符的开始。
该方式简单,收、发双方时钟信号不需要精确同步。缺点是增加起、止信号,效率低,使用于低速数据传输中。②同步传输是位(码元)同步传输方式。该方式必须在收、发双方建立精确的位定时信号,以便正确区分每位数据信号。在传输中,数据要分成组(或称帧),一帧含多个字符代码或多个独立码元。
在发送数据前,在每帧开始必须加上规定的帧同步码元序列,接收端检测出该序列标志后,确定帧的开始,建立双方同步。接收端DCE从接收序列中提取位定时信号,从而达到位(码元)同步。同步传输不加起、止信号,传输效率高,使用于2 400 bit/s以上数据传输,但技术比较复杂。
单工半双工和全双工传输
单工传输指数据只能按单一方向发送和接收;半双工传输指数据可以在两个方向传输但不能同时进行,即交替收、发;全双工传输指数据可以在两个方向同时传输,即同时收和发。一般四线线路为全双工数据传输,二线线路可实现全双工数据传输。
无线数据传送业务
无线数据传送业务是指前述基础电信业务条目中未包括的、以无线方式提供的端到端数据传送业务,该业务可提供漫游服务,一般为区域性。
提供该类业务的系统包括蜂窝数据分组数据(CDPD) 、 PLANET 、 NEXNET 、 Mobitex 等系统。双向寻呼属无线数据传送业务的一种应用。
无线数据传送业务经营者必须自己组建无线数据传送网,无国内通信设施服务业务经营权的经营者不得建设国内传输网络设施,必须租用具有相应经营权运营商的传输设施组建业务网络。
数据传送速率
数据传送速率是指MO磁光盘机与主机之间传输数据的速度,单位为MB/s。数据传送速率是衡量MO磁光盘机性能的重要参数。越高的数据传送速率意味着该MO磁光盘机的性能也就越高。数据传送速率又可分为脉冲传输率和持续传输率,其中,持续传输率才真正反映了该MO磁光盘机的实际性能。目前主流产品的数据传送速率在4MB/s-10MB/s之间。
驱动和应用程序的开发
基于μCLinux操作系统的硬件驱动和应用程序的开发是在交叉编译环境中进行的,首先在PC机上开发,然后移植到目标机上进行调试并最终固化到目标机上。所开发的硬件驱动有以太网卡控制器驱动、LCD驱动、HPI驱动等驱动程序。系统软件结构如图4所示.
在μClinux操作系统上运行三个任务:读取压缩数据、通过以太网发送数据、接收和执行来自远端PC机的命令。其中读取DSP压缩数据任务对实时性有要求,它通过中断处理程序来实现,而其他的两个任务则通过用户进程来实现。以太网发送数据的任务和读取压缩数据的任务共享一个缓冲区,通过ioctl函数在其间传递缓冲区双向链表的地址。所以需要为数据处理模块上的通信接口HPI注册一个驱动程序,注册驱动程序的函数是:
result=register_chrdev(HPI_MAJOR,"hpi",&hpi_fops)
驱动程序的主要结构如下:
struct file_operations hpi_fops=
owner: THIS MODULE,
open: hpi_open,
read: hpi_read,
write: hpi_write,
ioctl: hpi_ioctl,
mmap:hpi_mmap,
release:hpi_release,
HPI驱动程序编写完成后,将驱动程序源代码置于../linux-2.4.x/driver/char目录下,同时修改同级目录下的Makefile,在../linux-2.4.x/driver/char/Makefile中加入Obj_y +=hpi.o
同时,为了能够在?滋Clinux启动时自动初始化此字符设备,还需要修改 ../linux-2.4.x/driver/char/men.c文件,在其中加入:
(1)新添加的字符驱动程序初始化函数声明:extern void hpi_init(void);
(2)在字符设备统一初始化函数int _init chr_dev_init(void)中调用新设备的初始化函数,需要在int _init chr_dev_init(void)中加入语句:hpi_init();
在函数int _init chr_dev_init(void)中,字符设备的初始化函数将被统一调用,并完成字符驱动file_operations数据结构的注册,初始化之后就可以使用HPI字符设备了。
本文所设计数据传送总线变换器,不仅解决了由于传输距离远而引起的信号畸变问题,而且满足了信息传递的实时性要求,同时具有网关功能和嵌入式Web功能,能确保系统安全接入Internet。
编辑本段程序
orihi equ 10H ;源高8位地址
ORILO EQU 00H ;源8低位地址
TARHI EQU 20H ;目的高8位地址
TARLO EQU 00H ;目的低8位地址
CONHI EQU 01H ;字节数高8位
CONLO EQU 0FFH ;字节数地8位
ORG 0000H
LJMP MAIN
MAIN:
setb rs0
setb rs1
MOV R2, #ORIHI
MOV R3, #ORILO
MOV R4, #TARHI
MOV R5, #TARLO
MOV R6, #CONHI
MOV R7, #CONLO
MOV DPH, R2;将源的高位地址放入DPTR高位
MOV DPL, R3;将源的低位地址放入DPTR低位
inc auxr1;转换成目的指针
MOV DPH,R4;将目的的高位地址放入DPTR高位
MOV DPL,R5;将目的的低位地址放入DPTR低位
inc auxr1;转换回源指针
编辑本段清单
ORG 0000H
MOV R2, #10H;初始化程序控制变量
MOV 30H, #00H
MOV R0, #30H
MOV A, #00H
LOOP1: MOV @R0, A
INC R0
INC A
DJNZ R2, LOOP1;循环是否结束是往下继续,否则循环
MOV R2, #10H;初始化循环控制变量
MOV R0, #30H;取地址30H
MOV 40H, #00H
MOV R1, #40H;取地址40H
LOOP2: MOV A, @R0
MOV @R1, A;数据传送
INC R1
INC R0
DJNZ R2, LOOP2;循环是否结束是往下继续,否则循环
MOV R2, #10H;初始化循环控制量
MOV R0, #40H
MOV DPTR, #4800H;取外部地址4800H指针变量
LOOP3: MOV A, @R0
MOVX @DPTR,A;数据传送
INC R0
INC DPTR;修改指针变量
DJNZ R2, LOOP3;循环是否结束是往下继续,否则循环
MOV R2, #10H;初始化循环控制量
MOV R1, #00H
MOV DPTR, #4800H;取外部地址4800H给指针变量
LOOP4: MOVX A, @DPTR
PUSH DPH;指针变量高位压人堆栈
PUSH DPL;指针变量低位压人堆栈
MOV DPH, #58H;取外部5800H高八位地址送给指针变量高八位
MOV DPL, R1;修改指针变量低八位
MOVX @DPTR,A;数据传送
POP DPL;弹出指针变量低位
POP DPH;弹出指针变量高位
INC DPTR;修改指针变量
INC R1
DJNZ R2, LOOP4;循环是否结束是往下继续,否则循环
MOV R2, #10H;初始化循环控制量
MOV DPTR, #5800H;取外部地址5800H给指针变量
MOV R0, #50H;去片内地址50H
LOOP5: MOVX A, @DPTR
MOV @R0, A;数据传送
INC R0;
INC DPTR;
DJNZ R2, LOOP5;循环是否结束是往下继续,否则循环
END
硬件设计
6.1.1DSP TMS320C6416 HPI描述
TMS320C6416集成有一个16/32 bit宽主机接口HPI,HPI通过复位时的自举和器件配置引脚HD5选择采用HPI16还是HPI32。HPI具有两条地址线HCNTRL[1:0],负责对HPI的内部寄存器进行寻址。HPI只有3个32 bit内部寄存器,分别是控制寄存器HPIC、地址寄存器HPIA和数据寄存器HPID。用户只需对上述3个寄存器进行相应的读写操作,就能完成对DSP内存空间的访问[2]。
3.1.2 S3C4510B与TMS320C6416的接口电路
由于S3C4510B中没有完全符合TMS320C6416 HPI接口时序的外部接口可以直接使用,因此选用S3C4510B中时序最接近HPI接口时序的外部I/O接口与TMS320-
C6416进行连接。TMS320C6416与S3C4510B接口电路如图2所示。TMS320C6416与S3C4510B通过单独的32 bit数据线HD0~HD31和8条控制线进行连接。S3C4510B通过HPI接口访问DSP内部的RAM以及其他外部资源。
在整个ARM微处理器与DSP芯片通过HPI接口通信和数据交换的过程中,除了中断ARM和清除ARM发过来的中断需要DSP本身参与外,其他操作DSP都处于被动的地位,几乎不用进行其他的操作。所以对于ARM来说,DSP系统单元就相当于一片外接的SDRAM。
在TMS320C6416中,HPI、GP[15:9]、PCI、EEPROM、McBSP2共用了一组引脚,DSP在复位时通过锁存PCI_EN和McBSP2_EN引脚的值来选择使用何种外设。在该系统中,将这两个使能引脚都拉低。