Vivado 2019.1新特性(4):VHDL 2008 Generic

  • 2019 年 10 月 30 日
  • 筆記

VHDL 2008對Generic有了顯著的增強,不僅可以在entity中聲明generic,還可以在package和function中聲明generic。同時,generic支援type。我們看一個典型的案例。

在entity中聲明generic

如下VHDL程式碼實現了一個二選一的MUX,這裡將數據類型通過關鍵字type定義為dt。實例化時,根據需要將數據類型聲明為期望的類型。

如下程式碼將MUX實例化兩次,其中的數據類型分別為4bit std_logic和2bit std_logic。由此可以看到這種方式的靈活性。Vivado 2019.1開始支援該語法形式。

在Vivado中,打開Elaborated Design,可以查看相應的Schematic視圖,如下圖所示。

在package中聲明generic

VHDL 2008支援在package中聲明generic。從這個角度看,package類似於C++中的template。在使用帶generic的package之前,要先對該package實例化。來看一個例子。

使用該package時,要先實例化,如下程式碼第1行和第2行所示,使用了關鍵字new。如果需要使用package中聲明的數據類型,例如這裡的cnt_type,需要明確指出是哪個實例化對象的cnt_type,所以需要添加work.cnt_top_pkg1。另一方面,如果該package只被實例化了一次,那麼可以直接使用其內部聲明的數據類型,不必添加work.cnt_top_pkg1。

Vivado 2019.1開始支援增強型generic。需要聲明文件類型為VHDL 2008。可通過如下方式實現。在project模式下,可直接在Tcl Console中執行命令:

在non-project模式下,可同時對某一個文件或多個文件指定其為VHDL 2008。

Tags: