📄 dkeylogic.cpp
字号:
#include "dkeylogic.h"
void dkeylogic::process_line74() {
if (resetn.read() == 0) {
skeyreg_s.write((sc_biguint<128>)("0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"));
} else
if (clk.posedge()) {
if (ldd.read() == 1) {
switch (sel_sk.read()(3,2 )) {
case 0 :
skeyreg_s.write((outmux_s.read(),skeyreg_s.read()(95,0 )) );
break;
case 1 :
skeyreg_s.write(((skeyreg_s.read()(127,96 ),outmux_s.read()),skeyreg_s.read()(63,0 )) );
break;
case 2 :
skeyreg_s.write(((skeyreg_s.read()(127,64 ),outmux_s.read()),skeyreg_s.read()(31,0 )) );
break;
default : skeyreg_s.write((skeyreg_s.read()(127,32 ),outmux_s.read()) );
break;
}
}
}
}
void dkeylogic::process_line105() {
if (resetn.read() == 0) {
temp_s.write((sc_uint<32>)("0b00000000000000000000000000000000"));
} else
if (clk.posedge()) {
if (wr_dmem.read() == 1) {
temp_s.write((sc_uint<32>)("0b00000000000000000000000000000000"));
} else
if (sel_sk.read()(1,0 ) == (sc_uint<2>)"0b00") {
temp_s.write((sc_uint<32>)(ktout.read() ));
} else {
temp_s.write((sc_uint<32>)(outmux_s.read() ));
}
}
}
void dkeylogic::process_line122() {
switch (sel_sk.read()) {
case 0 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(127,120 ) ));
break;
case 1 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(119,112 ) ));
break;
case 2 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(111,104 ) ));
break;
case 3 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(103,96 ) ));
break;
case 4 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(95,88 ) ));
break;
case 5 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(87,80 ) ));
break;
case 6 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(79,72 ) ));
break;
case 7 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(71,64 ) ));
break;
case 8 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(63,56 ) ));
break;
case 9 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(55,48 ) ));
break;
case 10 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(47,40 ) ));
break;
case 11 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(39,32 ) ));
break;
case 12 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(31,24 ) ));
break;
case 13 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(23,16 ) ));
break;
case 14 :
kt_addr.write((sc_uint<8>)(ekey_out.read()(15,8 ) ));
break;
default : kt_addr.write((sc_uint<8>)(ekey_out.read()(7,0 ) ));
break;
}
}
void dkeylogic::comb_assignments() {
round_dkey_s.write((dkey_mux.read() == 1) ? ekey_out.read() : skeyreg_s.read() );
round_dkey.write((sc_biguint<128>)(round_dkey_s.read() ));
outmux_s.write((sc_uint<32>)(ktout.read() ^ temp_s.read() ));
ktsel.write((sc_uint<2>)(sel_sk.read()(1,0 ) ));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -