美章网 精品范文 接口设计论文范文

接口设计论文范文

前言:我们精心挑选了数篇优质接口设计论文文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。

接口设计论文

第1篇

1.1接口描述当传感器网络的Zigbee网关节点不断地将网络节点中监测到的温度、烟雾等信息发送给上位机时,上位机的通信模块必须及时响应接收数据。数据监测上位机通信接口采用VB6.0中MSComm控件,利用串行端口传输和接收数据,为应用程序提供串行通信功能,具体包括2种处理通讯方式,一种是事件驱动通讯,利用OnComm捕获并处理通讯时间;另一种是通过检查CommEvent的值,来查询事件和错误[5]。设计中采用第1种方式,在用户界面设置好相应的控制参数,如波特率为38400bps、无校验位、8数据位、1位停止位等。当传感器网络节点监测的的温度、烟雾等信息发送给上位机时,将触发监测程序中MSComm控件的OnComm事件,进而改变ComEvent的值,程序根据ComEvent的值执行相应的操作,如解析数据、发送数据、错误分析等,然后更新内存节点树中当前节点的实时数据、采集信息(如温度、烟雾等)存入数据库。

1.2实现方法MSComm控件可以设置以二进制或者以文本方式接收,若设置为二进制接受,控件会自动将其转变成十进制。在该系统中,数据帧的数据是十六进制的,设置以二进制方式进行接收,从接收缓存中获取到的是十进制的数据。

2数据结构与数据解析

2.1内存中节点多叉树的建立图2节点数据结构图通信监测模块接收数据后,为了便于以图形方式实时显示网络拓扑和节点监测信息,以及提高查询数据的运行速度,需要在内存中构建一个动态多叉树,用于存储节点最新的数据信息。节点数据结构图如图2所示。在内存中建立一个关于节点的动态多叉树,节点的唯一标识是它的自身ID,根据数据帧中包含的父子关系可构建出一棵多叉树。首先定义一个名为treeNode的类,它的每一个实例都代表着一个节点,里面包含节点的属性(例如ID、温度、烟雾等)和方法(例如获取类中节点数据的getData方法)。为了将节点间的父子关系表现出来,可在类treeNode中定义一个类型为treeNode的动态数组NodeChild(),用于存放子节点。如某节点ID为0000,子节点ID为0001,将子节点0001存放在节点0000的NodeChild()数组中,即可完成节点间的连接。当需要找某个节点时,从根节点开始查找,若根节点的孩子没有要找的节点,则查找根节点的孩子的孩子,直到遍历完所有节点。当某数据帧发送到上位机时,解析出来的原始数据分别放在相应的变量,假设原始的温度数据是3F4A,数据结构中温度变量名为Temperature,类型为String,则直接将3F4A转换为String类型存在Temperature中。按上述方法构建的动态多叉树能够适应网络拓扑动态变化的应用场景,相比于定长的数组,其更为节省内存,不足之处是查询算法较复杂。

2.2数据解析通信监测模块接收到Zigbee网关节点发送来的一组数据(数据帧)后,需要对收到的数据进行协议解析,然后根据解析数据建立当前动态多叉树。由于通信中难以避免数据帧出错、截断、丢失等情况,故数据解析部分根据数据帧的格式制定了一套协议,丢弃异常数据帧。数据帧的部分格式如下:FFXXXXXXXXFF01XXXX02XXXX2FF之间,开头2个字节为节点ID,紧跟的2个字节节点的父ID01代表温度类型,后面2个字节是温度数值02代表烟雾类型,后面2个字节是烟雾值,依次类推…。2个FF后的字节都是数据,其格式如下:数据类型(01,温度类型)+2个字节的数据(XXXX)。具体操作流程如图3所示。首先检验从串口进来的数据帧开头一个字节是否FF,若是,则开始解析。直到下一个FF,则节点ID部分解析结束,后面都是数据。继续读取下一个字节,若为01,则将后面紧跟的两个字节存进相应的温度变量,读取下一个字符;若该字节所表示的数据类型未定义则跳过该字节及后面紧跟的两个字节,继续读取下一个字符。该过程一直执行直到解析完整个数据帧。由于数据帧是不定长的,而且没有结束字符,所以每收到一个数据帧程序便立即从缓存中读取并解析,以避免多个帧合并为一个数据帧导致解析错误。当出现多个数据帧并合情况时,则丢弃后继的帧。在帧解析完毕后,可以对解析出来的监测数据信息进行处理,将数据信息一份存进内存中节点多叉树,一份存进数据库,实现实时更新数据和记录当前信息。以下是有关串口通信事件响应及数据解析的部分代码:

3数据库的构建与连接

3.1数据库关系数据库关系图如图4所示。由于每个节点都有大量历史数据,所以每一个节点都创建一个表;USERS表用于保存监测系统的用户信息;NodeTran用于保存数据帧转发路径;Nodelist用于保存节点列表;Limit用于保存监测系统的阈值管理设置值;Node_XXXX为节点XXXX的历史数据表。除了用户表,所有数据都采用varchar类型。

3.2存储过程的创建为了提高通信监测模块与数据库之间通信的效率,将一些常用且较为复杂的SQL语句存放在数据库中,使用时只需要调用存储过程,输入必要的参数即可完成相应的SQL语句操作,这样可以大大减少程序与数据库之间的通信量。

3.3使用ADO将VB6.0与SQL2005连接ADO是为Microsoft最新和最强大的数据访问范例OLEDB而设计的,拥有一个易于使用的应用程序层接口。通过使用ADO2.0对象模型中的Recordset和Connection对象实现两者连接和数据的存取。Connection对象包含关于某个数据提供程序的信息,如数据库用户、密码、数据库名等;Recordset对象包含某个查询返回的记录,可以创建一个Connection对象,在同一个连接上打开多个Recordset对象[8]。操作流程图如图5所示。

4结语

第2篇

本设计采用了Xilinx公司提供的ISE为开发平台。ISE软件是Xilinx公司推出的FPGA/CPLD集成开发环境,不仅包含了逻辑设计所需的一切,还具有大量的简便易用的内置式工具和向导,使得I/O分配、功耗分析、时序驱动设计收敛、HDL仿真等关键步骤变得容易而直观。因此要掌握XilinxFPGA开发,就必须掌握ISE。ISE界面友好、操作简单、集成度高。利用ISE进行FPGA逻辑设计的主要流程包括设计输入、功能仿真、设计综合、设计实现和配置下载,简易设计流程图如图1所示。

2ISA总线逻辑接口设计

ISA总线:(IndustryStandardArchitecture:工业标准体系结构)是IBM公司为PC/AT电脑而制定的总线标准,也称为AT标准,为8/16位体系结构,最高工作频率为8MHz,数据传输率大约是16MB/S,地址线24条,可寻访16M字节地址单元。由于本文使ISA总线工作在8位I/O传输模式,使用了ISA总线信号中的时钟线(ISA_CLK)、地址线(ISA_ADDR):A0~A9、数据线(ISA_DATA):D0~D7、读信号线(ISA_IOR)、写信号线(ISA_IOW)、地址锁存使能(ISA_ALE)、地址选通信号(ISA_AEN)等。本设计采用了与C语言较为相似的VERILOGHDL硬件描述语言对ISA总线逻辑接口进行了描述。

本文要实现的是ISA接口通过FPGA访问串口芯片16C554,16C554是内部带有16字节收发FIFO的通用异步收发器,具有独立的收发控制电路。4路标准的MODEM接口,通过软件可分别设置允许每一路中断。波特率、数据帧格式等也都可由软件编程设置。具体硬件结构如图。由图2可知上位机通过ISA总线对串口芯片16C554串口芯片的访问需要FPGA作为桥接媒介,因此串口芯片的控制信号均由FPGA给出,其逻辑控制信号的VERILOG描述如下。当上位机对串口芯片进行读写时,首先需要通过FPGA将ISA地址信号译码为芯片的片选信号,设置串口芯片基地址为0x300,由于9位地址线的低三位为串口芯片的内部地址,因此芯片的片选信号由地址总线的高七位决定。

3结束语

为了验证基于FPGA的ISA逻辑接口的正确性,将上述逻辑接口利用VERILOG硬件描述语言在赛灵思提供的集成开发环境ISE中实现。

第3篇

CY7C68013A固件程序是指在EZ⁃USB芯片内部RAM中运行的程序代码,固件程序是USB接口设计的核心部分。固件代码的作用就是控制芯片执行指定的设备功能,即处理上位机下传的各种USB设备请求,控制芯片与电路进行数据传输。EZ⁃USB芯片内部集成增强型8051内核,USB芯片的固件程序实际上就是单片机程序文件,可以采用汇编语言或C语言编写。CYPRESS公司提供的EZ⁃USBFX2固件程序开发包中提供了固件程序的基本框架,这为用户开发基于EZ⁃USBFX2芯片的USB设备提供了很大的方便。

1.1固件框架固件程序框架主要包括设备初始化,处理标准USB设备请求和USB挂起时的电源管理等。程序框架使用KeilC51编写,它是现成的直接可以编译为HEX文件的8051程序代码,使用者只需要改写USB描述表,在一些固定函数下添加功能代码,主要是EZ⁃USB芯片的初始化配置和实现USB外设功能的代码。固件框架的流程图如图2所示[4]。复位后固件先初始化一些全局变量,然后调用初始化函数TD_Init(),该函数初始化USB设备到没有配置的状态,并打开中断。循环1s进行一次设备重枚举,直到端点0收到一SETUP包,然后进入while循环语句,开始TD_Poll任务处理函数。依次执行下列过程:(1)TD_Poll()用户任务调度函数;(2)如果发现USB设备请求,则分析该请求并执行;(3)如果收到USB挂起信号,则调用TD_Suspend()挂起函数,内核挂起,直到出现USB远程唤醒信号,调用TD_Resume(),内核唤醒,从新进入while循环。固件框架包含的文件如表1所示。

1.2固件代码编写USB固件程序主要的功能有2个:一是PC机的Windows系统能够检测与识别相应设备;二是数据的上传与下传。Cypress公司为EZ⁃USBFX2系列芯片提供的固件程序框架极大的简化了固件开发。一般的固件开发只需要修改用户调度函数文件Periph.c与USB描述符列表文件Dscr.a51,这两个文件在KeilC51编程器中都可打开。Periph.c文件中只需要修改TD_Init()与TD_Poll()函数。在本设计中为了能进行高速的数据传输,EZ⁃USB芯片采用SlaveFIFO接口方式。此方式下,USB内核不参与数据的传输,所以TD_Poll()函数不用写代码,设置成空函数就可以了。这样USB固件程序的开发主要任务就是改写TD_Init()函数与USB描述符列表文件Dscr.a51。在本设计中配置端点6传输方向为IN,传输方式为块传输,缓冲大小设置为1024B,深度为2级,作用是上传采集的数据。配置端点2传输方向为OUT,传输方式为块传输,缓冲大小设置为1024B,深度为2级,作用是下传FPGA的命令配置参数。固件程序的编译使用KeilμVision2集成编译环境,集成编译环境中包括有C51编译器,A51汇编器等工具与调试器。代码中还需包含头文件FX2.h与Fx2regs.h,库文件Ezusb.lib。对修改后的代码进行编译与链接,最后生成HEX文件。HEX文件可直接下载到EZ⁃USB中运行。HEX文件也可根据需要通过CYPRESS公司提供的EZ⁃USBFX2固件开发包中的Hex2bit.exe应用工具生成IIC文件,IIC文件用于烧写到EEPROM中。

2固件程序的装载

CY7C68013A芯片集成增强型8051内核,内部无ROM等永久性存储器,每次上电后需要从新将固件程序载入到片内RAM中。EZ⁃USBFX2固件程序有3种加载方式:(1)如果没有片外存储器连接到EZ⁃USBFX2上,或者所读取的首字节不是0xC0或0xC2,则芯片枚举为缺省的USB设备,其中描述符,VID,PID由芯片内部硬件逻辑提供。然后固件程序与描述符表由主机下载,EZ⁃USBFX2开始执行下载的代码,首先模拟物理电路的断开与连接,此时EZ⁃USBFX2将再次进行设备枚举,这称为重枚举,重枚举将根据下载的代码对设备进行从新定义。(2)如果USB检测到一个E2PROM,其首字节为0xC0时,芯片也枚举为缺省的USB设备,但VID与PID值将从此EEPROM中读取,USB描述符由芯片内部提供。这种模式称为“C0”加载。主机根据读得的VID与PID值,由固件下载驱动程序将指定的固件程序下载到EZ⁃USBFX2,然后再重枚举。(3)如果USB检测到一个E2PROM,其首字节为0xC2时,固件程序将从此E2PROM中自动下载到FX2芯片上,CPU通过复位后运行下载的程序代码。这种模式称为“C2”加载。其中第一种方式主要是开发阶段使用,它需要主机上有CYPRESS公司提供的开发软件USBCONTROLPANEL,每次手动将程序下载到USB上。第二种方法需要开发者另外再编写一个固件下载驱动程序,而且也需要在电路中外加一小容量的E2PROM。第3种方法是将固件程序烧写到E2PROM中,每次上电自动加载,这种方式简单直接。本设计采用第3种方式。

3驱动程序及INF文件的编写

设备驱动程序是应用程序和硬件之间的连接,应用程序通过驱动程序与设备通信,数据交换,从而获取数据和对设备进行控制。CYPRESS公司为EZ⁃USBFX2提供一通用的驱动程序CYUSB.SYS,其功能完备,使用者不需要修改直接使用[5]。USB设备都具有一个VID和PID,此处的VID和PID与在固件程序转载阶段的值不同,这两个值是用来安装设备驱动程序的,VID和PID放到设备描述符表中,通过设备请求读入到Windows系统中。同时,Win⁃dows操作系统通过INF文件将一VID和PID绑定到某一设备驱动程序。当设备连接到主机上时,读得设备的VID和PID,通过存储在INF文件中的信息找到设备驱动。此后,Windows会将设备的VID和PID值保存到注册表,设备再次连接时,系统就会在注册表中查找设备驱动程序信息。具体操作方法是将驱动安装的模板INF文件的MODEL节中的VID与PID值修改成与USB设备的VID和PID值相同。相应STRING节中也修改。

4与应用程序的接口

图3是驱动程序流程图,从图中可以看到功能驱动程序的位置。用户通过一种规范的方式调用WIN32API函数来访问硬件,不用考虑如何控制硬件的具体细节。USB开发过程主要应知道应用程序调用驱动程序的接口函数,如下介绍,应用程序直接调用这些函数来实现与硬件设备的数据交换。CREATEFILE通过设备名打开设备,获得设备句柄,有设备句柄就可以读写设备。通过下面语句获得设备句柄。DEVICEIOCONTROL读写控制设备,应用程序调用此函数并加以不同的I/O控制码参数,完成应用程序与驱动程序将的数据交换。主要用到的I/O控制码有:IOCTL_EZUSB_BULK_READ该控制码从指定的批量管道中读取数据。读操作阻塞调用进程,直到数据传送完成。IOCTL_EZUSB_BULK_WRITE该控制码向指定的批量管道中写入数据。写操作阻塞调用进程,直到数据传送完成。CLOSEHANDLE通过句柄关闭设备,设备请求完成后通过此函数关闭。

5结语

第4篇

便携式手持设备串行通信系统由3个部分组成:异步接收单元、异步发送单元和双口RAM单元。接收数据时,外部串行数据经过电平转换后被异步接收单元接收并转换成并行数据,通过接收单元进入双口RAM并进行缓存,最后送入DSP处理;数据发送时,数据从双口RAM取出数据后,在异步发送单元的作用下将数据转化为串行数据,再经过电平转换后发出。本文将用FPGA设计以上3个模块,通过接口设计,可将FPGA与DSP连接。系统结构框图如图1所示。

2单元设计

2.1异步接收单元的设计异步接收单元实现数据的有序接收,控制UART接口和双口RAM以及向DSP提出数据接收中断。异步接收单元由8倍倍频器、8bit寄存器、串并转换器、并口输入构成。8倍倍频器用来产生8倍串口传输时钟脉冲;8bit寄存器用来存储采样后的串行数据;串并转换器用来控制串行数据向并行数据转换的时序和组合逻辑,是异步接收单元的核心组成部件;并口输入用来向DSP传输并行数据。异步接收单元各模块信号连接如图2所示。异步接收单元的工作流程如下:根据DSP控制指令查看串口的传输速率并选择速率后,经倍频器产生一个8倍传输速率的接收串行数据采样时钟脉冲,由采样脉冲采样串行数据后存至寄存器中。查看寄存器中的数据,若一直为高电平则表明串口无数据输入;若8bit数据中由4个“1”和4个“0”组成,则表明接收到开始位,等采样下一个8bit数据时开始保存串行数据。通过时序控制逻辑将接收到的有效串行数据转换为并行数据后存入双口RAM中;向DSP输出中断请求;待收到DSP的中断响应后,读出双口RAM数据;将数据输入DSP中,中断请求信号和复位信号置0,数据接收完成。在本系统中,一组串行数据由1bit开始位、8bit数据位、1bit校验位和1bit结束位组成。开始位为“0”;结束位为“1”。在这里值得注意的是,接收串行数据时,我们需要判断接收的串行数据是否有效,由于数据传输在异步工作方式,可以通过判断它的开始位来记录串行数据。将传输时钟脉冲8倍频后,作为接收采样时钟脉冲,进行连续采样,待采样到一组数据由4个“1”和4个“0”组成时,则表明接收到串行数据的开始位,从此以后的数据便为有效串行数据,将每次采样8bit数据的最后一位存入双口RAM中。在这里我们记录寄存器的最后一位值,作为它每次采样的有效值,这样做的目的是为了保证它每次采样到的数据为每位串行数据的中间值,从而防止采样到数据边沿值而带来的错误信息。

2.2异步发送单元的设计相对于异步接收单元来说,异步发送单元的设计比较简单。异步发送单元连接DSP和双口RAM,来自DSP的并行数据在其控制作用下,有序地以串行方式发送到主控设备。异步发送单元由波特率产生器、波特率选择器、并串转换器、串口输出器组成。波特率产生器用来产生串口传输的时钟脉冲;波特率选择器用来选择系统所需的串口传输速率;并串转换器用来控制并行数据向串行数据转换的时序和组合逻辑,是异步发送单元的核心;串口输出器用来发送串行数据。异步发送单元各模块信号连接如图3所示。异步发送单元的工作流程如下:由波特率产生器输出9.6Kbps、19.2Kbps、57.6Kbps时钟脉冲。根据DSP控制指令查看串口的传输速率并选择速率。当并串转换器从双口RAM接收到“数据使能”(dataen)和“数据发送”(datasend)信号时,表示DSP有串行数据输出;立即使能并串转换器,计数并读出要传输的串行数据,待计数器溢出时,将数据保存至缓存中,最后使能串口输出器按位输出,待串行数据传输完成后复位标志位“shfen”,下一组串行数据将从开始位计数。校验位是将传输的串行数据按位“异或”操作后输出的。其主要VHDL编程案例如下所示。

2.3双口RAM的设计双口RAM(A端口和B端口)在串行通信中起到了数据缓存和信息交互的作用,本设计中双口RAM通过XilinxIP核产生,缓冲深度设计为256,即地址总线位数为8,数据从A口写入,从B口读出。将双口RAM划分为两个空间,一个为数据接收空间,一个为数据发送空间。接收数据时,存入接收空间的数据达到一个字节,接收单元向DSP发出中断请求,中断响应后数据从B口读入DSP;发送数据时,DSP向发送空间的A口中写数据,并向并串转换单元发出数据发送信号,数据从发送空间的B口读入并串转换单元,再经过UART口串行发送到主控设备。

3总结

第5篇

本方案中,千兆以太网通信接口的软件设计主要是基于TI公司提供的嵌入式操作系统SYS/BIOS和TCP/IP网络开发包NDK(NetworkDevelopment′sKit)来实现的。网络开发包NDK是TI公司为本公司DSP的网络程序开发提供的平台,采用自顶向下、分层、模块化的设计方法来支持TCP/IP协议,并占用较少的系统资源(对于常规的TCP/IP服务,程序空间仅需200KB~250KB的程序空间,数据空间仅需95KB)。TCP/IP协议的体系结构包括应用层、传输层、网络层、数据链路层以及物理层,对于NDK模型,网络开发包NDK就实现了5层体系结构中的传输层、网络层、数据链路层。图3为TCP/IP模型与NDK模型的对比示意图。

NDK通过编程接口与嵌入式操作系统SYS/BIOS以及底层硬件相互隔离。对于NDK而言,SYS/BIOS被抽象成一个操作系统适应层(OSAdaptationLayer),底层硬件被抽象成一个硬件适应层(HardwareAdaptationLay-er),它们的函数库OS.LIB、HAL.LIB成为了NDK与SYS/BIOS以及底层硬件的接口。图4为基于NDK与SYS/BIOS的通信接口软件架构图。由图4可以看出,NDK主要包含NETTOOL.LIB、STACK.LIB、OS.LIB、HAL.LIB、NETCTRL.LIB五个部分。(1)NETTOOL.LIB提供网络服务,包含NDK提供的基于网络服务的所有套接字以及一些用于网络应用开发的附加工具。(2)STACK.LIB是主要的TCP/IP协议栈,提供了顶层(套接字层)至底层(以太网和PPP层)的所有功能。(3)OS.LIB提供与SYS/BIOS操作系统的接口。(4)HAL.LIB提供与底层硬件的接口。(5)NETCTRL.LIB控制TCP/IP协议栈与外界的交互,管理所有网络事件、协调操作系统与硬件驱动,主要包括:①初始化TCP/IP协议栈和底层设备驱动;②启动和维护系统配置(通过配置服务提供者的回调函数);③连接底层设备驱动和安排驱动事件呼叫TCP/IP协议栈;④卸载系统配置和清除底层驱动。对于基于NDK与SYS/BIOS的通信接口的软件架构,其实现主要分为三部分工作:(1)编制底层驱动程序。底层硬件驱动负责向TCP/IP协议栈提供具体的操作接口,用以控制以太网器件的配置和运行,主要包括:初始化驱动环境,包括器件复位、中断使能、存储区数据访问优先级设定、器件枚举和配置等;以太网数据包的接收和发送;监测底层网络器件状态,将事件信息反馈给协议栈;关闭驱动环境,并收回占用的系统资源。(2)在SYS/BIOS操作系统平台上配置和运行NDK的TCP/IP协议栈。CCS5.3提供了配置工具XGCONF来实现图形化界面配置NDK,如图5所示,传输层、网络层、数据链路层分别选用TCP、IP、EMAC协议,并对其作相关必要的配置,主要包括发送/接收窗口大小、IP地址、生存时间等内容的配置。(3)开发用户定制的网络应用程序。本方案中主要是完成接收上位机控制信息和发送结果信息这些操作,采用流式套接字(Socket)来实现。Socket是应用层与TCP/IP协议簇通信的中间软件抽象层,它是一组接口,把复杂的TCP/IP协议簇隐藏在其后面。对于用户来说,一组简单的Socket接口就是全部通信过程,让Socket去组织数据,以符合指定的协议。

本设计中,选取DSP作为服务器,上位机作为客户端。对于DSP端,先初始化一个监听Socket,然后与端口绑定(bind),并对端口进行监听(listen),再调用accept阻塞,等待PC端连接。对于PC端,先初始化一个Sock-et,然后请求连接DSP端(connect),若此时DSP端正处于等待PC端连接状态,则DSP端接受此连接请求,于是,PC端与DSP端就成功建立起了连接。PC端发送数据请求,DSP端接收请求并处理请求,再把回应数据发送给PC端,PC端读取数据,最后关闭连接,一次交互结束。DSP与上位机进行Socket通信的具体过程如图6所示。

2功能测试

为了测试本文设计的千兆以太网接口的可行性,PC端采用VC++的MFC来设计测试程序,测试程序主要实现对单通道正弦信号的采集、处理以及显示等操作,测试界面如图7所示。根据具体的设计需求,测试程序分为数据发送/接收和数据处理/显示这两个部分。其中,数据发送/接收部分通过Socket编程完成与DSP的收发数据包等通信过程,数据处理/显示部分不仅能够支持用户对服务器端参数和控制参数的可配置,而且通过显示接收到的正弦信号时域波形与频谱图,实现对PC端与DSP端通信的直观体验,同时更增加了本接口程序的可移植性与可扩展性。通过测试可以发现,正弦信号的时域波形图与频谱图较为流畅,且稳定性较高,能够支持长时间稳定可靠传输及显示。

3结论

第6篇

在OAuth2.0中,客户端通过访问令牌来访问受保护资源,其认证流程如图1所示,总共有如下三个阶段。(1)客户端向资源拥有者申请获得授权,申请可以直接发往资源拥有者,也可以通过授权服务器为中介(步骤1),资源拥有者许可授权,并向客户端发送授权许可(步骤2),授权许可代表着资源拥有者授权的凭证,可以是四种标准许可类型(或扩展许可类型)中的一种;(2)客户端通过与授权服务器进行认证,并出示授权许可来申请访问令牌(步骤3),授权服务器与客户端完成认证并确保授权许可合法性,向客户端颁发访问令牌(步骤4);(3)客户端向资源服务器出示访问令牌来申请对受保护资源的访问(步骤5),资源服务器验证访问令牌的合法性,向客户端提供服务(步骤6)。

1.1获得授权许可此阶段的目的是为了获得授权许可,标准定义的四种基本授权许可类型分别为授权码、隐式、资源拥有者口令凭证和客户端凭证,此外用户可以自定义扩展的授权许可类型。授权过程中需要利用两个服务接口:授权接口和令牌接口,客户端使用授权接口通过用户重定向从资源拥有者获得授权,另外客户端使用令牌接口来获得访问令牌。为了获得授权许可,客户端需要在HTTP请求中加入所需的参数并将请求发往授权接口,这些参数包括response_type、client_id、redirect_uri、scope和state。client_id是一个独一无二的客户端标识符,在客户端注册时颁发客户端标识符,同时还颁发客户端机密(client_secret),客户端标识符不能单独用于客户端认证。redirect_uri是重定向接口,客户端注册时需要设置该接口,授权服务器通过使用重定向接口将资源服务器用户回送到客户端。scope是访问请求的作用域,如果客户端忽略该值,授权服务器必须使用预定义的默认作用域。state被客户端用于维护请求状态。当授权许可类型是授权码时,response_type参数的值必须为code。当授权码类型是隐式时,response_type的值为token。当授权码类型为资源拥有者口令凭证时,response_type的值为psword,客户端必须向服务器提交客户标志、客户端标识符和客户端机密。当授权码类型为客户端凭证时,客户端只需要将值为client_credentials的response_type参数发送。当客户端使用授权码许可类型且资源拥有者批准授权请求,需要在给客户端的应答中颁发授权码,应答中可能包含的参数有code和state。code是授权服务器生成的授权码,为了降低安全风险,授权码必须在颁发后尽快失效,规范中推荐授权码最大生存时间为10min。在客户端授权请求时如指定了state,则授权服务器的应答中state必须与从客户端接收到的值保持一致。如果客户端使用其他三种客户端凭证类型将在此步骤直接获得访问令牌。OAuth2.0相比OAuth1.0做了较大简化,比如在OAuth1.0中需要向服务接口发送由HTTP请求URL和其他参数计算而来的签名值,而在OAuth2.0中不再计算签名,此外,OAuth2.0也取消了oauth_timestamp和oauth_nonce两个参数。同时,OAuth2.0对认证过程中的数据传输保密性提出了更高的要求,强制使用TLS来保障数据安全。

1.2获得访问令牌授权码类型客户端获得授权许可后,需要向授权服务器发送HTTP请求以获得访问令牌。HTTP请求包括以下参数:grant_type、code、redirect_uri和client_id。当平台使用授权码许可类型时,grant_type值必须为“authorization_code”。code参数值是在授权许可步骤中从授权接口获得的授权码。redirect_uri和client_id与前一步骤相同。授权服务器收到HTTP请求后,需要对客户端进行认证,并验证授权码合法性。如果通过授权码合法性验证,授权服务器需要向客户端发送应答,颁发访问令牌access_token和可选的刷新令牌refresh_token。此外,应答中可能还包括token_type和expires_in参数,其中token_type参数是访问令牌类型,expires_in参数来指定访问令牌的有效期。

1.3访问受保护资源客户端通过向资源服务器出示访问令牌来访问受保护资源,资源服务器需检查访问令牌,确保访问令牌合法。如果访问令牌合法则正常受理访问请求,如果令牌过期,则要求客户端重新获取访问令牌。如果在此之前授权服务器已经向客户端颁发过刷新令牌,则使用刷新令牌来获取新的访问令牌。

2.OAuth2.0客户端认证接口实例

本文以某社交平台授权机制为例,分析OAuth2.0客户端注册和认证的流程,并以CocoaTouch为基础实现了认证客户端。

2.1客户端注册第三方开发人员在设计新的客户端之前需要在官方网站上注册应用,注册信息包括应用名称、应用平台、应用介绍等,注册成功之后将获得AppKey和AppSecret,这两个字符串分别对应client_id和client_secret参数。

2.2服务接口开放平台提供了若干服务接口(API),与OAuth2.0认证相关的服务接口有五个,其中两个API接口将在下文中使用到,分别是请求授权和获取授权。请求授权用于图1流程中第1、2步骤,地址。获取授权用于图1流程中第3和第4步骤,地址/oauth2/access_token。

2.3客户端实现及安全考虑为了便于认证客户端的实现,可以定义一个OAuth2Utility类,下面是类中几个主要的方法。(void)authorizationRequest;//申请获得授权(void)authorizationResponse:(NSString*)authorizationCodeclientState:(NSString*)state;//客户端接收到授权许可(void)accessTokenRequest:(NSString*)authorizationCodegrantType:(NSString*)type;//使用授权许可申请访问令牌(void)accessTokenResponse:(IHTTPRequest*)request;//客户端接收到访问令牌在移动客户端API中,申请访问授权需要提交的参数包括client_id、response_type和redirect_uri,如需要支持移动客户端html5特性,需提交参数display,并将该值设置为“mobile”。所有参数需要使用x-www-form-urlencoded格式进行编码,并通过HTTPGET/POST方式发送。比如使用授权码类型的客户端发送的HTTP请求可能。RFC6749规范定义的四种标准授权许可类型中,授权码许可被广泛支持,而在隐式许可类型中,访问令牌作为重定向URI的一个部分直接返回给客户端,不颁发刷新令牌。资源拥有者口令凭证许可类型和客户端凭证许可类型由于存在巨大的安全风险,一般只在特别的场合下使用。开放平台的请求授权服务接口将授权码通过用户发回给客户端,在本例中服务接口发回客户端的HTTP应答可以,URL中的code值就是授权码。不少服务接口并没有完全遵循规范的要求进行设计,比如本文的例子,容易造成很多安全隐患。Homakov[5]利用跨站请求伪造(CSRF)攻击来非法访问第三方资源,攻击者可以利用这个被挟持的账号继续挟持其他网站的账号[6]。此外,攻击者还可以使用猜测授权码、恶意客户端授权、授权码钓鱼、用户会话模仿等方式来获得授权码。搜狐微博OAuth2.0授权曾经由于设计不当,被发现在获取授权码的时候没有返回state参数而造成安全隐患。为了规避安全风险,建议服务接口设计时应采纳state参数,并在客户端注册期间使用完整的重定向URI[7]。此外,为了减少授权码重放攻击带来的危害,应该尽可能缩短授权码的有效期。客户端获得授权码之后就可以向获取授权服务接口要求交换访问令牌,交换访问令牌需要提交的参数包括client_id、client_secret、grant_type,如果grant_type类型为授权码时,还必须提交code和redirect_uri参数。所有参数经过编码之后,通过HTTPPOST方法发送到获取授权服务接口。HTTP发送的数据可以。获取授权服务接口对客户端提交的参数进行验证,如验证通过则向客户端发送应答,应答中包括access_token、expires_in、remind_in和uid。access_token是颁发的访问令牌。expires_in是令牌有效期,令牌有效期取决于令牌泄漏的风险,由许多不同的因素决定。该平台为几种客户端分别设置了不同的令牌有效期,比如测试客户端的有效期为1d,普通客户端为7d。remind_in即将废弃,现已使用expires_in代替remind_in。uid是当前授权用户的编号。服务接口应答数据采用JSON编码,JSON是一种基于Javcript轻量级的数据交换格式。客户端需要使用JSON的开发库来帮助解读JSON格式数据。客户端获得访问令牌之后就可以使用令牌访问资源,比如读取公共信息或者发信息等。以读取公共信息为例,客户端向公共信息服务接口提交访问令牌就能获得最新的200条公共信息,客户端可以通过提交参数count来设置单页返回记录的条数。客户端通过HTTPGET提交数据,返回的数据使用JSON格式编码。

2.4客户端测试本例中客户端应用平台为iOS,客户端在MacOSX10.8.3系统以及Xcode4.6.2开发环境下测试通过。图2是客户端运行的效果截图。

3.结语

第7篇

关键词:SCIIP核设计状态机数据流

引言

目前,基于传统IC芯片的微电子应用系统设计技术正在转向基于知识产权(IP,IntellectualProperty)核的片上系统(SoC,SystemonChip)技术发展。另外,IC设计在国内的发展很快,各种规模的IC设计中心和公司不断出现。因此,IP核的设计已开始逐渐成为国内微电子系统设计的一项支撑技术。从应用功能角度划分IP核有两大类:微处理器IP核(如8位8051核、32位ARM核等)和各种接口IP核(如LCD控制器、各种串行总线接口IP核等)。本文以异步串行通信接口(SCI,SerialCommunicationInterface)接口IP核结构设计为例,说明SCI、UART、SPI、USB等接口IP核的设计方法。

SCI的通信方式采用标准NRZ格式来进行外设间的异步数字通信。因其结构简法,通常嵌入到DSP、MCU和MPU或外设控制芯片内部,作为芯片的一个接口功能模块。SCI通常由三个功能单元构成:波特率脉冲产生单元、发送单元和接收单元。其结构如图1所示。在SCI数据收发中,数据帧的数据格式要比地址帧的数据格式复杂得多。在不同的通信方式下,数据帧的格式是不同的。为此在发送器和接收器中各引入了与数据帧格式相对应的状态机来实现数据流的控制。本文所介绍的就是基于这种设计思想的一种通用设计方法。

1SCI数据发送单元

数据发送单元主要功能是完成数据的并/串转换及发送,同时产生发送标志位。其结构如图2所示,字符发送状态机如图3所示。下面简要介绍发送单元各功能模块及其状态转换。

(1)TXD时钟八分频器

对基于波特率时钟进行八分频,并输出两个基本脉冲—TXD_CLK_WORK(用于计数、移位等)和TXD_CLK_END(用于标志位的生成和数据流输出)。

(2)TXD状态寄存器

通过此状态寄存器设置通信控制寄存器2的两个控制位—TXEMPTY和TXRDY位,以表示数据写入SCI_TXBUF和启动发送过程。

(3)发送字符计数器

当字符状态机的输出状态为允许字符计数时,其开始对发送的字符计数。当计数器值等于编程的字符数时,输出TX_CHAP_REACH信号作为字符状态机激励,使之进入非字符输出状态。

(4)发送空闲线计数器

当字符状态机进入发送空闲线数据状态时,开始工作。当计数到一定值时,输出信号TX_IDLECOUT_REACH作为字符状态机激励,使之进入非空闲线数据计数状态。

(5)发送数据流的形成

在TXBUF2SHIFT的高电平脉冲作用下,在SCI_TXBUF中待发送数据,经过选择器选择指定位数的数据送入SCI_TXSHIFT低位,不足的高位清“0”。与此同时,TXWAKE数据也送到WUT寄存器,在地址位模式情况下,由ADDR_IDLE控制在WUT中形成地址位;并由SCI_TXSHIFT数据位、地址位和奇偶方式位三者逻辑或形成奇偶校验位。

(6)当前发送字符状态机

在启动、控制位、计数器溢出等激励作用下,实现发送字符状态的输出和转换。发送字符状态机的激励有:TXEMPTY(为“0”时启动TXD发送)、ADDR_IDLE(地址/空闲线模式选择位)、PARENA(奇偶校验使能位)、STOPBIT(选择1或2个停止位)、WUT(发送空闲位数据允许位)、TX_CHARCOUT_REACH(发送字符数目已够位)、TX_IDLECOUT_REACH(发送空闲数目已够位)。发送字符状态机(见图3)的状态有:1为帧停止位(1位),3为帧第1停止位(2位),5为帧第2停止位(2位),8位帧起始位,9为待机状态,A为帧数据位,B为空闲线模式起始位,C为帧地址位,E为帧奇偶校验位,F为空闲线模式停止位,D为空闲线模式计数0~7。

2SCI数据接收单元

数据接收单元的功能是完成串行数据接收及接收标志位的生成。其结构如图4所示,接收起始位检测和接收字符状态机如图5、图6所示。

接收单元各功能模块及状态转换说明如下。

(1)RXD时钟八分频器

对波特率时钟进行八分频,并保持其与所接收串行数据流的字符同步。其输出两个时钟脉冲:RXD_CLK_WORK,用于计数、移位等;RXD_CLK_END,为数据流各种方式的停止位前一个字节时间段内提供脉冲。

图4SCI数字接收单元

(2)起始位检测模块

是一种三位四状态机。其激励有两个:RXD_1_VALUE—接收的串行数据流激励;RXD_END_CHK—一次接收完毕的脉冲激励。其状态有如下几种(见图5):0(待机状态)、1(空状态)、2(空状态)、3(发现“1”到“0”的跳变状态)、4(输出时钟同步信号)、5(字符接收过程中输出RXD_CLK_AYN和RXD_START_DRV)。

(3)字符检测模块

主要功能是接收数据流。其在采样时钟驱动下数据流通过三个寄存器,随后在RXD_CLK_WORK脉冲作用下,三个寄存器的数据通过表决电路,把数据送到接收数据缓冲器RXD_VALUE中,为把数据送到移位寄存器RX_SHIFT做准备。

(4)当前接收字符状态机

用来标识当前所接收的数据是哪一种字符,以及在下一个RXD_CLK_WORK字符周期将转换到哪一种状态,并且根据当前接收字符的状态,驱动其它部件进行合适的操作。其激励有:RXD_START_DRV(RXD起始位有效激励)、RX_CHAR_REACH(RXD字符接收数目已够)、CCR3_ADDR_IDLE(地址/空闲线模式选择)、CCR5_PARENA(奇偶校验使能)。其状态(见图6)有:0(待机状态)、1(帧数据位)、2(帧起始位)、3(帧地址位)、4(帧奇偶校验位)、5(空状态)、6(帧停止位)。

(5)接收字符计数器

当接收字符状态机处于帧数据位阶段时,其开始计数;当与可编程的数据相同时,输出RX_CHAR_REACH给接收字符状态机。

(6)接收空闲线计数器

当处于待机状态时,开始计数器,当计数到一定时,输出一个脉冲,将RXSP1_RXWAKE置位为1;在下一个字符即将接收、读取SCI_RXBUF寄存器或SCI复位的情况下,RXST1_RXWAKE被复位为0。

(7)接收数据移位寄存器(SCI_RXSHIFT)

根据接收字符状态机的状态接收与检测的串行数据流,将所接收的正确数据送入SCI_RXBUF并置相应的标志,否则置出错标志。

(8)BRKDT间断检测计数器

当产生RXST4_FE帧错误时,开始工作。当RXD_VALUE为“1”时,其被复位;当RXD_VALUE为“0”时,表示没有数据接收,开始计数;当计到一定值时,输出计数满信号,此时间断检测标志RXST5_BRKDT被置位。

第8篇

文献[1-4]在阐述教材时谈到两个问题:(1)教材选择比较困难,这个问题依然困扰着我们;(2)他们无一例外地选择了同一本教材(个别情况是版本不同),即《MATLABProgrammingforEngineers》(StephenJChapman著).在教材选择上,完全不必局限于本教材.正如张建民[3]在文章中所述,MATLAB官方网站,即Mathworks公司的主页上就有各种教学资料,包含各种文档,都是不错的教材,而且还有视频教程.为了能够让学生体会到原版MATLAB软件的要旨,选取了MATLAB官方网站上的一个入门文档,即:MatlabgettingstartedguideR2011b[5],之所以选择2011b版本,是因为开设这门双语课的时候是2011级学生,当时这个文档是最新版本的MATLAB说明文档.选择这个图形用户接口文档作为教材可以让学生接受最新的理念,也便于鼓励学生学习最新的技术.由于这个文档没有教材的那种编写思路,学生在学习的过程中比较自由,能够更好地发挥主观能动性,查阅资料搞清问题也有利于提高学生的实际从业能力.为了弥补这个问题,指定了3本参考书,即文献[6-8].本文档的一个重要问题就是没有作业,需要教师根据讲授内容来设计作业.为了防止学生代码复制和抄作业的问题,对作业进行了设计,保证每个学生都有不完全相同的作业.

2个性化的作业

为了让每个学生都有独一无二的作业,将题目和学生的身份信息进行了联系.MATLAB最重要的功能就是对矩阵的操作,在实际学习过程中,让学生将向量和矩阵分开看待的.对于向量的操作,让学生对自己的学号进行操作,并将自己的学号做成各种各样的条形码.通过对条形码的学习,让学生明白了编解码技术、抗噪声技术.当学生看着自己的学号生成的条形码时,他们觉得非常新奇,对MATLAB编程的学习热情得到极大地提高.对于矩阵的学习,主要围绕学生的照片展开.要求学生必须用自己的照片来进行处理.这里存在两个问题:(1)有的学生从网上下载了小动物和风景画之类的图像进行处理,遇到这样的问题,对学生进行批评教育,并降低该次作业的成绩;(2)学生本人的照片大多是用手机拍摄的,因此是彩色图像,一般为jpg格式,需要将彩色图像先转换为灰度图像,在讲到三维阵列的时候,再学习彩色图形的显示和处理.为了便于说明作业的实际情况,举一实例.例如:学习图形用户接口的时候,要求学生设计一个独特的界面.界面的大致轮廓见图1.给出作业的要求如下:(1)设计中的照片务必为本人“头像”,不可以为合影、风景照等;(2)设计报告要求将实现步骤写清楚;(3)报告中要求有程序执行结果截图,截图一定要全面、完整;(4)学号要求一定输入自己的学号;(5)设计完成项目不局限于上页格式,可自由发挥;(6)报告后面要有附录,附录为本设计的代码,字号为小五.本次作业不仅要求学生能够正确设计图1所示的界面,还能够将自己的学号拼成平行四边形或矩形输出,并能够求出学号各位数字的总和,还能够上下和左右翻转设计者的照片.所有结果要求在该接口界面上显示.例如:在文本框中输入“20115044122”,点按“平行四边形格式”,并单击“左右翻转”,得到的结果见图2.在图2的界面中再次单击“左右翻转”,照片翻转结果见图1.本次作业不仅使学生学会了利用MATALB提供的Guide工具进行图形用户接口界面设计,而且学会了将照片导入MATLAB的方法,以及对于三维阵列的操作方法,更能够巩固已经掌握的循环结构程序设计方法.有的学生在本次作业的基础上,进行了进一步的学习和探索,做出了更多更好的设计.

3结论

第9篇

关键词:ISDNPOTS企业上网设备

随着网络的发展,网络带这的增加,上网速度将越来越快。人们也不再仅限于上网,在追求上网的同时打网络电话,实现与网友的相互交流。目前人们很大程度上依赖于传统的ISDN上网,且在今后一段时间内,这种依赖不会发生很大变化。其于这种状况,设计了针对企业的上网设备(简称“企业上网设备”),它实现了企业上网的同时又可打网络电话双重功能。企业上网设备的整体实现方案如图1所示。

“企业上网设备”一端连接ISDN网,通过ISDN连接Internet,另一端通过以太网交换机芯片连接用户端的以太网。另外在用户端通过POTS电话机接口连接两部电话机。

普通电话拨打和接收网络话音,必须通过POTS接口才能进行。POTS接口是能够连接普通电话与ISDN的接口设备,它能使两部电话同时上网并与其它电话通信。本文对POTS接口进行阐述。

1POTS接口

要实现普通电话机与ISDN进行连接,需要专门的接口(POTS)电路,这个接口电路应该具有馈电、过压保护、振铃、监视、编解码、信号音产生器等功能。其中,信号产生器产生各种信号音,可通过硬件或软件方法来实现。若用软件实现,则将这些信号音进行抽样、量化、编码成PCM数字信号后存在一个只读存储器中,然后再周期重复地读出这些值就可以得到数字信号音。接口电路主要为用户接口电路(SLIC)、编解码和滤波器(CODEC),它相当于用户音频信号处理接口电路(SLAC)、DTMF电路。

1.1POTS组成

POTS接口采用LUCENT的L8576(SLIC)、L8503(CODEC)、保护保险丝、可编程逻辑器件GAL16V8D及MOTOROLA的MC145436(DTMF)。原理方块图如图2所示。

1.2功能描述

(1)SLIC:SLIC是用户线接口,它是CODEC与外接话机环路的中间接口。它具有如下功能:

·铃流信号。能提供话机振铃所需的铃流,它是一负高压交流信号。

·摘挂机检测信号。它提供话机摘挂机时的微处理器检测信号,微处理器根据该信号的变化来判别出话机的摘挂机情况。

·语音信号接口。它具有与CODEC与DTMF相连的模拟语音信号接口,完成从话机到CODEC与DTMF或从CODEC到话机的模拟语音信号连接;它是话机与CODEC联系的间桥梁。

·用户线接口,连接话机。

本设计采用LUCENT的L8576B芯片,它是具有PLCC封装44只引脚的双用户线接口电路。每一路能提供直流馈电、环路监视和铃流信号,它含有两路SLIC通道,可外接两部电话。该芯片内含铃流产生电路,振铃电源为-65V。

除了铃流及馈电功能外,L8576B还提供了接收和发送通道、摘机检测、振铃间断输出功能。另外,它还具有温度保护功能。

保护:L8576B除了温度保护外,还具有过压保护功能,对普通的过压保双仅需在TIP和RING端串接电阻即可。然而,为了防止线路短路或雷击而损坏器件,则必须外加保护器件(L7591)。

TIP/RING驱动:L8576B有TIP/RING驱动电路,其输出为PT/RP。在正常通话方式下,驱动器限流为24mA以下,振铃时则上升到大约85mA。

(2)CODEC:利用编解码器、滤波器完成语音信号的A/D与D/A变换,其PCM接口与外部U接口相接,而模拟口与SLIC相接。

本方案采用LUCENT公司的T8503,其接口功能如下:

·数字接口:包括PCM接口、内部时序控制、增益控制。

PCM接口:管理传送和接收PCM数据及帧同步控制。

PCM数据:PCM数据每125μs帧周期发生一次,数据时钟CLK是2.048MHz,每帧有32个时隙,每个时隙8bit数据位。DX和DR为数据发送和接收数据,不发送数据时DX保持三态状态,DR接收数据时才有效。

帧同步FS:T8503有四个帧同步(FSX和FSR)输入,每一对对应一个通道。在一个125μs的帧里,每个帧同步提供一个单脉冲。帧同步可以出现在器件上电且MCLK作用于器件的任何时刻,帧同步脉冲的时序表时时隙的开始。在这时隙中,该通道的数据在数据时钟作用下输入或输出。FSX和FSR高有效,且必须保持高至少一个主时钟周期,它们可以独立工作,对符合传送和接收转换的给定的通道可以将其连一起。在一个帧中,通道0和通道1传送帧同步必须由一个或多个时隙彼分开。同样,通道0和通道1接收帧同步也必须由一个或多个时隙彼此分开。除非这两个通道接收同样的PCM信号,此时,接收帧同步脉冲可连接在一起。

对T8503而言,对给定的通道,一帧中FSX和FSR只能发生一次,与FS的下降沿无关且其脉冲宽度不受限制,只要FS有效之前保持至少一个主时钟周期,数据接口就能很好地工作。

·模拟口:包括偏置电路和参考源、A/D转换、D/A转换。

偏置电路和参考源:T8503仅需-+5V电源供电,参考源为+2.4V并由内部产生,不需外部附加电路。

A/D转换:包括一输入运放、带通滤波器和译码器。

T8503内部还具有滤波电路对放大器输出信号进行滤波,而后对XMT语音模拟信号采样并按A率进行数字PCM转换。

D/A转换:解码器PCM数据流转换成模拟信号,输出放大器单端输出语音信号RCV,它能驱动2000Ω的负载。

(3)FS译码器:由于T8503具有双通道,且各有自已的同步信号,同步信号不能同时有效,需相差一个或多个时隙、所以要将U接口送来的FS信号一分为二成FS0、FS1两同步信号,分别作为通道0和通道1的同步信号。FS译码器由一可编程逻辑器件GAL16V8D来实现,具体电路如图3所示。

F0SEL、F1SEL是同步信号选择信号,为0选通有效,为1则选通无效。F01CTL是帧同步控制信号,该信号在GAL16V8D内将被一分为二为互为反相的两帧同步信号控制信号,它们与FS(IDL_FSR/C)帧同步信号异或产生选择B1、B2数据通道的同步信号FS0、FS1。假设F01CTL被分F0SEL、F1SEL两信号且它们有效,则它们的波形关系如图4所示。

本方案拟采用MOTOROLA公司的MC145436(2片)作为DTMF芯片,它将语音模拟信号XMT转换成8421数字码,并经由GAL16V8D变为POTS_Dva/POTS_DVb输出信号。这些输出均连接到微处理器,由微处理器处理这些数据进而判明拨号号码。

(5)保护电路:用户线接口电路(SLIC)要外加保护电路,以防损坏。采用0.35Ab保险丝作为SLIC的保护。

2POTS工作过程

2.1主叫

·用户摘机:当用户摘机时,SLIC输出给微处理器(μP)终端信号,从而引起微处理器中断。

·送拨号音:微处理器接到SLIC终端信号后,发生中断。而后,微处理器执行送拨号音子程序,将存储器中拨号音码经U接口回环给POTS。POTS的CODEC(T8503)将这些拨号音PCM码进行处理后变成模拟信号RCV输出到SLIC的RCVN和RCVP差分输入端,再经SLIC的PT、PR输出给话机,使之发出拨号声音。

·拨号:当主叫听到拨号音后就可进行拨号。拨号模拟信号经SLIC输出给DTMF(MC145436),DTMF将其变成二进制的8421码并等数据有效后(Dva/DVb为高)送给微处理器,微处理器将号码透明地传送给U接口。

·号码分析:微处理器接收到第一个拨号号码后就会停止对POTS送拨号音信号并通过ISDN信令将号码送U接口。局端交换机如果发现号码有效,则通过信令通知微处理器,微处理器进行相应处理。

·若主叫所拨号码符合要求,微处理器通过ISDN信令进行下一步处理。

·送回铃音:若被叫忙,ISDN信令通知微处理器,微处理器执行送忙音子程序,将存储器中事先存好的忙音经U接口回环给POTS。POTS的CODEC(T8503)将这些忙音PCM码进行处理后变成模拟信号送SLIC的RCVN和RCVP差分输入端,再经SLIC的PT、PR输出给话机,使之发出忙音,以提醒主叫被叫忙。若被叫闲,则ISDN信令通知微处理器,微处理器就执行送回铃音子程序,将存储器中事先存好的回铃音经U接口回环给POTS。POTS的CODEC(T8503)将这些回铃音PCM码进行处理后变成模拟信号送SLIC的RCVN和RCVP差分输入端,处理后再经SLIC的PT、PR输出给话机,使之发出回铃音,以提醒主叫被叫话机响铃。

·通话:当被叫摘机后,微处理器就停送回铃音给POTS,此时主叫和被叫就可以通话了。通话过程如下:

当只使用某一个话机时,主叫的话音信号经SLIC送给CODEC;CODEC在对话音信号进行A/D变换等处理将话音信号转换成PCM码,在U接口的帧步和位同步作用下,经对其进行解码分成FS0、FS1后,由微处理器选择一空闲B通道,由数据线DX输出给U接口;同样,被叫话音信息PCM码则通过DR接收数据线被COTEC接收,再经CODEC进行D/A变换等处理,输出模拟信号到SLIC的差分输入端(RCVN、RCVP),由SLIC处理后送给主叫,从而完成主叫与被叫的通话。

当POTS的两个话机同时工作时,B1、B2两数据通道均被使用。此时,帧同步FS0、FS1反向,即当FS0有效时,FS1无效;反之亦然。由于是长帧工作模式,每个有效帧同步对应一个B数据通道8位数据,可通过微处理器控制FXSEL和FXCTL两信号来选择FS0或FS1,从而达到选择B1或B2数据通道的目的。

·话终复原:通话完毕,若被叫先挂机,微处理器要对POTS送忙音码,从而使主叫话机听到忙音;若主叫先挂机,则微处理器就进行相应的操作。

2.2被叫

第10篇

关键词:VXI总线寄存器基地址修改码

VXI(VMEbuseXtentionforInstrumentation)总线是一种完全开放的、适用于各仪器生产厂家成为高性能测试系统集成的首选总线。VXI总线器件主要分为:寄存器基器件、消息基器件和存储器基器件。目前寄存器基器件在应用中所占比例最大(约70%),其实现方法在遵守VME协议的前提下,根据实际需要各有不同。VXI接口电路用于实现器件的地址寻址、总线仲裁、中断仲裁和数据交换等。设计VXI接口首先需明确寻址空间和数据线宽度,VXI器件寻址有A16/A24、A16/A32和A16三种。A16/A24寻址支持16M字节空间,A16/A32寻址支持4G字节空间,A16寻址支持64字节地址空间,但不论哪种寻址方式,A16寻址能力是不可缺的。本文设计的VXI寄存器基接口电路是A16寻址的,支持D8和D16数据线传输,有较宽的使用范围。其接口电路原理框图如图1所示。

1DTB及DTB仲裁

DTB(数据传输总线)及DTB仲裁是VXI接口的核心,DTB主要包括:寻址总线、数据总线和控制总线。其主要任务是:①通过地址修改码(AM)决定寻址空间和数据传输方式。②通过DS0*、DS1*、LWORD*、A1控制数据总线的宽度。③通过总线仲裁决定总线优先使用权。

VXI总线器件在A16(16位地址)寻址时,有64字节的地址空间,其呈部分作为器件配置寄存器地址(已具体指定),其余可用作用户电路端口地址。每个器件的寄存器基地址由器件本身唯一的逻辑地址来确定。地址修改线在DTB周期中允许主模块将附加的器件工作模式信息传递给从模块。地址修改码(AM)共有64种,可分为三类:已定义修改码、保留修改码和用户自定义码。在已定义的地址修改码中又分为三种:①短地址AM码,使用A02~A15地址线;②标准地址AM码,使用A02~A23地址线;③扩展地址AM码,使用A02~A31地址线。A16短地址寻址主要是用来寻址器件I/O端口,其地址修改码为:29H、2DH。

