3.1 一位全加器設計3.1.1 基本的輸入方式
對于一位全加器,下面只給出相應的實現方式,以及其中比較特殊的需要說明的地方,其它的編譯和仿真過程可以參考一位半加器。
1. 原理圖輸入方式1. 層次化原理圖輸入方式
根據圖 3-2 可知,一位全加器可以由兩個一位半加器外加一個兩輸入的或門來實現,下
面介紹如何實現這種層次化的設計。
1) 在半加器 h_add 工程中打開一個半加器設計文件(vhdl,原理圖均可),然后選擇File-Create/Update-Create Symbol Filesfor Current File 為當前的半加器創建 symbol 符號,彈出的保存 symbol 文件的窗口,選擇默認設置點擊確定。
2) 新建一個原理圖,在空白處雙擊添加兩個半加器符號(如圖 3-71 所示)和一個或門,并按連好(如圖 3-72 所示),以 f_add_1 為名保存原理圖文件。1. VHDL 語 言 輸 入VHDL 語言描述設計通常有三種描述方式:數據流描述、行為描述和結構體描述。數據流描述是指用邏輯表達式的方式描述設計,這一描述最接近底層的邏輯電路實現。行為描述是指在算法的層次對設計進行描述,較數據流描述更抽象,只關心設計功能的描述而忽略底層邏輯電路的實現。結構體描述是指利用層次化設計方法,用現有的設計生成component 組件, 以便于在設計中調用。下面用一位全加器的 VHDL 為例,給出三種不同的描述方式。
首先新建一個 VHDL 文件,選擇 File-New,如圖 3-73 所示。<instance_name>組件例化名稱,此處需要例化兩個半加器,依次取名為h_add1 和h_add2;
<component_name> 使用的組件名稱,此處為使用的組件 h_add_vhd; generic map 對使用組件中的類屬性進行配置,此處無;
port map 對管腳進行映射,主要是給出例化組件的管腳和外部管腳的連接情況,具體可見圖 3-83,此處請深入理解管腳映射中的管腳連接情況,并注意圖中信號S1、CO1 和 CO2 是中間連線。
最終的兩個例化組件語句修改如下:
h_add1: h_add_vhd port map
(
A => A, B=> B, S => S1,
CO => CO1
);
h_add2 : h_add_vhd
port map (
A => S1, B => CIN, S => S,
CO => CO2
);
最后添加進位賦值語句:
CO <= CO1 or CO2;小結:
1) 三種結構體描述方式最終的technology map 視圖圖 3-77、圖3-79 和圖3-84 是一致的,
而有差別的是RTL 視圖圖 3-76、圖 3-78 和圖 3-83;
2) technology map 視圖一致說明三種全加器描述方式最終的硬件實現是一致的—均是使用兩個 LUT 分別計算 S 和 CO;
3) RTL 視圖不一致說明三種全加器采用的描述方式不一致,即算法不一樣。
4) 通過這個全加器的例子,大家不僅對結構體的數據流描述、行為描述和結構化描述有深入的理解,也對RTL 視圖和 technology map 視圖有進一步的體會。
1. 全加器的 IP 核實現
此處可以參照半加器的IP核實現進行,注意圖 3-85 所示的設置,最終的原理圖如圖 3-86
所示。
|