江苏大学 硬件基础课程设计 A5-1流密码器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)次态计算: