📄 cordic.h
字号:
#ifndef CORDIC_H
#define CORDIC_H
#include <systemc.h>
#include "cordic_pkg.h"
using namespace cordic_pkg;
#include "addsub.h"
#include "shiftn.h"
#include "atan32.h"
#include "fsm.h"
SC_MODULE(cordic) {
sc_in<bool > clk;
sc_in<bool > reset;
sc_in<sc_uint<32> > angle;
sc_out<sc_uint<32> > sin;
sc_out<sc_uint<32> > cos;
sc_in<bool > start;
sc_out<bool > done;
sc_signal<sc_uint<5> > cnt_s;
sc_signal<sc_uint<32> > newx_s;
sc_signal<sc_uint<32> > newy_s;
sc_signal<sc_uint<32> > newz_s;
sc_signal<sc_uint<32> > xreg_s;
sc_signal<sc_uint<32> > yreg_s;
sc_signal<sc_uint<32> > zreg_s;
sc_signal<sc_uint<32> > sxreg_s;
sc_signal<sc_uint<32> > syreg_s;
sc_signal<sc_uint<32> > atan_s;
sc_signal<bool > init_s;
sc_signal<bool > load_s;
sc_signal<bool > as_s;
sc_signal<bool > nas_s;
void process_line90();
void process_line100();
void process_line110();
void process_line121();
void comb_assignments();
shiftn shift1;
shiftn shift2;
addsub add1;
addsub add2;
atan32 lut;
addsub add3;
fsm fsm1;
cordic(sc_module_name _n) : sc_module(_n),shift1("shift1"),shift2("shift2"),add1("add1"),add2("add2"),lut("lut"),add3("add3"),fsm1("fsm1") {
shift1 << xreg_s;
shift1 << sxreg_s;
shift1 << cnt_s;
shift2 << yreg_s;
shift2 << syreg_s;
shift2 << cnt_s;
add1 << xreg_s;
add1 << syreg_s;
add1 << newx_s;
add1 << as_s;
add2 << yreg_s;
add2 << sxreg_s;
add2 << newy_s;
add2 << nas_s;
lut << cnt_s;
lut << atan_s;
add3 << zreg_s;
add3 << atan_s;
add3 << newz_s;
add3 << as_s;
fsm1 << clk;
fsm1 << reset;
fsm1 << start;
fsm1 << cnt_s;
fsm1 << init_s;
fsm1 << load_s;
fsm1 << done;
SC_METHOD(process_line90);
sensitive << clk << newx_s;
SC_METHOD(process_line100);
sensitive << clk << newy_s;
SC_METHOD(process_line110);
sensitive << clk << newz_s << angle;
SC_METHOD(process_line121);
sensitive << clk << load_s << init_s;
SC_METHOD(comb_assignments);
sensitive << as_s << zreg_s << yreg_s << xreg_s;
}
~cordic() {}
SC_HAS_PROCESS(cordic);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -