ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:375.69KB ,
资源ID:16948011      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16948011.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(硬件加密模块Word文件下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

硬件加密模块Word文件下载.docx

1、工作电压为2.75.5V。时钟频率最大为1.5MHz。数据保存为100年。重复擦写次数为100000次。ESD(静电防护)不小于4000V。使用环境温度:商业级为070;工业级为-4585。该协议认证卡的基本组成如图1所示:图1-2 AT88SC0104C基本组成框图采用AT88SC0104C对FPGA进行加密的基本工作流程:1硬件连接将AT88SC0104C与FPGA相连,只需将AT88SC0104C的SCL和SDA引脚分别与FPGA的任意两个I/O管脚连接即可。为了防止可能出现的I2C总线第9个脉冲无应答信号,将SDA分成一进一出的独立线路。同时为了确保I2C线路的SDA是OC或OD线路,

2、I2C总线的时钟频率在1.5MHz以下。电气原理如图2所示。图1-3 AT88SC0104C对FPGA加密的电气原理2AT88SC0104C的配置按照加密功能的要求,对AT88SC0104C的配置区的各数据进行配置。比如修改读写密码,修改密钥GC等等。具体修改方法详见读写编程器使用手册。3AT88SC0104C的编程将配置文件和部分保密数据事先按地址写入AT88SC0104C的配置区和用户区各单元。具体操作方法详见读写编程器使用手册。4AT88SC0104C的熔断在系统调试成功以后,才将AT88SC0104C中的熔丝熔断。熔断之后,配置不再更改,这一点需特别注意。熔断的过程如下:1)向熔丝标志

3、寄存器写入06H;2)向熔丝标志寄存器写入04H;3)向熔丝标志寄存器写入00H。1.6 晶体振荡器选用建议采用独立的40MHz有源晶体振荡器,以确保整机工作的稳定性。1.7 FPGA引脚定义必须在FPGA的设置中定义引脚见下表。这些引脚必须与硬件连接相一致。序号Verilog/VHDL文件中的名称输入/输出用途1CLK输入40MHz晶体振荡器时钟输入2SDA_INAT88SC0104C的SDA输出3SDA_OUT输出AT88SC0104C的SDA输入4SCLAT88SC0104C的SCL输入5RST全局复位信号输入6AGAIN_AUTHEN_KEY用于演示的重复启动认证输入示例程序中,已将A

4、GAIN_AUTHEN_KEY引至KEY4(按键),所以只要按下KEY4即可启动重复认证流程。如不需要由外部引脚启动重复认证流程,可以不定义AGAIN_AUTHEN_KEY引脚。2 程序说明2.1 VHDL/Verilog模块文件说明main 主控模块I2C_transmit I2C数据总线接口与控制模块I2C_clk I2C总线时钟分频及SCL时钟产生模块five_clk 产生AT88SC0104C初始化所需的5个CLK模块GPA GPA算法函数电路模块delay 延时3msRNG. 随机数产生模块inverse.v 非门(用于随机数生成)编译时使用增量编译,以免非门被综合掉。:Settin

5、gs-Compilation Process Settings-Incremental Compilation-off(.)2.2主控模块设计该模块主要完成主状态机的状态切换、产生其它模块的控制信号。根据前面设计的FPGA的工作流程将主状态机设计为14个状态:RESET、FIVE_CLK、GET_RANDOM、CI_FROM_GCX、READ_CI_A、GPA_A、GPA_B、TRANS_20BYTE、JUSTIFY_A、NEW_CIX、NEW_SK、READ_CI_B、JUSTIFY_B、SK_REPLACE_GC、ALL_RIGHT,一个状态对应工作流程中的一个流程。主控模块的设计及其与其

6、它模块之间的关系如图2-1:图2-1 主控模块的设计及其与其它模块之间的关系方框图其中,状态GPA_A、状态GPA_B由gpa_state状态机和train_state状态机实现对GPA算法的控制。2.3 I2C模块说明I2C总线由FPGA控制,FPGA所发出的字节系列都是由命令开始,随后如果是写操作则是数据字节,否则是读数据。I2C总线备用时SDA和SCL都必须保持高电阻高电平状态,只有关闭I2C总线时才会将SCL钳位于低电平。在I2C总线上传送数据时,在SCL高电平期间SDA上必须保持有稳定的逻辑电平状态,高电平为数据1,低电平为数据0。I2C总线在传送数据过程中共有三种类型信号,即开始信

7、号、终止信号和应答信号。起始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。停止信号:SCL为高电平时,SDA由低电平向高电平跳变,终止传送数据。应答信号:FPGA在接收到一个字节数据后,在下一个SCL高电平时向AT88SC0104C发出低电平脉冲。FPGA在发送一个字节数据后,在下一个SCL高电平时读SDA_IN,检测应答位是否为低电平,此时SDA_OUT应该钳位于高电平。时序如图5所示:图2-2 I2C总线时序图程序由主状态机和串并转换任务组成,其状态机采用独热(one-hot)编码。状态转移如图2-3所示:图2-3 读写状态转移为了提高接口的稳定性,I2C总线在读取数据

8、时连续采样三次,采用三决二胜。在写命令或者写数据后如果0104C没有应答信号,则结束本次数据传输。2.3.1 I2C模块接口说明整个I2C系统用sda_in、sda_out、scl完成与AT88SC0104C的数据交换指定至具体引脚:sda_in: 串行数据输入(读取0104发送的数据)sda_out: 串行数据输出(传送给0104的数据)与FPGA内部的接口包括: SIGNAL:go: I2C启动信号shift_byte: FPGA需要读(写)的字节数ready: I2C模块接收了一个字节的数据(多字节读时表示一个字节传输完成,FPGA读取该字节并储存供后续使用)send_ready:表示需

9、要传递一个字节数据给I2C(多字节写时表示FPGA应传输给I2C模块一个字节数据以供传输)din: FPGA写数据(传输给0104的数据)dout: FPGA读数据(从0104读取的数据)I2C_stop: I2C完成传输给定字节的数据与FPGA外部的接口:clk: FPGA外部时钟rst: 异步复位信号该模块I2C数据传输过程:1 起始信号产生2 控制信号传递(8字节)3 0104应答(低电平为应答信号)4 数据传输(读取数据时,连续采样三次,以提高工作可靠性)5 0104应答6 停止信号I2C为顶层文件,I2C_clk为时钟分频部分,I2C_transmit为I2C控制部分。该设计已用示波

10、器验证。2.5随机数产生模块设计本设计中利用这两个非门串联电路的时延的不确定性来实现振荡器的抖动,采用振荡采样法生成随机数,系统原理如图所示。为了防止被综合掉,在设计时将非门设计为一个模块(inverse),并使用增量编译。图2-4随机数模型原理框图2.6 单片机程序设计当用户选择采用单片机配置FPGA时,主控MCU采用51系列单片机,采用C语言编写单片机程序,主要编写FPGA的配置程序。只需将用户放置于配置程序之后即可。2.6.1配置FPGA流程设计当电路板上FPGA配置方式设置成被动配置方式(PS)时,每次上电单片机都会自动对FPGA进行配置。通过初始化FPGA后,单片机将接收到的数据包数

11、据逐个写入,每写入1字节判断写入成功标志脚,有利于配置各类FPGA芯片,有更好的兼容性。图2-5 FPGA配置数据流程图3.操作方法3.1 对AT88SC0104C进行设置 具体操作步骤详见SC-RWP2型AT88SCxx系列读写编程器使用说明书。特别注意:这里设置的AT88SC0104C的密钥必须与2.3中所设置的密钥完全相同。AT88SC0104C只有在被设置后才能将其焊装到电路板上。AT88SC0104C.dem3.2 对EP2C8Q208(FPGA)进行配置本项目为了兼容各种开发环境具备最常用的三类配置下载方式,以下分别说明各种方式的具体操作。3.2.1(JTAG)配置方式用于调试硬件

