乘除運算必須有,但是, 按照100M時序約束的時候就好多警告
怎樣做乘除運算的時候,保證時序約束能夠通過,沒有一堆警告:
r_dac_data <= r_dac_value[r_idx]*r_env_k/255;
一個乘法和一個除法
uj5u.com熱心網友回復:
除非你計算的資料位寬小,FPGA最好不要直接用* 和/,用乘法IP和除法IP。uj5u.com熱心網友回復:
綜合器會自己綜合成呼叫IP核 的uj5u.com熱心網友回復:
那你仔細檢查時序警告是啥吧
uj5u.com熱心網友回復:
分母是常數,綜合優化后不會當除法處理,一般會優化成移位加減法。但是前2個變數的乘法優化不掉。綜合器是能呼叫IP,但是效果不好,時鐘不能過高。理想的辦法是自己呼叫IP或芯片的DSP單元。當兩個變數位寬不是很大時,可以將運算式分開,用2個時鐘去拍。先乘再除比如:
r_dac_data_r1 <= r_dac_value[r_idx]*r_env_k;
r_dac_data<= r_dac_data_r1/255;
順便說下,常數的除法,綜合器會優化的,類似C語言編譯器的魔法數優化。
比如: x/255 = x/256 + x/(256*256) = x << 8 + x<< 16; //(約等于)
這種常數立即數的除法,可以直接在運算式中用,延時相當于加法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/30607.html
標籤:硬件設計
上一篇:捕捉目標物
下一篇:S32K144 LPUART問題
