Verilog置换处理脚本

文章目录

  • 一、介绍
  • 二、脚本

一、介绍

在Verilog中的置换处理,为将一个数据的数据位按照某种规则进行重新排列。

以DES算法的初始置换为例
初始置换将64比特的明文,按照初始置换表进行置换,得到一个乱序的64bit明文组。
初始置换表如下:
在这里插入图片描述
第一个数58表示,将明文M的第58位放置在第1位。

二、脚本

  • config.txt文件
    data
    14 17 11 24 1  5  3  28
    15 6  21 10 23 19 12 4
    26 8  16 7  27 20 13 2
    41 52 31 37 47 55 30 40
    51 45 33 48 44 49 39 56 
    34 53 46 42 50 36 29 32
    
    • 第一行为变量的名称
    • 接下来的行为置换表的内容
  • main.py
    def get_varinfo(config_path:str)->[str,[]]:
        f = open(config_path,"r")
        varname = f.readline().strip()
        varidxs = []
        for line in f.readlines():
            for idx in line.split():
                varidxs.append(int(idx.strip()))
        f.close()
        return [varname,varidxs]
    def output_expression(varname:str,varidxs:[int],linenum=8,databit=2)->None:
        print("{")
        for idx in range(len(varidxs)-1):
            print(("{}[{:"+str(databit)+"}],").format(varname,varidxs[idx]),end=' ')
            if (idx+1)%linenum == 0 :
                print("")
        print(("{}[{:"+str(databit)+"}]").format(varname,varidxs[len(varidxs)-1]))
        print("};")
            
    
    def main():
        varname , varidxs = get_varinfo("./config.txt")
        output_expression(varname,varidxs)
    
    if __name__ == "__main__":
        main()
    
    在这里插入图片描述

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

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

相关文章

加速计算,为何会成为 AI 时代的计算力“新宠”

随着科技的发展,处理大量数据和进行复杂计算的需求越来越高,人工智能、大数据和物联网等领域更是如此,传统的计算方式已经无法满足这些需求。因此,加速计算作为一种现代计算方式,成了必要的手段。加速计算具有前所未有…

为什么设计制造行业需要数据加密?

设计制造行业是一个涉及多种技术、工艺、材料和产品的广泛领域,它对经济和社会的发展有着重要的影响。然而,随着数字化、智能化和网络化的发展,设计制造行业也面临着越来越多的数据安全风险,如数据泄露、数据篡改、数据窃取等。这…

Qt Creator可视化交互界面exe快速入门4

上一期介绍了信号与槽,本期介绍加法计算器 我们来新建一个项目 然后拖动设置按钮 还需要个输出框 这里拖动Line Edit 我这里只是简单演示一下,做个低配版计算器,再加个加号和一个等于号就结束了。 然后回到代码编辑部分,我们需要…

代码随想录27期|Python|Day29|回溯算法|491.递增子序列|46.全排列|47.全排列 II

491. 非递减子序列 本题不是单纯的去重题目,而是需要保持数字在原数组的顺序。 比如:[4,5,6,7]和[4,6,5,7]相比,后者就不能选择[5,6,7]这个排列,因为违反了设置的顺序。所以去重的方法就只有哈希表。 需要在每一层设置一个哈希表…

注册谷歌企业开发者账号所需的邓白氏码是什么?如何获取?以及相关费用?

随着谷歌政策的收紧,谷歌对个人开发者账号发布应用的要求越来越高,需要20人连续测试14天,才能提审,因此很多开发者选择使用企业账号来进行上架。 而众所周知,注册谷歌企业开发者账号需要邓白氏码。什么是邓白氏码&…

制作系统U盘启动surface教程

最近本人是崩溃的:我surface pro9系统之前被我更新成win11 dev的开发预览版,不好用,有很多bug,升级后才发现已经是预览版成员资格,回退不了,重置初始化依然是dev预览版和取消预览计划是灰色的,退…

Volume Control 2

为游戏添加音乐和音效总是需要一些编码来设置一个系统来控制、显示和保存应用程序的音量设置。 音量控制的设计是为了立即为您设置这些内容,让您有更多时间专注于最重要的事情——制作出色的游戏! 在版本2中,我们对系统进行了重新设计,使其更加模块化、灵活,甚至更易于使用…

MySQL——索引

目录 一.没有索引,可能会有什么问题 二.MySQL与存储 1.先来研究一下磁盘 2.MySQL与磁盘交互基本单位 3.建立共识与总结 三.索引的理解 三.索引操作 1.创建主键索引 2.唯一索引的创建 3.普通索引的创建 4.全文索引的创建 四.查询索引 五.删除索引 一…

MySQL进阶SQL语句

1、select 显示表格种一个或数个字段的所有数据记录 语法:select "字段" from "表名"; 2、distinct 不显示重复的数据记录 语法:select distinct "字段" from "表名"; 3、where 有条件查询 语法&#x…

模式识别与机器学习-SVM(核方法)

SVM(核方法) 核方法核技巧在SVM中的应用 谨以此博客作为复习期间的记录 核方法 对解线性分类问题,线性分类支持向量机是一种非常有效的方法.但是,有时分类问题是非线性的,这时可以使用非线性支持向量机&a…

线程池原理及使用

线程池继承关系 1.为什么使用线程池? 1.反复创建线程开销大; 2.过多线程会占用太多内存(执行任务易出现“内存溢出”); 3.加快程序响应速度; 4.合理利用CPU和内存; 5.统一管理线程; 2.创建和停止线程池 2.1.线程池参数解释 1.keppAliveTime 如果线程池当中的线程数…

使用Python构建令人瞩目的高频交易算法

大家好,在金融领域,高频交易(HFT)因其能够以极高的速度执行大量订单的能力而备受关注。高频交易算法旨在识别并利用不同市场间的微小价格差异,因此交易者需要实现低延迟系统来进行套利策略,本文将探索使用P…

我的NPI项目之Android系统升级 - 同平台多产品的OTA

因为公司业务中涉及的面比较广泛,虽然都是提供移动终端PDA,但是使用的场景很多时候是不同的。例如,有提供给大型物流仓储的设备,对这样的设备必需具备扫码功能,键盘(戴手套操作),耐用…

大数据求职心得

........................................................................................................................................................... 大数据求职心得 ...................................................................................…

写一个随机点名的程序

获取方式: 链接:https://pan.baidu.com/s/1fdCJ_3IYUl7v7x6I1zAWgg 提取码:1234 这里面用到JS当中的数组,random以及window.setInterval()回调函数来进行实现的.

性能测试-jemeter:安装 / 基础使用

一、理解jemeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具,主要用于模拟大量用户并发访问目标服务器,以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行…

Pytorch从零开始实战14

Pytorch从零开始实战——DenseNet SENet算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——DenseNet SENet算法实战环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook,使用Python3.8&#x…

搭建FTP服务器与计算机端口介绍

FTP介绍 FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的协议。它允许用户通过客户端与服务器进行通信,从服务器下载文件或将文件上传到服务器。 FTP使用客户端-服务器模型。用户使用FTP客户端软件连接到FTP服务器&…

人工智能_机器学习077_Kmeans聚类算法_亚洲国家队自动划分类别_3维可视化实现---人工智能工作笔记0117

然后我们上一节使用聚类算法对,2006年世界杯,2010年世界杯,2007年亚洲杯,足球队进行了自动类别划分,然后 这一节,我们使用代码对,聚类算法的划分结果,进行一下可视化 plt.figure(figsize=(12,9)) 首先指定画布大小 ax=plt.subplot(111,projection=3d) 然后指定111,表示画布的,…

【电商项目实战】基于SpringBoot完成首页搭建

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《电商项目实战》。🎯🎯 &am…