Verilog置换处理脚本

System Verilog学习笔记(二十)——TCL基础 它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有功能强大的固有的核心命令集由于TCL的解释器是用C/C++语言的过程库实现的,因此可以把TCL看作一个C库,包含用于扩展TCL命令的C/C++过程和函数,每个应用程序都可以根据自己的需要对TCL语言进行扩展扩展后的TCL语言将可以继承TCL核心部分的功能,包括核心命令、控制结构、数据类型、对过程的支持等;TCL良好的可扩展性使其能够很好地适应产品测试的需要。 阅读详情

一、介绍

在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()
    
    在这里插入图片描述
FPGA设计心得(8)Verilog中的编译预处理语句 Verilog中编译预处理语句不是一般的语句,Verilog编译器会对其进行预处理,然后预处理的结果和源程序一起进行通常的编译处理。其作用范围从定义开始到文件结束。 阅读详情

相关推荐

FPGA硬件实现DES加密算法:Verilog设计与工程实践详解

在数字电路与硬件安全领域,对称加密算法是保障数据机密性的核心技术。DES(Data Encryption Standard)作为经典的分组密码算法,其Feistel网络结构具有加解密对称的特性,非常适合硬件映射实现。通过硬件描述语言(如Verilog)将算法转化为可综合电路,能够深入理解置换、S盒替换等核心操作的硬件本质,并实现远超软件的性能加速。这种硬件加速方法在通信安全、嵌入式系统和专用加密芯片(ASIC/FPGA)设计中具有重要价值。本文以DES的FPGA实现为例,详细解析了从算法原理到Verilog

weixin_33858336的博客 321

信息安全软考——关于DES初始置换表解答题

DES初始置换表如下: 置换时,从左上角的第一个元素开始,表示输入的铭文的第58位置换成输出的第1位,输入明文的第50位置换成输出的第2位,从左至右,从上往下,依次类推。 DES加密时,对输入的64位明文首先进行初始置换操作。 若置换输入的明文M=0123456789ABCDEF(十六进制),请计算其输出(十六进制表示)。 解答: DES加密的初始置换主要是打乱输入明文的顺序。具体实现,先把明文M=0123456789ABCDEF(十六进制)转换成64比特的二进制表示,然后按照转换规则如下: 置换时,从左

nihao_ma_的博客 9486

verilog-编译预处理语句

define `define 宏名 宏表达式//宏名能够代表他们的意义,建议大写字母。可以在module外面和里面,但是需要先定义,引用的时候也要先加上 编译时不会出错。 不需要写;,如果加了分号,会连分号一起置换 module reg a,b,c; `define cc a+b+c; `define `cc+b; endmodule `include 能够将文件全部放进里面。 `include "adder.v" `include "bbb.v"//一个include只能包含一个文件,可以出现在元程序的

weixin_42705678的博客 380

DES加密算法

DES是一种对称加密算法(加密和解密使用相同的密钥)中的分组加密算法(与流密码相对应,流密码是逐字节进行加密,分组加密是将明文分成固定的字节块,并对每个字节块进行加密)DES算法将明文以64位字节块为一组进行加密,密钥长为64位(bit,bit是二进制数字),但只有56位参与运算,其余8位为校验位。

2401_87451820的博客 2374

DES加密的Verilog代码示例

在实际的DES加密算法中,数据位数较大,因此需要使用多个子模块来完成数据的处理和变换。为了实现DES加密算法,我们需要对Verilog语言有一定的了解,并具备对DES算法的深入理解。此外,我们还需要使用仿真工具(如ModelSim)对代码进行仿真和验证,以确保DES模块的正确性和可靠性。要完整实现DES加密算法,需要进一步定义和实现各个子模块,例如初始置换模块、轮函数模块、密钥生成模块等。在模块内部,我们可以定义和实例化各个子模块,以及编写主要的DES加密逻辑。的模块,该模块接收一个64位的明文输入。

DevPhantom的博客 320

Verilog语法之十三:编译预处理

我将Verilog的语法进行了总结,写了13篇文章,让小白“快速见识猪如何跑”,每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。

航天领域资深码农,型号经验丰富,一线干货分享 948

DES的verilog代码实现

IP置换模块测试代码 轮函数模块(desL) F函数模块(desf) E盒置换模块(E_box) S盒置换模块(S_box) S1 S2 S3 S4 S5 S6 S7 S8 P盒置换模块(P) IP逆置换模块(IP_1) 密钥生成模块(key_top) PC_1 移位操作 PC_2 本文是对https://blog.youkuaiyun.com/a4qqlht/article/details/4837906文章中的代码进行了一些修改,如果有修改不当的地方,请各位大佬批评指正。...

weixin_58309419的博客 1873

Verilog程序中的DES加密算法设计与实现

在信息安全领域中,数据加密是保护信息不被未经授权的用户访问的重要手段。DES(Data Encryption Standard)算法是历史上最为广泛使用的对称密钥加密算法之一,它在20世纪70年代由IBM公司开发,并于1977年被美国政府正式采纳为联邦信息处理标准。由于其设计精巧、速度相对较快且易于在硬件中实现,DES在随后的几十年内成为了商业和金融领域的标准加密方式。DES算法基于一个固定长度的64位分组大小,使用56位的密钥进行加密,通过对称密钥机制,使得数据可以被加密和解密。

weixin_32389853的博客 750

systemverilog的乱序shuffle

在 SystemVerilog 中,shuffle是一个系统函数,用于对动态数组或队列进行随机打乱(洗牌)操作。以下是一些关于shuffle。

m0_71354184的博客 2872

DES加密算法的Verilog实现教程

加密算法是信息安全的核心组成部分,而DES(Data Encryption Standard,数据加密标准)是历史上最著名的对称密钥加密算法之一。自1970年代被美国国家标准局采纳为官方加密标准后,DES在全球范围内被广泛应用于金融、电信等多个领域,保护着各类敏感数据的安全。Feistel网络是一种用于构建对称密钥块加密算法的结构,最早由Horst Feistel在IBM工作时提出。该结构的核心思想是将加密的文本分成两个部分,并通过一系列交替进行的处理步骤来实现加密。

weixin_30600615的博客 1077

Verilog实现DES加密算法项目实战

数据加密标准(DES)算法是密码学中广泛使用的一种对称密钥加密块密码算法。该算法最早由IBM公司在1970年代设计,后来被美国政府采用并作为官方的加密标准。DES算法使用56位的密钥对64位的数据块进行加密和解密处理,在历史上曾广泛应用于商业和金融领域的数据安全。DES算法基于置换和替换两种基本操作。它通过初始置换(IP)开始,然后是16轮迭代的复杂处理过程,包括扩展置换、S盒替换、P盒置换和混合密钥的生成,最终结束于逆初始置换(IP^-1)以获得加密后的数据块。

weixin_34456923的博客 827

DES算法加密原理

首先是个大家常见的抽象原理图,这这是了解个大概具体还要继续细化每个步骤。 DES算法总览中包括ip和ip-1,也就是初始置换和逆初始置换。 初始置换和逆初始置换都是跟据相应的表对原始数据进行变换 1.初始置换 该初始置换表的数字排列是由规律的(自己观察即可,规律不重要)。 但规律能简化置换过程。置换方法有二种。 1.1无规律置换 根据初始置换表,置换表上的对应数字x(x确指一个数)就是原数据的第x位,那么只需把置换表上的x数字替换成原数据的第x为对应的字母即可, 然后跟据替换后的置换表依次读出的结果就是

Wz2^2 2726

做蛋白组学数据分析,竟然还不会使用DIA-NN软件,走过路过不要错过,进来免费学习!!!

蛋白组学分析工具DIA-NN使用

wcy1995427的博客 9871

12 verilog基础语法-编译预处理语句

文章目录一、学习内容二、编译预处理语句(1)`define语句(2)`include语句(3)timescale语句三、思考和小结(1)思考(2)小结

毕淑敏曾说过:“我不相信命运,我只相信自己的手;我不相信手掌上的纹路,但我相信手指加上手掌的力量”。在这个快节奏的社会,只有自己能力不足才会被卷,踏踏实实沉下心来学一些技术,及时记录,方便以后复盘。 2573

华为2024机考真题集合

2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所得的结果就是中位数。在实际考试中会随机抽三道题目进行考察,其中两道100分卷题和一道200分卷题,总共400分。幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数。1.众数是指一组数据中出现次数量多的那个数,众数可以是多个。

qq_25360769的博客 5093

CoaXPress FMC子卡:高速图像采集与FPGA原型开发实战指南

在机器视觉和工业检测领域,高速、可靠的数据传输是核心需求。CoaXPress(CXP)协议作为一种基于同轴电缆的高速接口标准,通过其高带宽、长距离传输和低延迟的特性,有效解决了传统接口在确定性实时传输方面的短板。其技术价值在于为海量图像数据提供了稳定、高效的物理层和数据链路层解决方案,广泛应用于半导体检测、医疗成像等对吞吐量有极致要求的场景。要实现CXP系统的快速原型验证,集成了高速SerDes接口和时钟管理的FMC子卡与FPGA开发板的组合成为关键。这种平台将复杂的硬件设计封装,让开发者能聚焦于图像处理算

weixin_31815843的博客 278

Verilog `define `timescale `include 浅谈

