2011-06-17 216 views
5

因此,我正在爲我的DSP設計流程,其中首先在MATLAB中對過濾算法進行建模,然後使用MATLAB編碼器將實際DSP硬件轉換爲C/C++。我覺得很基本。MATLAB C++代碼生成

所以我的計劃是編寫自己的C主函數,它從ADC寄存器等獲得輸入,然後在我的主函數中調用生成的過濾函數。然後,我會在TI的CodeComposerStudio中爲我的項目的源文件中包含filter.c和filter.h。

我用一個簡單的MATLAB函數測試了設計流程,只需要兩個數字並將它們相乘即可。現在在該函數上運行codegen的結果是瘋狂的。有大約20個文件被創建。所以當我將源文件添加到我的CCS項目中時,我實際上必須添加每個單獨的庫?在我看來,這個代碼不可能有效嗎?

我錯過了什麼東西,可以讓MATLAB只生成一個簡單的頭一個源實現?代碼生成是否真的有效?有沒有人真的有經驗使用MATLAB編碼器的實時DSP的東西?

謝謝。


編輯:我添加到我的CCS項目的唯一文件是MATLAB生成的.c和相關的.h文件。這不應該是一個非常簡單的鏈接過程嗎?無論如何,我可以通過MATLAB生成一個生成文件,這將有助於這個過程?

回答

3

MATLAB的代碼生成利用了他們廣泛的,很好實施的庫。在開發時間方面,這可以爲您創造很多效率。然而,MATLAB的預期用例是桌面開發。如果鏈接到matlab提供的庫,TI CCS構建鏈可能不會充分利用這些庫,如果它甚至可以鏈接。

我已經與CCS合作過很多次了,您將用各種提示編譯指示和向量化函數手動重新編碼重要部分。 MATLAB不能幫助你,DSP與MATLAB的正常目標完全不同。它似乎也是一個框架清潔開始的途徑。我的建議是從頭開始使用CCS,並使用matlab實現進行測試驗證。

+0

Bleh。不是我希望聽到的聲音所以你告訴我,如果我的MATLAB函數中的所有函數都像y = fir1(x)那樣,MATLAB Coder將不能很好地工作?另外,請檢查我的編輯。 – NickHalden

+0

哦,如果你不鏈接到任何二進制文件,你的狀態會更好。我花了一個星期的時間纔將ccs整合到我們的構建鏈中,而我不記得有一分鐘的時間,所以我不能幫助你。當您只將一批cpp文件包含在CCS項目中時會發生什麼? – totowtwo