基于FPGA的加密算法设计

该设计介绍了基于FPGA的DES加密解密算法实现,使用100MHz时钟输入,经过v4_dcm IP核分频为10MHz和100KHz时钟。64位明文或密文通过一系列置换和代替技术进行加密或解密,最终在实验箱数码管上显示验证结果。
摘要由CSDN通过智能技术生成

1.设计描述

此设计为DES加密解密算法的FPGA实现,DES算法为密码体制中的对称密码体制,也被称为美国数据加密标准。明文按64位进行分组,密钥长度为64位,随后按照一系列置换和代替技术进行具体的加密算法。

输入为100MHz的时钟,复位信号。

输出为16位数据D[15:0]。

IP核:v4_dcm进行系统分频

      输入时钟首先进行dcm分频为10MHz,再通过分频模块进一步分频为100K时钟,并以此为算法中数据处理的基准时钟。复位信号中对各寄存器值初始化,其中对data_in(加密模式下的明文或解密模式下的密文,64位)和密钥key(64位)赋初值,经过DES算法后产生data_out(加密模式下的密文或解密模式下的明文,64位)。将64位data_out分为8组赋给D的数据输出,同时按时钟循环赋给D控制输出,最终在实验箱8个数码管上显示,每个数码管表示8位输出,目的是验证在可综合以及仿真成功的条件下能够在真实环境中运行。

2.代码设计

2.1时钟模块

//main函数例化模块  系统时间分频

//dcm IP核 输入100MHz,输出10MHz

    v4_dcm CLK_DIV_10M(

    .CLKIN_IN(CLK),

    .RST_IN(!rst_n),

        .CLKDV_OUT(CLK_10M),

        .CLKIN_IBUFG_OUT(),

        .CLK0_OUT(),

    .LOCKED_OUT(CLK_LOCKED)

        );

//100k模块运行时间分频   

    wire CLK_100K;

    parameter DIV_FACTOR = 100;

   

    CLK_DIV CLK_DIV_100K (

        .CLK_IN(CLK_10M),

        .nRST(CLK_LOCKED),

   .CLK_OUT(CLK_100K)

    );

    defparam CLK_DIV_100K.DIV_FACTOR =DIV_FACTOR;

    wire   nRST_USER;

    assign nRST_USER= CLK_LOCKED;

  

 

//时钟分频模块

moduleCLK_DIV(CLK_IN, nRST, CLK_OUT);

    input CLK_IN;

    input nRST;

    output CLK_OUT;

   

    reg CLK_OUT = 1'b1;

    reg [9:0] DIV_counter = 10'h000;

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值