比如LZW壓縮,FFT等等。不用IP。


比如fft,用蝶型演算法,並行展開,一次性完成所有係數乘法,然後並行全加
Xilinx vivado ide中的hls,可以把c轉成Verilog。據Xilinx官方宣稱,其功能愈發完善,目標是未來開發者能使用c來開發FPGA。


catapult C就可以完成。語言使用的是system C

xilinx可以用hls,altera可以用opencl,號稱可以直接用c語言寫fpga。另外也可以轉成MATLAB,然後simulink到fpga中。這些都是比較快速的方法,用於前期驗證。

如果一定執著於資源效率比而要純手工實現的話,直接搜相關論文吧。你這個題目描述得有點寬。

你的意思是轉成可綜合的Verilog吧,我記得有公司有類似產品

我想主要還是取決你的演算法是什麼樣子的,如果C程序裏用到了結構,malloc等等,那麼對應的Verilog應該需要設計stack,heap和結構等支持模塊才能實現綜合


有用過catapult c和MATLAB直接編寫演算法,然後通過編譯器轉換成verilog/vhdl。但和傳統的軟體描寫不同,你仍需要預先構架你的演算法在硬體裏的執行形式,並安其排寄存器和流水線,這些有專門的定義和語法。另外由於硬體運算多為定點演算法,你還要考慮實現時各個變數的位寬,以及是否會存在溢出和不穩定。編譯出來的演算法冗餘和資源消耗高,除非直接進行數據流建模然後編譯,否則還是很難和直接用硬體描述語言的效率相比。不過優勢是演算法實現快,適合演算法驗證。

如果幾句話就可以做到,那還要那麼多數字ic工程師幹嘛

回答裏一堆在講HLS的,真是不可取。

其實也很簡單呀,高層次綜合工具其實也跟gcc之類的編譯器一樣,只是後端產生的代碼是verilog代碼。之前用C++寫過一個自動生成FIR濾波器代碼的程序,題主可以參考下。 https://github.com/zhxiaoq9/DA_FIR_Filter 。


當前vivado hls已經可以很好的支持datapath的c2rtl場景。對代碼風格有一點要求。面積資源比較優秀。
如果是需要轉換成可綜合的verilog的話好幾個公司都有實驗性的工具好像,如果只是需要有行為級的模型的話建議你用System verilog的DPI,可以通過

import "DPI-C" task task_name(param);

這樣的方式直接在verilog中調用封裝為task/function形式的C/C++函數。


若是用system verilog更好,其可調用c/c++,不需轉換


不是有System C嗎
推薦閱讀:
相關文章