图2为VXI器件寻址电路图,其中U1为可编程逻辑器件,其表达式为:VXIENA*=AS*+!IACK*A14+!A15+!AM5+AM4+!AM3+AM1+!AM0;(!IACK*表示系统无中断请求)。寻址过程为:当VXI主模块发出的地址修改码对应为29或2D、总线上地址A6~A13和逻辑地址设置开关K1的设置相同并且地址允许线AS有效时,图2中的MYVXIENA*有效(为低),表示本器件允许被VXI系统寻址。在允许本器件寻址的基础上(即MYVXIENA*有效),再通过MYVXIENA*、A1~A5、LWORD*、DS0*、DS1*译码生成64字节地址,根据VME总线协议可译出单字节地址和双字节地址。协议协定:当单字节读写时,奇地址DS0*为低、DS1*为高,偶地址DS1*为低、DS0*为高,LWORD*为高;双字节读写时,DS0*和DS1*为低、LWODR*为高;四字节读写时,DS0*、DS1*和LWORD*都为低。

DTB数据传输应答主要依赖DTACK*和DS0*之间的互锁性握手关系,而与数据线上有效数据什么时候出现无关,所以单次读写操作的速度完全决定应答过程。为适应不同速度用户端口读写数据的可靠性,本文采用由用户端口数据准备好线(DATREADY*)去同步DTACK*答应速度的方法来保证数据传输的有效性。该方法的优点是电路简单、使用方便,缺点是占用DTB时间长,影响VXI系统性能,且最长延时时间不得超过20μs。通常情况下用户可通过数据暂存的方法实现数据可靠传输,并使用户端口数据准备好线(DATREADY*)接地。由于寄存器基器件在VXI系统中只能作为从模块使用,所以其总线请求只有该器件发生中断请求时才由中断管理模块提出。

2中断请求及仲裁电路

VXI系统设有七级中断,优先中断部迟疑不决包括:①中断请求线IRQ1*~IRQ7*;②中断应答线IACK*;③中断应答输入线IACKIN*;④中断应答输出线IACKOUT*。从系统的角度看,在VXI系统中有一个成链的中断查询系统。当VXI系统中有中断请求时,中怕管理器使中断应答信号IACK*有效(置低),并送往链驱动器,链驱动器使输出IACKOUT*有效,送至相邻的下一个器件。如果相邻器件没有中断请求,则该器件的IACKOUT*输出仍为低,继续向下一个相邻器件传送;当此器件有中断请求时,所以其输出IACKOUT*为高,进入中断过程,并屏蔽后级器件的中断应答。

图2

为实现中断请求和中断仲裁,每个器件的中断仲裁电路应完成的功能为:①产生中断请求;②上传状态/识别码;③屏蔽后级中断应答。本文设计的中断仲裁电路如图3所示。其中TX1~TX3来自中断号选择跳线器,INNER-IRQ为器件内部用户电路中断请求信号,上升沿有效。中断请求过程分如下四步:(1)在系统复位或中断复位(来自控制寄存器)后,IRQOPEN*为“1”使比较电路输出“1”,使中断应答链畅通,且译码电路不工作。(2)当本器件内有中断请求时,使IRQOPEN*为“0”,则译码电路根据中断置位开关的设置输出相应中断请求信号IRQx*。当中断管理器接收中断请求信号后使IACK*有效,并送往中断链驱动器使之输出IACKOUT*有效,同时中断管理器请求DTB总线使用权。(3)当中断管理器获得DTB使用权后,根据接收到的中断请求信号,在地址允许线AS+作用下在地址线上输出相应的A1~A3地址,使比较器输出“0”,从而使IACKOUT*变高,屏蔽后续中断,并清除本器件内部中断请求。(4)中断管理器使数据允许信号DS0*为低,读出器件状态/识别码,响应中断,同时在DS0*的上升沿清除中断请求(使IRQOPEN*为“1”),接通中断应答链,进入中断过程。

3可编程器件实现和调试

为了克服用中小规模集成电路实现VXI接口电路存在的体积大、可靠性差和可调试性差等不足,可采用可编程器件实现接口电路。本文采用的器件是ALTERA公司的MAX系列,采用的器件可编程软件平台的MAX+plusII。MAX+plusII在编程上提供了多种电路描述形式,主要有图形描述、AHDL描述和VHDL描述等。本文采用图形描述和AHDL描述相结合的描述方法。接口电路的主框架结构和能够用标准元件表述的子模块电路用图形描述方法设计,部分功能子模块用AHDL语言描述。这种设计方式的电路原理结构直观、功能描述简洁。VXI接口电路硬件描述子程序模块由地址修改码器件寻址、端口地址译码、中断请求及控制、寄存器配置四部分组成。

在VXI器件中,寄存器配置步骤是必不可少的,VXI寄存器基器件主要配置寄存器有:识别/逻辑地址寄存器、器件类型寄存、状态/控制寄存器。在接口电路的性质特性明确的前提下,寄存器基器件的配置是确定的,所以直接在可编程器件中实现,且更改也很方便。以下列出的是VXI寄存器基接口电路的主要逻辑表达式(用AHDL语言格式):

VXIENA=AS#!IACK#!A14#!A15#!AM5#AM4#!AM3#AM1#!AM0;

MYVXIENA=VXIENA#(A6$Q0)#(A7$Q1)#(A8$Q2)#(A9$Q3)#(A10$Q4)#(A11$Q5)#(A12$Q6)#(A13$Q7);

ACKED=(TX1$A1)#(TX2$A2)#(TX3$A3)#IACK#!SYSRST#!IRQPEND#AS#IACKIN;

DTACKNODE=!(DS0&DS1#MYVXIENA&ACKED);

DRACK=DFF(DTAKNODE,SYSCLK,VCC,VCC);

IOENA=MYVXIENA#DS0&DS0&DS1#!LWORD;

IACKOUT=AS#IACKIN#!ACK;

需要注意的是,在使用中由于部分信号线与VXI背板总线连接时需要采用集电极开路方式接入,如DTACK*、SYSFAIL*、BRx*等,所以应增加一级集电极开路门电路后再与VXI背板总线连接。

第11篇

关键词:电力线载波消费总线

智能家庭要求家用电器经网络(总线)实现互联、互操,总线协议是其精髓所在。目前,国际上占主导地位的家庭网络标准有:美国的X10[1]、消费总线(CEBus)[2]、日本的家庭总线(HOMEBUS)[3]、欧洲的安装总线(EIB)[4]。

消费总线使用五种类型的介质(电力线、无线、红外、双绞线和同轴电缆),其中以电力线的应用最为广泛。消费总线得到IBM、Hownywell、Microsoft、Intellon、Lucent、Philips、Siements等大公司的支持,1992年成为美国电力工业协会的标准(EIA600、EIA721)。1997年,EIA600成为美国ANSI标准;2000年6月,微软和CEBus委员会共同宣布支持CEBus的简单控制协议SCP。SCP是未来微中UPNP协议的子集。

1CEBus电力线物理层

鉴于家庭中电力线载波通讯的特殊性,CEBus采用价格低廉、简单易行的线性调频(chirp)扩频调制技术。摒弃了传统电力线载波通常应用的直接序列扩频、调频扩频、跳时扩频等设备复杂、价格昂贵的扩频调制技术。

图2通用通讯模块的原理图

消费总线的物理层有四种码,分别是:“0”、“1”、“EOF”和“EOP”。均为扫频信号,正弦信号载波,从203kHz经过19个周期线性地变为400kHz,再经过1个周期变为100kHz,然后在5个周期中变为203kHz,整个过程用时100μs,也就是1个UST(Unitsymbletime,在消费总线中用多少个UST来度量时间)。其波形如图1所示。

chirps扫频载波需经过放大耦合到电力线上,放大后的幅度应适中。幅度太低,给接收电路带来困难;幅度太大,又会对电力线上的设备产生干扰。CEBus的规定如表1[5]所示。

表1不同条件下的载波幅度值

设备工作电压最小幅值最大幅值负载范围

~120V2.5Vpp7Vpp10Ω~2kΩ

~240V5Vpp14Vpp39Ω~8.2kΩ

表2不同条件下的设备输入阻抗值

设备工作电压设备输入阻抗(在频率20kHz~50000kHz)载波幅值

~120V>150Ω6Vpp

~240V>300Ω12Vpp

同时也规定了电器设备对信号的阻抗。如果阻抗很小,就会将信号吸收从而无法传送国。规定如表2[5]所示。

线性调频技术实现宽带低功率密度传输,从而大大提高抗干扰性能和传输距离。同时,chirps具有很强的自相关性和自同步性。这种自相关决定了所有连接在网络上的设备可以同时识别从网上任意设备发出的这种特殊波形。

2通讯模块的设计

根据P89C51RD2和P300的芯片手册[6][7],设计的通用通讯模块的原理图如图2所示。P89C51RD2和P300之间采用SPI接口通讯,用模拟的I2C总线和串行EEPROM通讯。这样,中断口、串口和有足够的I/O口可以用于实际设备的设计。

3通讯模块电力线接口电路的设计

从P300输出的信号幅度小、驱动能力弱而且还有高次谐波,因此必须经过滤波和放大,然后才能通过耦合电路将信号调制到电力线上。耦合电路将高压和低压隔离开,防止高压击穿通讯电路。另一方面,从电力线来的载波信号又要由P300接收,而电力线上的干扰很大也很不确定,所以需要一个带通滤波器,通过100kHz~400kHz之间的信号,再送到P300的接收端。电路的方框图如图3所示。

其中左边的3根线来自P300,TS是数字信号,控制收发转换。实际上P300的收发类似半双工方式,因为当它在“发送”劣态的时候,实际上并没有输出信号。因此,这个时候它可以处于接收状态,如果接收到了优态,就表示发生了竞争。

3.1滤波电路

输入滤波器电路如图4所示。

这个滤波器有6阶,对高频干扰有很好的抑制,图5是它的频率响应曲线。在高频段400kHz处衰减为3dB。高于400kHz的平均衰减为3dB,高于400kHz的平均衰减为128dB/dec,可以有效地过滤干扰信号。

P300输出的信号包含丰富的高次谐波,为了减小对电网的干扰,先经过带通滤波器再进行放大。滤波器也采用无源电路,原理与上面类似,这里不再多述。

3.2放大电路

P300的输出信号经过滤波之后,其内阻很大,没有驱动能力,而且电压幅度不符合消费总线的要求,必须放大后才能够驱动电力线。放大电路不仅要有强有力的输出能力,还需有禁止输出功能,这样才能使P300接收其它节点发出信号。

电网的性能不确定,有时是容性负载,有时是感性负载。这样就给末级电路采用反馈带来很大困难。因为当负载的阻抗特性变化时,输出的信号相位会发生变化,最终有可能是负反馈变成了正反馈,从而引起振荡。

图6电力载波放大电路

设计的电力载波放大电路如图6所示,虚线的左边的原理图,右边是实现电路图。可以看出,这个电路有两个输入,一个输出。输入信号来自P300的电力载波,输出使能控制放大器运行。图6的左半部分,T1和T2接成互补式OTL输出,它们的偏置电压来自电阻R1、R2的分压。来自P300的信号经过运放U1放大达到期望的幅度,然后通过电容耦合到T1和T2的基极。如果开关S1和S2合上,则T1和T2正常输出电信,P300可以发送数据;如果S1和S2都断开,那么T1和T2的基极都处于悬空状态,输出端也成为悬浮状态,从而不会吸收由电力线传来的信号,P300可以接收信号。

在图6的右边,开关S1和S2也被T7和T8取代,T1和T2被复合管取代,其中的电阻R11用来消除三极管漏电电流的影响。采用复合管是为提高放大倍数,这样可以尽量减小级间耦合,即使输出信号发生了畸变,也不会影响到前级而发生振荡。实际证明这种做法是很可行的。其对容性负载、感性负载以及纯电阻的负载都有较稳定的输出,输出阻抗小于2Ω。

图7P300与电力线的耦合电路

3.3耦合电路及保护措施

图7中J1接到电力线,R1是压敏电阻,它可以使尖峰脉冲短路,变压器T1实现了高压与低压的隔离。因为载波的频率比较高(100kHz~400kHz),远远大小电网的频率,这样就使载波信号畅通无阻,而能够隔断高压。电容C1阻断低频高压,阻止变压器饱和;电阻R2取值比较大,作用是在离线时使电容放电,防止在设备插头的两端出现高压。Z1是瞬变抑制二极管(TransientVoltageSuppressor,或称TVS),它可以有效地避免后而电路被高压击穿。L1、D1、D2也是为防止高压击穿放大电路而设计的。电力线上的设备接入或者是断开,都有可能引起尖峰脉冲,并导致收发电路的永久损坏。所以高压保护措施是至关重要的。

第12篇

关键词:PCI总线TM1300以太网通信接口pSOS+内核pNA+

1概述

TM1300是Philips公司推出的新一代高性能多媒体数字信号处理器芯片。基于TM1300的DSP应用系统适合于实时声音、图像处理,可广泛应用于会议电视、可视电话、数字电视等应用场合。它不仅具有强大的处理能力,同时还具有非常友好的音频和视频以及SSI和PCI等I/O接口,因此可以根据应用的需要灵活地构造各种视频通信系统。鉴于目前计算机网络的普及和网上视频业务的发展,很有必要为TM1300视频编码系统开发一个以太网接口以拓宽其应用范围。开发以太网接口的一种合理思路是利用TM1300集成的PCI接口来驱动专用的以太网接口芯片。由于目前多数以太网接口芯片(如Real-tek8029,Realtek8139等)都采用PCI接口,因此,可以用PCI总线将数据从TM1300传输到这些专用的以太网接口芯片后,再由它们发送数据,而且TM1300可以在嵌入式操作系统pSOS中运行,同时由于系统pSOS带有TCP/IP协议栈因此可以方便地完成编码码流的TCP/IP封装。

根据以上思路笔者在进行了前期测试的基础上进行了电路板的设计并顺利完成了调试。目前这个以太网接口已经基本开发成功。本文将对这个设计的技术要点从硬件和软件两个方面进行详细介绍。

2TM1300及PCI总线接口

该系统的硬件结构框图如图1所示。本系统硬件设计的重点是PCI总线接口。PCI总线根据数据位的宽度有32位和64位之分,64位的数据线与32位是兼容的。PC机中常见的是32位PCI总线,它的有用引脚总数是110个,可以分成3组。第一组是基本功能信号线,包括32位共享数据地址线AD〔00..31〕、接口控制线、仲裁线、时钟线、系统复位线、中断线;第二组是附加功能信号线,包括错误报告线、cache功能支持线、JTAG边界扫描线;第三组是电源线,包括设备耗电量标识线、3.3V电源线(12根)、5V电源线(13根)、地线(22根)。

因为Realtek8029不具备PCI的附加功能信号线所支持的cache功能和JTAG边界扫描功能,同时虽然它具有奇偶校验错误报告功能引脚,但该脚可以悬空不用。所以,设计时只需考虑第一组功能信号线的连接即可。

PCI接口的设计有以下几个要点:

(1)PCI总线的仲裁

这里先说明两个概念。首先,PCI总线是多设备共享的,由于PC机里可以有多个PCI设备,所以需要使用仲裁器;其次,PCI设备有主设备和从设备之分,主设备可以发起PCI数据的传送从设备只能被动地响应主设备的操作以对读操作和写操作做出响应。PCI的仲裁引脚是REQ和GNT,分别为请求线和授权线,而且只有PCI主设备有这两个引脚。一般情况下,REQ通常和GNT成对地连到仲裁器,而设备与设备的REQ和GNT通常是互不相连的。

PCI总线的仲裁过程是这样的:PCI主设备把REQ电平拉低以表示向仲裁器请求占用总线。经仲裁获准后,仲裁器把这个设备的GNT电平拉低以表示请求获准,此后该设备便可以使用总线了。当它不再使用总线时,应使REQ信号变为高电平仲裁器就不再给它分配总线资源。在本系统中,TM1300是PCI主设备,而Realtek8029是PCI从设备。由于它们不存在共享总线的问题,所以不需要仲裁器,而只是简单地把REQ和GNT短接即可,这就相当于TM1300自己给自己授权。

(2)PCI_IDSEL信号线在设备的PCI配置读写中的作用

PCI有一种特殊的读写周期,称为配置读写。这是因为在系统引导时,如果没有给设备配置I/O或内存地址,软件就只能通过配置来读写访问设备。配置读写有两种,分别称为0型和1型具体采用哪一种取决于总线的硬件连接。配置读写操作不经过PCI桥时,使用0型,当需要经过PCI桥时,则要用1型,0型读写的地址直接就是总线上的地址,1型读写的地址则要经过PCI桥的译码才能成为最终的总线地址。本设计中,TM1300和Realtek8029是用PCI总线直连的,所以使用0型配置读写。

AD〔00..31〕是PCI总线的共享地址和数据线,每一次PCI传送都分为地址周期和数据周期。在地址周期,采用0型读写时,AD〔00..31〕的内容如下,AD〔00〕和AD〔01〕总为“00”,因为配置读写是以双字为单位的,AD〔02〕~AD〔07〕是要读写的PCI配置空间的寄存器号AD〔08〕~AD〔10〕是设备的功能号在一块PCI卡上有多个功能设备时,为了进一步区分不同的设备就要用到这几位,由于Realtek8029是单功能设备,故这几位全为0,AD〔11〕~AD〔31〕是设备选择位,其中必须有且仅有一位为“1”,如图2所示,这在物理上表现为总线的AD〔11〕~AD〔31〕中有一根为高电平如果输出高电平的这根线与某块PCI卡的PCIIDSEL引脚相连,这块卡就会被激活,这样,在紧接着的数据周期中,它就会将其PCI配置空间相应寄存器中的内容放到总线上以供读取。

(3)PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引脚的处理

上述四个引脚均是低电平有效,因此需要接上拉电阻,以保证在设备未驱动该引脚时处于稳定的无效状态,上拉电阻的阻值在1kΩ~10kΩ范围内,阻值越小,则将该信号驱动为有效的时间越短,但太小又会导致电流过大,所以,要权衡考虑,本设计选用4.7kΩ。

上述三点对脱机情况下PCI设备的互连具有较普遍的参考意义,除此之外,本设计还有以下比较特殊的几点:

应将TM1300的PCI,INTA引脚配置为输入,以便接收Realtek8029的中断;

PCI时钟由TM1300提供;

Realtek8029的复位信号也就是TM1300的复位信号,该信号由外部电路提供;

TM1300的PCISTOP、PCISERR引脚悬空,表示Realtek8029不具备相应的附加功能。另外,TM1300的PCIINTB、PCIINTC、PCIINTD引脚可以用作用户中断。

3软件设计

该接口设计的软件结构框图如图3所示。其中TM1300运行于pSOS,它是一个简单的实时多任务嵌入式操作系统,带有pNA+网络组件,其pNA+相当于TCP/IP协议栈的扩展,它向上可提供应用程序编程的socket接口,向下可定义一个与网络接口层交互的接口,其中包括8个函数,分别是:ni_init(接口芯片初始化)、ni_broad-cast(发送广播分组)、ni_send(发送普通分组)、ni_getpkb(申请发送缓冲区)、ni_retpkb(归还接收缓冲区)、ni_ioctl(I/O控制操作)、ni_pool(统计量查询)、Announce(网络接口驱动调用它把接收到的数据包提交给pSOS)。其中网络接口层在本应用中就是Realtek8029的驱动程序,它通过硬件抽象层来驱动Realtek8029(硬件抽象层是PCI总线的配置读写和I/O读写指令集的总称)。

软件执行的流程大致是:系统首先启动pSOS,并由它加载网络接口驱动程序,然后调用驱动程序的ni_init函数,同时初始化Realtek8029的PCI配置空间并设置Realtek8029的工作参数,之后启动用户任务。在这里,用户任务为H.263编码进程。它对VI口读入的源图像进行压缩编码后,将调用socket的接口函数sendto(sendto是UDP套接口专用的发送函数),然后把码流发送给pSOS由pSOS根据UDP协议进行封装后,再调用ni_send函数,并由ni_send完成数据包从系统主内存到Realtek8029片上RAM的拷贝,然后启动Realtek8029发送数据。在接收情况下,Realtek8029收到一个完整的数据包后会用中断通知CPU,然后由CPU执行中断服务程序。当中断服务程序将数据包从Realtek8029片上RAM中拷贝到系统的主内存后,系统将调用Announce函数并把数据块的指针、数据长度和其它信息提交pSOS,最后由pSOS将数据包沿协议栈一层层上传并作出相应的处理。

软件的设计和pSOS操作系统的关系比较密切,限于篇幅,本文不对pSOS作详细介绍,。本文接下来重点介绍PCI配置空间的配置过程,这部分对于类似的设计有较普遍的参考意义。PCI配置空间有64个字节,PCI片内的这些寄存器存储了该芯片的厂商号、设备号、设备类型等重要代码,还包括命令寄存器、基地址寄存器等控制其总线行为的寄存器,它们必须在设备初始化时正确配置,否则设备不能工作。

对Realtek8029PCI空间的配置需要三个步骤:

首先是扫描总线,这一步的目的是找到Real-tek8029的配置地址,直观地讲,就是找到它的PCI_IDSEL引脚和哪根AD线相连,因为后续的配置写要根据这个地址来寻址。扫描总线时,要对AD〔11〕到AD〔31〕每根线进行一次扫描,如果哪根AD线连接了一个PCI设备的PCIIDSEL引脚,那么用配置读函数读取PCI配置空间的0号寄存器时,应该返回该设备的设备和厂商代码,如果这根线实际未连接设备,则返回值是0。已知Realtek8029的设备和厂商代码是“0x802910ec”,如果返回值与之相同,说明找到了Realtek8029,这时要记下这根AD线的序号。例如,在硬件上把Realtek8029的PCIIDSEL和AD〔20〕相连,则扫描到的序号就应该是“20”。

其次,用配置写函数配置I/O读写使能,即在command寄存器中写入“0x1”。

最后,用配置写函数配置I/O地址,也就是在I/OBaseAdddress寄存器写入分配给该设备的I/O地址(例如“0xe400”)。具体程序流程图如图4所示。

4调试结果

根据以上设计,笔者在原TM1300视频编码硬件系统的基础上加入了PCI接口,并编写了pSOS下Realtek8029的驱动程序。然后,在这个硬件平台上对Realtek8029的驱动部分进行了数据传送测试。

笔者首先用一个单独的UDP发送任务进行发送速率测试。这个任务主要是高速地向网络上的一台PC发送数据包,数据包的大小是变长的。PC接收并对丢包数进行统计的结果如表1所列。实验表明,在用网线直连的各种测试速率情况下都没有出错,而当接入局域网后,在发送速率为4.5Mbps时有突发的少量错误。由于UDP是不可靠的传输方式,所以这种错误是正常的。测试中,UDP发送的最高速率可以达到5Mbps左右,它与硬件的最高速率(10Mbps)相比还有一定差距,主要原因是数据从系统主内存到Realtek8029片上RAM的拷贝过程目前尚未采用DMA方式,这是需要改进的地方。

表1丢包数统计表(单位:丢包个数/分钟)

连接方式发送速率

800kbps1.8Mbps4.5Mbps

网络直连000

接入局域网002.5

接下来笔者进行了编码和传送的联合测试。编码任务执行H.263数据压缩后,把码流从以太网接口发出,然后在网络上的另一台PC上接收这个码流,并进行解码播放。通过调整编码器的量化步长可以控制编码的输出码率。在实验环境下发现在量化步长大于等于5、码率在700kbps以下时,基本没有丢包现象,解码得到的图像比较稳定,而当量化步长进一步减小,码率接近1Mbps时,就会出现丢包现象,解码的图像会出现彩色方块。出现这种现象是因为H.263编码器对CPU资源的消耗很大,而且数据在主内存和Realtek8029片上RAM之间的复制采用I/O读写方式也需要一定的CPU资源。这样,当量化步长小于5时,处理的复杂度超过了CPU的能力从而产生了一定的误码。解决的途径一方面是改进数据的传送方式(采用DMA),另一方面是需要对编码任务进行优化。

第13篇

Ⅰ、毕业设计(论文)题目

《TD-SCDMA物理层帧结构分析与测试》

Ⅱ、毕业设计(论文)选题意义及要求

《TD-SCDMA物理层帧结构分析与测试》课题背景是学院为3G网络课程开发了一套软件,由于3G网络课程理论性很强,不容易理解,通过该软件帮助学习者较快熟悉TD-SCDMA系统物理层处理过程。

Ⅲ、毕业设计(论文)工作内容和进度安排

首先搜集《TD-SCDMA物理层帧结构分析与测试》课题相关知识,在教师的帮助下,学习理解3G技术的基础知识;其次学习TD-SCDMA系统仿真软件的使用方法;最后在TD-SCDMA系统仿真软件平台下深入理解和分析TD-SCDMA系统物理层处理过程。

(1)2016-11-21至2016-11-28

搜集3G技术相关资料;了解自己的毕业设计任务,填写毕业设计论文手册相关内容。

(2)2016-11-28至2016-12-5

编写毕业论文开题报告,经过指导教师辅导,修改后,填入毕业设计手册。

(3)2016-12-5至2016-12-12

学习3G技术有关理论,了解3G技术发展情况,熟悉3G系统的网络结构。

(4)

2016-12-12至2016-12-19

学习3G技术有关理论,熟悉3G系统的网络结构,熟悉UTRAN结构和其接口。

(5)2016-12-19至2016-12-26

学习3G技术有关理论,熟悉UTRAN结构和其接口,掌握TD-SCDMA系统物理层。

(6)2017-2-20至2017-2-27

学习3G技术有关理论,学习TD-SCDMA系统仿真软件的使用方法。编写中期进度报告。

(7)2017-2-27至2017-3-6

学习3G技术有关理论,学习TD-SCDMA系统仿真软件的使用方法,能用软件针对自己的内容进行仿真。中期进度报告填入手册。

(8)2017-3-6至2016-3-13

学习3G技术有关理论,学习TD-SCDMA系统仿真软件的使用方法,能用软件针对自己的内容进行仿真。

(9)2017-3-13至2017-3-20

学习3G技术有关理论,学习TD-SCDMA系统仿真软件的使用方法,分析、测试研究TD-SCDMA系统物理层。撰写论文初稿。

(10)2017-3-20至2017-3-27

学习3G技术有关理论,学习TD-SCDMA系统仿真软件的使用方法,分析、测试研究TD-SCDMA系统物理层。撰写论文初稿。

(11)2017-3-27至2017-4-3

交论文初稿,经过老师指导,修改论文。准备答辩

(12)2017-4-3至2017-4-10

论文答辩。

Ⅳ、主要参考资料

《TD-SCDMA基站运行与维护

黄一平主编

科学出版社

《TD-SCDMA无线网络技术》

李立华等

人民邮电出版社

教学系:

学生姓名

毕业设计(论文)时间:自2016年11月21日至2017年4月10日

答辩时间:2017

4

22

第14篇

    USB2.0(通用串行总线)已经成为PC外设接口标准。但USB2.0接口芯片技术只被Intel,Philips等少数国外大型半导体厂商占有,在国内还是空白。无论从市场需求,还是从促进我国芯片设计能力来说,开发具有我国完全自主知识产权的USB2.0接口芯片都是非常迫切的一个问题。

    接口芯片中高速(480Mbps)及模拟电路部分是设计的难点所在,本论文首次引入基于数字的模拟化设计技术(DBA),并成功应用到发送器电路、数据恢复电路、时钟发生电路(DLL)等关键模块的设计之中。 DBA技术的核心在于:将数字电路设计的思想渗透到模拟、混合信号电路设计中,使用数字算法将尽可能多的电路设计放在数字一边。由于采用了数字技术来实现模拟电路部分的功能,因此这种全新的设计方法可以避免模拟、混合信号电路中参数调整和工艺控制的难点,提高电路设计精度和稳定性,并降低噪音影响,是一个好的解决方案。

    在发送器电路的设计中,论文在同一结构电路中兼容高速和全速两种模式,不仅降低了芯片设计复杂度,而且减少了芯片引脚处的额外电容及芯片面积;在接收器电路的设计中,论文采用了经优化的新型拓扑结构,提高了数据采样和接收精度;在数据恢复电路中,论文提出了新颖的基于5-倍DLL-过采样的数字算法和查找表技术,可省去繁杂的时钟恢复过程,同时提高了高速数据信号对相位偏移(skew)和抖动(jitter)的容忍度。

    基于TSMC0.25um CMOS混合信号工艺,用于功能外设的USB2.0接口芯片采用自顶向下的设计方法。芯片的核心组成部分,即发送器、接收器电路以及能隙基准电压源已经在上海集成电路产业化基地参加MPW流片,测试结果表明:在正确的基准电压偏置下,芯片发送、接收功能参数指标符合USB2.0协议要求。 另外,Link层中新型数据处理电路、“PLL+DLL”结构的五相高精度等间距时钟产生电路也在相应的后仿真结果中得到成功验证

第15篇

关键词:人体参数,无线监测GSM网络

 

1概述人口老龄化已成为世界范围内的社会问题,是社会发展的必然阶段。老人护理消耗大量的人力、物力,同时家属等护理人员对表征老人健康的一些生理参数如血压、脉搏、体温等专业知识知晓率低,不利于健康状况异常的及时发现和处理,容易引起意外事故的发生或病情的恶化。传统的监护仪器体积通常比较大,而且价格昂贵,主要应用于医院等专业场所,大部分没有无线传输功能,不能在医院以外的地方,如家庭、野外等环境下使用。本文设计了一种基于GSM网络(移动电话网络)的人体健康状况无线实时监测仪器,类似随身听,实现对表征人体健康状况的生理参数(体温、血压等)的实时检测,当出现异常情况时进行现场报警,并以短信的形式将异常信息发送护理人员及家属,甚至可以发送给医生或医院等医疗机构,对老人异常状况及时做出处理。

2硬件电路设计2.1系统组成结构

本设计结构框图见图1所示。主要由单片机、语音电路、LCD显示电路、键盘、血压检测、脉搏检测、体温检测、GSM通信模块组成。图1 系统结构框图

2.2无线网络

GSM通信模块选用德国西门子公司的TC35i,具体结构框图如图2所示。TC35i模块采用40引脚的ZIF连接形式和应用处理器连接。通过ZIF 连接器提供了应用所需的数据、语音信号和电源线。共有40个管脚,通过一个ZIF(Zero Insertion Force)连接器引出。

图2:TC35i模块结构示意图

TC35i 模块通过ZIF 连接器提供给用户4 个应用接口:电源接口(1-10)、串行接口(18、19)、两路音频传输接口、SIM卡接口(24-29)。而在数据传输系统中通常用到其中的3个接口, 即: 电源接口、串行接口、SIM卡接口。免费论文参考网。模块与单片机的接口电路如图3所示。

图3TC35i模块与单片机的连接电路

2.3 体温检测

体温检测选择Dallas 半导体公司的数字化温度传感器DS18B20, 它是世界上第一片支持“一线总线”接口的温度传感器, 3引脚封装, 可以大大节省系统资源。免费论文参考网。DS18B20与单片机的硬件连接如图4所示。

图4 DS18B20引脚图图5 :血压及脉搏检测示意图

2.4 血压及脉搏检测

血压、脉搏的电子检测技术已经比较成熟,本设计直接从电子式血压计取测量结果,检测方案见图5,由送显示的数据引出发送到MCU。该方案测量的数据准确、专业,减少由于测量方法等原因造成的误差,提高系统可靠性,同时又能够节省开发周期。

3软件设计3.1 系统整体软件设计

系统整体软件流程图如图6所示。其中测量部分由无线收发子程序、温度检测子程序、血压脉搏数据处理子程序等组成。

图6 系统软件流程图

3.2 通信软件设计

(1)AT指令简介

AT即Attention,AT指令集是从终端设备或数据终端向终端适配器或数据电路终端设备发送的。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。控制器通过AT 指令控制TC35i模块, 本设计的短消息格式就是这种格式。

(2)基于单片机的短消息发送程序设计

指令内容均为ASCII码,短消息的中文编码方式为UNICODE码。所以单片机通过AT指令控制TC35i模块时,发送的数据必须经过代码转换。由于汉字数量众多,单片机资源有限,所以必须把短信内容中涉及到的汉字的UNICODE码放入单片机存储器内部。免费论文参考网。短信发送子程序的流程图见图7所示。

图7 TC35i数据发送流程图

4 结束语本系统是为全国大学生“挑战杯”竞赛参赛作品,样机已研制成功,运行稳定可靠,获得了河南省三等奖的好成绩。

参考文献:

【1】 昭彰奎,GSM 数字移动通信应用系统,北京: 国防工业出版社, 20011

【2】 朱步楼,人口老龄化问题及其对策研究[ J] .人口与计划生育, 2005, (7)

【3】SIEMENS,AT Commands for GPRS,[ Z]120001

【4】SIEMENS,TC35 / TC37 Hardware Interface Description ,Version: 04.00

【5】周嵘,家庭GSM短消息遥控监测装ZP,中国专利,ZL02217548.2,2002.05.17