Verilog置换处理脚本

本文介绍了在Verilog中如何使用初始置换处理数据,以DES算法为例,通过config.txt文件中的置换表对64位明文进行操作。脚本定义了get_varinfo函数读取配置文件,output_expression函数用于生成表达式输出指定位置的变量值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

在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()
    
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴风雨中的白杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值