12、操作:把ByteBlaster II下载线接到电路板中JTAG接口。软件操作:1.打开编程窗和配置文件。首先将实验系统和并口通信线连接好,打开电源。在菜单Tool 中选择Programmer,于是弹出如图3-1 所示的编程窗。在Mode 栏中有4种编程模式可以选择:JTAG、Passive Serial、Active Serial 和In-Socket。为了直接对FPGA进行配置,在编程窗的编程模式Mode 中选JTAG(默认),并选中打勾下载文件右侧的第一小方框。注意要仔细核对下载文件路径与文件名。如果此文件没有出现或有错,单击左侧“Add File”按钮,手动选择配置文件main.sof

13、。图3-1 选择编程下载文件2.设置编程器。若是初次安装的Quartus II,在编程前必须进行编程器选择操作。这里准备选择ByteBlaster II LPT1。单击Hardware Setup 按钮可设置下载接口方式(图3-1),在弹出的Hardware Setup 对话框中(图3-2),选择Hardware settings 页,在Currently selected hardware框中选择ByteBlaster II LPT1(图3-3)。如果打开图3-2 所示的窗口内“Currently selected hardware”右侧显示No Hardware,则必须加入下载方式。即点击

14、Add Hardware 钮,在图4-27 所示的窗口中选择ByteBlaster II,再在弹出的窗中点击OK,使“Currently selected”右侧显示ByteBlaster II LPT1。3.最后单击下载标符Start 按钮,即进入对目标器件FPGA 的配置下载操作。当Progress 显示出100%,以及在底部的处理栏中出现“Configuration Succeeded”时,表示编程成功。注意,如果必要,可再次单击Start 按钮,直至编程成功。图3-2 加入编程下载方式图3-3 双击选中的编程方式名图3-4 ByteBlasterII 编程下载窗3.2.2主动配置方式(A

15、S)用于将程序下载至EPCS器件将ByteBlaster II下载线与电路板上的AS_PS_J接口相连接,将AS_PS_SEL的AS一侧的3个套针连接,下载成功后须将下载线从电路板拔开,FPGA才会开动工作。1选择编程模式和编程目标文件在如图3-5 所示窗口的Mode 栏,选择“Active Serial Programming”编程模式,打开编程文件,选中文件main.pof,并选中打勾3 个编程操作项目,如图3-5 所示。图3-5 ByteBlaster II 接口AS 模式编程窗口2AS 模式编程下载单击图3-5 所示窗口的Start,编程成功后将出现如图3-6 所示信息。编程成功后FP

16、GA将自动被EPCS 器件配置而进入工作状态。此后每次上电,FPGA 都能被EPCS4 自动配置,进入正常工作状态。图3-6 AS 模式编程成功3.2.3被动配置方式(PS)用于由单片机下载配置程序将AS_PS_SEL的PS一侧的3个套针连接,将PS_J_SET套上(即连接)。先由VHDL程序导出main.hex文件后写入存储器芯片AT29C040,上电后使单片机运行CPU_SET_FPGA子程序,单片机将读出AT29C040中的数据后,以PS方式对FPGA芯片进行配置。HEXOUT文件的形成:下装到AT29C040文件必须为后缀为hexout的文件,仿真软件Quartus II在 6.0版本

17、不能默认产生hexout文件,必须人为设置产生格式文件步骤如下:打开项目,点击File菜单,选择Convert Programming Files如图一所示。 鼠标左键点击Programming file type栏目的下拉箭头,选择Hexadecimal(Intel-Format)Output File for SRAM(.hexout)项。在File name框中输入导出Hexout文件名字如:output_file.hexout, 在 中可选择导出文件存储路径。然后选中Input files to convert栏目中的SOF Data,左键点击Add File按钮。找到生成的相应的so

