⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes_keygen.h

📁 VHDL to System C translator
💻 H
字号:
#ifndef AES_KEYGEN_H
#define AES_KEYGEN_H

#include <systemc.h>


#include "dkeylogic.h"
#include "ekeyfsm.h"
#include "ekeylogic.h"
#include "keymem.h"
SC_MODULE(aes_keygen) {

    sc_in<bool >  clk;
    sc_in<sc_uint<4> >  dkey_addr;
    sc_in<bool >  dkey_addr_mux;
    sc_in<sc_uint<4> >  ekey_addr;
    sc_in<bool >  ekey_addr_mux;
    sc_in<sc_uint<8> >  fsbout;
    sc_in<sc_biguint<128> >  key;
    sc_in<sc_uint<32> >  ktout;
    sc_in<bool >  ld_key;
    sc_in<bool >  resetn;
    sc_out<bool > busy;
    sc_out<bool > dkey_done;
    sc_out<sc_biguint<128> > dkey_out;
    sc_out<bool > ekey_done;
    sc_out<sc_biguint<128> > ekey_out;
    sc_out<sc_uint<8> > fsb_addr;
    sc_out<sc_uint<8> > kt_addr;
    sc_out<sc_uint<2> > ktsel;


    sc_signal<bool > dkey_mux;
    sc_signal<bool > key_inp_mux;
    sc_signal<bool > ld;
    sc_signal<bool > ld_rk3;
    sc_signal<bool > ldd;
    sc_signal<sc_uint<4> > round_daddr;
    sc_signal<sc_biguint<128> > round_dkey;
    sc_signal<sc_uint<4> > round_eaddr;
    sc_signal<sc_biguint<128> > round_ekey;
    sc_signal<sc_uint<2> > sel_rk3;
    sc_signal<sc_uint<4> > sel_sk;
    sc_signal<bool > wr_dmem;
    sc_signal<sc_biguint<128> > ekey_out_internal;
    void comb_assignments();

    dkeylogic dlogic;
    ekeyfsm fsm;
    ekeylogic elogic;
    keymem dmem;
    keymem emem;

    aes_keygen(sc_module_name _n) : sc_module(_n),dlogic("dlogic"),fsm("fsm"),elogic("elogic"),dmem("dmem"),emem("emem") {
        dlogic.clk(clk);
        dlogic.dkey_mux(dkey_mux);
        dlogic.ekey_out(ekey_out_internal);
        dlogic.ktout(ktout);
        dlogic.ldd(ldd);
        dlogic.resetn(resetn);
        dlogic.sel_sk(sel_sk);
        dlogic.wr_dmem(wr_dmem);
        dlogic.kt_addr(kt_addr);
        dlogic.ktsel(ktsel);
        dlogic.round_dkey(round_dkey);
        fsm.clk(clk);
        fsm.ld_key(ld_key);
        fsm.resetn(resetn);
        fsm.busy(busy);
        fsm.dkey_done(dkey_done);
        fsm.dkey_mux(dkey_mux);
        fsm.ekey_done(ekey_done);
        fsm.key_inp_mux(key_inp_mux);
        fsm.ld(ld);
        fsm.ld_rk3(ld_rk3);
        fsm.ldd(ldd);
        fsm.round_daddr(round_daddr);
        fsm.round_eaddr(round_eaddr);
        fsm.sel_rk3(sel_rk3);
        fsm.sel_sk(sel_sk);
        fsm.wr_dmem(wr_dmem);
        elogic.clk(clk);
        elogic.fsbout(fsbout);
        elogic.key(key);
        elogic.key_inp_mux(key_inp_mux);
        elogic.ld(ld);
        elogic.ld_rk3(ld_rk3);
        elogic.resetn(resetn);
        elogic.round_eaddr(round_eaddr);
        elogic.sel_rk3(sel_rk3);
        elogic.fsb_addr(fsb_addr);
        elogic.round_ekey(round_ekey);
        dmem.addrmux(dkey_addr_mux);
        dmem.addrmux0(round_daddr);
        dmem.addrmux1(dkey_addr);
        dmem.clk(clk);
        dmem.din128(round_dkey);
        dmem.we(wr_dmem);
        dmem.dout128(dkey_out);
        emem.addrmux(ekey_addr_mux);
        emem.addrmux0(round_eaddr);
        emem.addrmux1(ekey_addr);
        emem.clk(clk);
        emem.din128(round_ekey);
        emem.we(ld);
        emem.dout128(ekey_out_internal);

        SC_METHOD(comb_assignments);
        sensitive << ekey_out_internal;
    }

    ~aes_keygen() {}
    SC_HAS_PROCESS(aes_keygen);

};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -