【基于APB总线的DES实现】

基于APB总线的DES实现

  • 本文内容摘要
  • APB介绍
  • 仿真结果
    • 整体仿真
    • 写入数据
    • DES加密部分
    • DES加密读出密文
  • 整体代码

本文内容摘要

  本文是设计一个可兼容APB总线的DES加密协处理器,用来将DES加密模块与APB总线进行对接,使总线发送来的数据可以正常写入并进行加密后并由总线读取。
  下面介绍关于APB兼容的方面,DES加密部分在其他博客内介绍。整体使用Modelsim软件进行仿真

APB介绍

  APB_slave基本结构如图所示:
APB总体框架图
  为了使APB总线的输入兼容,须使apb_slave的输入和输出设置成与总线一致,因此在输入端设置多路控制位信号输入。如PSELx(通讯选择从设备)、PENABLE(APB使能信号,指示一次APB传输的第二个时钟周期)、PCLK(APB总线时钟信号)、PRESETN(APB总线复位信号,低电平有效)、PWRITE(APB写指令信号,高电平为写,低电平为读)、PADDR(APB总线读写地址)、PWDATA(APB总线写数据),desIn(DES加密后数据输入端,存储密文于apb总线读数据的时候输出),在输出端设置了start两个输出,用于表示已经接收完毕总线所发送来的数据,此信号是DES加密开始的标志信号。
  此时可以进行加密运算。apb_slave 写入时的输出端有两个64bit的数据线,传输明文以及密钥至DES模块。在读加密后的密文信号时,输入端有一个64bit的数据线,使总线读入64bit密文,并输出两个32bit数据。
  因为APB总线是32位宽,而DES加密模块是64bit明文输入、64bit密钥输入、64bit密文输出,因此要使用2个32位寄存器,通过总线地址选择数据分别写入2个32位地址之中,并且将数据合并成为64bit输出至加密模块进行加密后再以32位数据的方式存储至APB_slave中。
  APB总线的时序逻辑如下图所示。总线输入地址后和要写入的数据后,PWRITE和PWDATA变为高电平,开始预传输数据,延迟一个CLK后PENABLE变为高电平,此时开始向存储器内写入数据,写入条件为PWRITE和PSEL以及PENABLE均为高电平。读出的工作条件为PWRITE为低电平,PSEL以及PENABLE均为高电平时。
时序逻辑图

仿真结果

  仿真四个子模块的波形图,下面一一介绍。

整体仿真

  首先是整体模块的仿真模型,可以看到当片选和使能控制高脉冲时,总线开启选择DES加密模块,加密模块开始工作,等待一段时间后加密完成,总线控制将所得密文取到总线数据线上,如图所示,padata为总线上的32bit数据线,取到的最后信息为32位c1b123a7,对应测试的得到的正确密文的低32位数据。
整体测试波形图

写入数据

  下图是总线挂入DES加密模块后向加密模块写入数据。可以看到当输入有效数据后,并且当使能信号来后,总线通过数据线向DES加密设备写入明文和密钥,并给start一个高脉冲,标志已写入有效数据。
写入测试波形图

DES加密部分

  当start脉冲到来后开始加密,16轮运算进行完获得密文。

DES加密测试波形图

DES加密读出密文

  总线从DES加密设备读出密文的波形测试图如下图所示,可以看到,当使能信号到来后,总线数据线分两次取出64bit密文信息,分别存入两个32bit寄存器内。
读出测试波形图

整体代码

代码见资源,包含顶层代码、加密读写代码和激励测试代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/255077.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

十四、YARN核心架构

1、目标 (1)掌握YARN的运行角色和角色之间的关系 (2)理解使用容器做资源分配和隔离 2、核心架构 (1)和HDFS架构的对比 HDFS架构: YARN架构:(主从模式) &…

分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】

分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现AOA-SVM算术优化支持向量机的数据分类预测…

Note3---初阶二叉树~~

目录​​​​​​​ 前言🍄 1.树概念及结构☎️ 1.1 树的概念🎄 1.2 树的相关概念🦜 1.2.1 部分概念的加深理解🐾 1.2.2 树与非树🪴 1.3 树的表示🎋 1.4 树在实际中的运用(表示文件系统…

Leetcode—11.盛最多水的容器【中等】

2023每日刷题&#xff08;六十三&#xff09; Leetcode—11.盛最多水的容器 实现代码 #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) int maxArea(int* height, int heightSize) {int left 0, right heightSize - 1;int m…

屏幕超时休眠-Android13

屏幕超时休眠-Android13 1、设置界面1.2 属性值1.2.1 默认值1.2.2 最小值限制 1.3 属性值疑问 Settings.System.SCREEN_OFF_TIMEOUT 2、超时灭屏2.1 锁定屏幕的超时2.2 屏幕灭屏的超时 3、永不休眠* 关键日志 1、设置界面 packages/apps/Settings/src/com/android/settings/dis…

八.创建和管理表

目录 1. 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型 2. 创建和管理数据库2.2 使用数据库2.3 修改数据库 3. 创建表3.1 创建方式13.2 创建方式23.4 查看数据表结构 4. 修改表4.1 追加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列 5. 重命名…

【Docker五】使用Harbor搭建Docker私有仓库

目录 一、harbor概述 1、harbor概念&#xff1a; 2、harbor的特性 3、harbor的组件&#xff1a; 二、harbor实验&#xff1a; 1、搭建harbor 2、远程主机使用docker-harbor&#xff1a; 3、镜像同步&#xff1a; 一、harbor概述 1、harbor概念&#xff1a; harbor&…

计网01 计算机网络基础

一、计算机网络基本概念 1、什么是计算机网络 网络&#xff1a;由两台或多台计算机通过网络设备串联&#xff08;网络设备通过传输介质串联&#xff09;而形成的网络网络设备&#xff1a;计算机、路由交换、防火墙、上网行为管理等传输介质&#xff1a;双绞线&#xff08;网线…

Eclipse 一直提示 loading descriptor for 的解决方法

启动eclipse之后&#xff0c;进行相关操作时&#xff0c;弹出界面&#xff0c;提示&#xff1a;loading descriptor for xxx 解决方法&#xff1a; 在Eclipse左侧的Project Explorer 最右上角有一个小钮,鼠标移上去时提示"View Menu". 你点一下,在弹出的上下文菜单中…

JAVA主流日志框架梳理学习及使用

前言&#xff1a;目前市面上有挺多JAVA的日志框架&#xff0c;比如JUL(JDK自带的日志框架),Log4j,Logback,Log4j2等&#xff0c;有人可能有疑问说还有slf4j&#xff0c;不过slf4j不是一种日志框架的具体实现&#xff0c;而是一种日志门面&#xff08;日志门面可以理解为是一种统…

Java基于SpringBoot的二次元商城网站系统

简介 二次元商城网站的使用是更为便捷的&#xff0c;互联网的普及在这个社会是非常成功的&#xff0c;小到个人的交际交流&#xff0c;大到公司企业员工的交流&#xff0c;都已经离不开科技&#xff0c;所以&#xff0c;在这么成熟的平台上&#xff0c;各种类型的网站也就应运…

【数据结构复习之路】图(严蔚敏版)两万余字超详细讲解

专栏&#xff1a;数据结构复习之路 复习完上面四章【线性表】【栈和队列】【串】【数组和广义表】【树和二叉树】&#xff0c;我们接着复习 图&#xff0c;这篇文章我写的非常详细且通俗易懂&#xff0c;看完保证会带给你不一样的收获。如果对你有帮助&#xff0c;看在我这么辛…

计网02-计算机网络参考模型

一、OSI七层参考模型 1、分层的思想 分层模型用于网络协议的设计方法&#xff0c;本质是将网络节点间复杂的通信问题分成若干简单的问题逐一解决&#xff0c;通过网络的层次去找问题&#xff0c;将复杂问题简单化。 2、OSI参考模型 由于早期计算机厂商使用的是私有的网络模…

51单片机(STC8) -- 开发环境搭建(Keil C51)

文章目录 STC8H3K系列芯片概述STC8H3K系列芯片选型Keil C51简介Keil C51安装添加C51芯片包工程创建与编译工程烧录 STC8H3K系列芯片概述 文章中所用的芯片选型为STC8H3K64S4&#xff0c;后续STC8案例均以该芯片展开 内核 • 超高速 8051 内核&#xff08;1T&#xff09;&…

SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)

点击阅读SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)原文 SearchWP WordPress高级网站内容搜索插件是一个非常强大的工具&#xff0c;可以显着增强您网站的搜索功能。通过向网站访问者提供高度相关和精确的搜索结果&#xff0c;它可以有效地简化他们的搜索过程…

IP地址与实时位置之间的关系

在互联网的普及和信息技术的快速发展中&#xff0c;IP地址作为一种标识符&#xff0c;已经深入到我们的日常生活和工作中。然而&#xff0c;对于IP地址与实时位置的关系&#xff0c;许多人存在误解。本文将对此进行澄清&#xff0c;阐述IP地址与实时位置之间的关系。 首先&…

ORA-00257: 归档程序错误在释放之前仅限于内部连接

Oracle在windows服务器下异常断电或者长时间运行情况下&#xff0c;容易发生ORA-00257: 归档程序错误 “ORA-00257: 归档程序错误。在释放之前仅限于内部连接”错误由于由于归档日志占满了空间&#xff0c;此空间大小限制由参数&#xff1a;db_recovery_file_dest_size来指定…

双指针算法(二)

三数之和 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重…

【gojs】Invalid div id; div already has a Diagram associated with it

刷新gojs&#xff0c;控制台报错 <div id"myDiagramDiv"></div>import go from "gojs"; data() {return {myDiagram: null,} }, mounted() {this.drawTopo(); }, method() {drawTopo() {const $ go.GraphObject.make;this.myDiagram $(go.Di…

【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载

【C】郭老二博文之&#xff1a;C目录 1、哈希 1.1 说明 std::map和std::set 的性能是&#xff1a;O(log n) POCO哈希的性能比STL容器更好&#xff0c;大约快两&#xff1b; POCO中对应std::map的是&#xff1a;Poco::HashMap&#xff1b; POCO中对应std::set的是 Poco::Hash…