2013-12-21 60 views
2

雖然我在寫作方面有點精通VHDL還有一個比較基本的問題需要回答:什麼時候打破VHDL何時打破VHDL?

一個基本的例子:假設我在設計一個8位ALUVHDL,我有幾個VHDL實現的選項。

簡單地將整個ALU設計爲一個實體。具有實體中所需的所有I/O(可以由於IEEE_STD_ARITHMETIC庫而完成)。

- 或 -

打破ALU下降到其後續塊,說一個先行進位加法器和一些多路複用器。

- 或 -

打破下來進一步成使嵌段的先行進位;一堆部分全加器,一個進位路徑和複用器,然後用結構單元將它們連接在一起。

然後,我們可以(如果我們想要的話)將所有這些權限分解到門級,爲每個門創建實體,行爲和結構。

當然,我們進一步向下分解ALU我們需要的更多VHDL文件。

這是否會影響綜合後的物理實現以及何時應該停止分解?

回答

4

您應該將VHDL保持在最高抽象級別,所以不要像您所描述的那樣「分解」它。你提出的是你自己做綜合(比如創建一個進位超前加法器),這是一個壞主意。您不知道目標器件(FPGA或ASIC庫)以及合成器,您不應該試圖告訴它該做什麼。如果您想要添加,請使用+運算符,這些工具將找出適合您設計約束條件的最佳結構。

將設計劃分爲多個模塊通常會使優化設計變得更加困難,因爲模塊之間的優化通常比模塊內的優化難。

當然,爲了保持設計和可讀性,在它們之間有明確定義的接口的主要功能塊應該位於單獨的模塊中。 ALU可以是一個模塊,另一個指令ROM,等等。這些模塊具有明確的,明確定義的功能,模塊內優化的機會不多。如果您想要獲得最新的可用優化版本,只需在優化之前將設計扁平化並讓工具完成工作即可。