18、f文件并打开,此时相应的sof下载文件出现在相应的界面中。最后左键点击Generate按钮,则生成hexout的文件。图3-7 HEXOUT文件输出3.3在VHDL/Verilog程序中的设置3.3.1密钥(Gc)设置 加密系统的密钥需要预先设置,分别储存在FPGA和AT88SC0104C中。如需修改,则必须在FPGA和AT88SC0104C中同时修改并保持一致。在VHDL/Verilog程序中修改密钥,只需修改主程序(main.vhd)或(main.v)中gc_mem的赋值并重新编译。例如,当密钥为123456789ABDEFF时,相应的设置如下:3.3.1.1 VHDL程序中密钥(Gc)设

19、置/修改密匙时只需修改下面语句中gc_mem的赋值-GC- PROCESS (clk) BEGIN IF (clkEVENT AND clk = 1) THEN IF (state = FIVE_CLK) THEN gc_mem(0) = 00010010; gc_mem(1) 00110100 gc_mem(2) 01010110 gc_mem(3) 01111000 gc_mem(4) 10011010 gc_mem(5) 10111100 gc_mem(6) 11011110 gc_mem(7) 11111111 ELSE IF (state = NEW_SK) AND (gpa_end

20、 = ) THEN gc_mem(conv_integer(new_sk_cnt(2 DOWNTO 0) = gpa_dout; END IF; END PROCESS;3.3.1.2 Verilog程序中密钥(Gc)设置always(posedge clk) begin if(state = FIVE_CLK) /修改密匙时只需修改下面beginend 语句中gc_mem的赋值 gc_mem0 = 8h01; gc_mem1 h23; gc_mem2 h45; gc_mem3 h67; gc_mem4 h89; gc_mem5 hAB; gc_mem6 hCD; gc_mem7 hEF; e

21、nd else if(state = SK_REPLACE_GC) gc_mem0 = sk_mem0;= sk_mem1;= sk_mem2;= sk_mem3;= sk_mem4;= sk_mem5; gc_mem6 ALL_RIGHT, );Verilog程序中设置如下: main m1 (.clk(clk),.rst(rst),.sda_in(sda_in),.sda_out(sda_out),.scl(scl),.ALL_RIGHT(ALL_RIGHT),.AGAIN_AUTHEN_KEY(AGAIN_AUTHEN); Sample M2(.start(ALL_RIGHT),);只有

22、当认证成功时,ALL_RIGHT信号为高电平,方可启动模块Sample,如果认证不成功,则ALL_RIGHT信号为低电平,模块Sample不启动。4DEMO演示操作说明采用的文件为示例程序,AT88SC0104C采用的文件为:demo1.dem。文件中,已将AT88SC0104C下装文件的密钥和EP2C8的下装文件的密钥均设置为0x123456789ABCDEFF。进入QUARTUS II后,打开main项目,下装代码,程序自动运行。按下KEY4按键可以重复执行认证流程一次。只有在认证成功之后,5个LED全部一起点亮。如要验证认证过程的正确性或有效性,可以按下列方式测试评估板:A. 取下AT8

23、8SC0104C,上电后重复按下KEY4按键。此时5个LED都不会点亮。B. 如将AT88SC0104C的密钥与VHDL/Verilig程序中的密钥设置成不一样。C. 全部采用示例程序,上电后5个LED会一起点亮。5. 光盘文件说明1. 单片机C语言源程序:CPU_SET_FPGA.c;2. 单片机目标代码程序:CPU_SET_FPGA.hex;3. AT88SC0104C程序:AT88SC0104C.dem;4. SC-RWP2型AT88SCxx系列读写编程器使用说明书;5. FPGA的VHDL项目文件与下载文件包:VHDL_program_files;6. FPGA的Verilog项目文件与下载文件包:Verilog_program_files;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1