当前位置: 首页 > article >正文

算法部署设计,Sm3国密算法的硬件ip设计,纯v手写代码,图一为ip接口,图二为资源消耗

算法部署设计Sm3国密算法的硬件ip设计纯v手写代码图一为ip接口图二为资源消耗图三四为封装为axilite接口并在开发版下板测试图五为开发版实测结果 直接联系内容包括:sm3的软件python实现代码算法文档一份硬件代码说明文档一份sm3硬件的vivado工程一份sm3接zynq的硬件vivado工程 可用于学习算法的硬件实现和axilite总线最近啃了一周国密SM3的硬件落地纯V写的IP、AXI-Lite封装、接Zynq下板全流程踩了点细碎但有用的坑现在打包好了一堆干货资源甩上来适合想入门算法硬件化或者AXI总线的朋友抄作业先从软件实现入手用Python写个极简版的SM3可以快速验证算法原理方便之后硬件IP的功能仿真对比。话不多说上代码我简化了填充和分组逻辑只保留核心压缩函数循环完整填充分组可以看我打包的文档里的sm3_official.pydef get_T(j): if 0 j 16: return 0x79cc4519 elif 16 j 64: return 0x7a879d8a else: raise ValueError(j must be in [0,63]) # 布尔函数FF_j和GG_j根据j的范围选择逻辑操作 def FF(x, y, z, j): if 0 j 16: return x ^ y ^ z elif 16 j 64: return (x y) | (x z) | (y z) else: raise ValueError(j must be in [0,63]) def GG(x, y, z, j): if 0 j 16: return x ^ y ^ z elif 16 j 64: return (x y) | ((~x) z) else: raise ValueError(j must be in [0,63]) # 左循环移位和常量置换函数 def left_rotate(x, n): return ((x n) 0xFFFFFFFF) | (x (32 - n)) def P0(x): return x ^ left_rotate(x, 9) ^ left_rotate(x, 17) def P1(x): return x ^ left_rotate(x, 15) ^ left_rotate(x, 23) # 单次压缩函数 def compress(block, iv): A, B, C, D, E, F, G, H iv # 消息扩展W0-W15直接取输入块W16-W63用公式计算 W [0]*68 W_ [0]*64 for j in range(16): W[j] block[j] for j in range(16, 68): W[j] P1(W[j-16] ^ W[j-9] ^ left_rotate(W[j-3], 15)) ^ left_rotate(W[j-13], 7) ^ W[j-6] for j in range(64): W_[j] W[j] ^ W[j4] # 64轮压缩循环 for j in range(64): SS1 left_rotate((left_rotate(A, 12) E left_rotate(get_T(j), j % 32)) 0xFFFFFFFF, 7) SS2 SS1 ^ left_rotate(A, 12) TT1 (FF(A, B, C, j) D SS2 W_[j]) 0xFFFFFFFF TT2 (GG(E, F, G, j) H SS1 W[j]) 0xFFFFFFFF D C C left_rotate(B, 9) B A A TT1 H G G left_rotate(F, 19) F E E P0(TT2) # 压缩后结果与初始IV异或 new_iv [A^iv[0], B^iv[1], C^iv[2], D^iv[3], E^iv[4], F^iv[5], G^iv[6], H^iv[7]] return new_iv # 测试用例输入16个字节的0x00块预期输出的IV变化可以去查SM3的标准测试向量 if __name__ __main__: test_block [0]*16 initial_iv [0x7380166F, 0x4914B2B9, 0x172442D7, 0xDA8A0600, 0xA96F30BC, 0x163138AA, 0xE38DEE4D, 0xB0FB0E4E] result compress(test_block, initial_iv) print(f压缩后IV: {[hex(x) for x in result]})这段Python代码的核心就是模拟硬件IP内部的计算流程布尔函数FF/GG的分支、消息扩展的公式、64轮循环的逻辑和硬件实现几乎是一一对应的写硬件前把这个跑通下板后的功能测试会少走很多弯路——比如我一开始写错了W[j]的扩展公式里的左移位数用软件先调通才发现硬件的bug。接下来是硬件部分我写的纯V SM3 IP是流水化设计还是组合逻辑是单轮迭代的——虽然资源比流水化少了但下板后的实测速度处理512字节消息大概1.2ms对于大部分轻量级密码应用已经足够接口图图一很简单就是4个主要信号时钟clk、复位rstn、输入块inblock[511:0]一次喂入16个32位字对应SM3的512位消息分组、输入块有效信号validin以及输出结果outhash[255:0]、结果有效信号valid_out。资源消耗部分图二也放在这儿提下单轮迭代的纯V IP在Vivado 2022.1里综合用的是Artix-7 35T开发板的资源LUT大概是1.2kFF是3k左右BRAM完全没用到非常适合资源受限的场景。算法部署设计Sm3国密算法的硬件ip设计纯v手写代码图一为ip接口图二为资源消耗图三四为封装为axilite接口并在开发版下板测试图五为开发版实测结果 直接联系内容包括:sm3的软件python实现代码算法文档一份硬件代码说明文档一份sm3硬件的vivado工程一份sm3接zynq的硬件vivado工程 可用于学习算法的硬件实现和axilite总线然后是封装AXI-Lite接口的部分图三和图四是Vivado里的IP封装和Block Design连接图——AXI-Lite是Zynq里PL端可编程逻辑和PS端ARM核通信的最简单总线只有32位数据位宽读写地址线是32位控制信号非常少。我是在Vivado的IP Catalog里右键“Create and Package New IP”选“Create a new AXI4 peripheral”然后把纯V的SM3内核嵌进去主要修改的是sm3_axi.v里的寄存器定义和状态机。封装后的Block Design很清晰PS端用Zynq-7000 PS配置DDR3和UART然后通过AXI SmartConnect或者直接AXI Interconnect连接到SM3的AXI-Lite IP再把PL的时钟和复位接好最后生成Bitstream和SDK工程现在Vivado 2022之后叫Vitis工程。SDK/Vitis里的C代码就更简单了就是初始化AXI-Lite IP的基地址然后通过XilIn32/XilOut32读写内部的寄存器——比如输入块寄存器可以分成16个32位寄存器先依次写然后写控制寄存器比如启动位等状态寄存器的完成位拉高再读输出结果寄存器。最后是下板测试的实测结果图五我用的是一块橙色的Zynq-7020开发板输入的测试消息是“1234567890abcdefghijklmnopqrstuvwxyz”预期SM3哈希值是0xD7A8FBB3...太长了完整的在资源包里的测试文档里PS端通过UART把输入和输出打印到串口调试助手结果完全一致证明IP的功能和通信都是没问题的。打包的资源包括完整的SM3 Python实现含测试向量国家密码管理局发布的SM3算法文档纯V SM3内核的代码说明文档详细到每一行逻辑的作用单轮迭代纯V SM3 IP的Vivado工程直接打开可以综合仿真接Zynq的硬件Vivado工程包含Block Design、SDK工程、Bitstream这些资源可以在评论区或者我的公众号后台回复关键词“SM3硬件化”获取所有代码都是可直接运行/综合的没有隐藏的依赖。如果还有其他问题欢迎在评论区留言

相关文章:

算法部署设计,Sm3国密算法的硬件ip设计,纯v手写代码,图一为ip接口,图二为资源消耗

算法部署设计,Sm3国密算法的硬件ip设计,纯v手写代码,图一为ip接口,图二为资源消耗,图三四为封装为axilite接口并在开发版下板测试,图五为开发版实测结果 直接联系内容包括:sm3的软件python实现代码&#xf…...

告别‘千人千脑’:用DMMR模型搞定EEG情感识别的跨被试难题(附PyTorch代码)

突破脑电情感识别的个体差异壁垒:DMMR模型实战指南与PyTorch实现 当你在实验室里看着屏幕上跳动的脑电波形时,是否曾为不同受试者数据间的巨大差异而头疼?这种被称为"脑电指纹"的个体特异性,一直是情感识别领域最棘手的…...

西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊...

西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊控制追目标温度,PLC源触摸屏源CAD原理图图纸全套常压电热水锅炉那种“冰火两重天”的加热体验谁懂?茶水间或者小烘干池边上,…...

秒杀系统主库宕机不丢单方案-03-本地消息表

秒杀系统主库宕机不丢单方案:本地消息表(事务分离补偿机制) 方案概述 本地消息表方案通过在应用层引入消息表机制,将事务操作与消息发送分离,实现最终一致性。该方案是秒杀系统主库宕机不丢单的兜底设计,即…...

