📄 aes_keygen.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 + -