Verilog置换处理脚本

简介: 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()
相关文章
|
人工智能 异构计算
基于PAI-DSW使用SD WebUI实现AI扩图功能
在本教程中,您将学习如何在阿里云交互式建模(PAI-DSW)中,使用Stable-Diffusion-WebUI实现AI扩图功能。
基于PAI-DSW使用SD WebUI实现AI扩图功能
|
JavaScript 前端开发
【面试题】最详尽的 JS 原型与原型链终极详解(一)
【面试题】最详尽的 JS 原型与原型链终极详解(一)
322 0
|
前端开发 JavaScript 应用服务中间件
VUE3(十八)vue 路由history 模式去掉 URL 中的 # (nginx)
这部分内容比较少。其实更多的是参考一下vue-router4的官方文档就好。 但是,去掉#之后的路由在配合php框架使用的时候可能会有问题,就是这个链接不知道该去后端还是去前端的路由。
1287 0
VUE3(十八)vue 路由history 模式去掉 URL 中的 # (nginx)
|
开发框架 算法 .NET
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
297 0
|
10月前
|
存储 边缘计算 物联网
揭秘边缘计算:定义、优势、挑战与未来趋势
揭秘边缘计算:定义、优势、挑战与未来趋势
|
10月前
|
存储 人工智能 弹性计算
着眼未来,共建多元化的大模型生态
本文介绍了德勤中国如何利用大模型赋能企业,分享了阿里云“产品博士”作为首个内部案例的成功经验,以及阿里云智能集团如何通过“模型+应用”双轮驱动,构建全面开放的大模型生态,帮助企业实现业务价值。
|
11月前
|
数据可视化 数据挖掘 BI
没办法用Trello?其实有更聪明的替代方案!
在快节奏的工作环境中,Trello作为一款广受好评的项目管理和任务协作工具,凭借其直观的看板界面赢得了全球用户的青睐。然而,由于访问受限、数据安全和本土化资源不足等问题,Trello在国内的实际使用面临诸多挑战。为此,板栗看板(Banli)应运而生,作为一款专为国内市场开发的工具,板栗看板不仅在功能上媲美Trello,还在访问稳定性、自定义选项、智能提醒、数据分析和权限管理等方面进行了优化,特别适合中国团队和企业的实际需求。
324 0
|
关系型数据库 数据处理 PostgreSQL
在 Postgres 中使用 Split Part
【8月更文挑战第11天】
780 0
在 Postgres 中使用 Split Part
|
数据采集 人工智能 网络协议
trio,一个超级实用的 Python 异步编程库
trio,一个超级实用的 Python 异步编程库
379 1