【基于APB总线的DES实现】

news2024/7/6 2:28:19

基于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寄存器内。
读出测试波形图

整体代码

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

21、同济、微软亚研院、西安电子科技大提出HPT:层次化提示调优,独属于提示学习的[安妮海瑟薇]

前言: 本论文由同济大学、微软亚洲研究院、西安电子科技大学,于2023年12月11日中了AAAI2024 论文: 《Learning Hierarchical Prompt with Structured Linguistic Knowledge for Vision-Language Models》 地址: [2312.06323]…

蓝桥杯time模块常用操作

#导入time模块import time #获取时间戳 start_time time.time () print ( "start_time ", start_time) time .sleep ( 3) end_time time.time () print ( "end_time ", end_time)#计算运行时间 print("运行时间 { :.0f } ".format(end_time …

【springboot】application配置文件(1)

servlet:multipart:max-file-size: 100MBmax-request-size: 100MB 这些配置是关于servlet的,特别是与文件上传相关的部分。具体来说,它们涉及到multipart的处理,这是处理HTTP的multipart/form-data类型请求的方法,通常用于文件上传…

双指针算法(二)

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

智能优化算法应用:基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.算术优化算法4.实验参数设定5.算法结果6.…

Windows11编译x265源码生成Visual Studio工程详细步骤

概述 x265是一款开源符合HEVC标准的编码器,也属于VLC项目之一。 由于x265是开源的,因此它得到了广泛的应用和开发。许多开源项目和商业产品都使用x265进行视频压缩处理。同时,x265也支持多种编程语言和平台,使得开发者可以方便地…

深度学习记录--随机初始化

权重 权重,指的是变量系数w,决定了变量的变化率 它会改变dw,进而改变下一轮的w(改变更新) 神经网络的权重 对于神经网络(含隐藏层) 由于权重的对称性,我们的隐层的神经单元输出始终不变,出现隐藏神经元的对称性 …

Motion Plan软硬约束下的轨迹生成

Motion Plan之轨迹生成代码实现Motion Plan之搜索算法笔记Motion Plan之基于采样的路径规划算法笔记Motion Plan之带动力学约束路径搜索 Motion Plan之轨迹生成笔记Motion Plan之曲线拟合笔记本项目代码:GitHub - liangwq/robot_motion_planing: 移动机器人轨迹生成…

《PySpark大数据分析实战》-14.云服务模式Databricks介绍基本概念

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

C++面向对象(OOP)编程-模板

本文主要讲解C的模板,其中包括模板的分类,函数模板和类模板,以及类模板与友元函数关系引起的几种关系。强调提供代码来搞懂C模板这一泛型编程手段。 目录 1 C模板 2 模板的本质 3 模板分类 4 函数模板 4.1 函数模板定义格式 4.2 函数模…

Android 一分钟使用RecyclerView完美实现瀑布

【免费】安卓RecyclerView瀑布流效果实现资源-CSDN文库 1.WaterfallFlowActivity 主函数代码: package com.example.mytestapplication;import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.widget.Toast;im…

vs code调试.so文件

使用vs code调试.so文件 1 vs code中安装c的debug插件2 【重要】编写launch.json3 在.so的源码中打断点4 debug模式启动进程5 attach进程6 开始调试 .so是一种动态链接库,在大型项目以及跨语言项目中经常用到。在拿到.so文件对应的源码后进行debug呢? 简…

天猫数据分析平台-天猫销售数据查询软件-11月天猫平台冲锋衣市场销售运营数据分析

随着气温逐渐下降,保暖服饰迎来热销,冲锋衣的需求大增。如今冲锋衣已经不仅仅是户外运动的装备,还成为很多年轻人的日常穿搭和时尚的追求。 新的穿搭趋势也带来了巨大的市场机会。据公开数据显示,中国有冲锋衣生产及经营企业超过8…

SpringBoot之响应案例的详细解析

2.3 案例 下面我们通过一个案例,来加强对请求响应的学习。 2.3.1 需求说明 需求:加载并解析xml文件中的数据,完成数据处理,并在页面展示 获取员工数据,返回统一响应结果,在页面渲染展示 2.3.2 准备工作…

Missing artifact org.wltea.analyzer:ik-analyzer:jar:5.0

没有找到【org.wltea.analyzer】 找到了【org.wltea.ik-analyzer】 https://github.com/wks/ik-analyzer https://github.com/wks/ik-analyzer.git https://code.google.com/archive/p/ik-analyzer/downloads?page2 C:\Users\Administrator\Desktop\ik-analyzer-master>m…

LabVIEW软件模拟氢燃料电池在车辆中的应用

LabVIEW软件模拟氢燃料电池在车辆中的应用 在追求可持续能源的时代,氢燃料电池在绿色经济中扮演着关键角色。本研究通过LabVIEW软件模拟和评估了氢燃料电池在车辆应用中的性能和效率。LabVIEW作为一个强大的模拟工具,能够动态模拟氢燃料电池系统在不同条…

Hugging Face实战-系列教程19:文本摘要建模实战1 之 数据清洗(中文商城评价数据处理方法)

🚩🚩🚩Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 文本摘要建模实战1 之 数据清洗 文本摘要建模实战2 之 Tokenizer处理 1 任务概述 1.1 任…

『踩坑记录』IDEA Spring initialzr新建Spring项目不能选择jdk8的解决方法

问题描述 Spring initializr新建Spring项目不能选低版本java 解决方法 默认官方start.spring.io已不支持自动生成低版本jkd的Spring项目,自定义用阿里云的starter即可 用阿里云的就能支持低版本jdk了 完 欢迎关注我的CSDN博客 :Ho1aAs 版权属于&a…

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

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

【04】GeoScene导出海图或者电子航道图000数据成果

1创建一个带有覆盖面和定义的产品 如果你没有已存在的S-57数据,你可以通过捕捉新的产品覆盖范围(多边形产品范围)及其所需的产品定义信息(产品元数据)来为新产品创建基础。 注: 如果你已经有一个S-57数据…