2011-07-29 30 views
2

下個學期,我將參加我的最後一年(電氣和計算機工程),我正在尋找嵌入式系統或硬件設計的畢業設計。我的教授建議我搜索一個現有的系統,並嘗試使用硬件/軟件代碼進行改進,他給了我一個「自動車牌識別系統」的例子,我可以使用VHDL或Verilog專用硬件來使系統執行更好。如何知道硬件/軟件的編碼對特定應用是否有用?

我已經搜索了一下,發現一些顯示系統正常工作的youtube視頻正常。

所以我不知道是否還有改進的餘地。如何知道某些算法或系統是否緩慢並可從編碼中受益?

回答

2

如何知道某些算法或系統是否緩慢,並可以從codesign中獲益 ?

在許多情況下,這是一個體繫結構問題,只有大量的經驗或更大量的系統建模和分析才能回答。在其他情況下,在信封背面5分鐘可能會顯示一個專門的協處理器可以增加數週的工作量,但不會提高性能。

硬殼的一個例子是任何現代的手機處理器。看看TI OMAP5430。注意,它至少有10個不同類型的處理器(僅PowerVR模塊具有多個執行單元)和數十個全定製外設。任何時候,如果您希望從「主要」CPU中卸載某些東西,就必須考慮可能的總線帶寬/芯片面積/上市時間成本。

一個簡單的例子就像你的教授提到的一樣。 DSP/GPU/FPGA將執行圖像處理任務,如2D卷積,比CPU快一個數量級。但是像'文件管理'這樣的'管家'任務並不能解決FPGA問題。

就你而言,我不認爲你的教授希望你做一些「真實」的事情。我認爲他在尋找什麼是您對CPU/GPU/DSP擅長什麼以及定製硬件擅長什麼的理解。您可能希望尋找一個有趣的小生境問題,例如those in bioinformatics

+0

謝謝,BLAST看起來很有趣無限長的時間。 – Ahmed

2

我不知道codeign是什麼,但我做過一些verilog;我認爲簡單的圖像(或信號)處理任務對於這樣的嵌入式系統來說是很好的候選者,因爲它們很多時候涉及海量負載數據(最好是SIMD操作)的實時處理。

圖像處理任務通常看起來很簡單,因爲我們的大腦對我們來說確實是令人難以置信的複雜處理,但實際上它們非常具有挑戰性。我認爲這個挑戰是重要的,而不是如果這樣的系統以前實施。我會繼續實施Hough變換(首先是線條和圓形,而不是廣義的變換 - 它被認爲是圖像處理中的一種緩慢的算法),並進行一些實時分割。我相信隨着它的發展,這將是一項具有挑戰性的任務。

+0

謝謝:)。確實有用的答案。 – Ahmed

0

任何你最終做的項目,我的建議是做一個軟件版本和硬件版本的算法做性能比較。您也可以對開發時間等進行比較。如果您選擇發佈任何內容,這將使您的項目更加科學化,並對其他人有所幫助。盲目思考硬件比軟件更快並不是一個好主意,因此分析很重要。

+0

這是所有好的假設你有:) – unkulunkulu

2

分區時要做的第一件事就是查看數據流。繪製每個「子算法」適合的位置以及數據輸入和輸出的框圖。無論何時您必須將大量數據從一個域移動到另一個域,都需要開始將問題的一部分移至分割的另一側。

例如,考慮一個圖像處理流水線,它執行邊緣檢測,然後與閾值進行比較,然後進行一些處理。邊緣檢測的輸出將是(比方說)16位有符號值,每個像素一個。最終輸出是一個二進制圖像(一組位表示「重要」邊緣在哪裏)。

其中一個(顯然天真,但它使得重點)的實現可能是在硬件中執行邊緣檢測,將邊緣圖像發送到軟件,然後對其進行閾值處理。這涉及到「跨越分支」傳送16位值的整個圖像。

更好的是,在硬件中也做了閾值。然後你可以移動8個「1位像素」/字節。 (或甚至運行長度編碼)。

一旦你有一個合理的帶寬劃分,你必須找出是否適合在每個域的塊是一個非常適合該域,或者可能考慮不同的分區。

1

我想補充一點,一般情況下,硬件/軟件代碼編碼在減少成本時非常有用。

有2個主要的成本因素,在嵌入式系統:

  • 開發成本
  • 生產成本

越高你的生產量,更重要的是生產成本和開發成本變得不那麼重要。

今天開發硬件比軟件更難。這意味着Codeign解決方案的開發成本今天會更高。這意味着它主要用於大批量生產。然而,你需要FPGA(或類似的)來做今天的代碼簽名,並且它們花費很多。

這意味着,協同設計是有用的,當必要的FPGA成本會比爲您的類型的問題(CPU,GPU,DSP等)現有的解決方案下,假​​設這兩個解決方案滿足其它要求。對於高性能系統,情況將會如此(主要是),因爲FPGA今天的成本很高。

所以,基本上你將要協同設計系統,如果將大批量製造,這是一個高性能的設備。

這是一個有點簡單化,有可能成爲一個十年左右的假。目前正在進行關於高層規範硬件/軟件綜合的研究+ FPGA價格正在下降。這意味着在十年左右的時間內,編碼可能會對大多數嵌入式系統有用。

相關問題