Akagi技术深度解析:开源雀魂AI辅助工具完全实战指南

Akagi技术深度解析:开源雀魂AI辅助工具完全实战指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuk…...

秒杀系统主库宕机不丢单方案-02-半同步AFTER_SYNC

秒杀系统主库宕机不丢单方案:半同步AFTER_SYNC(主从确认再提交) 方案概述 半同步复制AFTER_SYNC方案是MySQL 5.7版本引入的高级复制机制,通过主从节点之间的确认机制确保数据不丢失。该方案在主库提交事务前,等待至少一…...

一站式AI应用开发:在PyTorch 2.8环境中集成Dify与Ollama部署大模型

一站式AI应用开发:在PyTorch 2.8环境中集成Dify与Ollama部署大模型 1. 企业级AI开发的新范式 想象一下这样的场景:你的开发团队需要在两周内上线一个智能客服系统,要求能理解专业术语、生成高质量回复,还要能与企业现有系统无缝…...

技术洞察:zyfun如何重构跨平台视频播放体验

技术洞察:zyfun如何重构跨平台视频播放体验 【免费下载链接】zyfun 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/zyfun 在数字娱乐快速发展的今天,跨平台视频播放器面临着系统兼容性、性能优化和用户体…...

HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案

HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否曾因炉石传说中繁琐的操作流程而感到沮丧?是否希望拥有…...

GNU Radio滤波器设计实战指南:从原理到高性能实现

GNU Radio滤波器设计实战指南:从原理到高性能实现 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio GNU Radio作为开源软件定义无线电生态系统,提供了…...

【数据结构】红黑树(Red-Black Tree)

前言在上一篇博客中,我们学习了 AVL 树,为了保持绝对的平衡,它在插入和删除时会疯狂地进行左旋和右旋。但在现代的Java集合框架中(如 TreeMap、TreeSet,以及 Java 8 之后的 HashMap),并没有选择…...

微信好友检测神器:一键识别谁删了你,轻松管理社交圈

微信好友检测神器:一键识别谁删了你,轻松管理社交圈 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFr…...

3步打造高效右键菜单:让Windows操作提速50%

3步打造高效右键菜单:让Windows操作提速50% 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否也曾在右键点击文件时,面对长达20个选项…...

Qwen-Edit-2509多角度切换技术:如何用单张图片生成全视角内容?

Qwen-Edit-2509多角度切换技术:如何用单张图片生成全视角内容? 【免费下载链接】Qwen-Edit-2509-Multiple-angles 项目地址: https://ai.gitcode.com/hf_mirrors/dx8152/Qwen-Edit-2509-Multiple-angles 在视觉创作领域,你是否曾为拍…...

抑制素A抗体如何提升妊娠中期唐氏综合征筛查的效能?

一、为何抑制素A成为妊娠期的重要生物标志物?抑制素A是一种由α和βA亚基通过二硫键连接形成的异源二聚体糖蛋白。在非妊娠期,它主要由卵巢颗粒细胞分泌,作为反馈调节因子,选择性地抑制垂体前叶分泌卵泡刺激素。进入妊娠状态后&am…...

Vue2项目构建优化实战:时间戳防缓存与资源压缩的配置详解

1. 为什么Vue2项目需要构建优化 最近接手了一个老项目的维护工作,发现每次前端更新后总有用户反馈页面显示异常。排查后发现是浏览器缓存惹的祸——用户访问的仍然是旧版本的静态资源。这让我意识到构建优化的重要性,特别是对于需要频繁更新的业务系统。…...

数字记忆自主化:GetQzonehistory技术架构与数据保护实践指南

数字记忆自主化:GetQzonehistory技术架构与数据保护实践指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、技术演进视角下的数据脆弱性危机 数字存储技术的迭代速度与…...

Windows驱动存储深度管理:从问题诊断到系统优化的完整解决方案

Windows驱动存储深度管理:从问题诊断到系统优化的完整解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 问题发现:驱动管理中的隐形痛点与风险 系…...

Kandinsky-5.0-I2V-Lite-5s实战:基于Dify平台构建无代码视频生成应用

Kandinsky-5.0-I2V-Lite-5s实战:基于Dify平台构建无代码视频生成应用 1. 引言:让图片动起来的零门槛方案 最近遇到不少朋友在问:有没有什么简单的方法,能让静态图片变成动态视频?传统方案要么需要专业视频编辑技能&a…...

魔兽争霸3终极优化指南:如何解锁180fps帧率限制并解决现代硬件兼容性问题

魔兽争霸3终极优化指南:如何解锁180fps帧率限制并解决现代硬件兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为经…...

从零到专业:League Director 让你的英雄联盟回放变成电影级大片

从零到专业:League Director 让你的英雄联盟回放变成电影级大片 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector …...

YouTube视频一直转圈?加载卡顿原因分析与排查方法(2026)

在日常开发或使用在线视频平台时,常见一个问题:视频播放过程中出现持续加载、卡顿甚至无法播放的情况。这类问题并不一定由带宽不足引起,而往往与浏览器、网络链路以及设备性能等多方面因素有关。本文从技术角度出发,对视频加载流…...

ESP32 RMT硬件驱动RF遥控库:替代rc-switch的异步OOK方案

1. 项目概述RCSwitchRmt 是一款专为 ESP32 系列微控制器设计的射频(RF)OOK(On-Off Keying,开关键控)通信库,其核心目标是提供一种现代、异步、非阻塞的硬件驱动型替代方案,以取代广为人知但已显…...

PasteMD用户调研报告:2024年文档格式转换需求分析

PasteMD用户调研报告:2024年文档格式转换需求分析 1. 调研背景与核心发现 最近整理了500份来自不同行业用户的实际反馈,这些反馈不是问卷里的标准答案,而是真实工作场景中留下的痕迹——有深夜赶论文时的抱怨截图,有项目汇报前的…...

实现网页完整捕获:Full Page Screen Capture技术解析与应用指南

实现网页完整捕获:Full Page Screen Capture技术解析与应用指南 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chr…...

Qwen3.5-9B-AWQ-4bit企业应用落地:电商商品图智能解析与文字提取实战

Qwen3.5-9B-AWQ-4bit企业应用落地:电商商品图智能解析与文字提取实战 1. 电商场景下的图片理解挑战 在电商运营中,每天需要处理海量商品图片。传统的人工审核和标注方式面临三大痛点: 效率瓶颈:人工处理一张商品图平均需要3-5分…...

一键捕获完整网页:Full Page Screen Capture 高效解决方案

一键捕获完整网页:Full Page Screen Capture 高效解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-e…...

SeqGPT-560M效果展示:跨句指代消解能力——‘该公司’→‘北京智云科技有限公司’

SeqGPT-560M效果展示:跨句指代消解能力——‘该公司’→‘北京智云科技有限公司’ 今天,我想和你聊聊一个在信息抽取领域里特别“聪明”的能力——跨句指代消解。听起来有点专业,对吧?别担心,我用大白话给你解释。 想…...

三星 Infinite AI 葡萄酒冰箱:智能厨房新尝试能否突围?

AI 加持,葡萄酒管理新体验周一,三星推出了 Infinite AI 葡萄酒冰箱,目前仅在韩国有售。这款冰箱采用了“AI 葡萄酒管理器”,借助安装在顶部的“AI 视觉”摄像头,能检测用户放入或取出的酒瓶及位置,还能分析…...

3步突破Navicat试用期限制:让数据库管理工具持续为你服务

3步突破Navicat试用期限制:让数据库管理工具持续为你服务 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 作为数据库开发者的日常伴侣,Navicat以其直观的…...