zareie.ehsan Posted October 12, 2013 Report Share Posted October 12, 2013 I wanna take a 4 digit integer value as an input an make an BCD equivalent, I tried this code but it has \error at red line error: 'decimal' : no appropriate default constructor available it mean the class constructor? is the constructor of class decimal wrong? plz help me class decimal { public: sc_int<4> dec0; sc_int<4> dec1; sc_int<4> dec2; sc_int<4> dec3; ///constructor decimal(sc_int<4> d0,sc_int<4> d1,sc_int<4> d2,sc_int<4> d3) { dec3=d3; dec2=d2; dec1=d1; dec0=d0; } } SC_MODULE (seprate_digit) { sc_in <sc_int<16>> in; sc_in <bool> clk; sc_out <decimal> d; decimal dtmp; SC_CTOR (seprate_digit) { SC_METHOD(process3); sensitive << clk.pos(); } void process3() { ///// } }; Quote Link to comment Share on other sites More sharing options...
Philipp A Hartmann Posted October 12, 2013 Report Share Posted October 12, 2013 As the error says (emphasis mine) error: 'decimal' : no appropriate default constructor available you need a default constructor (a constructor without arguments) in your case. In the module, you create an instance of 'decimal' without explicitly initializing it in the constructor of 'seprate_digit'. Theoretically, you could use an initializer list: SC_CTOR (seprate_digit) : in("in"), clk("clk"), d("d") // port names -> recommended practice , decimal(0,0,0,0) // <-- explicitly initialize decimal member Since you use 'decimal' as a signal type, you'll definitely need a default constructor. This could look like the following decimal() /* : dec0(), dec1(), dec2(), dec3() */ // optional, as sc_int has an explicit default constructor {} Secondly, you'll need to define more helper functions to use sc_signal with your own data types, see http://www.doulos.com/knowhow/systemc/faq/#q1 Greetings from Oldenburg, PhilippNB: Why do you post the question three times in 10 minutes? ;-) zareie.ehsan, Dev and maehne 3 Quote Link to comment Share on other sites More sharing options...
dakupoto Posted October 13, 2013 Report Share Posted October 13, 2013 Greetings from Oldenburg, Philipp NB: Why do you post the question three times in 10 minutes? ;-) The poster has most probably woken up in the morning to realize that his important class project is due that evening. karandeep963 1 Quote Link to comment Share on other sites More sharing options...
zareie.ehsan Posted October 19, 2013 Author Report Share Posted October 19, 2013 thank you very much As the error says (emphasis mine) you need a default constructor (a constructor without arguments) in your case. In the module, you create an instance of 'decimal' without explicitly initializing it in the constructor of 'seprate_digit'. Theoretically, you could use an initializer list: SC_CTOR (seprate_digit) : in("in"), clk("clk"), d("d") // port names -> recommended practice , decimal(0,0,0,0) // <-- explicitly initialize decimal member Since you use 'decimal' as a signal type, you'll definitely need a default constructor. This could look like the following decimal() /* : dec0(), dec1(), dec2(), dec3() */ // optional, as sc_int has an explicit default constructor {} Secondly, you'll need to define more helper functions to use sc_signal with your own data types, see http://www.doulos.com/knowhow/systemc/faq/#q1 Greetings from Oldenburg, PhilippNB: Why do you post the question three times in 10 minutes? ;-) thank you very much for your help full guide. sorry, I thought my post was not successfully posted, so I posted my question many times :-) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.