基于soc加密ip核测试系统设计和实现

基于soc加密ip核测试系统设计和实现

ID:34301339

大小:938.46 KB

页数:57页

时间:2019-03-04

上传者:U-22505
基于soc加密ip核测试系统设计和实现_第1页
基于soc加密ip核测试系统设计和实现_第2页
基于soc加密ip核测试系统设计和实现_第3页
基于soc加密ip核测试系统设计和实现_第4页
基于soc加密ip核测试系统设计和实现_第5页
资源描述:

《基于soc加密ip核测试系统设计和实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

国内图书分类号:TN47学校代码:10213国际图书分类号:621.3密级:公开工学硕士学位论文基于SoC的加密IP核的测试系统设计与实现硕士研究生:黄鹄泉导师:张岩教授申请学位:工学硕士学科:微电子学与固体电子学所在单位:深圳研究生院答辩日期:2012年12月授予学位单位:哈尔滨工业大学 ClassifiedIndex:TN47U.D.C:621.3DissertationfortheMasterDegreeinEngineeringDESIGNANDIMPLEMENTATIONENCRYPTEDIPCORETESTSYSTEMBASEDONSOCCandidate:HuquanHuangSupervisor:Prof.YanZHANGAcademicDegreeAppliedfor:MasterofEngineeringSpeciality:MicroelectronicsandSolid-StatePhysicsAffiliation:ShenzhenGraduateSchoolDateofDefence:December,2012Degree-Conferring-Institution:HarbinInstituteofTechnology 哈尔滨工业大学工学硕士学位论文摘要SoC技术在现代被应用的越来越广,在很多的产品上都采用这个技术,它缩短了一个产品的面市时间,它能节省产品的设计成本。SoC技术根据设计要求,把需要的IP核集成在一起,完成设计任务。本文在实现过程中,主要进行以下工作,首先是通过对SoC中主要的IP核OR1200、Wishbone、UART、Ethernet进行单独的功能仿真,对这些IP核进行整合与调试,并且编写汇编语言,验证SoC功能。然后利用构建的SoC对加密IP核AES、ECC、RSA进行加密和解密的功能仿真,最后在Xilinx的XC2VP30开发板上进行FPGA验证。本文的独特之处在于,在所有的验证过程中都是采用汇编语言来实现,汇编语言具有短小精悍,容易跟踪,便于调试等优点。在实现过程中,首先对主要IP核进行整合与调试后,把CPUOR1200,Wishbone总线,时钟模块,BOOTROM/RAM,UART整合在一起,组成最小的调试系统,并验证它的功能;然后在此SoC系统中加入通信用的EthernetMAC核,组成以太网调试系统,验证SoC通过以太网与PC机通信功能。其次借助于上面构建的SoC系统对加密IP核AES、ECC、RSA进行验证。对它们进行两次功能验证,第一次是在最小调试系统下,对加密IP核进行加密或者解密功能验证;第二次是在以太网调试系统下,验证SoC通过以太网与PC间的加密通信功能。最后,在功能验证后,我们进行FPGA原型验证。采用的综合工具为XilinxISE10.1。在最小调试系统中,在片上RAM中给加密IP核提供加密数据,通过UART把加密或者解密数据传输到PC机上;在以太网调试系统中,在PC端通过以太网给加密IP核提供加密数据,把加密或者解密结果通过UART传输回PC机上。关键词:SoC;OR1200;以太网;FPGA;Wishbone-I- 哈尔滨工业大学工学硕士学位论文AbstractSoCtechnologyinmodernapplicationsincreasinglywide,moreandmoreproductsareusingthistechnology,itshortensthetimetomarketofaproduct,savingthecostoftheproductdesign.SoCtechnology,however,isbasedonIPcorereusetechnologythroughtheintegrationofprovenIPcorestogether,tomeetthedesignrequirements.Intheimplementationprocess,thefollowingworkhavebeendone,firstbyseparatesimulationofthemainIPcoresintheSoCincludingOR1200,Wishbone,UART,Ethernet,integrationanddebuggingtheseIPcoreandwritingassemblylanguage,verifySoCfunction.ThenusethebuiltSoCfunctionalverificationofencryptedIPcoreAES,ECC,RSAencryptionanddecryption,andfinallyontheXilinxtheXC2VP30developmentboarddotheFPGAverification.Thisarticleisuniqueinthat,intheverificationprocessusingassemblylanguage,assemblylanguagehastheadvantagesofshortandpithy,easytotrack,easytodebug.Intheimplementationprocess,thefirstthingisIPcoreintegrationanddebugging,integratedCPUOR1200,Wishbonebus,clockmoduleandBootROM/RAM,theUARTtoformthesmallestdebuggingsystemandverifyitsfunctionality.ThenaddedtheEthernetMACcoretotheSoCsystem,composedofEthernetdebuggingsystem,andverifyfunctionsSoCcommunicationwithPCviaEthernet.Followedbymeansoftheabove-builtSoCsystemtoverifytheencryptionIPcoreAES,ECC,RSA.Havedonetwicefunctionalverification,thefirstintheminimumdebuggingsystem,verifyencryptedIPcorethefunctionofencryptordecrypt;secondintheEthernetdebuggingsystem,verifySoCandhostcomputerviaEthernettheencryptioncommunicationfunction.Finally,afterthefunctionalverification,wecarryonFPGAverification.ThetoolsusedforXilinxISE10.1.Intheminimumdebuggingsystem,intheon-chipRAMprovidesencrypteddatatoencryptIPcore,transferencryptordecryptdatatoaPCthroughtheUART.InEthernetdebuggingsystem,viaEthernetprovidesencrypteddatatothetoencryptIPcoreandtransmitencryptordecryptresultsthroughtheUARTbacktothePC.Keywords:SoC,OR1200,Ethernet,FPGA,Wishbone-II- 哈尔滨工业大学工学硕士学位论文目录摘要...............................................................................................................................IABSTRACT.....................................................................................................................II第1章绪论................................................................................................................11.1课题背景及研究的目的和意义............................................................................11.2国内外在该方向的研究现状及分析....................................................................11.3本文的主要研究内容............................................................................................2第2章SoC的体系结构设计........................................................................................42.1加密SoC的总体结构...........................................................................................42.1.1硬件拓扑结构................................................................................................42.1.2软件GNU_TOOLCHAIN.............................................................................52.2OR1200的整合与调试..........................................................................................62.2.1OR1200总体结构...........................................................................................62.2.2OpenRISC指令集...........................................................................................92.3Wishbone总线的调试与调试.............................................................................102.3.1Wishbone总线特点......................................................................................102.3.2Wishbone总线接口信号...............................................................................112.3.3Wishbone总线连接方式..............................................................................132.4以太网的整合与调试..........................................................................................132.4.1以太网IP核的特点.....................................................................................132.4.2以太网数据帧格式......................................................................................142.4.3以太网整体硬件结构..................................................................................152.5UART的整合与调试...........................................................................................192.5.1UART的特点...............................................................................................192.5.2UART启动过程...........................................................................................202.6加密IP核整合与调试........................................................................................212.6.1AES的整合与调试.......................................................................................212.6.2ECC的整合与调试......................................................................................212.6.3RSA的整合与调试......................................................................................212.7本章小结..............................................................................................................22第3章SoC的功能仿真..............................................................................................23-III- 哈尔滨工业大学工学硕士学位论文3.1最小调试系统功能验证......................................................................................233.1.1C语言实现...................................................................................................233.1.2汇编实现......................................................................................................253.2加密IP核功能验证............................................................................................263.2.1AES与RSA加密功能验证.........................................................................263.2.2ECC加密功能验证......................................................................................293.3以太网调试系统的功能验证..............................................................................293.3.1以太网发送和接收功能验证.......................................................................293.3.2AES与ECC的加密通信功能验证.............................................................323.4本章小结..............................................................................................................34第4章SoC的FPGA原型验证..................................................................................354.1最小调试系统的FPGA验证..............................................................................354.1.1最小调试系统的C语言实现......................................................................354.1.2最小调试系统的汇编语言实现...................................................................364.2AES加密和解密的FPGA验证..........................................................................374.3ECC加密和解密的FPGA验证..........................................................................394.4RSA加密和解密的FPGA验证..........................................................................414.5以太网调试系统的FPGA验证..........................................................................424.5.1以太网发送FPGA验证..............................................................................424.5.2以太网接收FPGA验证..............................................................................424.6AES的加密通信FPGA验证..............................................................................434.7ECC的加密通信FPGA验证..............................................................................454.8本章小结..............................................................................................................46结论............................................................................................................................47参考文献........................................................................................................................48攻读硕士学位期间发表的学术论文............................................................................52哈尔滨工业大学学位论文原创性声明及使用授权说明............................................53致谢............................................................................................................................54-IV- 哈尔滨工业大学工学硕士学位论文第1章绪论1.1课题背景及研究的目的和意义[1]目前,基于IP核的片上系统SoC技术正成为微电子专业的主流趋势。与以[2]前的ASIC芯片相比,SoC芯片俱有很多的优势,它缩短了一个产品的面市时间,它能节省产品的设计成本。SoC技术比ASIC能够实现功能更好,性能更多的[3]产品,更能满足客户的需求。SoC技术的出现并不是偶然,随着科技的发展,人们对产品的要求有更多的[4]功能,同时还要具有更小的面积,并且能够低功耗。传统的设计技术已经不能满足人民的需要,市场的需要推动了SoC技术的发展。SoC技术使用IP核重用技术,能够减少重复性的工作,设计时从顶层出发,根据客户需要,把需要的IP核集成在一起,设计者更加注重顶层的东西,对各个子IP核内部的逻辑不需要掌握详细,[5]掌握接口信号,内部寄存器的配置,就可以让IP核工作起来。因此设计者更加注重对系统的总体把握,选择合适的IP核,把他们整合在一起,构成一个SoC系[6]统。SoC技术跟传统的IC不同,它不仅包含了硬件逻辑部分,还包含了软件部分[7]。硬件主要是用来描述能够实现什么功能,而配套的软件是用来让这个系统工作起来,取到驱动作用,实现怎么工作的过程。只有在这两者之间取到平衡点,才是最佳的SoC设计。SoC技术虽然起步比较晚,但因为市场需求大,导致它的飞快发展,不仅在[9]我们的日常生活在随处可见,而且在军事,航天上也有很大的应用。它能提高我们的生活质量,让我们的生活更加智能化,提高我们的国防力量。因此研究SoC技术对我们来说意义非凡。随着SoC中集成的IP核越多,对其进行测试的复杂度越高。因为集成在SoC[10]中不能对各个IP核的输入输出进行方便的观测,给测试也带来不小的麻烦。其次在测试的时候我们也要考虑成本,实施性,还有检测错误的覆盖率。本课题来源于横向课题“智能电网安全芯片的研制”。1.2国内外在该方向的研究现状及分析自上世纪60年代以来,集成电路的发展一直遵循着1965年Intel公司创始人[29]GordonE.More的预言,即集成电路的集成度每18个月翻一番。能够集成的晶-1- 哈尔滨工业大学工学硕士学位论文体管数量越来越多,工艺尺寸也不断的变小。SoC技术直到小型机出现后才开始发展起来。虽然在1946年就产生了计算机,[11]但这些机器又大有贵,不能为人民所接受。直到30年后,才出现了微型机,它具有价格便宜、面积小、功能多的特点。这个技术与控制技术相结合,就产生了SoC技术。但SoC技术与计算机发展方向不一样,着重点不一样,SoC技术更加注重控制能力,而计算机更加注意计算。由于SoC技术具有很多优点,因此发展[12]迅速,应用在各个领域,渗透到我们的生活中。现在中国经济正在腾飞阶段,技术迅猛的发展,SoC技术也中国也越来越受[12]到重视,SoC技术在中国有很多的发展空间。同时,中国是个巨大的市场,生活水平的提高,人们更需要高科技的东西丰富人们的生活。SoC技术能够为我们创造更多,更好的产品,让我们的生活更加便捷,智能化。但我们也注意到,虽然我们有着巨大的市场,但很多核心技术不是我们的,我们还需要向他人购买IP核。随着技术的发展,SoC技术会被应用的越来越多,因此各种各样IP核也会被不断的需要,因此谁掌握越多的IP核,谁在市场上的竞争力也就越大,IP核的拥[13]有是决定成败的关键。因此近年来国家也大力发展SoC技术,成立各种项目,[18]努力解决SoC发展过程中可能遇到各种基础问题。SoC测试技术随着SoC技术的发展,也跟着发展起来。因为SoC上集成的核越来越多,功能越来越大,因此测试难度也在不断的增大,对于比较大的系统主要是借助于工具来完成,现在主流的测试技术如表1-1所示。表1-1主流测试技术测试技术公司EDA工具优点扫描链测试SynopsysDFTComplier时序电路转换成组合,方便测试内建自测试MentorMBISTArchitect低成本测试技术边界扫描MentorBSDArchitect少的电路管脚解决复杂的电路测试1.3本文的主要研究内容本文的研究内容主要是构建一个加密SoC,通过UART来检测加密IP核AES、ECC、RSA的加密和解密功能。主要工作首先是研究各个IP核的功能,对其进行整合调试,然后用Wishbone总线把各个IP核整合起来,并且编写的相应的汇编程序,让加密SoC完成对加密IP核AES、ECC、RSA的功能验证。在加密SoC中包括主要的IP核有32位的RISCCPUOR1200、系统启动引导用的BOOTROM及其存放程序和数据的片上RAM、串口UART16550、以太网MAC、加密IP核AES、ECC、RSA等。-2- 哈尔滨工业大学工学硕士学位论文第2章中,介绍加密SoC中包含的IP核,详细介绍各个IP核的主要功能、特点、及结构框图、对各个IP核进行整合调试。软件部分介绍用到的工具链GNU_TOOLCHAIN,硬件部分包含有32位的CPUOR1200和用于IP核互联的Wishbone总线,另外还有在调试过程中用到的UART和用于通信的以太网。掌握了以太网IP核的特点,数据帧的格式,及以太网的总体结构和内部各个模块的功能,及UART的发送字节的顺序。最后简单的介绍在加密SoC中用于被测试的加密IP核AES、ECC、RSA。第3章中,主要是对构建好的SOC进行功能仿真。首先是对最小调试系统进行仿真,用到了两种实现方式,C语言和汇编语言的实现。然后借助UART对加密IP核AES、ECC、RSA的加密和解密功能进行功能仿真。然后在加密SoC中加入以太网IP核,对其的发送和接收功能进行仿真,最后通过以太网传输加密或者解密数据。第4章中,对第3章进行的功能仿真,进行FPGA验证。在Xilinx的V2PRO开发板上验证最小调试系统SoC中的UART的发送字符功能。然后是通过UART验证AES、ECC加密功能,把加密完成的数据通过UART输出到PC机串口助手上。最后是验证加密SoC中以太网的发送和接收功能,并且完成AES、ECC加密IP核在通过以太网传输加密和解密数据的FPGA验证。最后对全文进行了总结,指出本文工作的主要工作及其主要工作成果,并且指出现阶段研究的不够的地方,和提出日后应该改进的地方。-3- 哈尔滨工业大学工学硕士学位论文第2章SoC的体系结构设计在本章中,先总体介绍加密SoC的硬件部分,说明其拓扑结构;然后是SoC的软件部分,用到的工具链是GNU_TOOLCHAIN。接着介绍在加密SoC中集成的各个IP核,对各个IP核进行整合调试:首先调试了系统中采用的32位的RISCCPUOR1200,掌握其结构,特性,指令集等;其次是调试了用于系统架构中IP核互联的总线Wishbone,掌握其特点,端口信号,通信协议等;然后还调试了加密SOC中用来与PC机通信的IP核以太网和用于测试的UART;最后是要被验证的加密IP核AES、ECC、RSA。2.1加密SoC的总体结构2.1.1硬件拓扑结构如图2-1所示,为加密SoC的拓扑结构。在这个SoC中以32位的OR1200为CPU,采用Wishbone为片上IP核互联总线,还包含片上BOOTROM/RAM,和时钟,复位模块,通信调试模块UART16550,EthernetMAC,和需要验证的加密模块AES、ECC、RSA。BOOTROM/EthernetOR1200RAMMACWISHBONECLK/RSTUART16550AES/ECC/RSA图2-1加密SoC的拓扑结构在这个SoC中,在CLK/RST模块中生成系统时钟和复位信号,然后通过Wishbone总线传递给各个IP核,CLK时钟信号是通过V2PRO上的100MHZ时钟输入经过DCM的2分频得到50MHZ,整个SoC位同步复位。在总线译码器中,IP的译码都是采用部分地址译码,译码每个IP核地址的高8位。在系统启动时,-4- 哈尔滨工业大学工学硕士学位论文在BOOTROM执行引导程序引导系统跳转到存有指令和数据的片上RAM,然后系统在RAM中开始执行指令。SoC系统中的串口和以太网用于和PC机进行通信,在OR1200的协同作用下,完成对加密IP核的验证。如表2-1所示为在这个SoC中,各个IP核的地址分配。其中AES、ECC是自己分配的地址。地址译码时,采用部分地址译码,译码最高的8位。表2-1IP核地址分配IP核分配的地址RAM32’h0000_0000MAC32’h9200_0000UART32’h9000_0000AES32’hC000_0000ECC32’hD000_00002.1.2软件GNU_TOOLCHAIN在编写完C语言源程序后,需要把C语言编译成目标机器上可以执行的二进[33]制文件,在这个转换过程中,包含四个阶段预处理、编译、汇编、链接。在Linux操作系统下程序都是采用GNU开发工具链进行编译、链接、调试、GNU_toolchain包括GCC,binutils工具,GDB和glibc库。GNU_toolchain可以编[24]译绝大多数的程序语言,适合绝大多数的CPU硬件平台。2.1.2.1GCC编译器GCC机器接口兼容性好,它可以支持CISC和超流水线RISC(mips)、超标量RISC(sparc)及超标量超流水线RISC(Alpha)等多种平台。GCC的编译过程分为4个部分首先是预编译,处理头文件和预编译语句;然后是编译,生成汇编代码;接着是进行汇编,生成目标文件;最后是把目标文件[35]进行链接,生成可执行文件,其过程如图2-2所示。gcc-Egcc-Sgcc-cgcc-o预编译预编译编译编译汇编汇编链接链接生成可执行文件处理头文件和预编译语句生成汇编代码生成目标文件图2-2编译过程2.1.2.2GDB调试工具GDB是GNU_TOOLCHAIN中属于Linux下的调试工具,用命令行的形式。2.1.2.3BinutilsGNU工具链中的Binutils是一个二进制工具的集,在Linux下方便实现文件-5- 哈尔滨工业大学工学硕士学位论文[36]格式间的转换和操作及反汇编。主要包括以下功能,如表2-2所示,具体说明Binutils的各个命令的功能。表2-2Binutils功能命令功能描述addr2line把程序地址转换成文件名和行号ar建立,修改并且提取归档文件as输出汇编文件,并由连接器ld连接C++filt连接器使用它来过滤C++和java符号Gprof显示程序调用段的各种数据ld把目标和归档文件连接在一起nm列出目标文件中的符号Objcopy在目标文件之间拷贝内容Objdump显示目标文件的信息Ranlib产生归档文件索引,并保存Readelf显示elf格式的可执行文件Size列出目标文件的每一段及总体大小Strings打印某个文件的可打印字符串Strip删除目标文件特点符号2.2OR1200的整合与调试OR1200隶属于OpenRISC,但它是开源代码,是个软核,能够查看内部具体RTL代码,用户可以通过Define文件进行配置。OR1200是32位的RISC,具有哈佛结构,五级整数流水线,支持虚拟内存,带有基本的DSP功能,外部接口都是[14][22]符合Wishbone总线标准。OR1200的主要特性:(1)所有主要特性都是用户可配置的;(2)在0.18um微米,主频300MHZ下,2.1MIPS;(3)高性能的缓存和内存管理子系统;(4)具有WISHBONERev.B3兼容接口。2.2.1OR1200总体结构如2-3图所示为OR1200的通用框架,因为OR1200是用户可配置的,图中白[20]色部分为可选单元,用户根据自己的需要选择是否选用。OR1200的默认配置为-6- 哈尔滨工业大学工学硕士学位论文[17]100万门晶体管。OR1200CPUInstr.Instr.WishboneI/FMMUCacheTimerFetchDecodeDDebugI/FExecuteSHWPInterruptMemoryWritebackPowerMgmt.DataDataWishboneMMUCacheI/FOptional/ConfigurationMinimal/Configuration图2-3OR1200结构图2.2.2.1CPU和DSP介绍如图2-4所示为OR1200核心,主要是由Instr.Unit,GPRs(32个32位),[19]Load/Store单元,Inter.EX,MACUnit,系统单元,例外组成。InsnMMU&CacheInstructionIntegerEXUnitPiplineExceptionsMACUnitGPRsSystemSystemLoad/StoreUnitDataDMMU&Cache图2-4CPU和DSP核心结构2.2.2.2数据和指令缓存OR1200中数据和指令高速缓存采用的机制是一样的。默认的配置为单通道的直接映射的8kb缓存,在or1200_define.v文件中能够把它配置成4k、8kb、16kb、-7- 哈尔滨工业大学工学硕士学位论文[20]32kb,如表2-3所示。表2-3数据和指令配置Line/wayDirectmapped16B/line256lines1way4KB16B/line512lines1way8KB(default)16B/line1024lines1way16KB32B/line1024lines1way32KB2.2.2.3数据和指令MMU在OR1200中它们两个的内存管理原理是相同的。OR1200使用MMU提供的内存访问和有效的虚拟内存到物理地址的转换,保护颗粒由OpenRISC1000架构[21]定义,一般为8KB或者16MB字节,如表2-4所示。表2-4数据TLB配置entriesDirectmapped16entriesperway16DTLBentries32entriesperway32DTLBentries64entriesperway64DTLBentries(default)128entriesperway128DTLBentries2.2.2.4中断控制器如图2-5为可编程中断控制器的功能框图,32位中断输出后,经过PICMR的[23]掩码的操作,决定哪些中断时可用的,并传送到处理器触发中断例外。PICMRMaskFunctionINT[31:0]INTEXCEPTIONPICSR图2-5中断控制器可编程的中断控制器:OpenRISC1200架构定义了一个可支持中断输入的中断控制器,它通过掩码寄存器(PICMaskRegister,PICMR)和状态寄存器(PICStatue-8- 哈尔滨工业大学工学硕士学位论文Register,PICSR)来控制可掩码的32个中断输入。2.2.2.5时钟定时器Tick定时器用来调度操作系统和用户任务的高精度时间参考,在每个时钟周期时钟定时器(TickTimerCountRegister,TTCR)增1,。当TTCR的计数值等于模式寄存器(TickTimerModeRegister,TTMR)时,就会触发一个中断,其结构如图2-6所示。TIMRRISCCLKTTCRTICKINT图2-6时钟定时器2.2.2.6电源管理单元[25]OR1200有三种主要特性来降低电源消耗,如表2-5所示。表2-5电源模式电源模式电源消耗降低倍数Slow和Idle2x-10xDoze100xSleep200x2.2.2OpenRISC指令集在OpenRISC1000指令集的主要特征是具有简单而统一长度的指令格式,它[26]包含五个指令子集,如表2-6所示为其五个指令集,及其各种指令集的具体功能。OpenRISC1000指令集还可以自定义指令集,根据自己的需要定义这些指令的[27]功能。表2-6OpenRISC指令集指令集种类功能描述ORBIS3232位的整数指令,基本的DSP指令,32的Load/Store指令,程序流ORBIS6464位整数指令,64位Load/Store指令ORFPX32单精度浮点指令ORFPX64双精度的浮点指令,64位Load/Store指令ORVDX64向量指令,DSP指令-9- 哈尔滨工业大学工学硕士学位论文在OR1200中用到指令集为ORBIS32,其中包含的具体指令及其功能如表2-7所示。表2-7OR1200指令集Opcode(31~26)bit功能0x38加,减,逻辑运算,字节扩展,算术右移,乘法0x31乘法累加,乘法减0x32浮点运算指令0xa向量运算指令0x2e直接操作数位移指令0x12/13跳转指令/带立即数的跳转指令0x4/6/15/27置位/比较/空操作指令/带立即数的乘法及存储指令2.3Wishbone总线的调试与调试2.3.1Wishbone总线特点Wishbone总线是一种较为简单的,端口信号不是很多的总线,现在由OpenCore维护,因此在OpenCore上的很多IP核都是Wishbone总线兼容的。它的优势除了有很多免费,开放的IP核外,简单,灵活,接口少,轻量级,适合用于小型SOC间的IP核间互连。Wishbone总线的特点:(1)简单,接口少,IP核容易挂在总线上;(2)支持结构化设计,在大团队设计时提高效率;(3)数据和总线宽度能够设置成32位或者是64位;(4)支持大端和小段数据流;(5)支持主流的数据传输协议,Read/Write周期,Lock周期,读改写周期;(6)4中IP核之间的互联方式,P2P,Share,Cross,Switch;(7)采用的握手协议,可以匹配速度慢的IP核;(8)支持从设备进行部分地址译码,减少译码时间;(9)支持单时钟周期数据传输;(10)支持正常ACK周期结束,Retry结束周期,Error结束周期;(11)支持多主设备,方便SoC的配置;(12)仲裁方式由用户决定(优先级仲裁,round-robin仲裁等);(13)支持用户自定义,用户能够在地址,数据提供自己想要的信息。-10- 哈尔滨工业大学工学硕士学位论文2.3.2Wishbone总线接口信号Wishbone总线比较简单,接口信号也不是很多,如图2-7所示为其一个点对[24]点连接的接口信号连接图。SYSCONRST_IRST_ICLK_ICLK_IADR_O()ADR_I()DAT_I()DAT_I()备设备主DAT_O()DAT_O()设从WE_O()WE_I()SEL_O()SEL_I()STB_OSTB_IACK_IACK_OCYC_OCYC_ITAGN_OTAGN_I用户定义TANG_ITANG_O图2-7Wishbone接口信号CLK_I时钟信号是由SYSCON产生,并且送入结构中的主从设备,通常是在SYSCON中由PLL产生的,将外部的输入时钟进行分频或者倍频然后得到想要的时钟频率。RST_I复位信号也是在SYSCON模块产生,然后送入主从设备,是一个同步复位信号。ADR_O/ADR_I地址信号,当主设备发起对从设备的访问时,主设备就把要对进行读或者写的地址ADR_O准备好,然后从设备读入这个地址ADR_I。DAT_I/DAT_O主从设备之间的数据信号,数据可以从主设备到从设备,也可以从从设备到主设备,最大可以支持到64位。WE_O/WE_I写操作有效信号,当主设备发起写操作时,这个信号为高,当主设备发起读操作时,这个信号为低。SEL_O/SEL_I选择信号,这是个4位的信号,表示在总线有哪些byte有效,例如在32位总线中,SEL_O=4’h0001,表示第一个byte上数据有效;当-11- 哈尔滨工业大学工学硕士学位论文SEL_O=4’h1000,表示在总线第4个byte上的数据有效。CYC_O/CYC_I,STB_O/STB_I这两个信号为总线周期信号,有效级最高,只有这个信号有效时,其他信号才有意义。当这个两个信号为高时,主从设备才能进行通信。ACK_O/ACK_I主从设备操作的结束信号,ACK表现主从设备操作成功,还有ERR表示操作出错,RTY表示进行重试。TANG_O/TANG_I用户自定义部分,用户根据自己的需要定义其功能。在Wishbone总线中有周期同步和周期异步结束方式。在周期异步方式中,在给定的时钟频率下能够实现更大的吞吐量,但是在这样方式中会产生一个异步回路,在大型的SoC设计中容易成为关键路径,限制系统频率的上升。因此在反馈回路中加入寄存器,将回路切断,但这种方式中每次总线发起操作中,总是需要等待上一个总线周期,浪费一个总线周期,限制了吞吐量。在WishboneRevisionB.3中改进了周期同步方式,解决了需要等待一个总线周期。在WishboneRevisionB.3中采用寄存反馈周期结束方式,在这样方式中因为需要主设备提前通知从设备在下个总线周期中是否发起操作,因此增加了两个信号CTI_O/CTI_I,BTE_O/BTE_I。CTI_O/CTI_I是用来确定采用的那种周期类型,BTE_O/BTE_I是用来识别采用那种突发类型。只用当主从设备都支持CTI_O/CTI_O信号时,寄存反馈总线周期才能用。如果只用一个设备支持CTI_O/CTI_O(主设备或者从设备),例如主设备支持CTI_O/CTI_O,而从设备不支持CTI_O/CTI_O,那么只能采用传统的总线周期结束方式。周期类型地址标签CTI_O/CTI_O能够提供当前周期的额外信息,主设备把这个信息传递给从设备,从设备根据这个信息能够确定在下一个周期进行怎样的响应。CTI_O/CTI_O定义的具体的定义如表2-8所示。表2-8CTI信号说明CTI_O(2:0)描述3’b000传统总线周期3’b001恒定地址突发总线周期3’b010递增突发总线周期3’b011~3’b110预留3’b111突发结束突发地址类型标签BTE_O/BTE_I是主设备传递给从设备关于当前进行怎样的突发,是在CTI_O/CTI_O=3’b010(递增突发总线周期)情况下,地址值是怎样变-12- 哈尔滨工业大学工学硕士学位论文化的如表2-9所示。表2-9BTE信号说明BTE_IO(1:0)描述2’b00线性突发2’b01叠4突发2’b10叠8突发2’b11叠16突发2.3.3Wishbone总线连接方式在加密SoC中IP核之间是用交叉开关的方式进行连接。它允许在一个时候超过一对主从设备进行通信,但不支持两个主设备对一个从设备进行同时访问。如图2-8所示,在同一时刻可能进行通信,主设备A与从设备B的进行通信,与此同时主设备B与从设备A的进行通信,但不能在某一时刻主设备A和主设备B都对某一从设备A/B/C进行访问,这样是不支持的。主设备A主设备B交叉开关从设备A从设备B从设备C图2-8交叉开关连接2.4以太网的整合与调试以太网IP核是一个媒体访问控制核,它一边连接着以太网物理层芯片,另外一边连接着SoC的Wishbone总线。2.4.1以太网IP核的特点[39]以太网IP核具有以下特点:(1)在发送端生成和在接收端检测32位的CRC;(2)前导码在发送时自动生成和在接收端自动删除;-13- 哈尔滨工业大学工学硕士学位论文(3)自动为短的数据包添加数据填充(PAD);(4)在接收端检测过长或者过短的数据包并丢弃;(5)支持10/100Mbps全双工;(6)在半双工模式下,支持载波侦听,有冲突会重发。2.4.2以太网数据帧格式在以太网中,数据是以帧的格式进行传输的,如图2-9所示为IEEE802.3MAC[40]帧格式,表2-10为对其进行的说明。发送时按照帧的格式进行组装数据帧,组装好后发送出去;接收的时候按照帧的格式拆除各个部分,最后得到数据部分。前导码7个字节SFD1个字节目的地址6个字节源地址6个字节序顺送长度类型2个字节发下到净荷数据上从46~1500个字节填充帧校验系列4个字节LSBMSB发送顺序从左到右图2-9以太网数据帧格式表2-10数据帧说明名称长度功能前导码7Byte用于在接收过程中完成同步SFD1Byte表示帧的开始目的MAC6Byte表示当前数据帧要被发送到那个目的MAC地址源MAC6Byte表示当前数据帧是由那个MAC地址所发出的长度/类型2Byte表示当前被发送/接收帧的长度或者类型数据/填充46~1500Byte发送的数据小于46个字节时,则在后面填充上PADFCS4Byte一个32位的循环冗余检验值-14- 哈尔滨工业大学工学硕士学位论文2.4.3以太网整体硬件结构[44]如2-10图所示为以太网的结构框图。EthernetCoreMACTXDataTXDataTXEthernetMACTXControlTXPHYSignalsControlSignalsMACControlTXControlModuleSignalsWishboneEthernetBusHostinterfaceEthernetPHYRXDataRXEthernetMACTXControlSignalsRXPHYControlSignalsMIIManagementTXControlModuleManagemenSignalstData图2-10以太网结构2.4.3.1MAC控制模块实现100Mbps全双工模式下的IEEE802.3u流量的控制,锁存发送和接收过程中的各种结果:包括发送成功/失败及其各种网络异常。2.4.3.2以太网发送模块它的主要功能是在发送过程中在数据帧里面加上7个字节的前导码,4个字节的循环冗余检验值(CRC),还有可能加上填充(PAD),及处理在发送过程中可能[42]出现的问题,并将形成的发送帧转换成能被物理层芯片所接收的格式。如图2-11所示为发送过程的状态机。系统开始工作时,直接跳转到IDLE,当没有发送请求时,就停留在状态这个状态,如果WBI发出请求时,通过置位发送信号为高两个时钟周期,状态机就进[11]入到PRE前导码,在PRE状态通过置位发送使能信号为高,通知以太网物理层芯片传输开始。在PRE状态MTxD被设置为0x5,在前导码(0x5555_5555)被发送后,紧接着发送SFD,状态机就进入DATA0,在这个状态,一个字节的低半个字节被发送,同时它通过TxUseData通知WBI准备好下一个要被发送的字节,然后进入DATA1,在这个状态,一个字节的高半个字节被发送,接就在这两个状态之间来回循环直到最后一个字节被发送,WBI通过置位TxEndFrm来表示这个是最后一个字节需要被发送的。-15- 哈尔滨工业大学工学硕士学位论文IPGIDLEPREDATA0帧间隙总线闲前导码数据最顺利的情况JAMDefer冲突加强总线忙DATA1数据遇到总线忙FCSPADBackoff遇到冲突帧校验填充退避图2-11发送状态图在传输过程中,可能出现的以下意外,根据寄存器的配置,然后相应的跳转。如果传输的数据大于或者等于最小帧数(这个值MINFL是在PACKETLEN寄存器中设置的),且循环冗余检验被使能(模式寄存器中CRCEN设置为1或者在发送描述符中设置了CRCenable=1),则状态机在DATA1后跳过PAD直接进入FCS状态,然后进入Defer,然后重复前面的过程。如果传输的数据大于或者等于最小帧数(这个值MINFL是在PACKETLEN寄存器中设置的),且循环冗余检验被使能(模式寄存器中CRCEN设置为0和在发送描述符中设置了CRCenable=0),则在DATA1后跳过PAD和FCS状态,直接回到Defer,然后重复前面的过程。如果传输的数据小于最小帧数(这个值MINFL是在PACKETLEN寄存器中设置的),并且PAD使能(模式寄存器中PAD=1或者发送描述符PAD位被设置为1),则在数据后面补0,直到数据大小达到最小数据帧值,状态机右DATA1进入PAD,然后FCS,接着进入Defer,然后重复前面的过程。如果传输的数据小于最小帧数(这个值MINFL是在PACKETLEN寄存器中设置的),并且PAD没有使能(模式寄存器中PAD=0和发送描述符PAD位被设置为0),且循环冗余检验被使能(模式寄存器中CRCEN设置为1或者在发送描述符中设置了CRCenable=1)状态机由DATA1进入FCS,接着进入Defer,然后重复前-16- 哈尔滨工业大学工学硕士学位论文面的过程。如果传输的数据小于最小帧数(这个值MINFL是在PACKETLEN寄存器中设置的),并且PAD没有使能(模式寄存器中PAD=0和发送描述符PAD位被设置为0),且循环冗余检验被没有使能(模式寄存器中CRCEN设置为0和在发送描述符中设置了CRCenable=0)状态机由DATA1直接进入Defer,然后重复前面的过程。在传输过程中可能发送冲突,发送模块通过发送0x9999_9999来加强重复,停止传输,进入JAM状态。在重新开始传输前,发送模块实现一个退避算法,在等待这个退避算法计算出来的时间后才从新传输,SM由JAM进入Backoff状态。在传输过程中,随时可能遇到总线忙的状态,状态机随时可能跳转到Defer总线忙的状态。2.4.3.3接收模块接收来自物理层芯片的半个字节的数据,并且转换成一个字节,存储在接收FIFO中,之后通过Wishbone接收存储在主存储器中。在接收过程中,地址检测器检测接收的数据帧是否发到本站,目的地址相同则是,否则不是,这个数据帧将被抛弃。接收计时器计算接收到得数据帧是否满足要求,在最大数据帧和最小之间。接收间隔时间模块,计算连续接收的两个数据帧被接收的间隔时间是否满足最小的间隔时间,100Mbps下是960ns,10Mbps下是9600ns。不满足的都被抛弃。循环冗余检验模块检验接收帧是否没有被破坏。如图2-12所示为接收状态机。SFDPRE帧定界检测前导码DATA0数据低4位最顺利的情况IDLE总线闲DATA1遇到总线数据高4位忙Drop丢弃图2-12接收状态图-17- 哈尔滨工业大学工学硕士学位论文系统工作时,直接到IDLE,如果没有接收数据一直停留在IDLE状态,当有数据在MAC物理层时,物理层通过置位MRxDV为高。状态机进入PRE前导码,接收到7个字节的0x5555_5555后,表示正确的前导码接收到,然后进入到SFD,在这个状态中接收到1个字节的0x5d。然后进入哪个状态,由IFGCounterEq24的值决定。当IFGCounterEq24=1时:在数据0和数据1循环接收数据,直到被通知接收[45]数据帧的结束,MRxDV的值为0,最后进入到IDLE状态。所有的再重新开始。当IFGCounterEq24=0时,状态机进入Drop状态,直到物理层清除MRxDV信号。然后进入IDLE状态,所有的再重新开始。2.4.3.4以太网接口模块在以太网的从设备接口逻辑中,包含了对以太网寄存器的配置,在以太网中总共有21个寄存器,使用时根据各个寄存器的地址,写入相应的值,对模式寄存[47]器,发送描述符个数寄存器,MAC地址寄存器等根据自己的需要写入相应的值。在主设备接口模块中,包含存放描述符的RAM,每一个缓存描述符位8个字节,前4个字节用于描述发送或者接受的状态,如图2-13所示,为发送描述符的前4个字节,定义了发送的长度,这个描述符是否准备好,是否产生中断,是否为最后一个描述符等,表2-11是对发送描述符各个位的具体描述。31302928272625242322212019181716LEN1514131211109876543210RDIRQWRPADCRCReURRTRY[3:0]RLLCDFCS图2-13发送描述符前4字节描述符后4个字节用过描述在发送时从主存储器那个地方去发送数据,在接收时把接收到得数据存储在主存储器那个地方。只要发送/接收描述符中的READY位被置为后,这个发送/接收描述符就是只读,不能在更改,直到发送/接收模块对[48]READY清0。如图2-14所示为发送描述符的后4字节,其32位指出从哪个地址取出要发送的数据。31302928272625242322212019181716TXPNT1514131211109876543210TXPNT图2-14发送描述符后4字节-18- 哈尔滨工业大学工学硕士学位论文[49]发送和接收描述符总共有128个,写进寄存器里面为发送描述符,剩余的就为接收描述符(128-TX_BD_NUM)。例如TX_BD_NUM中写入的数据时0x20,则发送描述符就有32个,接收描述符就有96个。地址从0x400开始。发送描述符能够访问的空间为0x400~0x4fc(8*0x20+0x400-4)。接收描述符能够访问的空间为0x500(8*0x20+0x400)~0x7fc。表2-11发送描述符Bit#访问描述31:16RW这个描述符里要发送的字节数15RW发送BD是否准备好14RW中断需求使能13RW是否为最后一个描述符12RW是否在短的数据包后加入PAD11RWCRC使能10:9RW保留8RW暗流发送这个描述符7:4RW重试次数,当发送不成功3RW重发限制2RW延迟冲突发生1RW延迟指示0RW载波丢失2.4.3.5MII模块这个模块提供到PHY的接口,MAC通过MII对物理层进行配置和管理,读取里面寄存器的值。这个模块值包含两个信号时钟信号MDC和数据输入/输出信[50]号MDIO。这个时钟是读取和配置物理层的时钟,是主设备时钟的分频,这个分频系数是由MIIMODER寄存器中决定的,一般这个时钟值小于10MHZ。MDIO是一个双向信号,输入为从物理层到MAC的数据输入,输出为MAC到物理层的数据输出,每次输出/输入4个有效数据,数据的读写都是发生在MDC的上升沿。2.5UART的整合与调试2.5.1UART的特点UART是一种通用异步通信协议,在加密SoC中用于SoC与PC机间的通信,-19- 哈尔滨工业大学工学硕士学位论文波特率设置为11520。如图2-15所示为UART发送数据格式,在检测到由高到低的变换后,开始发送数据,先发送数据的低位,发送5~8位的数据,接着是可选的奇偶校验位,用来检测在发送过程中是否出现错误,最后有一个停止位可以设[41]置为1/1.5/2位。LSBMSB00/10/10/1...0/10/10/11100/1奇偶起始位停止位5~8位数据位先发送低位校验1/1.5/2位可选图2-15UART发送格式波特率的设置是通过两个时钟分频寄存器设定,如表2-12所示这两个寄存器的值组成一个16位的分频值。这两个寄存器在线性控制寄存器的最高位为高时,能够被访问,进行设定分频值。表2-12除数寄存器名字地址宽度访问描述除数Byte108RW除数LSB除数Byte218RW除数MSB2.5.2UART启动过程该UART核支持8位或者是32位的数据,其中8位是默认的配置。配置为32位数据时,它跟Wishbone总线是完全兼容的,当配置为8位时,用Wishbone总线上的[SEL_I]信号来说明在32位中那个字节为有效位。在32位时,地址为5位,在8位时,地址为3位。在复位时,UART16550IP核执行以下任务:(1)接收和发送FIFO清零;(2)接收和发送移位寄存器请零;(3)线性控制寄存器设置为8bitsData,NoParity,1Stopbit;(4)禁止所有中断;(5)线性控制寄存器第7位,设置为1,这样就可以访问除数寄存器;(6)在两个除数寄存器写入分频系数的高8位和低8位;(7)线性控制寄存器第7位,设置为0,数据可以被发送和接收;(8)设置FIFO触发深度,越过的深度,产生的中断就越少;(9)使能中断。-20- 哈尔滨工业大学工学硕士学位论文2.6加密IP核整合与调试下面对用于被测试的加密IP核的特性进行说明,每个加密IP核都设计成Wishbone总线接口,方便加入SoC中。2.6.1AES的整合与调试为满足智能电网安全芯片对信息安全性、工作环境特殊性和可抵御强大的和实时的攻击等特殊要求。此外,加密AES核还具备以下性能特点:(1)支持加/解密运算;(2)密钥长度支持128bit即AES-128模式;(3)支持反馈工作模式;(4)带Wishbone总线接口,方便加入加密SoC中;(5)工作频率可达100MHZ,数据吞吐率达1Gbits/sec,Slice资源不超过2000个,每11个或22个周期就能得到1个加密或解密结果。AES加密IP核内部有5个寄存器以供CPU读写控制操作,可以通过将IP核挂载在基于Wishbone总线的加密SoC系统上,由OR1200CPU执行汇编指令来控制IP核进行的加解密或解密工作,实现了对AES加密算法IP核的FPGA验证。2.6.2ECC的整合与调试ECC加密IP核是基于二进制的椭圆曲线加密算法设计而成,它是利用163位的数据和163位的密钥产生一个163位的加密或者解密结果。此IP核主要包括如下几个层次:(1)有限域层;(2)点乘层;(3)协议层。该加密算法为非对称加密算法,因此加/解端的采用不同的机制。在本设计中把加密端和解密端的状态机融合在一起放在ECC加密IP核中,此IP核就既可作加密端也可作解密端。2.6.3RSA的整合与调试考虑到个人信息的安全对智能电网安全芯片的重要性,也为了抵御不同强度的攻击保障智能电网安全芯片的安全性,还有对加密速度的要求,RSA加密IP核设计为:-21- 哈尔滨工业大学工学硕士学位论文(1)可支持加密密钥公开;(2)支持RSA加密和解密的双重运算;(3)密钥长度置为1024位;(4)接口信号兼容Wishbone总线。此IP核用1024位的数据和1024位的密钥,产生一个1024位的加密结果或者解密结果。此IP核同时具有加密和解密的功能所以既能为加密的一方所用也能为解密一方所用。2.7本章小结本章中首先整合调试了32位的RISCCPUOR1200,它在加密SoC中负责把加密用数据和密钥导入加密IP核,控制何时让加密IP核进行加密,并且把加密后的数据通过UART16550传输出来。Wishbone总线把加密SoC中起到IP核连接起来。各个IP核按照Wishbone总线协议连接在Wishbone总线上。在加密SoC中采用了交叉开关的互联方式,支持在同一时刻,超过一对的主从设备进行通信。太网IP核在加密SoC中作为通信模块,它是带有32位的CRC;支持最小的间隔时间,接收时具有长度检测功能,检测大于最大长度的数据帧或者小于最小长度数据帧的;在发送时在小于最小长度的数据帧后面主动加上PAD;带有Wishbone总线接口。最后整合了基于工业标准的串行通信协议UART16550,说明其数据的发送过程。它用于调试过程中,把数据的输入或输出到加密IP核。-22- 哈尔滨工业大学工学硕士学位论文第3章SoC的功能仿真在前一章中,对加密SoC中的主要的IP核进行了整合和调试,着重掌握各个IP核的功能特点,及其寄存器的组成。在分析完各个IP核后,把它们集合在一起,组成加密SoC系统。在本章中,对构建的SoC进行验证,总共有以下验证,第一次是SoC基本功能的验证,验证SoC能否正常启动,并且通过UART完成字符打印功能;第二次验证是通过UART完成对加密IP核AES、ECC的功能验证;第三次验证是通过以太网和UART对加密IP核AES、ECC的加密和解密功能再一次验证。3.1最小调试系统功能验证对UART的验证,也就是对SoC能够启动,并能完成初步功能的验证。在这个验证中,SoC中只有OR1200,Wishbone总线,CLK/RST,BOOTROM/RAM,UART模块,也就是最小的调试系统。验证SoC能够正常启动,并且完成从OR1200发送指令,把相应的字符通过UART传输到PC机上的功能。在这里采用两个方法来实现这个功能,第一种方法是采用用C语言写基本的程序,然后经过Linux下的GNU_TOOLCHAIN工具链进行编译,转换,最后得到能被OR1200识别的十六进制的机器码,用于RAM的初始化,作为CPU要执行的指令,完成相应的功能。第二种方法,根据OR1200的指令集,编写汇编代码,然后翻译成十六进制的机器码,作为RAM的初始化文件,然后被CPU顺序读取。3.1.1C语言实现用C语言实现时,首先在Linux下安装相应的工具,包括主机工具GCC,Make等;目标系统工具GNU_TOOLCHAIN;EDA工具IcarusVerilog。然后编写相应的C语言,用GCC进行编译,用IcarusVerilog进行仿真,这些都是在Make文件下一键操作,只需输入相应的Make指令。这种方式下,只需要编写相应的C语言程序,并且放在相应的位置,然后执行相应的Make指令,Make指令会根据Makefile文件中的程序,查找所需的文件,并且完成编译、仿真、输出相应的结果的功能。实现时先编写一个名为uart-simple.c的文件,功能是输出一句话“HellowordfromUART0”,然后通过执行相应的Make指令会输出如图3-1所示的结果,图中输出为“HellowordfromUART0”,与我们编写的C语言要求实现的功能是相同的。-23- 哈尔滨工业大学工学硕士学位论文在这次编译后会产生一个uart-simple.vmem的文件,把这个文件经过脚本语言转换成COE格式文件用来对RAM的初始化。图3-1IcarusVerilog仿真结果上面的操作时在Linux下进行,接着的操作转移到Windows下进行,在ISE中建立实际的工程,通过把上面转换得到的COE初始化片上RAM。然后ISE调用Modelsim进行仿真。Windows下的这个仿真跟上面Linux的仿真的区别,时钟是通过DCM生成的50MHZ,CPU读取的是存放在通过CoreGenerator生成片上RAM中的指令,而不是一个内存文件(前面所说的.VMEM)。如图3-2所示为Modelsim仿真在Transcript的输出,输出结果为先有一个换行回车,一个TAB键,然后输出HelloworldfromUART0。与在Linux下IcarusVerilog仿真结果是一致的。图3-2Modelsim仿真结果如图3-3所示为Modelsim的波形仿真输出,查看UART输出端口stx_pad_o,其输出数据位:□00101_0000□1□01011_0000□1□01001_0000□1□00001_0010□1□0-24- 哈尔滨工业大学工学硕士学位论文1010_0110□1EA因为UART输出时先输出LSB,最后输出MSB,这些数据实际上位0a,0d,09,48,65。翻译成相对应ASCII字符,0a为新的一行(NewLine),0d为回车(CarriageReturn),09为TAB(HorizontalTab),48为H,65为e。这些与在Transcript输出的结果是一致的。图3-3C语言实现UART仿真输出3.1.2汇编实现在第二种方法用汇编语言实现时,实现过程中就不需要用到Linux下的工具链,首先根据需要的功能直接编写汇编语言,然后根据OR1200的指令集翻译成十六进制的机器码,把机器码转换成用于片上RAM初始化的格式文件,最后通过ISE调用Modelsim进行功能仿真。汇编程序主要实现以下功能对UART进行初始化,进行波特率的设置,工作模式的配置,和要CPU要发送的字符,在这里为Helloworld。如图3-4所示为仿真结果,通过查看串口的发送端口信号stx_pad_o的输出为:00001_0010101010_0110100011_0110100011_0110101111_01101其代表的字符是Hello,与我们在汇编程序中要发送的字符一致。图3-4汇编实现UART输出结果从上面的两种方式的验证结果,我们可以得出,构建的SoC能够正确的启动,并且完成正确的UART的打印功能。在第一种用C语言实现方式中,要对C有熟练的掌握,编译时需要一些库函数的支持,通过工具链编译,并且转换后的机器码大概有8千条左右的指令;用第二种方法有汇编语言实现时,需要对OR1200的指令集要熟悉,编写的汇编语言,翻译成机器码时,一般只有一百条左右。用汇编实现时,程序可读性差,但指令-25- 哈尔滨工业大学工学硕士学位论文短小精悍,容易跟踪调试。3.2加密IP核功能验证对最小的SoC调试系统的验证后,下面利用UART16550对加密IP核进行验证,如图3-4为验证过程中的数据流图,在验证过程中从RAM给加密IP核提供数据,在加密完成后把数据通过UART导出。图3-4内部数据流3.2.1AES与RSA加密功能验证首先在SoC系统中加入AES加密IP核,需要在顶层进行端口例化(采用ifdef的条件编译),在Wishbone总线仲裁器中加入相应的端口,并且为AES加密IP核分配地址。在这里加密IP核的顶层文件名要和顶层文件名中的模块名字一样。其次是编写汇编语言,实现对AES的验证。汇编语言的具体内容如下,首先是对UART的配置,对偏移地址为2的FIFO控制寄存器写入0x7,对其中的发送和接收FIFO进行清除;对偏移地址为1的中断使能寄存器写入0x0,屏蔽所有的中断;对偏移地址为3的线性控制寄存器写入0x3,选择8位的Data,1位Stopbit,NoParity;对线性控制器的第8位写入1,表示开始进行波特率的分频系数的设置,先写入除数寄存器的高8位,在这里为0x00,然后再往除数寄存器的低8位写入0x1b,因为系统时钟为50MHZ,波特率为11520,分频系数为27,即为1b;对线性控制寄存器的第8位写入0,关闭对除数寄存器的操作,这时才可以正常访问发送和接收FIFO。然后是对加密IP核AES传输加密数据和密钥,通过l.ori和l.sw指令往AES核里写数据,但每次只能传输16位有效数据,因为l.ori指令立即数有零扩展,只有低16位为有效数据,在AES的接口模块也设置成每次从总线的32位数据中,接收16位有效数据,接收8次组成128位有效数据,再接收8次组成128位的密钥,接收完数据和密钥后,加密IP核进行加密。最后在加密完成后,加密IP核AES往总线上传输加密完成信号,通过CPU读取这个信号得知加密完成,在这里是通过比较指令l.sfeqi和循环语句loop实现的,只要没收到这个信号,-26- 哈尔滨工业大学工学硕士学位论文程序就在这里一直循环,之后把加密完成数据导入到UART核,因为UART设置为8位,而总线是32位的,因此从AES核每次只传输8位有效数据给UART核,这些数据都是写入UART地址为零的发送FIFO中,用到的指令为l.lbz和l.sb,先把数据存放到中间寄存器,然后再传输给UART核。最后把把写完的汇编程序翻译成十六进制的机器码,用于RAM的初始化,然后用ISE调用Modelsim进行仿真。如图3-5所示为,AES加密IP核利用128位的原始数据(text_in)和128位的密钥(key)进行加密,得到加密结果128位的加密结果(text_out)。在加密完成后会产出一个加密完成信号done,在done信号作用下AES加密IP核在总线上输出一个32’h0000_0001。通知CPU加密已经完成,然后把加密结果传输到UART。图3-5AES加密完成如图3-6所示为把加密数据(txet_out),传输到UART。UART模块在选通信号wb_cyc_i和wb_stb_i的作用进行写数据,此时wb_we_i信号为高,每写一个8位的数据进UART模块,UART都会产生一个wb_ack_o信号,表示正确的写入。连续写16次,就把加密数据全部写入了UART模块。图3-6UART输出AES加密结果在上面的测试中,数据和密钥是提前写在RAM里面的,不能够实时的加密所想要的数据,接下来进行了用UART输入加密原始数据和加密密钥。如图3-7所示,在PC上通过UART发送明文,在加密完成后通过UART导出密文。汇编代码的编写,首先是由UART输入数据(此前进行UART进行配置),然后把UART输入的数据传输到AES加密IP核,在把加密完成的数据导入UART显示出来。-27- 哈尔滨工业大学工学硕士学位论文如图3-8所示为,图中所示信号uart_string为UART接收端要准备接收的数据,uart_string为256位的数据,为128位原始数据和128位的密钥。在被UART接收时每次接收的是8位如tx_byte信号所示。信号uart_rx与信号srx_pad_i值是一样的,如图所示他们的值为0100_1100和1100_0010表示被接收的数据位32和43。在此图中能够看到原始数据和密钥被UART正确的接收了。图3-7UART输入输出图图3-8UART输入加密数据如图3-9所示,图中所示与从RAM中给数据的结果是一样的,因为前面已经验证在原始数据和密钥的输入下能够正确的输出加密结果。图3-9AES加密完成在这个仿真验证中,只要原始数据和密钥能被UART正确的接收,并且发送到AES加密核,就能够得到正确的结果。只是在时间上会有所不同,因为在UART接收原始数据和密钥时花费的时间很长。当加密功能能够正确时,解密也同样能够正确的进行。不需要波形上验证,在V2PRO板子上验证就可以了。RSA也进行相同通过UART输入数据和输出加密结果的验证,这里不在给出截图。-28- 哈尔滨工业大学工学硕士学位论文3.2.2ECC加密功能验证ECC的验证过程跟AES验证过程是原理是差不多的,就是在原始数据和密钥上不太一样,ECC加密IP核的原始数据和密钥都是163位的。验证过程中,先在RAM中准备好163位的原始数据和163位的密钥,然后传送给ECC加密核,然后把加密结果传送给UART显示出来。如图3-10所示为加密的过程,在163位的原始数据text_in和163位的密钥key作用下,ECC加密IP核开始加密,加密结果为163位的text_out。并且在同一时刻产生一个加密完成信号state_reg[2]。如图所示state_reg=8’b0000_0100,state_reg[2]的值1,说明加密的完成。在完成信号state_reg[2]的作用下在下一个时钟在总线上传出一个信号给CPU,通知OR1200加密完成可以把加密结果传输到UART输出,如图中wb_dat_o=32’h0000_0001。图3-10ECC加密完成在加密完成后,把加密结果text_out传输给UART。因为加密结果为163位,而UART每次传输为8位,所以在输出的时候在加密结果txet_out前面补了五位的零。所以传输给UART的第一个字节为8’h00,如图中的wb_dat_i所示。然后把解密结果text_out从高位开始输出,总共21个字节,每从ECC加密IP核传输一个字节的数据给UART,UART模块就会产生一个成功完成信号。因为这个过程跟上面AES传输加密结果是一样的操作,这里不再给出UART传输截图。3.3以太网调试系统的功能验证3.3.1以太网发送和接收功能验证在SoC中加入以太网前,首先是对以太网单独的IP核进行仿真验证,然后把它加入SoC中,先进行发送功能仿真,然后进行接收功能仿真。在这里引入以太网,是想做个双系统的演示系统,在SoC1完成加密,然后把密文通过以太网传输给SoC2进行解密,这样更符合现实的情况,其结构如图3-11所示。在实现过-29- 哈尔滨工业大学工学硕士学位论文程中,先实现单系统的功能。图3-11双系统演示先验证发送功能,由FPGA发送,PC端进行接收。在验证过程中,首先在RAM准备好数据,按照数据帧的格式准备,验证的是发送一个60字节的数据包。然后是汇编代码的编写,首先要对以太网的21个寄存器进行配置,包括配置它的工作模式,是否产生中断,发送描述符的个数,MAC地址的设定,及其PHY的工作的模式的设置,其余使用默认值。汇编的内容具体如下,对偏移地址为0x400发送和接收描述缓存描述符RAM内写入一个发送描述符,在前4个字节写入0x003c_3800设置模式,前16位表示发送的长度为60字节,BIT13为1表示这是在RAM里面的最后一个发送描述符,如果再发送的话会继续读这个发送描述符。在后面4个字节写入0000_009c,表示在RAM这个位置开始读取要发送的数据。在这些写完后,在前4个字节的写入003c_b800,就是在BIT15写入了1,这位表示发送描述符的准备好了,此后发送描述符不能再被修改,但传输完这个数据帧时,发送模块会清除这位。对寄存器偏移地址为32’h00的模式寄存器中写入0x0000_2402表示在数据帧中不加入PAD,CRC使能,采用全双工模式,发送使能。对偏移地址为32’h20的TX_BD_NUM寄存器中写入0000_0001表示有一个MAC内置的描述符RAM里面有一个发送描述符,有127个接收描述符可以供使用。对偏移地32’h40和32’h44的MAC_ADDR0/1寄存器写入070800000807,表示以太网的MAC地址为这个值,其他的寄存器采用默认值,为了跟MAC的配置相同的工作模式,物理层采用的也是100Mbps全双工自适应模式。如图3-12所示为发送测试图,wb_clk_i为系统时钟50MHZ,mtx_clk_pad_i为发送时钟,因为采用的是100Mbps,mtx_clk_pad_i为25MHZ(若采用10Mbps则mtx_clk_pad_i为2.5MHZ)。发送数据有32位的TxData_wb转换成8位的TxData,最后变成能够被PHY接收的4为的mtxd_pad_o。图中先发送的数据为PC端的MAC地址48’h00e081b13eab(目的地址DA)。然后是FPGA端的MAC地址48’h070800000807(源地址SA),最后就是长度类型和发送的数据了。因为-30- 哈尔滨工业大学工学硕士学位论文截图的清晰度问题没有全部截取出来,只是截取了发送的开始一些部分。图3-12以太网发送以太网接收测试中,因为数据帧是从PC机发送给FPGA,为了能看到FPGA是否正确接收数据,这里用UART显示被FPGA接收的数据帧。如图3-13所示为接收部分的数据流。汇编的具体内容如下,对偏移地址为0x7f8接收描述符前四个字节里面写入0x0000_2000,表示这个接收描述符是最后一个描述符,并且接收描述符没有准备好,然后对偏移地址0x7fc后面4个字节写入ox0000_009c表示把接收的数据存储在主存储器RAM的0000_009c的位置。然后对偏移地址地址0x7f8的前面4个在写入0000_a000,因为bit15为状态位,在bit15=0的时候,表示与这个描述符相关的缓冲区有数据或者发生了错误,这个描述符能被写或者读,但这个描述符是不能用的。当bit15=1时,表示接收缓冲区是空的,准备好了接收数据。对偏移地址为32’h00模式寄存器中写入0000_0461,表示是全双工模式,接收最小间隔设置,检查接收的数据帧是否发送给自己的,接收使能。PHY还是采用上面一样的配置。对偏移地址为32’h20的TX_BD_NUM写入0000_007f表示接收描述符个数为1。对偏移地址为32’h40和32’h44的MAC_ADDR0/1寄存器里面写入48’h0506_0000_0605。然后对UART进行和前面一样的配置。最后把接收到的32位数据进行逻辑右移4次,每次移动最低8位给UART。图3-13以太网接收其中mrx_clk_o为25MHZ,clk为50MHZ,可知采用的是100Mbps。接收数据由PHY传输来的半个字节的mrxd_o,在接收模块转换成8位的RxData,再在总线接口单元转换成32位的m_wb_dat_o,最后通过总线传输到主RAM中存储。上面只是表示在仿真时正确接收的数据,接下来是把存储在RAM的数据帧发-31- 哈尔滨工业大学工学硕士学位论文送到UART显示出来,因为存储在RAM中的数据是32位,而在UART模块接收为8位,因此进行了字节截取。从RAM中读取一个字,然后每次传1个字节给UART。这个字是进行逻辑右移4次,每次传输一个字节给UART。如3-14图所示在选通信号wb_cyc_i的作用下,往UART写入数据wb_dat_i,先后写入00,00,06,05。这4个字节是由上m_wb_dat_o写入到RAM中的数据按照逻辑右移得来的。可以看到,由MAC接收的数据,并且被存储在主RAM中的数据被正确的传输到了UART。从上面的测试可用看出在SoC中加入以太网的接收和接收功能都能正确的工作。图3-14UART输出3.3.2AES与ECC的加密通信功能验证上面的以太网的测试是单独MAC的发送和接收的测试,传输的只是普通数据,并不是加密数据。在下面的测试中加密IP核通过以太网来传输要加密的数据或者是加密完成后的数据。AES、ECC的以太网验证过程是类似,下面以ECC为例。在这个测试中,主要测试数据是否被正确传输,是否传输到RAM,是否被加密核读取,加密完成的数据是否被读出。所以上位机端发送的数据为随便一组数据。其数据流如图3-15所示。在测试时,通过PC端发送加密数据给SoC,首先MAC会把接收到的数据存储在RAM中,然后加密IP核ECC从RAM中读取要加密的数据,最后把加密完成的数据通过UART显示出来。PCRAM加密IP核UART图3-15以太网测试数据流汇编语言具体内容如下:对UART进行初始化,这里设置跟前面加密核UART验证中的配置一样;准备一个接收描述符,配置以太网的12个寄存器,这些跟前面的以太网接收测试设置一样;把接收到的数据传输给加密IP核,每次传输32位,在加密IP核内也每次接收32位有效数据,然后是一个循环和比较程序,CPU-32- 哈尔滨工业大学工学硕士学位论文检测加密是否完成,当检测到完成时,把加密完成数据传输到UART。如图3-16所示在接收时钟的控制下,接收有PHY发送过来的数据帧,4位的MRxD组成8位的RxData,最后组成32位的RxDatalatched2,传输到RAM中存储。图3-16MAC端接收PC数据如图3-17所示,text_in是由从RAM中读取出来的要加密的数据,这些数据是由MAC经过上图的RxDatalatched2存储在RAM中的数据,在最前出现个0,是因为原始数据时163位,图中显示了5个字,共160位,最高3位为前面一个字(25262728)的最后3位,也就是3’b000。在密钥的共同作用下,完成加密得到加密数据text_out。图3-17ECC加密数据如图3-18所示,为把上图中的加密数据163位text_out,用UART显示出来。每次读取一个字节的数据,跟前面提到的一样,在163前面补充了0,所以第一个数据位07。通过总线把text_out传输到UART模块的wb_dat_i。从上面可以看出数据能够正确的从PC机发送到RAM,并被正确的加密,最后显示出来。图3-18UART输出加密数据AES的加密通信测试过程和ECC测试是类似的,它们的原理是一样的,都是通过PC机发送要加密的数据,然后把加密完成的数据传输出来,只是每次传输给AES数据为128位,过程类似,因此这里不再给出截图。-33- 哈尔滨工业大学工学硕士学位论文3.4本章小结本章中首先对最小调试系统进行了验证,分别用到了用C语言实现和汇编实现。对UART的验证,即对SoC基本功能的验证,表明这个SoC能够正确的启动,并且完成相应的功能。CPU,总线,UART,BOOTROM/RAM等IP核能够协同的工作。当SoC的基本功能验证后,我们就能在SoC中加入加密IP核,对其进行验证。对AES/ECC共同用到的加密方法是通过SoC内部RAM中,给定加密数据,然后通过UART把加密后的数据传输出来。其中对AES的验证还用了通过UART的导入加密数据,在加密完成后也通过UART把加密后的数据传输出来。在加入UART后,在SoC中还加入了以太网IP核。首先是对以太网的功能验证,对其寄存器配置后,验证其以太网的发送和接收功能。然后通过以太网对加密IP核AES/ECC再次进行验证,通过以太网把需要加密的数据导入到加密IP核,通过UART把加密后的数据传输出来。总之,通过UART和以太网对加密IP核的验证,证明了加密IP核的功能正确性。-34- 哈尔滨工业大学工学硕士学位论文第4章SoC的FPGA原型验证上面一章对SoC的基本功能进行了功能仿真,还对加密IP核进行功能验证,最后对单系统的以太网发送和接收进行了功能仿真。在这一章中将对上面进行的功能仿真,进行FPGA验证。用到的板子为Xilinx的V2PRO开发板,带有通过串口和以太网网口。首先对UART进行C语言和汇编语言两种实现方式的FPGA验证,然后对加密IP核利用UART进行FPGA验证,接着为对以太网加入SoC后的发送和接收的FPGA验证,最后利用以太网对加密IP核进行加密和解密的FPGA验证。4.1最小调试系统的FPGA验证在对构建完成的最小调试系统进行功能仿真后,对其进行FPGA验证,验证的UART的打印功能,和PC机的通信功能,与此同时还验证最小型SoC的系统启动问题,SoC的复位,时钟等基本功能。4.1.1最小调试系统的C语言实现在最小调试系统验证中,首先在Linux下编写C语言,然后通过GCC进行编译,用IcarusVerilog进行仿真,这些通过Makefile文件来操作,非常方便批量处理,编写的Mikefile文件,能够自动把所需要的文件联系起来,并且按照一定的顺序执行相应的指令。在一键Make指令后,能够完成编译和仿真,生成相应仿真结果。在仿真结果中会产生一个VMEM格式的文件,通过perl脚本转换,转换成RAM能够识别的COE初始化文件。然后用Modelsim进行仿真,在仿真正确后,把整个工程综合,布局布线,生成BIT文件,最后通过USB下载到V2PRO开发板上,通过上位机上的串口助手显示UART传出的字符。根据在SoC中UART的分频设置,波特率为115200。并且在串口助手上选择不用十六进制显示,若为十六进制显示,则不会显示字符,而是相应的十六进制数。如图4-1所示在串口助手介绍窗口上显示为Helloworldfromuart0,并且在显示这个字符串之前,还现在一个换行回车,和一个TAB键的功能,这个结果和上一章的功能仿真的结果是一致的,并且和我们相应的功能是一样的,说明了UART的C语言的FPGA验证时正确的,如表4-1为经过ISE综合后的相应的FPGA的综合报告。-35- 哈尔滨工业大学工学硕士学位论文图4-1C语言实现UART发送表4-1C语言实现资源报告NameTotalusagePercentageNumberofSlice5949/1369643%NumberofSliceFlipFlops3695/2793213%Numberof4inputLUTs11135/2739240%MAXFrequentcy80.185MHZ4.1.2最小调试系统的汇编语言实现在用汇编语言实现的过程中,就不需要用到GNU_toolchain进行编译。通过编写汇编语言,转换成RAM的初始化文件。然后在ISE10.1工程中生成的片上RAM加入这个初始化文件,最后把整个工程综合、布局布线、生成BIT文件、下载到V2PRO板子中。汇编实现过程中,实现的主要内容是系统启动时从BOOTROM跳转到RAM中,在RAM中的内容是对UART的初始化,主要是波特率的设置,和工作模式的设置,然后是要通过UART发送出去的字符,在这里是Helloworld。如图4-2所示,在UART接收窗口接收的内容为Helloworld,与上一章中在Modelsim仿真的结果相同,说明写的汇编语言满足功能,如表4-2为相应的资源报告。-36- 哈尔滨工业大学工学硕士学位论文图4-2汇编实现UART发送表4-2汇编实现资源报告NameTotalusagePercentageNumberofSlice6362/1369646%NumberofSliceFlipFlops3781/2739213%Numberof4inputLUTs11933/2739243%MAXFrequentcy79.718MHZ4.2AES加密和解密的FPGA验证在AES验证过程中,采用了两种方法验证:第一种方法是采用在RAM中直接给定加密所需数据;第二种方法是通过PC机上的UART串口助手的发送窗口发送加密所需数据。在第一种方法实现过程中,汇编实现的内容是UART的初始化,工作模式的设定,波特率的设置,给加密IP核AES要加密的数据,判断加密是否完成,并且读取AES加密后的数据给UART。如图4-3所示为在UART串口助手上显示的加密后的数据,跟上一章中Modelsim的仿真结果相同,说明加密IP核AES的FPGA验证正确。在这里UART的设置跟前面一样,但是因为加密结果为数字,不是字符,在串口上选择十六进制显示。-37- 哈尔滨工业大学工学硕士学位论文图4-3AES加密完成在第二种方法中,汇编实现主要内容是UART的初始化,设定工作模式,及其发送和接收数据的波特率,接收从PC端的UART助手发送过来的数据(数据+密钥+控制信号),并且把接收的数据按顺序传输给AES加密核,最后用串口显示加密结果。如图4-4所示为AES的加密验证。图4-4AES加密验证-38- 哈尔滨工业大学工学硕士学位论文在UART发送窗口发送了128位数据和128位密钥,最后05为控制加密IP用的,表示为进行加密;在接收窗口接收加密后的数据也是为128位,这个结果跟上一章中的Modelsim仿真结果是一样。可以说明这种验证加密IP核的方式是正确的。并且在发送数据的时候,在发送窗口应该设置为十六进制发送,如果不选择这个,显示结果将会不正确,并且在发送窗口里面发送的数据可以不用空格隔开,UART被设备数据宽度为8位,UART会按照每次8位进行读取。如图4-5所示为其解密过程,在UART发送窗口发送的128位数据(图4-3中接收窗口接收的数据)和128位密钥(与图4-3中发送的密钥是一样的),最后04表示对加密IP核AES进行解密的控制。在第二种实现方式中,下载的BIT文件是一样的,只要在进行复位后,在发送窗口发送所需数据,就能进行加密和解密验证。这样就可以测试海量数据,验证了AES加密核的稳定性。图4-5AES解密验证在这两种实现方式中,都能对加密IP核AES进行验证,区别在于在第一种方式中,只能提前设定要加密或者解密的数据,在RAM中存放好。在第二种方式中,在一次综合生成的BIT后就能在V2PRO板子上测试各种数据,灵活性很强。4.3ECC加密和解密的FPGA验证在ECC加密的FPGA验证中,采用从RAM给定加密数据,传输给ECC加密,然后把加密后的数据通过UART传输出来。如4-6图所示在UART接收窗口接收-39- 哈尔滨工业大学工学硕士学位论文168位数据,是163为加密后的数据加上5位0,方便UART进行传输数据,因为UART每次传输8位有效数据。在串口助手上显示的结果与上一章中Modelsim仿真结果是一致的,说明FPGA验证结果正确。图4-6ECC加密验证如图4-7为解密的结果,也是高位补了5位的0。在对ECC进行加密验证后,我们队其进行解密验证,通过在RAM中加入图4-6接收窗口的163位加密数据,然后ECC读取这些这些数据,采用的密钥是相同的163位数据。然后ECC进行解密,并且把解密后的数据在UART显示出来。图4-7ECC解密验证-40- 哈尔滨工业大学工学硕士学位论文4.4RSA加密和解密的FPGA验证对RSA的验证过程中,首先也是采用了从RAM中给加密IP核提供加密数据,需要提供1024位的加密数据,在加密完成后通过UART把加密数据传输到上位机上显示出来,如图4-8位其加密结果。图4-8RSA加密结果通过把上图中的加密结果放进RAM中,然后传输给加密IP核RSA,我们就能够得到解密结果,如图4-9为其解密结果。图4-9RSA解密结果-41- 哈尔滨工业大学工学硕士学位论文4.5以太网调试系统的FPGA验证以太网的测试分为两种测试:一是发送测试,从V2PRO板子通过以太网发送数据传输到PC机上;另外一种是接收测试,从PC机通过以太网发送数据到V2PRO板子上。4.5.1以太网发送FPGA验证发送测试中,在RAM中准备好要发送的数据,按照以太网数据帧的格式准备,然后在以太网IP核内部RAM中写好发送描述符,配置以太网的21个寄存器,大部分使用默认值,主要配置模式寄存器,发送描述符数目寄存器,MAC地址寄存器。如图4-10所示,从V2PRO发送过来的一个大小为60字节的数据包,在PC机上用Iris网络抓包工具捕捉的数据包。数据包是根据MAC地址进行投递,在这里目的MAC为48’h00-E0-81-B1-3E-AB即为PC机的MAC,源地址MAC地址为48’h07-08-00-00-08-07为V2PRO中以太网IP核的MAC地址,是通过MAC寄存器设置的。如图所示在接收区域接收的数据与上一章中的仿真结相同,说明数据被正确的发送到了PC机上,以太网的发送测试正确。图4-10以太网发送验证4.5.2以太网接收FPGA验证以太网的接收测试过程为从PC机发送数据给V2PRO板子,然后通过UART把板子接收的数据传输出来。实现过程中需要在以太网内部RAM中准备好接收描述符,配置以太网的21个寄存器,UART的初始化,及其把接收到的数据通过UART传输出来。如图4-11所示上边为eyes公司的Iris软件发送区域要发送的数据,按照以太网数据帧的格式发送数据。-42- 哈尔滨工业大学工学硕士学位论文图4-11以太网接收验证V2PRO为目的MAC地址为48’h05-06-00-00-06-05。下边为UART串口助手上显示接收的数据,因为以太网接收到的数据存放在RAM中时32位的,而UART每次发送数据位8位,所以在这把RAM中的32位数据逻辑右移,每次发送8位,但为先发送32位的低位,因此在Iris显示为05-06-00-00,在UART上则会显示为00-00-06-05。这个结果与上一章的Modelsim仿真结果相同,说明以太网接收功能FPGA验证正确,如表4-3为在SoC中加入以太网IP核的资源报告。表4-3以太网资源综合报告NameTotalusagePercentageNumberofSlice7929/1369657%NumberofSliceFlipFlops5117/2739218%Numberof4inputLUTs14777/2739253%MAXFrequentcy78.920MHZ4.6AES的加密通信FPGA验证在AES的加密通信FPGA验证实现过程分为加密验证和解密验证,加密验证为在PC上发送加密用的128位数据(3243…0734)、128位密钥和控制加密信号,然后通过UART显示加密的结果(3925…0B32),如图4-12所示在上位机上用Iris发送的128位的数据和128位的密钥,在UART串口助手上显示128位的加密结果。设置V2PRO的MAC地址为48’h05-06-00-00-06-05,PC机的MAC地址跟前面是一致的。因此发送的时候根据以太网数据帧的格式,先发送目的地址,然后是接收地址。-43- 哈尔滨工业大学工学硕士学位论文图4-12AES加密通信验证如图4-13所示为解密过程,其过程与加密过程类似,只是在PC上发送的数据为图中下边UART显示的加密后的数据(3925…0B32),在左边显示UART助手上显示解密后的数据(3243…0734),与上图中发送的加密数据相同,可以说明解密过程的正确。这个结果与上一章中的Modelsim仿真结果相同,说明AES核以太网FPGA验证的正确性。图4-13AES的解密通信验证-44- 哈尔滨工业大学工学硕士学位论文通过上面的两个图,可以看出这两个过程是一个相反的过程,一个加密和一个解密,在一个地方是输入/输出,则另外地方就是输出/输入的关系。通过这个以太网的验证方式,我们也能够验证实时的验证无数组数据,来验证加密IP核AES功能及其稳定性。在上面的过程中UART的设置跟前面是一样的,其数据过程是从PC发送到SoC的以太网IP核,根据介绍描述符的设定,会把接收的数据存储到片上RAM的位置,在这个过程中,因为总线是支持突发传输的,会把数据按照突发长度为4,突发存储在RAM中;然后加密IP核AES读取存储在RAM中的有效数据,因为在RAM中还存储了数据帧中的6个字节目的MAC地址和6个字节的源MAC地址。在AES加密完成后,再把加密完成的数据传输给UART,完成一次的操作。4.7ECC的加密通信FPGA验证ECC的加密通信FPGA验证过程与AES验证过程类似,如图4-14所示,加密过程中在PC上用Iris软件发送加密用的163位数据(005E…733D),在下边的串口助手上接收加密后的163位的加密数据(0700…FFFF)。在这里PC的MAC地址不变,V2PRO的MAC地址设置为48’h05-06-00-00-06-05。图4-14ECC加密通信验证在解密过程中PC机发送的为上图中的解密后的数据(0700…FFFF),UART接收窗口接收解密后的数据(005E…733D)。这个结果与Modelsim仿真结果相同,说明ECC加密IP核的加密通信FPGA验证正确,如图4-15所示。这里的验证跟上面AES的加密通信验证原理是一样的,数据流也是一样的。通过以太网把数据从PC机传输到SoC中的RAM,然后加密IP核从RAM读取想加密的数据,最后加密完成后,CPU把加密结果传输给UART。-45- 哈尔滨工业大学工学硕士学位论文图4-15ECC解密通信验证通过对ECC的加密通信过程分析,我们可以得知,在这个过程中,并没有对加密或者解密的数据进行约束,因此我们也可以通过这两个相反的过程,来验证海量数据,验证加密IP核ECC的功能和稳定性。4.8本章小结本章对上一章各个的功能仿真结果都进行了FPGA原型验证。首先是最小调试系统的验证,包括在SoC中UART功能的验证,还包括借助UART对加密IP核AES、ECC、RSA的验证。在AES、ECC、RSA验证中通过RAM给定加密数据,然后通过UART把加密结果传输出来,以验证AES、ECC、RSA的加密功能。然后是对SoC中加入以太网的FPGA验证,包括对以太网发送和接收功能的验证。接着是借助以太网对AES、ECC的验证。它们都是从PC机通过以太网传输加密数据给以太网,然后通过UART把加密完成的数据传输出来。通过用UART和以太网对加密IP核AES、ECC的FPGA验证结果一致性,并且与上一章的仿真结果一致,可以说明加密IP核AES、ECC加密和解密功能的正确性。-46- 哈尔滨工业大学工学硕士学位论文结论本文首先对加密SoC中各个IP核进行了整合调试;用C语言和汇编实现了对最小系统的调试;通过UART对加密IP进行了测试;然后验证了以太网调试系统的发送和接收功能;最后实现了基于以太网的加密IP核加密和解密的验证。在所有测试过程都用汇编语言实现,系统时钟能稳定的工作在78.9MHZ,总线吞吐率能够达到8.48Mbit/s。在具体实现过程中,先是构建一个最小型的SoC调试系统,能够利用UART实现简单的功能,在SoC中通过UART发送出字符让其在PC串口助手上显示出来。在这个之后,利用UART对加密IP核进行功能验证和FPGA验证。然后在SoC中再加入通信传输用的以太网IP核,验证以太网的发送和接收。最后实现SoC通过以太网与PC机间的加密通信。得到的主要结论有:(1)在功能仿真方面,首先是对最小型SoC功能验证,完成UART的打印功能,然后是在UART帮助下完成对AES、ECC、RSA的加密功能验证,接着在SoC中加入了通信用的以太网IP核,验证其发送和接收功能,并且通过以太网传输加密数据。(2)在硬件实现方面,对前面进行的功能验证,都实现了FPGA原型验证。在串口助手上显示从SoC发送过来的字符,还能实现在串口助手上显示加密IP核AES、ECC、RSA的加密结果。在加入以太网后,实现SoC和PC间的以太网通信,通过以太网传输加密数据。由于在时间方面和个人能力,实验室环境,本文有如下不足:在SoC的构建方面,挂载上去的IP核并不是很多,以后可以加上GPIO,USB等IP核,增强SoC的功能。在双系统的演示上,没有完全实现。-47- 哈尔滨工业大学工学硕士学位论文参考文献[1]任长宇.基于多目标演化算法的SoC设计空间搜索策略研究[D].哈尔滨:哈尔滨工程大学硕士学位论文,2004:1-4.[2]车胜.SoC软硬件协同验证系统方案设计及其实验验证研究[D].成都:电子科技大学硕士学位论文,2006:1-7.[3]将斌.基于平台的SoC设计技术[J].集成电路应用,2004,(11):62-65.[4]龚伟.基于GDB的嵌入式系统调试器的设计与实现[D].成都:电子科技大学硕士学位论文,2006:3-5.[5]周中华.YAKSoC架构设计研究[D].北京:北京工业大学硕士学位论文,2010:2-9.[6]郑华文.开放的嵌入式SOPC平台设计与实现[D].厦门:厦门大学硕士学位论文,2009:1-10.[7]农英雄.基于FPGA的8051SoC设计[D].沈阳:东北大学硕士学位论文,2006:3-10.[8]ZhengJ,MouftahHT.AdaptiveSchedulingAlgorithmsforEthernetPassiveOpticalNetworks[J].IEEEProceedingsCommunications,2005,(152)5:643-647.[9]许全泉.基于FPGA的以太网控制器设计[J].电子元器件应用,2007,(6):23-25.[10]程鹏.基于FPGA的10M/100M以太网控制器的设计[D].太原:太原理工大学硕士学位论文,2008:15-20.[11]刘广开.以太网接入控制系统设计与验证[D].北京:北京交通大学硕士学位论文,2009:12-18.[12]徐敏,孙恺,藩峰.开源软核处理器OpenRISC的SOPC设计[M].北京:北京航空大学出版社,2008:1-6.[13]焦汉明,陈新华,沈国新,等.一种开源微处理器OR1200的嵌入式SoC设计[J].信息化从横,2009,(17):34-37.[14]兰文丽,杨昆,谢翔,等.一种可用在基于SoC设计中的处理器核OR1200[J].电视技术,2005.[15]倪继利,杨曦,李挥.CPU源代码分析与芯片设计及Linux移植[M].电子工业出版社,2007:55-65.[16]焦汉明.基于OR1200的嵌入式SoC以太网网关的研究与设计[D].山东:山东科技大学硕士学位论文,2010:5-11.-48- 哈尔滨工业大学工学硕士学位论文[17]史江义.基于IP核的SoC设计关键技术研究[D].西安:西安电子科技大学博士学位论文,2007:4-10.[18]ChangH.SurvivingtheSoCRevolution[J].KluwerAcademicPublishers,1999,24(3):242-250.[19]NekoohgarF.TimingVerificationofApplicationSpecificIntegratedCircuit[J].PrenticeHallPTR,1999,46(7):278-285.[20]BricaudPJ.IPReuseCreationforSystem-on-a-chipDesign[J].ProceedingoftheIEEECustomIntegratedCircuits,1999,27(5):390-405.[21]MadisettiV,ChonlamethArpnikanondt.APlatformCentricApproachtoSystemonChipDesign[J].SpringPublisher,2005,43(5):455-450.[22]KeatingM,PierreBricaud.ReuseMethodologyManualforSystem-on-chipDesigns[J].KluwerAcademicPublisher,1999,36(4):321-328.[23]张琳.基于OR1200的软件开发平台设计[D].山东:山东大学硕士学位论文,2011:7-11.[24]廖永波.SoC软硬件协同方法及其在FPGA芯片测试中的应用研究[D].成都:电子科技大学博士学位论文,2010:1-10.[25]王永恒,王军强.基于32位开源CPU的SoC系统设计[J].信息电脑,2011,4(1):1-3.[26]YangX.QoSGuaranteeandProvisioningattheContention-basedWirelessMACLayerintheIEEE802.1eWirelessLANs[J].2006,(13)1:14-21.[27]WoodwardSL,FeuerMD,NelsonLE.CharacterizationofRealTimePMDandChromaticDispersionMonitoringinaHighPMD46GbpsTransmissionSystem[J].IEEEPhotonTechnolLett,2008,(20)3:2048-2050.[28]WuY,ThomsonS,SunH.Built-inFunctionalTestsforFastValidationofa40GbpsOpticalCoherentReceiverSoCASIC[J].ProcIEEEIntSoCConf,2008,47(9):55-58.[29]MooreGE.LithographandthefutureofMoore`sLaw[J].Proc.SPIE,1995,(2438)2.[30]ChenW,HanX,DomerR.ESLDesignandMulticoreValidationUsingtheSystem-on-ChipEnvironment[J].Proc15thIEEEIntelHighLevelDesignValidationandTestWorkshopIEEECSPress,2010,12(3):142-147.[31]LauSK,MokPKT,LeungKN.ALow-dropoutRegulatorforSoCwithQ-reduction[J].IEEEJSolid-StateCircuits,2007,18(5):658-664.[32]AllanD,BraggN,FarkasJ.ShortestPathBridging:EfficientControlofLargerEthernetNetworks[J].IEEECommunicationMagazine,2010,(48)10:128-135.[33]ZhanC,KiWH.AnOutput-capacitor-freeAdaptivelyBiasedLow-dropout-49- 哈尔滨工业大学工学硕士学位论文RegulatorwithSub-thresholdUndershoot-reductionforSoC[J].Proc.IEEEInt.Symp.CircuitsSyst,2011,14(5):45-48.[34]冯钢,郑扣根.基于GCC的交叉编译器研究和开发[J].计算机工程与设计,2004,(12).[35]张瑞,于海德,马明龙.基于ARM的嵌入式Linux的交叉编译环境的建立[J].科技信息,2009,(25).[36]MehdizadehN,ShikrolahM,MiremadiSG.AnalyingFaultEffectsinthe32-bitOpenRISC1200Microprocessor[C].ThirdInternationalConferenceonAvailability,ReliabilityandSecurity,2008:648-652.[37]WeiJ,WangL,WuF.DesignandImplementationofWirelessSensorNodeBasedonOpenCore[C].IEEEYouthConferenceonInformation,ComputingandTelecommunication,2009:102-105.[38]KhanBM,AliFH.MobilityAdaptiveEneryEfficientandLowLatencyMACforthWirelessWensorNetworks[C].20115InternationanConferenceonNGMAST,2011:218-223.[39]RayS,DemirkolI,HeinzelmanW.ADV-MAC:Advertisement-BasedMACProtocolforWirelessSensorNetworks[C].InternationConferenceonMobileAd-hocandSensorNetworks,2009:265-272.[40]RazmkhahMH,MiremadiSG,EjlaliA.AMicro-FT-UARTforSafetyCriticalSoCBasedApplications[C].InternationConferenceonAvailability,ReliabilityandSecurity,2009:316-321.[41]WangYC,SongKC.ANewApproachtoRealizeUART[C].2011InternationConferenceonEMEIT,2011:2749-2752.[42]EdelsohnD,GellerichW,HagogM.ContributionstotheGNUComplierCollection[J].IBMSystemsJournal,2005,(45)3:250-280.[43]StallmanR,PreschR,ShebsS.DebuggingwithGDB[J].TheGNUSourceLevelDebug,2008,(15)4:1-16.[44]LinZ.System-on-chipDesignwithOpenCores[D].Sweden:SchoolofInformationandCommunicationTechnology,2008:40-44.[45]RenovellM.TestingtheInterconnectofRAMBasedFPGA[J].IEEEDesign&TestofComputer,2008,(15)6:40-55.[46]YuYL,JianX,WeiKH.ADiagnosisMethodforInterconnectsinSRAMBasedFPGA[J].TestSymposium,2008,(25)6:270-288.[47]RuanAW,LiaoYB,LiP.AnImprovedDataCommunicationMechanismforASocHardware/SoftwareCo-EmuluationEnvironment[J].CircuitsandSystems,2009,(22)4:1020-1035.[48]KonoM,ToyodaA.A400-Gb/sandLow-PowerPhysical-LayerArchitecturefor-50- 哈尔滨工业大学工学硕士学位论文Next-GenerationEthernet[J].Communications(ICC)IEEEInternationalConferenceon,2011,(35)2:1–6.[49]TotodaH,OnoG,NishimuraS.100GBEPHYandMACLayerImplentations[J].IEEEComumunicationMagazine,2010,(48)3:41-47.[50]LoBL,KaczynskoGA,MirabellaO.ImprovingtheReal-timeBehbviorofEthernetnetworksUsingTrafficSmoothing[J].IEEETransactiononIndustrialInformation,2005,(1)3:151-161.-51-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