欢迎来到速发表网!

关于我们 登录/注册 购物车(0)

期刊 科普 SCI期刊 投稿技巧 学术 出书

首页 > 优秀范文 > 接口设计论文

接口设计论文样例十一篇

时间:2023-04-01 10:31:05

序论:速发表网结合其深厚的文秘经验,特别为您筛选了11篇接口设计论文范文。如果您需要更多原创资料,欢迎随时与我们的客服老师联系,希望您能从中汲取灵感和知识!

接口设计论文

篇1

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通过句柄关闭设备,设备请求完成后通过此函数关闭。

篇2

1.1DAC与滤波放大单元DAC与滤波放大单元用于将数字信号转换为模拟信号,并完成对信号的调理、幅度调节与功率放大功能。其硬件电路如图2所示。该单元由3部分电路组成,分别是DAC芯片电路、无源滤波电路和差分放大电路。DAC芯片为ADI公司生产的高性能、低功耗CMOS数模转换芯片AD9762,AD9762为12位分辨率,支持最高125MS/s的更新速率。该芯片使用5V、3.3V可选单电源供电,最高功耗175mW,2mA~20mA差分电流输出,负载RLOAD为100Ω时输出电压范围为0.2V~2V[2]。FSADJ引脚连接外接电阻RSET,用于满量程电流输出调节。REFIO引脚用于基准电压VRFE输入/输出,选择内部1.2V基准电源时通过一个0.1μF电容与模拟地连接。其差分输出电压VDOUT与输入的12位数字代码(DCODE)的关系式为。无源滤波电路由电感与电容组成截止频率为20MHz的7阶巴特沃斯低通滤波器,用于信号整形和消除毛刺干扰。差分放大电路以全差分放大器AD8476为核心组成,用于将通过无源滤波电路的模拟差分信号进行增益调节和功率放大。AD8476是一款功耗极低的全差分精密放大器,其带宽为6MHz,使用±5V电源供电时的输出电压范围为-4.845V~4.82V[3]。检测激励信号的峰峰值为4.3V和6.2V,而DAC的输出峰峰值电压为2V,因而差分放大电路的增益应当大于3.1,这样才能使得激励生成通道的输出信号幅值符合检测需求。考虑到DAC的转换效率和可能存在的误差,可设计差分放大电路具有两个略大于满幅度输出的增益值。图2中使用外部扩展电阻R1~R6组成反馈电阻网络,其中R1=R2=10kΩ为输入电阻,R3=R6=24kΩ、R4=R5=33kΩ为两组反馈电阻。该电路的增益值分别为A1=R3/R1=2.4,A2=R4/R1=3.3。为了提高检测接口的自动化程度,使用1个2路2:1电子开关ADG736用于两组反馈电阻的切换,通过改变其控制端IN1和IN2的电平逻辑,完成开关动作。ADG736使用5V供电时,导通电阻RON为2.5Ω,带宽大于200MHz,通过峰值电压为5V。

1.2二线接口与混合电路单元二线接口与混合电路单元用于为信号激励与数据采集提供对外二线接口和实现收发信号的双工传输。其硬件电路如图3所示。二线接口电路由电压比为1的变压器以及电阻RS1、RS2和电容C9、C10组成,用于提供检测电路对外的二线接口,实现接收与发送信号的传输,同时可以隔离外部直流信号。RS1、RS2用于与线路负载阻抗匹配并隔离远端反射和提供线路的能量交换,电容C9、C10用于配合组成激励发送端扩展滤波电路。混合单元的功能是一阶模拟回波抵消,用于抵消本地发送信号。图2中R7~R10为输入电阻,同时与C3~C8组成一阶低通滤波器。两个仪表放大器AD8429用于将二线平衡信号转换为单端信号。AD8429为低噪声、高精度仪表放大器,其增益为1时增益精度为0.02%、CMRR为80dB、带宽为15MHz,使用±12V电源供电时其输出电压范围为-10.1V~10.7V,使用单个增益控制电阻RG能够控制其增益范围为1~1000,其增益控制关系为G=1+6kΩ/RG[4]。LT6600-10将一个全差分放大器与一个近似切比雪夫(Chebyshev)频率响应的四阶10MHz低通滤波器集成在一起。芯片为低噪声全差分输入/输出放大器,内部集成两个运算放大器、电阻电容网络,组成1倍增益放大电路和一个10MHz低通滤波器,使用±5V电源供电时其输出电压范围可达到±5V。若线路电阻RS与负载电阻RL完全匹配,则第二个AD8429的增益值为2时,混合电路的输出U′3=U3。考虑到阻抗失配现象的普遍存在,因此选择电位器作为第二个AD8429的增益控制电阻,在线路阻抗失配的条件下,通过调节增益控制电阻来实现混合单元消除近端信号的目的。根据前文所述,可以得到混合电路输出信号U′3与二线输入信号U3比值跟增益控制电阻RG之间的关系。因此只要知道RG的值,就能够通过式(5)准确地对通过混合单元造成的输入信号幅值的线性误差进行修正。为了提高检测接口的自动化程度和实现对RG值的实时感知,选择数字电位计AD5272作为第二个AD8429的增益控制电阻。AD5272为1024位分辨率、1%电阻容差误差、I2C接口和50-TP存储器数字变阻器,最大阻值为20kΩ,可使用5V电源供电[6],其阻值调节步长为1.95Ω。

1.3信号调理与ADC单元信号调理与ADC单元用于将混合电路输出的模拟差分信号转换为输入信号并输入到FPGA,该部分为数据采集的核心单元,其硬件电路如图4所示。由于被测信号的最高频率不超过2.048MHz,根据奈奎斯特采样定理,使用4.096MHz采样速率进行采样就能得到信号完整的信息,但是在工程中,通常使用5~10倍速率进行采样。因此ADC选择12位、10MS/s采样速率模/数转换器AD9220,其为+5V单电源供电,70dB信噪比,86dB无杂散动态范围,内置片内高性能、低噪声采样保持放大器和可编程基准电压源,并具有满量程输出指示功能[7]。使用1V基准电压时其输入范围为2V(峰-峰值)。信号调理电路应当具有抗混叠滤波和信号幅度调节的功能。该电路选择全差分放大器AD8476组成,考虑到检测时输入信号的幅值大于ADC的输入范围,因而选择其输入电阻为10kΩ,选择数字电位器AD5272为反馈电阻RF,则其增益值G4=RF/10kΩ,电路的增益值为0.0002~2可调。放大器输出经过2个100Ω电阻和2个电容组成的低通滤波器后送至ADC。同时,AD8476以ADC的基准电压VREF为共模参考电压。

1.4FPGA单元FPGA单元以Xilinx公司的FPGA芯片XC3S400为核心电路组成,其程序存储芯片为XCF02S,使用40MHz有源晶振,5V电源供电,使用稳压芯片提供电路所需的3.3V、2.5V和1.2V电源。USB接口作为微处理器常用的外部总线接口,目前已经得到了广泛的应用[8],因此考虑选用USB2.0接口作为FPGA与上位机之间的数据接口。同时采用JTAG接口用于FPGA和其配置芯片的程序烧写。关于FPGA电路的设计、开发技术已经较为成熟,本设计相比与其他通用FPGA电路的设计并无独特之处,因此不再对FPGA单元进行详细描述。

2FPGA程序设计

在检测接口电路的设计中,FPGA是检测接口电路的信息传输与控制单元的核心,其可编程配置能力和能够高速、并行处理数字信号的能力是检测接口的灵活性和升级性的关键。其内部程序使用Xilinx公司的FPGA开发环境ISE进行设计并完成烧写。程序设计使用模块化设计思想,其结构示意图如图5所示,可以分USB传输、管理控制、DAC传输、输出增益控制、混合单元控制、信号调理控制、ADC传输控制和增益补偿8个模块。下面就各个模块的功能分别进行介绍。(1)USB传输模块,用于通过FPGA单元上的USB接口电路实现FPGA芯片与上位机的信息传输,具有USB电路的配置功能,并实现标准USB信号封装、解封装功能,将接收到的上位机信号解封装为透明数据传送到管理控制模块和DAC传输模块,将管理控制模块、增益补偿模块输出信号封装为标准USB信号通过USB接口电路传输到上位机。(2)管理控制模块,是整个程序的主控单元。该模块用于接收USB传输模块输出的控制信号,对其余的通信模块进行控制,并输出检测电路的工作状态到USB传输模块,最终传输到上位机。同时用于控制其余模块的工作状态,接收混合单元控制模块、信号调理控制模块、ADC传输模块输出的反馈信息进行工作状判断,根据混合单元控制模块、信号调理控制模块反馈信息控制增益补偿模块的补偿量。(3)DAC传输模块,在管理控制模块的控制下工作,接收USB传输模块输出的激励信号,并将信号转换为DAC芯片的数据输入信号,同时为DAC芯片提供转换时钟。(4)输出增益控制模块,用于在管理控制模块输出的控制信号下工作,根据需求通过两路输出信号IN1和IN2分别控制差分放大电路的2个电子开关ADG736。(5)混合单元控制模块,用于在管理控制模块输出的控制信号下工作,根据需求通过输出I2C信号控制混合单元的数字电位计AD5272的阻值,完成信号混合功能,并将AD5272的阻值信息反馈给管理控制单元。(6)信号调理控制模块,用于在管理控制模块输出的控制信号下工作,根据需求通过输出2路I2C信号控制信号调理电路的2个数字电位计AD5272的阻值,完成信号调理功能,并将2个AD5272的阻值信息反馈给管理控制单元。(7)ADC传输模块,在管理控制模块的控制下工作,接收DAC芯片输出的采样数据,并将数据传输到增益补偿模块,同时为ADC芯片提供采样时钟。该模块同时接收ADC输出的满量程指示信号和数据输入指示信号,并传送给管理控制模块。(8)增益补偿模块,用于接收来自ADC传输模块的采样数据和管理控制模块输出的增益补偿信息,对ADC芯片采样获得的信号进行增益补偿,实现检测信号的完整性。

篇3

2软件设计

本接口设计选用开发环境MDK,在MDK环境下可以使用C/C++方便地开发Cortex-M3的应用程序.与其他开发程序相比,MDK具有入门容易、使用方便,并在调试程序、软件仿真方面也有很强大的功能.以太网收发数据程序流程如图3所示.主程序通过查询的方式发送数据,采取通过判断函数返回值方式是否接收到数据,若接收到数据,通过指针把数据包传递给上层的LwIP协议栈进行处理,完成数据包的收取.收发数据主程序主要包括系统及外设的初始化、以太网控制器的初始化、发送数据、接收数据和应用处理等部分.

2.1STM32库STM32库是由ST公司针对STM32提供的函数接口,即API(ApplicationProgramInterface),开发者可以调用这些库函数接口来配置STM32的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发速度快、易于阅读、维护成本低等优点.实际上,库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关配置,向上为用户提供平配置寄存器的接口[3].本设计采用最新的STM32的3.5版库文件,相对于以往版本的库文件兼容性更好.

2.2LwIP协议栈要实现TCP/IP协议栈,代码可以自行编写,但一般都会移植更加稳定优良的代码.LwIP是LightWeightInternetProtocol的缩写,是由瑞士计算机科学院AdamDunkels等开发的适用于嵌入式领域的轻量级TCP/IP协议栈,它可以移植到含有操作系统的平台中,也可以在无操作系统的平台下运行.由于其开源,占用的RAM和ROM比较少,支持较为完整的TCP/IP协议,且十分便于剪裁、调试,被广泛地应用于中、低端的32位操作平台[4].该协议栈提供了一组API函数应用程序调用,编程方便[5].LwIP通过pbuf建立了与底层硬件收发数据包的数据结构,可以实现数据的管理;netif结构体则保存了网卡地址、IP地址、网关等设置的这些信息.下面例举部分LwIP_Init()函数,其主要功能是初始化LwIP协议栈,主要是把ENC28J60与LwIP连接起来,包括IP,MAC地址,接口函数。

3仿真与应用

MDK仿真工具强大,本设计软件调试部分利用MDK软件针对STM32进行仿真,执行工程中的代码.仿真结果如下图4所示.构成网络应用的软件有不同的结构,有B/S结构(浏览器/服务器)和C/S(客户端/服务器).本网络接口设计中HTTP服务器其是基于B/S结构的,用户运行应用程序时通过访问Web调用服务器的应用程序,并通过浏览器把结果显示给用户.该以太网接口应用于校园能耗监控系统中,所以设计出一款可以远程控制LED灯亮灭的简单应用,其运行结果如图5所示.

篇4

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是客户端运行的效果截图。

篇5

2LVDS高速数据接口实现

2.1LVDS接口硬件电路设计由于趋肤效应和介质损耗,高速信号在传输过程中会衰减。因此,当传输距离较长时,往往要使用电缆驱动器和均衡器来保证高速数据传输的准确性。电缆驱动器将信号以最大功率耦合到电缆上[4],延长信号的传输距离,电缆均衡器可以对传输的信号进行高频补偿,以至达到标准逻辑电位。本设计中,LVDS串行器/解串器分别选用TI公司的SN65LV1203和SN65LV1224,信号驱动器/电缆均衡器分别选用NS公司的CLC001和CLC014。LVDS接口电路结构如图2所示,采编存储器的FPGA控制LVDS串行器将10bit并行数据转换成差分串行数据,再通过电缆驱动器将信号耦合到电缆上。地面测试台的电缆均衡器对接收到的信号进行高频补偿之后传送给解串器,解串器根据参考时钟将差分串行数据转换成10bit的并行数据,由FP-GA进行后续的处理。

2.2FPGA逻辑控制LVDS数据接收由于CPCI接口传输的时钟和LVDS数据接收电路的时钟不匹配,为了保证数据传输的可靠性,在编写VHDL语言程序时FPGA内部调用一个异步时钟控制的缓存FIFO[8]IP核来对接收到的LVDS高速数据进行缓存,如图2所示。上位机通过配置PCI9054的传输计数寄存器,将一次DMA传输的数据量设置为2kbyte。写FIFO的时钟为18.432MHz,读FIFO的时钟为36.864MHz,当FIFO内数据量达到2kbyte时,FPGA立即通知上位机启动一次DMA传输。经计算,从FIFO内读走2kbyte数据大约耗时54μs,在这个时间段内写入FIFO的数据量大约为1kbyte,所以,当DMA传输结束时,FIFO内数据不足2kbyte,上位机直到FIFO内数据量再次达到2kbyte时才会启动下一次的DMA传输。为了避免PCI9054不能立即执行DMA传输而导致FIFO数据溢出,FIFO容量要大于2kbyte。本设计中选择容量为4kbyte的FIFO,经验证,不会出现FIFO溢出现象。

3CPCI局部总线接口实现

实现CPCI接口协议一般有两种方法。其中一种方法为:利用FPGA实现接口逻辑。这种方法虽然可以充分利用FPGA的资源,减小成本,但PCI逻辑十分复杂,可靠性不能得到保证,且开发周期长。另外一种方法为:采用专用的PCI接口控制芯片。专用接口芯片功能强大,性能稳定,设计方便,很大程度上减少了设计者的工作量,缩短了开发周期。所以,本设计中选择使用PCI9054接口控制芯片与FPGA配合工作的方式来实现CPCI局部总线接口通信。

3.1EEPROM的配置在Windows环境下,为有效管理多块CPCI板卡资源,实现多卡协同工作。通过设置EEPROM配置选项中的ClassCode/REV值,解决使用同一驱动情况下,多块CPCI板卡识别问题。地面测试台含信源卡和接口卡两块CPCI功能板卡,图3为接口卡的EEPROM配置文件截图,各板卡需要设置不同的ClassCode/Rev(图中红色选框部分),上位机程序通过识别不同的ClassCode/Rev达到控制不同板卡的目的。ClassCode/Rev为一个32bit数据,规定高8bit作为不同板卡区分标志,低24bit保留。其中D31~D28功能标识,区分是否为信源卡、接口卡等功能卡。D27~D24数量标识,区分当前功能卡的数量,具体约束如下表1所示。

3.2CPCI局部总线实现方法

3.2.1PCI9054工作模式选择PCI9054总线控制芯片有3种工作模式,即M模式、C模式、J模式。其中,C模式最为简单,类似于单片机的工作方式,它的地址线和数据线分开使用,可以很方便地控制本地时序。所以本设计中PCI9054工作于C模式,由FPGA逻辑控制本地时序来完成CPCI局部总线与功能板卡之间的通信。

3.2.2CPCI总线访问本地总线PCI9054的访问方式选择DMA方式。PCI9054作为主控设备,通过内部的DMA控制器来实现局部总线上数据与CPCI总线上数据的传输。在DMA访问方式下,一个总线周期的时序如图4所示。当CPCI总线访问本地总线时,PCI9054内部的DMA控制器发出LHOLD信号来申请控制局部总线,当其收到响应信号LHOLDA后,才获得局部总线的控制权。当ADS#信号有效时,局部总线上的地址信号LA为有效地址;当BLAST#信号有效时,代表一次单周期访问开启;READY#为本地总线的状态反馈信号,只有当其有效时,表示本地总线已经准备好,才可以进行访问;当LW/R#为高时,代表单周期访问为写操作,当LW/R#为低时,代表单周期访问为读操作。在本设计中,FPGA通过识别地址信号LA来判断具体的操作类型。当上位机向接口卡下发控制命令时,为CPCI总线到本地总线的数据传输,具体的工作流程为:当上位机下发命令时,启动一次单周期写访问,同时下发特定的写地址LA1,FPGA反馈READY#信号,并判断到LW/R#信号为高,即得知上位机要下发数据,便从该特定地址LA1将命令代码读出,进行解码之后将命令下发给采编存储器。当接口卡向上位机传输LVDS高速数据时,为本地总线到CPCI总线的数据传输,具体的工作流程为:当图1中所示的LVDS数据缓存FIFO内数据量达到2kbyte,启动一次DMA传输,即一次DMA传输将2kbyte的数据上传给上位机进行实时显示与处理。上位机通过下发特定地址信号LA2来向FPGA查询FIFO内数据量是否达到2kbyte,一旦其得到缓存FIFO内数据量满足要求的信息,立即启动一次单周期读访问,并向FPGA下发数据传输地址LA3,FPGA反馈READY#信号,并判断到LW/R#信号为低,便将LVDS数据通过地址LA3上传给上位机。

4设计验证

将信源卡和接口卡分别插到背板上的2号和3号物理槽中,1号物理槽为系统槽,打开计算机系统,安装驱动之后,两块功能板卡均能够被识别。分别对两块板卡进行操作,均能实现各自的功能且互不影响,说明EEPROM的配置正确可行。以接口卡为例,用Chipscope来监测CPCI总线对本地进行读、写操作的实际过程,图5和图6分别为单周期读访问时序截图和单周期写访问截图。如图5所示,当FIFO内数据量达到2kbyte时,信号f_fifo_hf变高,此时启动一次单周期读访问,LW/R#为低,通过地址0008h将数据87h上传给上位机。实际时序与第3节介绍的本地总线向CPCI总线传输数据的理论时序一致,对接收到的数据文件进行分析,数据结构完整,数据包计数连续,没有丢数现象,验证了本设计中本地总线向CPCI总线传输数据的正确性。如图6所示,上位机向FPGA下发控制信号,此时启动一次单周期写访问,LW/R#为高,FPGA通过地址0004h获得命令代码67h。实际通信时序与第3节介绍的CPCI总线向本地总线传输数据的理论时序一致,且命令下发正确,验证了本设计中CPCI总线向本地总线传输数据的正确性。

篇6

带有I2C总线接口的器件可以十分方便地将一个或多个单片机及器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。

如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用DSP芯片。但大多数的尚未提供I2C总线接口,本文将介绍一种基于CPLD的已实现的高速DSP的I2C总线接口方案。

图1I2C总线接口电路结构

1I2C通信协议

I2C总线是一种用于IC器件之间的二线制总线。它通过SDA(串行数据线)及SCL(串行同步时钟线)两根线在连到总线上的器件之间传送信息,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的扩展与控制。I2C总线接口电路结构如图1所示,I2C总线时序图如图2所示。

I2C总线根据器件的功能通过软件程序使其可工作于发送(主)或接收(从)方式。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路的,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。

在数据传送过程中,必须确认数据传送的开始和结束信号(也称启动和停止信号)。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平则定义为“开始”信号;当SCL为高电平时,SDA由低电平跳变为高电平则定义为“结束”信号。开始和结束信号都由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲状态。

在I2C总线开始信号后,依次送出器件地址和数据,I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。

2设计方案

本文以DSP芯片ADSP21992与时钟芯片PCF8583的控制接口为例,说明基于CPLD的I2C总线接口设计方案。

ADSP21992是2003年最新推出的160MIPS、带CAN通信接口的适合于高精度工业控制和信号处理的高性能DSP芯片。它带有48K片内RAM、SPORT通信接口、SPI通信接口、8通道14位A/D转换器以及PWM等。

PCF8583是一款带有256字节静态CMOSRAM的时钟/日历芯片。地址和数据严格按照双向双线制I2C总线协议传输。内置地址寄存器在每次读/写后自动递增。

2.1系统结构设计

系统的基本功能是通过CPLD的I2C总线接口完成ADSP21992(主控芯片)与PCF8583的数据交换。系统框图如图3所示。

系统主要由两个部分组成:一是DSP与CPLD的接口;另一是I2C核。为了能在DSP指定的时刻读/写PCF8583的数据,使用DSP的读写信号、同步时钟和最高位地址控制数据的传输。最高位地址作为控制信号是因为DSP的I/O口比较少,必须优先供应给其它外设,因此用它来产生DSP提供给I2C核的片选信号。而DSP的地址总线位数较多,最高位一般使用不到,这样正好可以充分利用资源。

2.2I2C核

I2C核原理示意图如图4所示。

整个I2C核由控制模块和I/O模块构成。其中,控制模块包括控制信号发生部分和时钟开关,I/O模块包括数据缓存和同步时钟缓存。

当DSP的最高地址位出现一个有效信号时,便会使I2C核内的触发器产生一个全局使能信号EN?熏它将会启动时钟、计数器和其它控制信号,但数据不会出现交换。如果此时DSP的读/写同步产生,则会启动相应的读/写进程,进行数据传输。

I2C核的关键技术是:

①用计数器和全局使能信号EN配合触发进程。

由于I2C核的片选信号EN是由触发产生的,不能象电平信号一样由DSP的I/O控制,因此只能通过精确的计数器定时和读/写使能信号共同判别控制。

读/写使能信号WR_EN/RD_EN也象EN那样由触发产生,因此也要用同样的方法判别。

②同步时钟的产生。

从图2中可以看到,数据在同步时钟的高电平脉冲时必须保持稳定,如果此时发生变化将会被视为一个控制信号,而通信也会被中断。因此,同步时钟的高电平脉冲一定要在有效数据的中间出现。而所需的控制信号必须在同步时钟正脉冲的时候出现。

③对数据总线进行三态设置。

因为SDA和DSP_DATA都是双向数据线,在写SDA和DSP_DATA的进程中必须设置高阻态,否则会出现数据线状态“不确定”。

图5I2C核工作时序图

2.3DSP与CPLD的接口模块

根据DSP的时序,DSP与CPLD之间必须根据双方(ADSP21992和PCF8583)的时序制定一个握手协议。当读程序时,由于I2C总线协议只能支持最高400kbit/s的传输速率,而DSP的同步时钟可达几十兆赫。因此,DSP必须等到I2C核把PCF8583的数据读到CPLD后才能获得正确的数据(这里可以通过设立一个忙标志来实现)。而当写程序时,为了节约CPLD的资源(数据缓存特别占用资源),可以设置DSP定时输出数据给I2C核,让I2C核的一次只送一个数据。

2.4硬件设计

此I2C核可外挂多个带有I2C总线接口的芯片,可以通过发送不同的器件地址来选择。SDA和SCL线必须接上拉电阻。此外,同步时钟不能太高,否则会影响数据传输的稳定性。

2.5时序

(1)I2C核时序

以写为例,I2C核时序如图5所示。

(2)PCF8583时序

PCF8583的数据是8bit一个存储单元,共256个字节,所以只需要8位地址,而且器件本身有两种寻址方式:一种是从指定地址开始递增寻址,另一种是从首地址开始递增寻址。两种寻址方式的时序是不一样的,如图6所示。

图6PCF8583时序图

篇7

随着网络的发展,网络带这的增加,上网速度将越来越快。人们也不再仅限于上网,在追求上网的同时打网络电话,实现与网友的相互交流。目前人们很大程度上依赖于传统的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送忙音码,从而使主叫话机听到忙音;若主叫先挂机,则微处理器就进行相应的操作。

篇8

IC卡(IntegratedCircuitcard)即集成电路卡,是将一个集成电路芯片镶嵌于朔料基片中,封装成卡的形式,外形与常用的覆盖磁条的磁卡相似。IC卡芯片具有写入和存储数据的能力。IC卡存储器中的内容根据需要可以有条件地供外部读取,或供内部信息处理和判定。根据卡中所镶嵌的集成电路的不同,可以分成存储器卡、逻辑加密卡、CPU卡三类。其中CPU卡即为由中央处理器CPU、EEPROM、随机存储器RAM以及固化在只读存储器ROM中的片内操作系统COS(ChipOperationSystem)组成的IC卡。IC卡按与外界数据传送的形式来分,有接触式和非接触式两种。

图1T=0的CPU卡APDU指令实现流程

1CPUIC卡T=0的协议介绍

目前大多数CPUIC卡采用T=0模式。所谓T=0,即CPUIC卡与接口设备(即读写器)中数据传输方式为异步半双工字符传输模式。

从T=0协议的功能出发,该协议的实现可以分为物理层、数据链路层、终端传输层和应用层。其中物理层和数据链路层可以具体参看ISO7816标准。在T=0协议应用,终端传输层和应用层实际上是不易分割来说明的,下面简单说明。

终端传输层根据卡片返回的过程字符和状态字节执行相应的操作,使读写器对数据的处理过程明朗清晰。卡片返回的过程字节和状态字节跟应用层发送给卡的APDU(ApplicationProtocolDataUnit,应用协议数据单元)和VPP使用等有关。表1为VPP未用时的终端传输层中返回的过程字节。

表1

字节值结果

ACKINSVPP空闲,所有其余的数据字节相继续被传送

INS+''''FF''''VPP空闲,下一个数据字节随后被传送

SW1SW2VPP空闲,接口设备等待SW2字节

应用层即为由CLA、INS、P1、P2、P3作为命令头组成的命令消息体的APDU响应和应答处理层。其中CLA为指令类别,INS为指令码,P1、P2为参数,P3为根据APDU的不同格式为发送给卡的数据长度或期望响应的数据长度。APDU的几种情况如表2所列。

表2

命令头发送数据长度发送的数据期望应答的数据长度

通用APDUCLAINSP1PLCDataLE

情况一CLAINSP1P

情况二CLAINSP1PLE

情况三CLAINSP1PLCData

情况四CLAINSP1P2LCDataLE

CPU卡对接口设备(即读写器)的应答APDU情况如表3所列。

表3

体尾

数据DataSW1SW2

其中体中的数据字节数由命令APDU中的LE指出;SW1、SW2是必备的,可以指明命令APDU执行正确或执行出错的错误类型。

2基于T=0传输协议的CPUIC的APDU指令流程

根据目前CPU卡的常用T=0协议、自带编程升压电路的应用情况,以及本读写器接收IC卡数据报文直接发送PC机处理的特点,本读写器可行的APDU命令和响应的处理流程如图1所示。

3读写器的硬件组成

读写器的硬件部分主要由IC接口管理芯片TDA8007、MCUAT89C52、外部数据存储器W24257S、串口电平转换芯片MAX3226、安全IC卡座(即SAM卡座)、应用IC卡座、键盘口供电的串口通信线及其它相关元器件组成。

图2所示为通过PC机控制管理的外置于PC机的接触式CPUIC卡读写器。通过定制的数据线,该读写器的5V直流电源可直接由键盘口提供,同时数据线还负责PC机与读写器的串行数据交换。在大部分IC卡读写应用中,都涉及到IC卡的认证和数据读写的国解密问题,所以本读写器除了提供一个供用户使用的IC卡接口卡座外,还内置了一个SAM卡,即安全IC卡卡座,以方便安装SAM卡,保证应用IC卡读写时的数据安全,保护用户的利益。

硬件的其它组成部分,如处理器,目前采用Atmel的89C52。其4KB的Flash程序存储器可以满足读写器的程序空间需要。由于PC机与89C52、89C52与TDA8007的数据交换要求的暂存数据空间比较大,89C52提供的256字节不够,需外加一片数据存储器。本读写器中使用的是华邦的W24257S。其有32KB存储容量,IC接口部分的主要芯片为Philips的TDA8007。

4IC卡接口芯片应用

下面介绍一下TDA8007及其应用。TDA8007的原理结构如图3所示。

TDA8007芯片能够提供两个能同时满足ISO7816标准及EMV和GSM11-11标准的IC卡读写接口。在本读写器中,一个用于与应用IC通信,另一个用于与安全IC卡通信。与上文CPU卡的触点图相对应,CLKi、RSTi、VCCi、I/Oi、GNDCi、PRESi、C4i、C8i(其中i=1,2;C4i、C8i未用;PRESi可用于检测IC卡是否插入。具体应用可参看TDA8007的技术文档)都直接由TDA8007提供给IC卡接口相连,MCU只需通过其接口控制并行通信来管理TDA8007,便可实现对IC卡的上电、下电及读写数据处理。其中,微处理器既可以通过总线复用把TDA8007内部的所有寄存器作为外部存储器,用MOVX寻址,也可以通过非总线复用方式访问,此时TDA8007用AD0~AD3来区分内部各寄存器。另外,TDA8007的片选信号和外部中断信号线可以方便读写器处理多个IC卡头。TDA8007的特别硬件ESD处理、接口短路处理、电源出错处理等也给IC卡和IC卡读写器提供了比较高的安全保护;同时,TDA8007内部集成的电源管理功能允许TDA8007的供电范围可达2.7~6.0V,并且TDA8007通过电源管理可以给IC卡提供5.0V、3.0V及1.8V的电源,以适合不同工作电压的IC卡应用。

图3IC卡接口芯片TDA8007的原理框图

本读写器是通过总线复用对TDA8007的寄存器进行控制的。其中MCU的P1.5为TDA8007的片选,P0口为与之通信的8位数据线,TDA8007的各寄存器预先被宏定义的成微处理器的一个外部数据单元(下面电程序处的定义),从而方便MCU访问。下面结合TDA8007寄存器的定义和位分配,给出应用TDA8007接口芯片对IC卡进行上电激活和下电的程序。TDA8007的寄存器主要三类。第一类,通用寄存器:①卡槽选择CSR;②硬件状态HSR;③定时器TOR1、TOR2、TOR3。第二类,ISO7816串行处理寄存器:①串行状态USR;②混合状态MSR;③串行发送UTR;④串行接收URR;⑤队列控制FCR。第三类,卡专属寄存器:①可编程分频PDR;②保护时间GTR;③串行控制UCR1、UCR2;④时钟配置CCR;⑤上电控制PCR。注意:对于卡专属的寄存器,即卡接口1、卡接口2分别对应的寄存器,逻辑上具有相同的名及访问地址,因而,对不同的瞳操作,需要通过CSR选择对应的卡槽来切换卡专卡属寄存器的映射的物理空间。所以,接口设备每次从一个卡的上下电或读写转向另一卡,都需要访CSR设定对应的卡槽。对于每个寄存器的位定义不再多述,主动性者可参看TDA8007的技术文档。

5上下电过程及具体程序

图4为IC卡的上电时序图。要实现之,需对PCR进行写操作。其中START=PCR.0,RSTIN=PCR.2,VUP上升表示激活了TDA8007中的电压转换电路。当START置高时,只要能检测到选定卡槽中的IC卡存在,且没有TDA8007能检测到并在HSR中指示的硬件错误出现,则对应IC卡接口的VCC1或VCC2将能被提供响应的电平(5V、3V或1.8V)。随后对应卡的I/O数据线被置成高状态(Z状态),给IC卡提供设定的时钟信号,常用为3.5712MHz。大约在START置高108ETU后,RSTIN置高。因为RST为RSTIN的拷贝,则对应卡的RST被置高。然后,用TDA8007提供的定时器TOR3、TOR2设定对ATR(AnswerToRequest)即复位应答首字节的最大等待时间120ETU(ElementTimeUnit),TOC设定定时器工作方式,便开始等待ATR首字节到来后做相应处理。至此,IC卡上电激活工作完成,随后可以根据ATR字节的要求的工作方式对IC卡进行相应的读写处理。具体见上电程序。

图4TDA8007产生满足ISO7816标准诉IC卡上电激活时序

TDA8007寄存器访问的预定义

#include<absacc.h>

#defineXXXXBYTE[0x8000]//XXX表示CSR等各寄存器上电程序如下:

P1.5=0;//片选TDA8007

CSR&=0xf8;

CSR|=ncard;//选择卡,ncard=1,2

CSR&=0xf7;

CSR|=0xf7;

CSR|=0x08;//复位UART的寄存器

UCR2&=0xf7;//异步模式,SAN=0

CCR&=0xdf;//时钟停止于低电平

UCR2|=0x60;//关闭附加中断及收发中断

GTR=0xff;//保持时间12ETU

If(v==1)//v为函数变量

PCR|=0x08;//1.8V卡用

elseif(v==3)

PCR|=0x02;//3V卡用

Else

PCR&=0xfd;//5V卡用

UCR2&=0xfc;//CKU=PSC=0,--31

FCR=0x00;//1奇偶校验1FIFO

PDR=0x0c;//Divider=12

CCR=0x00;//不分频

PCR&=0xfb;//RSTIN=0

UCR2|=0x04;//不自动转换

UCR1=0x01;//正向约定

UCR1&=0xf7;//接收模式

flag3=0;//复位定时标志

flagatr=0;//接收ATR首字节定时标志

PCR|=0x01;//激活

TOR2=0x6c;

TOR3=0x00;

TOC=0x61;//RST拉高前等待108ETU

while(flag3==0);//定时时间到,在中断中设置flag3=1

TOC=0x00;//关闭定时器

PCR|=0x04;//给复位拉高

TOR2=0x78;

TOR3=0x00;

TOC=0x61;//RST拉高前等待

flagatr=1;

ATR();//复位应答处理函数

图5为IC卡的下电时序图。相对于上电时序,下电过程对时间的要求不是很严格,只要设计者控制TDA8007按照一定的顺序置低START、RSTIN和停止CLK即可,然后TDA8007会自动逐步释放RST、I/O、Vcc及VUP。具体处理见下电程序。

下电程序:

P15=0;

PCR&=0xfe;//START=0;下电

PCR&=0xfb;//卡的复位脚保持0

CCR&=0xdf;//停止时钟于低

CCR|=0x10;//停止时钟

P15=1;

6使用TDA8007应当注意的问题

TDA8007对于Vcc、RST出错,芯片过热(如图IC卡为电源短路卡或金属片),或IC卡插入拔出时都会产生中断输出。每次中断处理结束,应注意把HSR中的值读入一个临时地址,以便清楚HSR中的标志。

每次发送数据到IC前,即接收IC卡的最后一个数据之前,应设置寄存器UCR1中的LCT位,以便接收完IC卡的数据后,自动切换成发送状态。

对TDA8007部分布线时应注意,时钟信号线与其它线的隔离:最好被地线包围。

对于电路板上TDA8007部分的电容应尽量靠近TDA8007,其中电容Cap、Cbp、Cup尤其如此,并最好不要在这些电容连向TDA8007引脚过程中使用过孔;同时,Cap、Cup、Cbp电容的ESR要尽量小。

对TDA8007处理的两个IC卡座中的任何一个执行上电、下电、读写卡操作之前,必须执行选择卡座的操作函数,以便选中具体的IC卡进行处理。

篇9

存储器是容量数据处理电路的重要组成部分。随着数据处理技术的进一步发展,对于存储器的容量和性能提出了越来越高的要求。同步动态随机存储器SDRAM(SynchronousDynamicRandomAccessMemory)因其容量大、读写速度快、支持突发式读写及相对低廉的价格而得到了广泛的应用。SDRAM的控制比较复杂,其接口电路设计是关键。

本文首先介绍SDRAM的主要控制信号和基本命令;然后介绍接口电路对SDRAM的主要操作路径及操作过程,应用于解复用的SDRAM接口电路的设计方法;最后给出了实现结果。

1SDRAM的主要控制信号和基本命令

SDRAM的主要控制信号为:

·CS:片选使能信号,低电平有效;

·RAS:行地址选通信号,低电平有效;

·CAS:列地址选通信号,低电平有效;

·WE:写使能信号,低电平有效。

SDRAM的基本命令及主要控制信号见表1。

表1SDRAM基本操作及控制信号

命令名称CSRASCASWE

命令禁止(NOP:Commandinhibit)HXXX

空操作(NOP:Nooperation)LHHH

激活操作(ACT:Selectbankandactiverow)LLHH

读操作(READ:Selectbankandcolumn,andstartREADburst)LHLH

写操作(WRITE:Selectbankandcolumn,andstartWRITEburst)LHLL

突发操作停止(BTR:Burstterminate)LHHL

预充电(PRE:Deactiverowinbankorbanks)LLHL

自动刷新或自我刷新(REF:Autorefreshorselfrefresh)LLLH

配置模式寄存器(LMR:Loadmoderegister)LLLL

所有的操作控制信号、输入输出数据都与外部时钟同步。

2接口电路对SDRAM的主要操作路径及操作过程

一个完备的SDRAM接口很复杂。由于本文的SDRAM接口应用于解复用,处理的事件相对来说比较简单,因而可以简化设计而不影响性能。接口电路SDRAM的主要操作可以分为:初始化操作、读操作、写操作、自动刷新操作。

(1)初始化操作

SDRAM上电一段时间后,经过初始化操作才可以进入正常工作过程。初始化主要完成预充电、自动刷新模式寄存器的配置。操作过程如图1所示。

(2)读写操作

读写操作主要完成与SDRAM的数据交换。读操作过程如图2所示,写操作过程如图3所示。

(3)刷新操作

动态存储器(DynamicRAM)都存在刷新问题。这里主要采用自动刷新方式,每隔一段时间向SDRAM发一条刷新命令。刷新过程如图4所示。

3接口电路的设计

(1)解复用电路

本解复用电路主要完成将1路高速数据流解复用为4路数据流,其结构框图如图5所示。1路数据流进入解复用器后,经过SDRAM缓冲,解复用为4路数据流。

由于要解复用为4路数据流,为了充分利用时隙,满足高速的要求,采用4个bank的SDRAM,各路数据缓冲对应不同的bank。为简化设计,数据流1的缓冲区定为bank0,数据流2的缓冲区定为bank1,数据流3的缓冲区定为bank2数据流4的缓冲区定为bank3。对于每路数据实际上是以高速率集中写入,然后以低速率均匀读出。

由于进行的是解复用,因此写入的数据只有1路,但是有可能4路数据同时都要读出。所以对于4路数据流,其读写地址和读写使能信号是分开的。

(2)SDRAM接口电路的时序控制

高速数据流的速率为3M字节/秒,采用的系统时钟为20倍的字节时钟。送入SDRAM的时钟为60MHz系统时钟。在一个字节时钟内对SDRAM的操作最多有5次(1次读,4次写),而且为了满足刷新的要求,每个字节时钟进行一次刷新操作。根据SDRAM的时序要求,这样的操作是难以实现的。因而要通过多bank操作,尽量做到时分复用来实现。图6给出了在一个字节时钟周期的内数据流1进行读写操作,其它3路数据进行读操作的命令排序时序图。可以看出通过多bank操作,时分复用,在20个系统时钟节拍内所需的读写操作命令刚好很紧凑地排开。

一个字节时钟内对SDRAM读写操作是随机的,这与数据流的复用比例有在。为了满足时序,根据上面的说明,需要把一个字节时钟周期内对SDRAM的命令合理排序,然后按照排好的顺序执行命令。这样就需要把一个字节时钟周期内对SDRAM的操作进行缓存,然后在下一个字节时钟周期内进行排序、与SDRAM命令相对应、将命令译码产生相应的控制信号线,完成操作。缓存排序过程如图7所示。

(3)SDRAM接口电路

SDRAM接口电路中需要专门操作缓冲区存储一个字节时钟周期内的操作,以备下一字节时钟的排序。为了方便处理,对每路数据的缓冲操作内容(或读或写)放在一个缓冲区。由于数据流的连续性,排序的同时仍然会有操作要求,因此每路的操作内容缓冲区分为两块。对一块缓冲区写入时,读出另一块缓冲区中的操作内容,进行排序、译码、执行。根据字节时钟切换对缓冲区的读写,从而避免冲突。对于从SDRAM读出的数据,每路数据写入相应的读出数据缓冲区。同样每路的读出数据缓冲区也分为两块,根据字节时钟切换读写。

由于一个字节时钟周期内,每路所需的操作最多有2次,每路的操作内容缓冲区只需两个单元(每个单元存储了此次的读写使能信号、写入数据、地址)即可。对于读出数据缓冲区,由于一个字节时钟每路数据最多执行一次读操作,所以读出数据缓冲区只需要一个字节。这两类缓冲区容量都小,因此人部用寄存器来实现,控制简单。

篇10

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

篇11

引言

随着微电子和无线通信技术的发展,非接触式IC卡技术也得到蓬勃发展,但国内设计非接触IC卡的技术不够成熟。高频接口电路设计是非接触式IC卡设计的关键技术之一,文中将介绍一种高频接口电路的设计。

1IC卡的基本结构

图1是一个具有逻辑加密功能的非接触式IC卡的结构方块图。对于具有逻辑加密功能的非接触式IC卡,一般包括IC芯片和天线线圈(耦合线圈)。IC芯片又包括高频接口电路、逻辑控制电路、存储器等部分。

2高频接口模块设计

IC芯片内的高频接口电路是非接触式IC卡的模拟、高频传输通路和芯片内的数字电路之间的一个接口。它从芯片外的耦合线圈上得到感应电流,整流稳压后给芯片提供电源。从阅读器发射出来的调制高频信号,在高频界面经解调后重新构建一产生在逻辑控制电路中进一步加工的数字式串行数据流(数据输入)。时钟脉冲产生电路从高频场的载波频率中产生出用于数据载体的系统时钟。图2为具有负载调制器的高频界面方框图。

为了将芯片内处理后的数据传回到阅读器,高频界面也包括有负载波调制器或反向散射调制器。它们由传送的数字化数据控制。

图3为卡的模块结构框图。整流稳压模块主要是接收阅读器发来的载波,将载波信号转变成直流信号,以作为非接触IC卡内部芯片的电源使用;同时不能因为阅读器发来的不间断载波而使芯片内部电源电压无限增大。调制解调模块主要是将阅读器发来的信号从载波信号中取下来;在IC卡发送信号时将内部的数字信号转换成模拟信号,并上载到载波信号中以传输给阅读器。

(1)整流稳压模块的设计

该模块主要包括基准源电路、电压调节电路和电源开关电路。基准源电路由二级CMOS差分放大电路和晶体管电路构成的能隙基准源组成。其结构如图4。

有源电阻P0和多晶电阻R7组成偏置电路,为电路提供偏置电流。二级差分放大器的两个输入连接在Q1端和Q2端。由基准源原理可知,只有放大电路的输入失调电压很小,并且不受温度的影响时,基准源的输出才可以保持好的性能。根据放大器和能隙基准源原理可得:

I1R6=I2R4(1)

由(1)式可知,电路中放大器的输入失调电压几乎为零,故稳定后REF点的电压值为:

VREF=VQ1+VR6=VQ1+R6I1=VQ1+I2R4(2)

因PNP晶体管的基极和集电极相连,故VQ1值相当于晶体管中BE结二极管的正向压降VBE值,为0.6~0.8V。

晶体管中BE结温度系数为负,电阻温度系数为正,在(2)式中VQ1和VR6随温度的变化可以相互补偿,故该基准源的输出VREF对温度变化不敏感。电压调节电路是稳压电路中的核心部分,包括两个一级CMOS差分放大电路COMP和电压调节及反馈电路,如图5。

两个差分放大器的输入由分压电阻得到。比较放大后经反馈调节和限流保护电路得到MA1和MB1,以控制电源开关电路中开关管的开启和截止。

电源开关电路由储能电容,NMOS管构成的整流器及开关电路组成,如图6所示。P1、P2直接连到线圈L0的两端。通过电磁耦合在P1、P2上感应出交流电;经整流后,在储能电容C0端产生直流电压VDD。调压电容C5在N2管导通后构成放电回路,使P1、P2上的电流开始对C5充电而停止对C0充电,C0两端电压保持稳定,即为负载电路提供稳定的电源电压。