📄 aes_logic.cpp
字号:
#include "aes_logic.h"
void aes_logic::process_line96() {
if (resetn.read() == 0) {
inputreg_s.write((sc_biguint<128>)("0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"));
} else
if (clk.posedge()) {
if (ld_din.read() == 1) {
inputreg_s.write((sc_biguint<128>)(imux_s.read() ));
}
}
}
void aes_logic::process_line113() {
if (resetn.read() == 0) {
temp_s.write((sc_uint<32>)("0b00000000000000000000000000000000"));
} else
if (clk.posedge()) {
if (clr_temp.read() == 1) {
temp_s.write((sc_uint<32>)("0b00000000000000000000000000000000"));
} else
if (sel.read()(1,0 ) == (sc_uint<2>)"0b00") {
temp_s.write((sc_uint<32>)(ftfs_out.read() ));
} else {
temp_s.write((sc_uint<32>)(xorout_s.read() ));
}
}
}
void aes_logic::process_line133() {
if (resetn.read() == 0) {
resultreg_s.write((sc_biguint<128>)("0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"));
} else
if (clk.posedge()) {
if (ld.read() == 1) {
switch (sel.read()(3,2 )) {
case 3 :
resultreg_s.write((resultreg_s.read()(127,32 ),xorout_s.read()) );
break;
case 2 :
resultreg_s.write(((resultreg_s.read()(127,64 ),xorout_s.read()),resultreg_s.read()(31,0 )) );
break;
case 1 :
resultreg_s.write(((resultreg_s.read()(127,96 ),xorout_s.read()),resultreg_s.read()(63,0 )) );
break;
default : resultreg_s.write((xorout_s.read(),resultreg_s.read()(95,0 )) );
break;
}
}
}
}
void aes_logic::process_line153() {
switch (sel.read()) {
case 0 :
sel_dec_s.write((sc_uint<4>)("0b0000" ));
break;
case 1 :
sel_dec_s.write((sc_uint<4>)("0b1001" ));
break;
case 2 :
sel_dec_s.write((sc_uint<4>)("0b0010" ));
break;
case 3 :
sel_dec_s.write((sc_uint<4>)("0b1011" ));
break;
case 4 :
sel_dec_s.write((sc_uint<4>)("0b0100" ));
break;
case 5 :
sel_dec_s.write((sc_uint<4>)("0b1101" ));
break;
case 6 :
sel_dec_s.write((sc_uint<4>)("0b0110" ));
break;
case 7 :
sel_dec_s.write((sc_uint<4>)("0b1111" ));
break;
case 8 :
sel_dec_s.write((sc_uint<4>)("0b1000" ));
break;
case 9 :
sel_dec_s.write((sc_uint<4>)("0b0001" ));
break;
case 10 :
sel_dec_s.write((sc_uint<4>)("0b1010" ));
break;
case 11 :
sel_dec_s.write((sc_uint<4>)("0b0011" ));
break;
case 12 :
sel_dec_s.write((sc_uint<4>)("0b1100" ));
break;
case 13 :
sel_dec_s.write((sc_uint<4>)("0b0101" ));
break;
case 14 :
sel_dec_s.write((sc_uint<4>)("0b1110" ));
break;
default : sel_dec_s.write((sc_uint<4>)("0b0111" ));
break;
}
}
void aes_logic::process_line178() {
switch (sel_s.read()) {
case 0 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(127,120 ) ));
break;
case 1 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(87,80 ) ));
break;
case 2 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(47,40 ) ));
break;
case 3 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(7,0 ) ));
break;
case 4 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(95,88 ) ));
break;
case 5 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(55,48 ) ));
break;
case 6 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(15,8 ) ));
break;
case 7 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(103,96 ) ));
break;
case 8 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(63,56 ) ));
break;
case 9 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(23,16 ) ));
break;
case 10 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(111,104 ) ));
break;
case 11 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(71,64 ) ));
break;
case 12 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(31,24 ) ));
break;
case 13 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(119,112 ) ));
break;
case 14 :
ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(79,72 ) ));
break;
default : ftfs_addr.write((sc_uint<8>)(inputreg_s.read()(39,32 ) ));
break;
}
}
void aes_logic::comb_assignments() {
din_s.write((sc_biguint<128>)(din.read() ));
ftsel.write((sc_uint<2>)(sel.read()(1,0 ) ));
dmux_s.write((sel_dmux.read() == 0) ? din_s.read() : resultreg_s.read() );
xorkey_s.write((enc_dec.read() == 0) ? (ekey_out.read() ^ dmux_s.read()) : (dkey_out.read() ^ dmux_s.read()) );
imux_s.write((sel_imux.read() == 0) ? xorkey_s.read() : resultreg_s.read() );
dout.write((sc_biguint<128>)(inputreg_s.read() ));
xorout_s.write((sc_uint<32>)(ftfs_out.read() ^ temp_s.read() ));
sel_s.write((enc_dec.read() == 0) ? sel.read() : sel_dec_s.read() );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -