如何設計一款可編程HAD輔助軟件?

1、引言

Xilinx 公司和 Altera 公司的設計工具中,提供了一些 HDL 形式的電路庫。不過庫單元都是比較簡單的小規模數字電路,如邏輯門、74 系列器件等,對中、大規模和複雜邏輯時序電路的設計幫助不大。另外也有一些外圍功能模塊和複雜邏輯的單元庫提供如通用異步收發器、有限衝擊響應濾波器等,但不是以 HDL 的形式提供的,只適用於某些特定的 PLD 器件,移植性比較差。因此,在實際工作中編制了一個管理和組合 HDL 電路單元 IP 庫的輔助設計軟件 --HAD 軟件。通過 HAD 軟件,對設計好的 HDL 電路庫進行管理,按照系統設計規範的要求從庫中選取相應的電路單元並將它們組合起來,大大降低了系統設計和調試的難度,提高了系統的穩定性和可靠性,並且有利於系統日後的升級。

如何设计一款可编程HAD辅助软件?

2、 HAD 輔助設計軟件功能

輔助設計(HAD)軟件主要是對 HDL 語言的電路起一個輔助設計的作用。HAD 軟件的功能有兩個:管理電路單元 IP 庫以及生成所需外圍電路的 HDL 程序。

電路單元庫的管理主要有兩個方面:電路單元接口的管理以及電路單元 HDL 程序的管理。因此,電路單元庫是由兩個庫組成的,一個是電路單元的接口庫,另外一個是電路單元 HDL 程序庫[7]。電路單元接口庫裡的基本單位是各個電路單元的接口信息,電路單元 HDL 程序庫裡的基本單位是描述各種電路單元的 HDL 源程序。類似於標準芯片,如 8255 芯片,電路單元的接口信息描述了這個標準芯片的輸入輸出以及它的功能,相當於 8255 的管腳和使用功能說明;而電路單元 HDL 程序描述了這個標準芯片內部的實際電路以及用何種電路結構實現相應功能的,這相當於 8255 芯片內部的電路組成和結構。對於管理一個庫來說,基本的操作主要是新增、刪除和修改庫單元。

HAD 軟件的最終目的就是生成外圍電路的 HDL 程序。也就是根據系統設計規範的要求從 IP 庫中選取合適的電路單元,再以適當的形式組合起來,成為一個完整的 HDL 程序。

3、 電路模塊 HDL 程序生成

HAD 軟件中最主要的功能就是電路模塊 HDL 程序的生成。生成電路模塊的 HDL 程序的過程,主要就是對電路單元 IP 庫中的某些單元進行若干次例化的過程。

進行例化就必須具備兩個條件:首先要有模塊輸入輸出端口的列表,其次要知道的是與這些端口相連接的信號列表。根據兩者的對應關係,完成例化,然後將例化好的電路模塊組合起來,成為一個 HDL 程序文件,生成電路模塊 HDL 程序的流程如圖 2 所示:

如何设计一款可编程HAD辅助软件?

通過上面的分析,首先創建兩個數據庫。一個存放各種模塊 HDL 程序的源文件,另外一個存放與各個模塊相對應的輸入輸出端口的信號列表。

存放 HDL 程序的源文件的數據庫比較簡單,對它的操作僅限於對文件內容的複製,因此這裡不作進一步的討論。

存放端口信號列表的數據庫結構,如表 1 所示。

表 1 中,最上面的一行是數據庫的表頭,字段名代表了每一個字段下面內容的具體含義。其中,module 為電路單元模塊名;detail 為存放模塊端口詳細信息的數據庫名;PortN 代表了模塊中某個端口的名字, N 是自然數。

從表 1 中第二行開始的記錄是不同的模塊。例如,第二行記錄所描述的模塊是帶有一個異步清零端的 D 觸發器,模塊名是 DFF,模塊端口的詳細信息存放在 DFF_D 的數據庫文件中,總共有 4 個端口,分別是 CLK、CLR、D 和 Q。數據庫文件 DFF_D 中存放的是每個端口的方向和寬度。

以 DFF 模塊為例,其對應的數據庫文件 DFF_D 的內容如表 2 所示:

數據庫文件 DFF_D 的字段有兩類,前一半的字段都是以“Pn_io”的形式出現,代表了這個端口的流向,是輸入、輸出還是雙向。後一半的字段都是以“Pn_bit”的形式出現,代表了這個端口信號的寬度。

通過上面兩類數據庫,就可以完整地掌握一個模塊的所有接口信息。

在圖 1 所示的流程圖中,最重要的一步就是 “進行例化、組合”。根據上述幾個數據庫的定義和描述,例化和組合的流程如圖 3 所示。圖中兩個預備處理(六邊形框)的工作是“例化組合”前的準備工作。根據系統設計規範的要求,確定所需功能模塊的種類和數量,然後由設計者來確定所有模塊及其輸入輸出信號的名字。這些操作都可以通過鍵盤輸入的方式來完成,從而將例化和組合過程中所需的信息傳遞給 HAD 軟件。

如何设计一款可编程HAD辅助软件?

確定好所需的模塊之後,就可以逐一地對每個模塊進行例化。首先打開端口信號列表數據庫,從中找到所選定的模塊。接著,打開存放有模塊端口詳細信息的數據庫,讀取端口的類型和數量,按照指定的連接信號名對模塊進行例化。最後將例化後的 HDL 程序組合成一個文件。

4 、管理電路單元庫程序的設計思路

管理電路單元庫的軟件所具備的功能是對電路單元進行增加、刪除和修改等操作,流程如圖 4 所示。

如何设计一款可编程HAD辅助软件?

圖 4 中,管理流程主要由 3 個處理分支組成,分別是增加、刪除和修改電路單元分支。

電路單元的增加功能就是將電路模塊的 HDL 程序加入到電路單元庫中。庫中增加了一個新的電路單元,意味著又多了一個功能可供我們選擇。隨著庫中電路單元的日益增多,硬件設計中可以用 HAD 軟件完成的比重就會越來越大,有利於系統設計。

增加電路單元處理分支的流程如圖 5 所示。增加一個電路單元涉及到兩個數據庫的操作,一個是端口列表數據庫,另外一個是端口詳細信息數據庫。首先,對端口列表數據庫進行新增的操作,增加一條空記錄,將新模塊的 I/O 名稱填入空記錄中的相應字段裡。然後,新建一個端口詳細信息數據庫文件。它的字段個數是新模塊 I/O 個數的兩倍,一半是用來指定 I/O 的方向,另一半是用來指定端口信號的寬度。最後,將 I/O 信號的方向以及寬度填入新建數據庫的相應字段中。處理分支結束之後再返回到管理流程的入口,重新選擇管理的內容。

如何设计一款可编程HAD辅助软件?

刪除電路單元處理分支的流程如圖 6 所示。電路單元的刪除功能就是將不再需要的電路單元從庫中移掉。用程序實現時,只要將該電路單元在數據庫中的記錄刪除,同時將對應的詳細信息數據庫一起刪除即可。

如何设计一款可编程HAD辅助软件?

修改電路單元處理分支的流程如圖 7 所示。該單元的修改功能就是對庫中的電路單元的信息進行修正。

如何设计一款可编程HAD辅助软件?

5、 結束語

HAD 軟件採用了 VB 設計軟件中的數據庫管理控件,通過數據庫管理控件完成數據庫單元的增加、刪除和修改等操作。該軟件具有用戶界面人性化、操作使用方便等優點。在多個嵌入式系統的設計中取得了很好的效果。


分享到:


相關文章: