以前的文章中, 我經常提到 sv interface的黑魔法。 現在我就來聊一聊, systemverilog區別於hdl, 到底可以帶來什麼樣的思路。
從實際應用出發吧(本來本文的代碼就是已經應用於實際專案的), 設計《一個SPI配置FPGA內部邏輯寄存器的方案》。
這個還是很常用的功能, 傳統的設計, 對於增減寄存器數量, 唯讀寄存器, 讀寫寄存器修改並不是很友好。 有時候可以算“牽一發動全身”。
具體的實現方式及各個參數說明, 請參考github的ReadMe, 這裡不特別說明。
下面為systemverilog代碼
如果想增加一個讀寫寄存器, 只用例化一個 spi_general_reg 就行了, 基本上只用修改一行代碼。 大大提高友好性。
systemverilog設計影響點:
spi_cfg_inerface 定義成一個可以parameter控制的interface陣列。
模組接受一個interface陣列的port
控制信號全部封裝進interface, 根本不用表露
--@--Young--@--
點擊閱讀原文查看原始程式碼!