Verilog 预编译处理前言1、宏定义 `define2、“文件包含” 操作 `include3、时间尺度 `timescale4、条件编译命令`ifdef、`else、`endif 前言 Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。 Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般的语句)。Verilog HDL编译系统通常先对这些特殊的命令进行“预处理”,然后将预处理的结果和源程序一起在进行通常的

adolphwang_909086的博客 3989

Open FPV VTX与Betaflight的MSP协议配置详解:从硬件连接到OSD显示

本文详细解析了如何通过MSP协议将Open FPV VTX与Betaflight飞控进行深度集成,实现飞行数据在OSD上的稳定显示。内容涵盖从硬件连接、Betaflight端口MSP服务启用,到VTX侧配置与OSD元素布局调校的全流程,并提供了常见问题的排查思路,帮助FPV玩家构建可靠的数据叠加系统。

weixin_29201933的博客 456

数据加密标准DES硬件实现(Modelsim)(附Verilog代码)

本文设计并验证了DES的密钥扩展通路,分别采用Round Based方法和Pipeline方法两种方式设计并验证DES的明文通路。

Nirvana_Tai的博客 1948

储能EMS工作原理深度剖析:功率分配与充放电策略的底层逻辑

储能EMS的功率分配与充放电策略,是其智能化的集中体现。功率分配更像一个“执行指挥官”,关注如何将总任务高效、公平、安全地分解到每个士兵(PCS/电池簇);而充放电策略则像“总参谋长”,基于战场情报(市场、电网、自身状态)制定最优的作战计划。AI强化学习策略:让EMS通过与复杂环境不断交互,自主学习最优策略,适应不确定性。数字孪生与仿真:在虚拟空间中提前验证策略,评估风险,实现预防性控制。跨站协同优化:多个储能站的EMS通过云平台协同,参与区域电网甚至跨省市场的联合优化调度。

小帽子的博客 375

【AN7581】AN7581 SDK编译环境搭建操作说明

安装编译需要的工具包。

wgl307293845的博客 338

基于APB总线的SM4密码协处理器实现(附Verilog代码)

使用Verilog完成XTEA/AES/SM4/MD5/SHA-1基本模块;定义所需寄存器,添加APB总线接口,完成兼容APB总线的SM4协处理器设计;

Nirvana_Tai的博客 2218

OpenClaw实现多agent协作研究

本文介绍了如何构建多agent协作系统,通过飞书机器人实现任务分配与执行。系统包含三个agent:research_leader(总调度)、research_content(内容生成)和research_review(内容审核)。详细说明了agent配置方法(包括创建命令、权限设置)、飞书channel绑定方式,以及通过共享目录和会话机制实现协作。最后展示了应用示例,用户只需向leader机器人下达任务,系统即可自动完成内容生成和审核的全流程。

hhue2007的专栏 617

Verilog编译预处理

编译预处理是Verilog HDL编译系统的一个组成部分。Verilog HDL编译系统通常先对这些特殊的命令进行预处理,然后将预处理的结果和源程序一起在进行通常的编译处理。为了和一般的语句相区别,这些预处理命令以符号 ` 开头这些预处理命令的有效作用范围为定义命令之后到本文件结束或到其它命令定义替代该命令之处。一般形式// 宏定义`define 宏名 宏内容// 使用宏`宏名宏名的有效范围为定义命令之后到原文件结束。宏定义是用宏名代替一个字符串,也就是作简单的置换,不作语法检查。

wkk的博客 2007

系统盘被 1Panel 撑爆了?一键脚本 3 分钟搞定无损迁移!(1Panel如何快速无损的修改安装目录)

很多用户因默认安装导致 1Panel 面板占满系统盘 😱,本文详解了为何常规快照迁移会失效,并提供了通过**一键自动化脚本**实现无损迁移的完美方案 🛠️。无论你是 NAS 用户还是服务器管理员,都能找到安全扩容的最佳实践。

XiaoqiangClub的博客 1279

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SM3加密算法verilog实现

SM3是中国国家密码管理局发布的一种密码杂凑算法,属于哈希函数家族,适用于数字签名、消息认证码生成等场景。其输出为256位(32字节)的固定长度哈希值,安全性对标SHA-256。

qq_41937663的博客 2498

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: C语言结构体内存对齐
下一篇: SystemVerilog:always_ff,always_comb,always_latch
暴风雨中的白杨
博客等级 码龄6年 1070粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

暴风雨中的白杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值