江苏大学 硬件基础课程设计 A5-1流密码器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.概述

1.1设计目的

(1)掌握 FPGA设计软件Quartus II的使用方法;

(2)了解数字系统在信息安全领域中的应用,熟悉查阅资料方法,锻炼学习能力;

(3)训练使用 Verilog HDL 进行较复杂逻辑电路设计的能力;

(4)熟练使用调试工具,提高分析问题、解决问题的能力;

(5)培养良好的文档习惯,锻炼撰写规范报告的能力。

1.2设计要求

(1)能够全面地应用课程中所学的基本理论和基本方法,完成从逻辑电路到简单数字系统或计算机系统的设计;

(2)能够独立思考、独立查阅资料,独立设计规定的系统;

(3)能够独立地完成实施过程,包括电路设计、调试验证和排除错误。

1.3设计任务

用Verilog HDL设计一个A5/1流密码器;设计多功能移位寄存器用于保存和移位要加密/解密的数据;用流密码器和移位寄存器组成对称加密数据通路;用状态机的方法设计控制单元,由控制单元控制自动完成加密及解密过程。

(1)分析系统功能需求,制定详细设计方案;

(2)通过 Verilog HDL 完成规定的设计内容,采取模块化、层次化的设计方法设计电路;

(3)在实验板上验证设计的正确性,认真记录测试过程中遇到的故障以及解决方法;

(4)撰写设计报告,并对存在的问题进行分析、提出改进意见。

1.4实验设备及软件工具

实验设备:windows系统电脑

实验系统: WeLab远程实验板

设计软件:Quartus II 12.0 Web Edition

2.设计

2.1功能分析

本次设计的A5/1密码器是一个简单易用的硬件加密/解密器,它的功能分析如下:

(1)保存和显示数据:硬件内部设计有移位寄存器来保存输入数据和加/解密获得的数据,通过数码管可以显示加/解密获得的数据。即输入待处理的数据,启动密码器进行处理

后,就可以显示处理后的数据

(2)加密/解密输入的数据:本密码器是对称式的密码器,输入明文能得到相应的密文,而再输入相应的密文,就能解密出相应的明文,限制二进制输入位数为16位,A5/1密钥

机制的复杂性使得它更难被破译

2.2整体设计思路

本密码器总体上分为两个大模块,一是外部接口模块,该模块中定义了外部信号和内部信号的连接,从而实现内外部的交互;二是FSM状态机控制单元,也是实验逻辑所在,该模块控制了密码器的状态运转,在每个时钟周期内进行相应的数据处理,次态计算,以及状态转换,从而实现每个时钟周期内加密一位输入数据,加密了16次之后将其进行输出

模块一:外部接口

(1)将输入端口赋值给内部信号:

将连续16个开关赋值给16位输入信号IN,将按键0赋值给外部输入的启动信号

start_asyn,将按键1赋值给重置信号_reset

(2)内部信号赋值给输出端口(数码管)观察:

一位数码管最多能表示四位二进制数,将16位的处理完成数据OUT分为四个部分分别

赋值给四个数码管

(3)启动信号处理与模块连接:

将外部输入的启动信号start_asyn进行处理,在启动重置或者加/解密完成的时候将实际

的启动信号start置0,在时钟来临的时候将start_asyn赋值给start。将此模块连接到FSM

控制模块

模块二:FSM控制单元

本控制单元的主要部分是一个三段式状态机和一个计数器,状态机的状态图如下:

count<4’hF,

count计数一次,

加密一位

start=0,未

启动时

(1)计数器:四位计数器,重置时计数值置0,启动加/解密时启动计数,总共加/解密16位计数16次,从0开始计数,到15即计数16次。完成加/解密计数值置0 (2)状态机

1)数据处理:重置信号为1则把输出寄存器清零。时钟来临时,若现态为初态,start=1则根据输入数据和总密钥初始化输入寄存器和三个分密钥寄存器;若现态为加密态,

加密一位输入数据后放入输出寄存器

2)次态计算:若现态为初态,start=1则次态为加密态,否则为初态;若现态为加密态,count<4’hF则次态为加密态,否则为初态

3)状态转换:重置信号为1则将现态转到初态。时钟来临时,将现态转到计算好的次态

运作流程和时序顺序:(1)时钟来临:外部启动信号start_asyn赋值给启动信号start

(‘+’表示同时发生)+ 根据现态来处理数据 + 状态转换+计数器根据条件计数

(2)重置:输出寄存器置0 + 现态跳转为初态 + 计数器清0 + 启动信号置0 (现态为上次时钟周期转换成的次态,组合逻辑的always块有自己的触发条件)

2.3核心设计及阐释

本次设计的核心设计为FSM控制单元,各部件详细设计如下:

(1)计数器:

敏感列表为时钟上升沿和重置信号上升沿,表示当时钟来临或者按下重置键的时候激活

该部件,重置信号为1或现态为初态时计数器置0,现态为加密态是计数一次(2)状态定义和变量定义:

需要用到的变量,总密钥在定义的时候初始化,并且不做更改。状态定义,定义初态为

0,加密态为1

(3)输出逻辑(数据处理):

数据处理是本次设计最核心的地方。敏感列表为时钟上升沿和重置信号上升沿,表示当时钟来临或者按下重置键的时候激活该部件。重置信号为1时将输出寄存器清零。时钟来临时,若现态为初态,start=1则根据输入数据和总密钥初始化输入寄存器和三个分密钥寄存器;若现态为加密态,加密一位输入数据后放入输出寄存器,然后分密钥寄存器、输入寄存器和输出寄存器都需要进行移位。三个分密钥有它们自己的线性反馈移位规则。每次将最高位加密后放到最低位,其他位都向高位移动一位,当加密16次后,原来在最低位的第一位加密数据就回到了最高位

下方的小部件是用来计算密码流的,每次分密钥寄存器进行了更改,就按照当前的分密钥进行一位密码流的计算,然后才能根据此密码流进行数据加密,因为需要先计算出使能位才能再计算密码流,所以只能使用组合逻辑和阻塞赋值,即满足触发条件时马上运行所有语句,code计算时使用刚计算好的M进行计算,而不是上次触发运行时M计算的结果

(4)次态计算:

相关文档
最新文档