// ==============================================================
// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
// Version: 2016.2
// Copyright (C) 1986-2016 Xilinx, Inc. All Rights Reserved.
// 
// ===========================================================

#ifndef _lcddrv_lcd_send_cmd_HH_
#define _lcddrv_lcd_send_cmd_HH_

#include "systemc.h"
#include "AESL_pkg.h"

#include "lcddrv_wait_tmr.h"

namespace ap_rtl {

struct lcddrv_lcd_send_cmd : public sc_module {
    // Port declarations 17
    sc_in_clk ap_clk;
    sc_in< sc_logic > ap_rst;
    sc_in< sc_logic > ap_start;
    sc_out< sc_logic > ap_done;
    sc_out< sc_logic > ap_idle;
    sc_out< sc_logic > ap_ready;
    sc_in< sc_lv<1> > mode;
    sc_in< sc_lv<4> > wd;
    sc_out< sc_lv<1> > en;
    sc_out< sc_logic > en_ap_vld;
    sc_in< sc_lv<1> > dummy_tmr_out_i;
    sc_out< sc_lv<1> > dummy_tmr_out_o;
    sc_out< sc_logic > dummy_tmr_out_o_ap_vld;
    sc_out< sc_lv<1> > rs;
    sc_out< sc_logic > rs_ap_vld;
    sc_out< sc_lv<4> > data;
    sc_out< sc_logic > data_ap_vld;
    sc_signal< sc_lv<25> > ap_var_for_const0;


    // Module declarations
    lcddrv_lcd_send_cmd(sc_module_name name);
    SC_HAS_PROCESS(lcddrv_lcd_send_cmd);

    ~lcddrv_lcd_send_cmd();

    sc_trace_file* mVcdFile;

    lcddrv_wait_tmr* grp_lcddrv_wait_tmr_fu_67;
    sc_signal< sc_lv<9> > ap_CS_fsm;
    sc_signal< sc_logic > ap_sig_cseq_ST_st1_fsm_0;
    sc_signal< bool > ap_sig_26;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_67_ap_start;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_67_ap_done;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_67_ap_idle;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_67_ap_ready;
    sc_signal< sc_lv<1> > grp_lcddrv_wait_tmr_fu_67_dummy_tmr_out_o;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_67_dummy_tmr_out_o_ap_vld;
    sc_signal< sc_logic > ap_reg_grp_lcddrv_wait_tmr_fu_67_ap_start;
    sc_signal< sc_logic > ap_sig_cseq_ST_st2_fsm_1;
    sc_signal< bool > ap_sig_66;
    sc_signal< sc_logic > ap_sig_cseq_ST_st4_fsm_3;
    sc_signal< bool > ap_sig_73;
    sc_signal< sc_logic > ap_sig_cseq_ST_st6_fsm_5;
    sc_signal< bool > ap_sig_81;
    sc_signal< sc_logic > ap_sig_cseq_ST_st8_fsm_7;
    sc_signal< bool > ap_sig_89;
    sc_signal< sc_logic > ap_sig_cseq_ST_st3_fsm_2;
    sc_signal< bool > ap_sig_98;
    sc_signal< sc_logic > ap_sig_cseq_ST_st5_fsm_4;
    sc_signal< bool > ap_sig_105;
    sc_signal< sc_logic > ap_sig_cseq_ST_st7_fsm_6;
    sc_signal< bool > ap_sig_113;
    sc_signal< sc_logic > ap_sig_cseq_ST_st9_fsm_8;
    sc_signal< bool > ap_sig_121;
    sc_signal< sc_lv<9> > ap_NS_fsm;
    static const sc_logic ap_const_logic_1;
    static const sc_logic ap_const_logic_0;
    static const sc_lv<9> ap_ST_st1_fsm_0;
    static const sc_lv<9> ap_ST_st2_fsm_1;
    static const sc_lv<9> ap_ST_st3_fsm_2;
    static const sc_lv<9> ap_ST_st4_fsm_3;
    static const sc_lv<9> ap_ST_st5_fsm_4;
    static const sc_lv<9> ap_ST_st6_fsm_5;
    static const sc_lv<9> ap_ST_st7_fsm_6;
    static const sc_lv<9> ap_ST_st8_fsm_7;
    static const sc_lv<9> ap_ST_st9_fsm_8;
    static const sc_lv<32> ap_const_lv32_0;
    static const sc_lv<1> ap_const_lv1_1;
    static const sc_lv<32> ap_const_lv32_1;
    static const sc_lv<32> ap_const_lv32_3;
    static const sc_lv<32> ap_const_lv32_5;
    static const sc_lv<32> ap_const_lv32_7;
    static const sc_lv<25> ap_const_lv25_3E8;
    static const sc_lv<32> ap_const_lv32_2;
    static const sc_lv<32> ap_const_lv32_4;
    static const sc_lv<32> ap_const_lv32_6;
    static const sc_lv<32> ap_const_lv32_8;
    static const sc_lv<1> ap_const_lv1_0;
    // Thread declarations
    void thread_ap_var_for_const0();
    void thread_ap_clk_no_reset_();
    void thread_ap_done();
    void thread_ap_idle();
    void thread_ap_ready();
    void thread_ap_sig_105();
    void thread_ap_sig_113();
    void thread_ap_sig_121();
    void thread_ap_sig_26();
    void thread_ap_sig_66();
    void thread_ap_sig_73();
    void thread_ap_sig_81();
    void thread_ap_sig_89();
    void thread_ap_sig_98();
    void thread_ap_sig_cseq_ST_st1_fsm_0();
    void thread_ap_sig_cseq_ST_st2_fsm_1();
    void thread_ap_sig_cseq_ST_st3_fsm_2();
    void thread_ap_sig_cseq_ST_st4_fsm_3();
    void thread_ap_sig_cseq_ST_st5_fsm_4();
    void thread_ap_sig_cseq_ST_st6_fsm_5();
    void thread_ap_sig_cseq_ST_st7_fsm_6();
    void thread_ap_sig_cseq_ST_st8_fsm_7();
    void thread_ap_sig_cseq_ST_st9_fsm_8();
    void thread_data();
    void thread_data_ap_vld();
    void thread_dummy_tmr_out_o();
    void thread_dummy_tmr_out_o_ap_vld();
    void thread_en();
    void thread_en_ap_vld();
    void thread_grp_lcddrv_wait_tmr_fu_67_ap_start();
    void thread_rs();
    void thread_rs_ap_vld();
    void thread_ap_NS_fsm();
};

}

using namespace ap_rtl;

#endif
