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

📄 cordic.h

📁 VHDL to System C translator
💻 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 + -