2017-03-26 66 views
0

我cholesky.cpp文件:請求,其是非類類型的

#include "chol.h" 
#include <math.h> 

//Main Thread 

void chol::chol_main() { 
    // Variable declaration 
    sc_fixed<16,10, SC_TRN, SC_WRAP> chol_output[3][3]; 
    sc_fixed<16,10, SC_TRN, SC_WRAP> chol_in[3][3]; 
    int n=3; 

    //Main Thread 
    while (true) { 
     for (int i=0; i<n; i++){ 
      for(int j=0; j<=i; j++){ 
       chol_in[i][j] = chol_in_data[i][j].read(); 
      } 
     } 
    } 

    for (int i=0; i<n; i++){ 
     for (int j=0; j<=i; j++){ 
      sc_fixed<16,10, SC_TRN, SC_WRAP> sum = 0; 
      for (int k=0; k<j; k++){ 
       sum += chol_output[i][k] * chol_output[j][k]; 
      } 

      if (i==j){ 
       chol_output[i][i] = sqrt(chol_in[i][i] - sum) ; 
      }else{ 
       chol_ouput[i][j] = 1.0/chol_ouput[j][j] * (chol_in[i][j] - sum); 
      } 
     } 
    } 

    chol_out_data.write(chol_output); 
} 

此chol.h頭文件:

#ifndef CHOL 
#define CHOL 
#define SC_INCLUDE_FX 
#include "define.h" 

SC_MODULE (chol) { 
public: 
    // Inputs 
    sc_in_clk clk; 
    sc_in <bool> rst; 
    sc_in <sc_fixed<16,10, SC_TRN, SC_WRAP> > chol_in_data[3][3] ; 

    // Output 
    sc_out <sc_fixed<16,10, SC_TRN, SC_WRAP> > chol_out_data[3][3] ; 

    /* F */ 
    void chol_main (void); 

    // Constructor 
    SC_CTOR (chol) { 
     SC_CTHREAD (chol_main, clk.pos()); 
     reset_signal_is(rst, false) ; 
     sensitive << clk.pos(); 
    } 

    // Destructor 
    ~chol() {} 
}; 

#endif 

輸出:

g++ -O1 -I"/home/mahesh/systemc/systemc-2.3.1a/include" -I"." -c cholesky.cpp -o cholesky.o 
    cholesky.cpp: In member function ‘void chol::chol_main()’: 
    cholesky.cpp:47:5: error: ‘chol_ouput’ was not declared in this scope 
     chol_ouput[i][j] = 1.0/chol_ouput[j][j] * (chol_in[i][j] - sum); 
     ^


    cholesky.cpp:54:17: error: request for member ‘write’ in ‘chol_out_data’, which is of non-class type ‘sc_core::sc_out<sc_dt::sc_fixed<16, 10, (sc_dt::sc_q_mode)5u, (sc_dt::sc_o_mode)3u> > [3][3]’ 
     chol_out_data.write  (chol_output);          
        ^

    Makefile:90: recipe for target 'cholesky.o' failed 
    make: *** [cholesky.o] Error 1 

我正在執行矩陣分解,並且將cholesky模塊的二維數組的輸出寫入信號端口whic h連接到cholesky測試臺模塊。

我已經聲明瞭範圍內的chol_output變量;但是,我也遇到了同樣的錯誤,它超出了範圍。另外,它說'寫'是非類型的。

任何人都可以幫忙嗎?

+1

'chol_ouput'不是'chol_output'!並且數組沒有「寫入」方法 –

+0

那麼我將如何將我的值寫入輸出端口? – mahesh

回答

1

對於第一個錯誤,您只是拼寫爲chol_outputchol_ouput

第二個錯誤就是它說的:chol_out_data不是一個類對象,所以你不能使用.就可以了。它是一個類對象數組的數組。

+0

謝謝你指出我的第一個錯誤。對於SystemC中的第二件事情,在輸出端口寫入,我們必須使用'。'。運營商。我已經聲明chol_out_data作爲我的輸出端口,並且正在嘗試將我的值寫入輸出端口。 現在我的問題是我不能在我的輸出端口寫一個數組變量它引發以下錯誤 錯誤:從無效轉變「sc_dt :: sc_fixed <16,10, (sc_dt :: sc_q_mode)5u,(sc_dt :: sc_o_mode)3u>(*)[3]'到'sc_dt :: uint64 {aka long long unsigned int}'[-fpermissive] chol_out_data [i] [j]。寫(chol_output); – mahesh

相關問題