基于USB的加密卡的设计与实现.doc_第1页
基于USB的加密卡的设计与实现.doc_第2页
基于USB的加密卡的设计与实现.doc_第3页
基于USB的加密卡的设计与实现.doc_第4页
基于USB的加密卡的设计与实现.doc_第5页
免费预览已结束,剩余51页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科毕业设计(论文)基于USB的加密卡的设计与实现2012年05月毕业设计说明书(论文)基于USB的加密卡的设计与实现摘要:随着科学技术的飞速发展,软件产品越来越面临着盗版行为的严重威胁。软件的加密保护,已成为软件开发商保护自己软件产品的必不可少的手段。加密卡在设计上综合了软件保护、加密狗、嵌入式系统等技术,有效地增加了解密难度,提高了通用性和保密性,受到了越来越多软件开发商的青睐。本设计以微处理器ATmega128为核心,以USB总线为接口界面。在硬件上,设计并实现了电源模块、上电复位模块、串口通信模块、USB通信模块以及外扩存储器模块;在软件上,实现了USB通信和数据传输,实现了加密卡与外围设备间的串行通信,实现了基于AES算法的加密、解密运算,并可以在卡上存放密钥、证书及其他重要的数据等。在设计中,采用层次化、结构化的设计方法,完成了底层平台的构建。这为加密卡后续应用程序的开发和软、硬件系统升级奠定了基础。关键词:软件加密,主机,USB总线,加密卡Design and Implementation of Encryption Card Based on USB Abstract:With the rapid development of science and technology, software products are threatened by the pirate behavior. Thus, software protection using the way of encryption has become indispensable for software developers to protect their software products.Added software protection, soft dog and imbedded system encryption and other technology, this encryption card effectively improves the difficulty of deciphering and enhances the generality and privacy, appealing to more and more popularity. The microprocessor ATmega128 is used as the core of the encryption card, and the USB was used as the bus interface in the design. in the side of hardware, it has the power supply module, the power-on reset module, the serial communication module, the USB communication module and external memory expansion module; Also in the side of software, it implements the function of USB communication and data transfer, the function of serial communication between the encryption card and peripherals, the computing of encryption and decryption based on the AES algorithm. And it can also store the key certificates and other important data on the card.In the design, the hierarchical and structured design method helps to complete the construction of the underlying platform which has laid the foundation for following encryption card application development and the system upgrades of software and hardware.Keywords: Software Encryption, Host, USB, Encryption CardII毕业设计说明书(论文)目 录前 言1第1章 概述21.1 加密卡的发展21.2 USB总线31.3 基于USB总线加密思路提出4第2章 需求分析及方案设计62.1 需求分析62.2 芯片选型72.3 总体方案设计8第3章 加密卡硬件电路的实现113.1 单片机基本工作模块设计113.1.1 电源模块设计113.1.2 上电复位电路模块设计123.1.3 LED测试电路模块设计143.2 接口模块设计143.2.1 USB通信接口模块设计143.2.2 RS232通信接口模块设计153.2.3 RS422、RS485通信接口模块设计163.2.4 ISP与JTAG仿真调试接口模块设计173.3 片选地址译码与外扩SRAM模块设计193.3.1 片选地址译码电路模块设计193.3.2 扩展存储器模块设计20第4章软件功能实现214.1 存储器的读写214.1.1 FLASH程序存储空间的读写214.1.2 内部SRAM和EEPROM的读写214.1.3 外扩SRAM的译码处理与读写234.2 RS232、RS485通信244.2.1 RS232通信244.2.2 RS485通信与Modbus协议264.3 USB通信294.3.1 USB数据包的定义304.3.2 USB接口模块的基本操作与设备初始化314.3.3 USB数据包的拆分与组装324.4 加密算法设计344.4.1 轮变换354.4.2 密钥扩展36第5章 软、硬件测试与分析395.1 硬件整体测试与分析395.2 各功能模块的测试与分析39参考文献46致谢48附录A 元器件清单49附录B USB加密卡设计原理图50附录C USB加密卡的印制电路板图51前 言计算机硬件技术的不断提高,有力地推进了计算机软件业的蓬勃发展。易复制性是计算机软件特点,复制软件与原版软件运行起来并无差别,软件盗版正是基于这一特点。在Internet日益发达的今天,软件传播轻而易举。可以想象,正版软件被盗版后,其版权所有者的经济利益将会蒙受重大损失,必将严重挫伤软件开发者的积极性。为此,软件开发商纷纷采取各种措施来保护自己的产品,对软件进行加密就是重要的手段之一。现代社会数据加密已经成为保护企业和个人数据资料的一种重要手段。采取新思想、新思路和新技术是从事加密领域研究的重要手段1。随着加密技术的快速发展和加、解密数据量的快速增大,加密卡逐渐发展并取代纯软件加密方式,成为加、解密业界的主流。由于加密卡属于外部设备,那么选取一个快速的主机-外设通信方式就成为一个重要的问题。而USB总线己然是计算机系统中应用最为广泛的总线标准,而且它的数据传输速率高,非常适合加密卡这种大数据量的高速传输的要求2。因此,开发USB加密卡就成为了高速加密卡的主流策略。本课题设计了一个基于USB总线的加密卡,实现了USB加密卡与主机之间高速、稳定的通信和数据传输,保证了加密卡的加、解密需的高效实现。 第1章 概述1.1 加密卡的发展 加密卡是硬件加密的最主要的方式之一。它将软件系统的一些重要参数和数据进行相应的处理后,再将处理好的数据返回给软件系统,使软件系统继续运行,从而实现了对软件系统的加密。随着计算机技术的不断发展,加密卡对软件系统数据的处理方式也在不断的更新。加密卡的发展历经了以下几个阶段:逻辑电路加密卡:逻辑电路加密卡采用了低功耗TTL、COMS等逻辑元件,在电路设计上也做了一些加密工作。软件与加密卡之间的数据通讯建立了一个保密协议,交互数据都是经过加密的,解密者很难分析出数据内容和规律。对于高级一点的逻辑电路加密卡,加入很强的“硬”特性。 存储器加密卡:存储器加密卡是由卡内部的EEPROM存储器加外围的读写操作电路所组成,开发商能够在存储器内部预先定制好自己的数据内容,根据这些数据实施加密过程。但解密者进一步分析一下数据规律就能够模拟了,这就是解密中常说的“端口”层的数据分析。 逻辑电路加存储器加密卡:第一代逻辑电路加密卡只有算法电路,不能定义产品和用户特征信息。第二代存储器卡虽然能够定义这些,但是在加密卡内起信号加密变换作用的器件,最多只简单采用一些电阻、二极管等,检查方法也比较简单,硬件工程师比较容易仿制。第三代的逻辑电路加存储器加密卡是在前两代加密卡的基础上发展起来的,它里面综合了前两种技术的优点,不仅有内部存贮体,也有硬件逻辑电路。 可编程加密卡:从第四代加密卡开始,加密卡的核心单元基本上都不再是原来的逻辑电路,而采用了功能更为强大的可编程CPU。由于加密卡所选择的CPU的程序被保存在CPU内部的存储器里面,故集成度比较高,抗分析能力也很好。 智能型加密卡:第四代可编程加密卡由于当时单片机功能上的限制,早期推出的几款加密卡采用的低档单片机给“可编程”性造成了很大的局限。智能型加密卡是2002年才出现的,早期的智能卡是存储类型的,其功能大概相当于第二代加密卡的水准,加上价格上比较昂贵,自然不在加密卡厂商的考虑之内。但随着技术的发展,出现了内置CPU的智能卡,这种类型的卡片内置了CPU、存储器和RAM,允许加密卡厂商进行内置操作系统的开发,从功能角度讲已经近似于一个迷你类型的计算机。 1.2 USB总线 USB ,是英文Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB采用四线电缆,其中两根是用来传送数据的串行通道,另两根为下游设备提供电源,对于高速且需要高带宽的外设,USB以全速12Mbps的传输数据;对于低速外设,USB则以1.5Mbps的传输速率来传输数据。USB总线会根据外设情况在两种传输模式中自动地动态转换。USB是基于令牌的总线。类似于令牌环网络或FDDI基于令牌的总线。USB主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收或发送数据给主机来响应。USB通过支持悬挂/恢复操作来管理USB总线电源。USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机,集线器和功能设备3。每个USB只有一个主机,它包括以下几层:USB总线接口层:USB总线接口处理电气层与协议层的互连。从互连的角度来看,相似的总线接口由设备及主机同时给出,例如串行接口机。USB总线接口由主控制器实现。USB系统层:USB系统用主控制器管理主机与USB设备间的数据传输。它与主控制器间的接口依赖于主控制器的硬件定义。同时,USB系统也负责管理USB资源,例如带宽和总线能量,这使客户访问USB成为可能。USB系统还有三个基本组件:主控制器驱动程序、USB驱动程序、主机软件。USB客户软件层:它是位于软件结构的最高层,负责处理特定USB设备驱动器。客户程序层描述所有直接作用于设备的软件入口。当设备被系统检测到后,这些客户程序将直接作用于外围硬件。这个共享的特性将USB系统软件置于客户和它的设备之间,这就要根据USB在客户端形成的设备映像由客户程序对它进行处理。USB的数据流传输:主控制器负责主机和USB设备间数据流的传输。这些传输数据被当作连续的比特流。每个设备提供了一个或多个可以与客户程序通信的接口,每个接口由0个或多个管道组成,它们分别独立地在客户程序和设备的特定终端间传输数据。USBD为主机软件的现实需求建立了接口和管道,当提出配置请求时,主控制器根据主机软件提供的参数提供服务。USB支持四种基本的数据传输模式:控制传输,等时传输,中断传输及数据块传输。每种传输模式应用到具有相同名字的终端,则具有不同的性质4。控制传输类型,支持外设与主机之间的控制,状态,配置等信息的传输,为外设与主机之间提供一个控制通道。每种外设都支持控制传输类型,这样主机与外设之间就可以传送配置和命令/状态信息。等时传输类型,支持有周期性,有限的时延和带宽且数据传输速率不变的外设与主机间的数据传输。该类型无差错校验,故不能保证正确的数据传输,支持像计算机电话集成系统和音频系统与主机的数据传输。中断传输类型,支持像游戏手柄,鼠标和键盘等输入设备,这些设备与主机间数据传输量小,无周期性,但对响应时间敏感,要求马上响应。数据块传输类型,支持打印机,扫描仪,数码相机等外设,这些外设与主机间传输的数据量大,USB在满足带宽的情况下才进行该类型的数据传输。USB采用分块带宽分配方案,若外设超过当前带宽分配或潜在的要求,则不能进入该设备。同步和中断传输类型的终端保留带宽,并保证数据按一定的速率传送。集中和控制终端按可用的最佳带宽来传输数据。1.3 基于USB总线加密思路提出随着加密技术的发展,软件知识产权保护受到越来越多软件开发商的重视。目前,实现软件知识产权保护主要有纯软件保护和软、硬件相结合的两种保护模式5。软件保护:主要包括身份认证和用户许可证两种方法。身份认证主要是通过密码、口令等认证方法,防止非法用户使用未经授权的软件。用户许可证保护(如序列号)方法让获得许可证的用户才可以合法使用软件。对于上述方式,通过对源程序反汇编或对源程序跟踪调试,可以很轻易分析出注册信息,并破解注册验算算法。或者提取代码,通过修改代码逻辑,来完成程序文件破解。随着软件逆向工程的进一步发展,通过纯软件方式保护知识产权越来越显得苍白无力。加密狗保护:加密狗由于采用了难以完全复制的硬件设备,成为了软件知识产权保护常用的有效保护手段。加密狗一般有串行口、并行口和USB接口三种类型。这些类型的软件保护方法中只采用了比较简单的算法,降低了其通用性和保密性。随着测量设备和逻辑分析仪等技术的发展,可以轻易检测出端口线上信号流,分析出通信过程和交流的数据信息,很容易被解密,而失去软件保护的能力。加密存储卡:加密存储卡是以存储软件中较多关键资源为原则,采用加密控制器、多体加密存储器、分离式加密、解密和CPU总线等技术,综合软件保护、加密狗、嵌入式系统加密等方法,有效的增加了解密难度,提高了通用性和保密性,受到了越来越多软件开发商的青睐。加密卡就属于软硬结合的加密技术。该方法加密强度大、可靠性高,且成本在逐年下降。其技术至今已经发展到了第四代,以微控制器和EEPROM为核心器件,具备实现加密算法的能力,且其接口从简单的并口发展到了PCI,USB等多种接口,更重要的是加密的灵活性和抗破解能力都得到了很大提高6。本课题提出了基于USB总线的加密思路。正如任何加密措施都有其理想的使用范围一样,本设计的目标是高强度加密。这要求既要借鉴目前流行的各种加密方法的优点,又要瞄准计算机的长远发展水平,并使两者有机地统一起来,让设计出的加密产品符合现实需求及长远发展。由于USB总线具有传输速度快、使用方便,支持热插拔,连接灵活,独立供电等优点,在其上易于实现先进的加密算法,故在设计中采用USB总线作为传输接口。且本设计的卡上资源非常丰富,这也为软件的长远发展提供了更为广阔的开发平台。总之本USB加密卡的设计,一方面提高了加密强度,另一方面又适应了计算机的发展潮流,因此具有广阔的市场应用前景。第2章 需求分析及方案设计2.1 需求分析在最初的加密过程中,大部分软件商采用的是软加密方式,主要有密码方式、软件自校验方式和钥匙盘方式等纯软件的手段。但是随着解密技术的发展,软加密技术能很快被解密软件攻克了。于是,硬加密开始越来越流行,逐渐成为被最广泛采用的加密手段。起初,加密狗是解密技术进步下的产物。但是加密与解密的斗争是永无休止的,单纯的硬加密设备越来越显得单薄。于是,加密卡技术应运而生,并迅速成为了主流加密技术。加密卡小巧、易学、易用,但它却是软、硬加密方法相结合的新兴技术产品。本设计实现的是基于USB的加密卡的硬件设计与下位机软件部分。在加密卡的工作过程中,主机提供的加密文件内容和密钥等通过USB接口,快速传输到加密卡中进行处理,加密卡中的高速加密芯片处理后的密文则需要快速的通过USB接口回传到主机端,其延时应该在可忍受的范围之内。解密过程与此类似,也需要大数据量的传输和快速的响应。设计出的基于USB总线加密卡插在计算机的USB总线主板接口上,高速的USB总线系统完全满足了系统大量数据处理与传输的需求。对于本设计的作为加密系统核心部件的加密卡主要有以下需求:1.使用密码算法对数据进行加密解密,执行对称密钥加解密算法,内嵌加密模式,密码算法应可更换、升级、克服硬件改动困难的缺点,保护用户投资。2.可以在卡上存放密钥、证书及其他必需的数据,主密钥和其他重要密钥不出现在应用层软件,这种保护比通常的软件能达到的强度更高。3.实现主处理器与卡上单片机之间的握手通信。被加密软件通过访问加密卡,获取软件正常执行的相关权限。在加密卡不存在的情况下,被加密软件因得不到相关授权而无法运行,从而实现了加密功能。4.在单片机的存储器里,除了存放密钥之外,还可以把被加密软件的部分程序、算法或常数写入单片机的存储器。5.与主机具有良好的接口,以满足加密卡自身,及于主机系统内的应用软件间的,大量的数据处理与传输的需求。6.与外围芯片、器件具备多种通信接口,实现不同环境下,有不同方式的高速、高效通信功能。7.与主机、外围设备和系统软件有良好接口,方便用户开发相应的高层软件,及升级扩展。8.系统设计简单、合理、高效,不占用太多的空间和资源。2.2 芯片选型本设计中最主要的芯片当属系统的单片机控制芯片,为了实现高速、低耗、保密等需求,选择了ATMEL公司的AVR单片机最为本系统的核心控制芯片。与其它8-Bit MCU相比,AVR 8-BitMCU最大的特点是:哈佛结构,具备1MIPS/MHz的高速运行处理能力;超功能精简指令集(RISC),具32个通用工作寄存器,克服了如8051MCU采用单一ACC进行处理造成的瓶颈现象;快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发;作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力;片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠;大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comparator,WDT等;大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序7。考虑到要外扩存储器、双串口、片内SRAM等需求,选择了ATmega128作为本设计系统的主控芯片。它除了具备普通AVR单片的基本特点外,在其片上具有128K 字节的系统内可编程Flash,其寿命可达 10,000 次写/ 擦除周期。4K字节的EEPROM和4K字节的内部SRAM,多达64K 字节的优化的外部存储器空间。可以对锁定位进行编程以实现软件加密。可以通过ISP实现系统内编程,还具有JTAG 接口( 与IEEE 1149.1 标准兼容),遵循JTAG 标准的边界扫描功能,支持扩展的片内调试, 通过JTAG 接口实现对Flash, EEPROM, 熔丝位和锁定位的编程。外设上具有两个可编程的串行USART和具有独立片内振荡器的可编程看门狗定时器,片内经过标定的RC 振荡器。6种睡眠模式:空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby 模式。可以通过软件进行选择的时钟频率。工作电压2.7 - 5.5V。在USB总线接口的设计上,选择CH372作为单片机与计算机之间的接口芯片。CH372是一个 USB总线的通用设备接口芯片,是CH371的升级产品,是CH375芯片的功能简化版。在本地端,CH372 具有 8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU 等控制器的系统总线上;在计算机系统中,CH372 的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。CH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种USB 请求,从而可以实现符合各种USB 类规范的设备8。在存储器扩展方面,选择两片32K*8的IS65C256AL实现外扩64K存储空间的需求,该存储芯片是一种高速、低耗的CMOS静态存储芯片。其在引脚排列上也与一般的存储芯片不同,这也部分增加了破解的难度,提高了整个系统的市场占有时间。在串口通讯方面,选择SN75176和SP3223分别作为本系统的RS485和RS232的通信芯片,实现RS485与RS232两种通讯需求。其他译码器,锁存器等芯片在此不予赘述。2.3 总体方案设计基于USB总线的加密存储卡是多种技术综合的应用产品,如计算机加密算法、嵌入式系统、计算机软件设计和基于Windows的底层硬件驱动程序设计等。根据加密卡的需求分析,在硬件系统设计方面采用以下设计,实现加密卡的基本功能。在MCU方面,ATmega128芯片的高速处理能力,完全满足了加密卡自身加密、解密运算的速度要求,同时其内置的4K字节的SRAM空间保证了密钥、证书及其他必需的数据存储需求,且其掉电时数据丢失的特性,保证了当其被非法拆解,而不至于让机密数据被他人获取,这也更增强了这部分机密数据的安全性。在供电模块方面,采用USB自供电的方式,插上USB即可从主机中获取电能,满足系统的基本工作需求。同时,本设计中的可充电电池模块,实现了在系统掉电时的自动供电切换功能,以保证SRAM数据不丢失。同时上电复位模块的设计亦保证了系统在每次上电时,都能自动复位,并重新开始正常工作。在与主机的通信方面,采用USB总线的通信方式,可保证加密卡与主机系统间高速、高效的安全通信。该模块采用的接口芯片CH372由于其内置了USB通讯中的底层协议,本地端MCU只负责简单的数据交换,程序设计非常简洁、高效。且其硬件电路也很简单,不占用过多的I/O口及系统资源。在存储器扩展方面,采用两片存储芯片以总线的方式扩展实现了64K的外部SRAM空间,完全满足了加密卡的数据处理与传输时所需要的空间资源,同时也可将加密软件中的部分程序代码和数据下放到此空间中,以提高软件系统的安全性。在与外围设备的通信方面,根据ATmega128自带的两套独立的串口,设计并实现了RS232、RS422、RS485 四套独立的双串口通信。这实现了不同环境下,有不同方式的高速、高效通信需求。其整体的硬件结构示意图如图2-1所示。 图2-1 加密卡硬件结构示意图 图2-2 软件设计示意图在软件系统设计方面,加密卡所需要做的工作就是在系统复位时对各个功能模块进行初始化,初始化完成后,即可进行与主机系统间的USB通信,与外围设备间的串口通信,以及主机完成主机系统所传达的加密与解密工作。其软件设计示意图如图2-2所示。另外,要想增强硬件本身的防破解难度,必须让CPU具备能够抵挡电子探测和物理攻击的能力,虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但此类芯片应用场合广、发行批量大,随着厂商间委托加工与频繁技术转让,使得利用该类芯片下载程序的设计漏洞,利用厂商的芯片测试接口,通过特殊的烧写时序和数据读出信息成为比较容易的事情。所以对加密强度要求高的用户需要特别定做专用的ASIC芯片,小批量生产。并采用特殊的逻辑电路且不要轻易公开测试功能接口。此外,在MCU上也可使用一定的加密技术,如:总线乱置、RAM替代、用加密位加密等。解密者要仿制加密盒,首先必须使用同型号的EEPROM,所以,尽量采用市场上一般购买不到的EEPROM型号,这样也能起到保密的作用。系统尽量使用不要使用分离元件,以降低被解密的风险,对于程序量小,不需外部程序寻址的简单加密卡系统,采用内置EEPROM/FLASH RAM、带加密控制字的MCU本身就能可靠地保护程序,尽量不要外挂扩展程序存储器EEPROM9。第3章 加密卡硬件电路的实现3.1 单片机基本工作模块设计本设计中,单片机的基本工作模块主要包括:电源模块、振荡电路模块、上电复位模块以及本系统设计中的简单LED测试模块。这些基本工作模块主要完成整个系统的供电与掉电时自动切换到电池供电、保证MCU的正常复位启动、以及简单的用于调试时的指示灯显示。由于本设计中采用的ATmega128芯片具有内置振荡电路,能产生经过校准的1M-8M晶振信号,完全满足了系统需求,故在本模块设计中省去了振荡电路模块的设计。3.1.1 电源模块设计本系统设计的电源模块采用USB自供电的方式,直接从USB的VCC引脚取电,通过保护电阻,连入整个系统的电源线路,提供各个芯片正常的工作电压。其接入方式如图3-1所示。而MCU的供电则通过如图3-2所示的电路产生约3.3V左右的电压作为MCU的VCC电压。同时调整电路中R14、R15的阻值,即可获得不同的Corevcc电压,其计算方法如式3-1所示。这样当系统升级时,即可通过改变以上两电阻的阻值来获得适当的Corevcc电压,其即为MCU的工作电压。Corevcc=VCC*R14R14+R15+0.7 (3-1)同时在系统正常工作时,Corevcc电压除了给MCU供电以外,当电池BT1电压不足时,亦可对其进行充电,使其能够保持足够的电压。当拔出USB,即系统掉电时,该模块电路中的电池开始提供Corevcc电压用以给MCU供电,保证MCU内部SRAM保存的数据不至于丢失。从而完成了该系统的电源供电与电池供电自动切换的功能,保证了整个系统的正常工作。图3-1 系统电源模块图图3-2 MCU的电源供电与电池供电模块图3.1.2 上电复位电路模块设计单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。当VCC达到MCU所需要的电压范围以及晶体振荡器稳定工作时,复位信号才被撤除,MCU开始正常工作。这样也保证了MCU在每次接通电源时,都从一个已知的确定的地址重新开始运行。基本的复位电路主要有上电复位和手动复位,而本系统设计的加密卡是内置于主板上的,故其只需要上电复位电路即可。单片机基本的上电复位电路如图3-3所示。图3-3 单片机基本上电复位电路图图3-3中,CPU上电时,但由于电容C两端的电压VC不能突变,因此VC保持低电平。但随着电容C的充电,VC不断上升,上升曲线如图3-4所示。只要选择合适的R和C,VC就可以在CPU复位电压以下持续足够的时间使CPU复位。复位之后,VC上升至电源电压,CPU开始正常工作。相当于在CPU上电时,自动产生了一个一定宽度的低电平脉冲信号,使CPU复位。当电源电压消失时,二极管D为电容C提供一个迅速放电的回路,使/RESET端迅速回零,以便下次上电时CPU能可靠复位。 图3-4 电容充电时序图根据以上基本原理,结合本设计的实际需求,设计了如图3-5所示的复位电路图。图中VCC为USB供电模块提供的外部电源,Corevcc为经过电源模块调整出的芯片工作电源,也是在掉电时电池所提供的电压。由于电池存储的电能有限,且设计时电池供电只是当系统在掉电模式的时候产生作用。而且在外部电源加电时,需要对系统进行一次复位操作,故所以设计了如图3-5所示的上电复位电路模块。该模块实现了在VCC加电的时候,产生一次正常的系统复位操作。图3-5中三极管左边部分即相当于一个简单的按键操作,实现“手动复位”的功能。即在系统插上USB时,VCC电源开始有效,C13通过R13回路对电容充电,R12端电压开始升高,导致Q1基极的电压亦开始升高,当基极电压足够高时,三极管Q1导通,nRST端电压被拉至低电平,MCU开始复位。当电容C13充电结束时,通过R13回路,电容开始放电,三极管基极电压开始下降,当其降至约0.6V以下时,三级管关断,nRST电压由Corevcc拉回高电平,MCU完成复位启动。电容C11、C12做退耦用,降低系统内外的杂波干扰。图3-5 上电复位电路模块图3.1.3 LED测试电路模块设计该电路模块只是用于程序设计中,通过不同的程序操作,实现不同的亮灭、闪烁状态,帮助程序员更直观的了解程序的运行过程和状态。在电路设计中也很简单,只需将LED连至普通的I/O端口,另一端上拉至VCC或下拉至地即可。其电路设计如图3-6所示。图3-6 LED测试电路模块图3.2 接口模块设计 接口模块是完成MCU与外设或其它控制系统之间的数据传输与控制功能的中间模块。本系统设计所涉及的到的接口模块主要有:USB通信接口模块、RS485通信接口模块、RS232通信接口模块、ISP与JTAG仿真调试接口模块。3.2.1 USB通信接口模块设计 本设计中采用CH372芯片作为USB通信的接口芯片,该芯片内置基本的USB通信协议,这样软件实现起来非常简洁、高效,且硬件电路设计也很简单。它具有通用的被动并行接口:8位双向数据总线D7D0、读选通输入引脚RD#、写选通输入引脚WR#、片选输入引脚CS#、中断输出引脚INT#以及地址输入引脚A0。通过被动并行接口,CH372芯片可以很方便地挂接到各种8位单片机、DSP、MCU的系统总线上,并且可以与多个外围器件共存。CH372芯片的RD#和WR#可以分别连接到单片机的读选通输出引脚和写选通输出引脚。CS#由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。INT#输出的中断请求是低电平有效,可以连接到单片机的中断输入引脚或者普通I/O引脚,单片机可以使用中断方式或者查询方式获知中断请求。CH372芯片的UD+和UD-引脚直接连接到USB总线上。如果为了芯片安全而串接保险电阻或者电感或者ESD保护器件,那么交直流等效串联电阻应该在5之内。CH372芯片内置了电源上电复位电路,一般情况下,不需要外部提供复位。CH372芯片正常工作时需要外部为其提供12MHz的时钟信号。一般情况下,时钟信号由CH372内置的反相器通过晶体稳频振荡产生。外围电路只需要在XI和XO引脚之间连接一个标称频率为12MHz的晶体,并且分别为XI和XO引脚对地连接一个高频振荡电容。如果从外部直接输入12MHz时钟信号,那么应该从XI引脚输入,而XO引脚悬空。CH372芯片支持3.3V或者5V电源电压。当使用5V工作电压时,CH372芯片的VCC引脚输入外部5V电源,并且V3引脚应该外接容量为4700pF到0.02uF左右的电源退耦电容。当使用3.3V工作电压时,CH372芯片的V3引脚应该与VCC引脚相连接,同时输入外部的3.3V电源,并且与CH372芯片相连接的其它电路的工作电压不能超过3.3V。故该模块的设计如图3-7所示。图3-7 USB通信接口模块图3.2.2 RS232通信接口模块设计RS232是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA)所制定的异步传输标准接口。通常 RS-232 接口以9个引脚(DB-9)或是25个引脚(DB-25)的型态出现。ATmega128芯片内置的通用同步和异步串行接收器和转发器(USART)是一个高度灵活的串行通讯设备。其主要特点为:全双工操作(独立的串行接收和发送寄存器)异步或同步操作主机或从机提供时钟的同步操作、高精度的波特率发生器、支持5, 6, 7, 8, 或9个数据位和1个或2个停止位、硬件支持的奇偶校验操作数据过速检测、帧错误检测、噪声滤波(包括错误的起始位检测,以及数字低通滤波器)、三个独立的中断:发送结束中断, 发送数据寄存器空中断,以及接收结束中断、多处理器通讯模式倍速、异步通讯模式。而且其具有两个USART,符合本设计中双串口通信的需求。由于RS-232总线上传输的信号的逻辑电平与TTL逻辑电平差异很大,这两种电平需要进行转换。常用的RS232电平转换芯片有MAX232、HI232等,本设计模块中串口通信电路选用SP3223作为电平转换芯片,该芯片的13、15脚和12、10脚分别和单片机的TXD、RXD和TXD1、RXD1相连接,利用这两组引脚作为数据输入输出端,进行TTL电平和RS232电平之间的转换以实现单片机与计算机之间两套独立的的RS232通信模块。该模块的主要电路如图3-8所示。图3-8 RS232通信接口模块图3.2.3 RS422、RS485通信接口模块设计由于RS232的通信速率比较低,且只能作为短距离通信使用,故本系统设计中添加了RS422与RS485通信模块。它们都采用SN75176作为主要通信芯片,构成了两套独立的通信模块电路,以实现不同场合、不同速率的通讯需求。RS422、RS485与RS232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2+6V,是一个逻辑状态,负电平在-2V6V,是另一个逻辑状态。另有一个信号地C,在RS485中还有一“使能”端,而在RS422中这是可用可不用的。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。理论上RS422、RS485的数据最高传输速率为10Mbps 。由于其接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好,使其接口的最大传输距离标准值为4000英尺(约1219米),实际上可达3000米,另外RS232C接口在总线上只允许连接1个收发器,即单站能力。而RS485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS485接口方便地建立起设备网络。该模块的主要电路如下图3-9、图3-10所示:图3-9 RS422通信接口模块图图3-10 RS485通信接口模块图3.2.4 ISP与JTAG仿真调试接口模块设计ISP 是In System Program 的缩写,意思是在系统编程。目前几乎所有的AVR芯片都具备ISP接口,可通过ISP接口进行编程。它一共用两条电源线:VCC、GND,三条信号线:SCK、MOSI、MISO,以及复位线:RESET。由于仅仅使用了几个数据线,所以亦将其称为串行编程。而需要说明的是大部分AVR的ISP端口为MCU的SCK,MOSI,MISO,RESET引脚,但少部分的AVR的ISP端口则不是使用这些接口。例如本系统设计中使用的ATmega128,它使用的ISP端口是:SCK,PDI,PDO,RESET。故依据下图3-11所示的ISP标准连接模型,设计本系统所使用的ISP接口模块如下图3-12所示。另由于其PDI、PDO引脚与TXD、RXD引脚复用,故须在连接TXD、RXD信号线之前串接100欧姆的电阻进行简单的隔离,以保证其能同时连接在系统板上而不会相互影响,其具体连接如图3-13所示。JTAG接口是一个符合IEEE 1149.1标准的4线的测试存取端口控制器(Test Acess Port (TAP) controller)。这个IEEE标准制定了一套标准方法,采用了边界扫描技术(Boundary Scan),用于有效的对芯片进行测试。Atmel AVR 芯片扩展了这项功能,使其能完全支持编程下载和片上调试功能。JTAGICE使用标准的JTAG接口,是用户可以对目标系统上运行的单片机进行实时的仿真。(AVR On-Chip Debug(AVROCD)协议能够让用户对AVR单片机的内部资源进行全部控制。与传统的仿真器相比,JTAG的花费很小,但却能实现更准确的仿真。其与ISP都是用于PC和AVR芯片通讯的方法,而ISP只能用于下载,JTAG却不仅能下载还能进行在线仿真调试。故本系统设计时保留了这两种接口方案,JTAG主要用于系统设计初期的仿真调试,而当系统设计调试完成进行量产的时候,就可以只保留ISP接口进行程序下载即可。图3-11 ISP接口模型图图3-12 ISP接口模块图图3-13 ISP与usart0接口隔离方式图标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。GND连接地线。根据如图3-14所示的连接模型设计出本模块的接口电路如图3-15所示,为了简化电路,模型图中上拉电阻可以不接,但为了仿真的稳定和可靠性建议接上。图3-14 JTAG接口模型图图3-15 JTAG接口模块图3.3 片选地址译码与外扩SRAM模块设计本模块的设计中主要涉及CH372片选地址与两片存储芯片的片选地址的译码产生,以及外扩64K存储空间的总线连接方式、地址锁存等。3.3.1 片选地址译码电路模块设计该模块主要通过一片74AHC139芯片实现简单的2-4译码输出。图3-16 译码电路模块图由于只有三个地址参与译码,而两个存储器片选属于一类,故设计时将74AHC139的Q0、Q1输出作为两个片选信号,而Q3、Q4可连在一起作为CH372的片选信号。则当输入AS0、AS1为00、01时输出存储芯片的片选信号,当其为10、11时输出CH372的片选信号。其具体电路连接如图3-16所示。3.3.2 扩展存储器模块设计由于本系统设计需求中,加密卡的加密、解密运算需要大量的存储空间,而内部的SRAM空间不仅不够亦须留作它用,故本设计中采用ATmega128内部的总线外扩64K的存储空间,用于大量的数据存储、运算和MCU与主机进行USB通信时所需的数据空间。AVR的外部存储器接口包括:AD7:0:多工的地址总线和数据总线;A15:8:高位地址总线 (位数可配置);ALE:地址锁存使能;RD:读锁存信号;WR:写使能信号。本设计中,采用总线连接方式,并通过一片74AHC373提供地址锁存。由于AVR XRAM接口的工作速度很高,当系统的工作条件高于8 MHz 4V和4 MHz 2.7V时要注意小心选择地址锁存器。此时典型的老式74HC系列锁存器已经无法满足要求了。需要选择与XRAM接口相兼容的74AHC系列的锁存器。当然,其他满足时序要求的锁存器也是可以使用的。故本设计中采用74AHC373作为地址锁存器,具体的电路模块如图3-18所示。图3-18 扩展存储器模块设计图第4章 软件功能实现4.1 存储器的读写 AVR 结构具有两个主存储器空间:数据存储器和程序存储器。此外,ATmega128 还有 EEPROM存储器以保存数据。这三个存储器空间都是线性的。在变量空间分配时,考虑到不同类型的变量的作用不同,可将其分配到不同的存储空间去,以达到对变量空间的合理利用。该部分软件模块主要包括内部flash程序存储空间的读写、内部SRAM空间的读写、内部EEPROM空间的读写、外部SRAM空间的读写等。4.1.1 FLASH程序存储空间的读写对于程序中所用到的常量、不变的数组等,在程序设计时就可以将其分配到FLASH空间去。在IAR的编译环境下,使用_flash 关键字进行声明。例如:_flash unsigned char AesKey16=3,2,0,6,2,1,1,9,7,2,1,1,0,7,5;这样在程序编译的时候,编译器会将其自动分配到FLASH空间去,而不会占用SRAM空间。当然使用符号还可以对变量的绝对地址定位。例如:_flash unsigned char a 0x08=9;/定义常数存放在FLASH空间0x08单元。对于定义在FLASH空间的变量,程序中可以通过变量名或地址来进行访问。当然在IAR编译环境下,也可以使用comp_a90.h 内的两条宏操作实现,即#define _LPM(ADDR) _load_program_memary(ADDR)#define _LPM(ADDR) _load_program_memary(const u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论