有限域GF(2^128)GHASH校验值运算模块——Verilog仿真

博客主要介绍了GF(2^128)GHASH校验值运算模块的Verilog仿真,包括有限域乘法模块cal_vz()和顶层模块question_2()的仿真。通过仿真,验证了模块的正确性,结果与题目给定的预期一致,进行了二进制数的翻转操作以匹配计算过程。
摘要由CSDN通过智能技术生成

一共两个部分(1)有限域乘法模块cal_vz()的仿真(2)顶层模块question_2()的仿真,两个模块的代码都在下面的超链接里,这里就不贴了

Verilog的代码:有限域GF(2^128)GHASH校验值运算模块——Verilog实现

(1)有限域乘法模块cal_vz()的仿真:
module cal_vz_sim;

    // ghash_din ghash_ivin 异或得到A
    reg[127:0] ghash_din = 128'h5C7A9427_3D9A2AB4_0FD795BD_84CC57DC;
    reg[127:0] ghash_ivin = 128'h5A042715_29F400F0_6AA3D3A7_B73C321C;
    // ghash_key 是 B
    reg[127:0] ghash_key = 128'hFA0B7844_C7049998_D4191BCF_6EFA5D00;

    reg dvalid_in_sim = 1'b0;
    reg[127:0] A_sim = 128'd0;
    reg[127:0] B_sim = 128'd0;
    initial begin
        # 50
        dvalid_in_sim = 1'b1;
        A_sim = ghash_din ^ ghash_ivin;
//        A_sim = 128'h80008000_80008000_80008000_80008000;  // 用于直观测试
        B_sim = ghash_key;
        # 20
        dvalid_in_sim = 1'b0;
        A_sim = 128'd0;
        B_sim = 128'd0;
    end
    
    reg clk = 1'b0;
    always #10
        clk <= ~clk;
    
    wire dvalid_out_sim;
    wire[127:0] V_sim;
    wire[127:0] Z_sim;
    cal_vz uut_cal_vz(
        .clk_in(clk),
        .rstn_in(1'b1),
        .dvalid_in(dvalid_in_sim),
        .A_in(A_sim),
        .B_in(B_sim),
        .dvalid_out(dvalid_out_sim),
        .V_out(V_sim),
        .Z_out(Z_sim)
        );
endmodule

仿真结果如图:
仿真结果cal_vz
由于在之前的python验证文章中提到的,我设计的模块计算过程是和题目反向的,所以这里输入输出的二进制数都做了一个翻转操作,Binary类也在那篇文章的python代码中:

import galois_128 as gf

ghash_din = gf.Binary("3BEA3321BDA9EBF02D5459BCE4295E3A")
ghash_ivin = gf.Binary
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值