圖像處理分爲兩個部分:算法
這裏主要討論第一部分圖像處理部分。ide
通常產品設計流程以下:工具
適用人羣有如下兩類:學習
這裏先用一張slider來進行總體歸納:優化
基於模型的設計的好處——算法驗證不成功,進行優化會更加方便快捷,對下列的循環過程大大縮短開發時間。設計
相關演示(在matlab的example中有能夠直接打開調用):3d
一、搭建模型:算法作好了,而後再添加實現的支路,就能夠開始產生代碼了。code
產生代碼時,只須要告訴HDL coder,須要將紅色的模塊變爲HDL代碼,便可以獲得對應的HDL代碼。blog
上面提到了兩個重要的模塊ip
(1)全幅幀處理變成像素處理的模塊:
HDL工具會根據輸入的圖像的大小,自動產生同步信號,而不須要咱們去管。
下面matlab還提供了不少演示模型:
咱們來看看有哪些模型,增強學習:
一、濾波
能夠看到模型中有兩種支路,這裏是爲了證實這兩種算法是徹底同樣的。
二、灰度的伽馬校訂
三、棒狀圖的平衡
四、邊緣檢測並將結果與原來圖像重合
五、不完整圖像的邊緣檢測工做
六、識別鍵盤鍵值
下面是一些成功案例:
HDL coder主要帶來了兩個方面的好處:
HDL產品的主要特徵:
HDLcoder對傳統工具的產品的優化有兩個方面:一、對面積的優化二、對速度的優化
對於不熟悉HDLcode的人,若是你模型建好了,可使用HDLworkflow advisor來建立HDL代碼,它能夠一步一步的幫助你優化代碼,完成你的設計
這裏面有個很是重要的東西:關鍵路徑
simulink是一個基於圖形設計的平臺工具,他能夠幫助你將關鍵路徑在其內顯示出來。若是是作硬件的,上面這個圖應該能夠看出來是個濾波器,若是要提升運行速度,只須要加一個寄存器將關鍵路徑打斷就能夠將速度提上去了。
可是若是你不是設計硬件的,你也不知道往哪放寄存器,HDL提供了工具幫助你去找往哪放寄存器的功能,你只需將寄存器放在輸入端或者輸出端,軟件會自動找出最佳的位置。並且加了寄存器後,不只近將關鍵路徑打亂了,還把算法也打亂了,你必須在其餘地方都加一個一樣數量的寄存器才能保證算法是正確的,HDL提供的工具一樣幫你完成了這個設計。
加完之後,會將加的寄存器在模塊中顯示出來(橙色都是工具添加的)
若是你是作控制的,你有一部分算法跑的慢一點,有一部分算法須要跑的快一點。優化工具也考慮到了這一點,也可以利用這種快慢的不一樣去進行優化。
剛纔提升的關鍵路徑必定是要產生出代碼,而後運行程序,運行完之後才能獲得關鍵路徑的信息。可是這個綜合程序並非matlab的,而是調用xilinx或altera的綜合工具後才能獲得的結果。這個通常有個問題。若是算法複雜,產生的代碼較多,運行一次會花費的時間很長。matlab在產生代碼的時候提供了一個估計。
剛纔的都是速度優化。剛纔濾波器設計中有6個乘法器,咱們若是不在意速度,只在意資源的化,能夠進行如下優化。這部分工做HDL coder能夠自動的在產品裏去作。
咱們只須要告訴你的指望便可
作完優化後,會產生一個新的模型進行了哪些變化。
代碼和模型的雙重追蹤
資源運用報告——用來多少個四則運算而不是用來多少個logic
報告具備可跳轉性
將代碼插入到程序,在模型中獲得留空白,你能夠插入你成熟的代碼。
將成熟的ip核加入到模型中