1. 程式人生 > >【VHDL】VHDL設計n的全加器

【VHDL】VHDL設計n的全加器

1. 實驗任務

  • 設計並實現一個n(n=8)的全加器

2. 如何實現

  1. 先設計出一個半加器

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY h_adder_1 IS
        PORT (A,B:IN STD_LOGIC; SO,CO:OUT STD_LOGIC);
    END ENTITY h_adder_1;
    
    ARCHITECTURE fh1 OF h_adder_1 IS
    BEGIN 
        SO<=A XOR B;
        CO<=A AND B;--SO是數值位,CO是進位位
    END ARCHITECTURE
    fh1;
  2. 接著設計出一位的全加器
    f_adder_1

      運用原件例化語句,將設計好的半加器進行封裝後,根據真值表,進過卡諾圖化簡,得到全加器的組合邏輯,進而設計出全加器的組合電路。

    --一位全加器
    library ieee;
    use ieee.std_logic_1164.all;
    entity f_adder_1 is
    
    port(ain,bin,cin:in std_logic;
    cout,sum: out std_logic);
    end entity f_adder_1;
    
    architecture behav of f_adder_1 is
    component h_adder_1
    port(A,B:in
    std_logic; CO,SO :out std_logic); end component; component or2a port (a,b: in std_logic; c: out std_logic); end component; signal net1,net2,net3:std_logic; begin u1: h_adder_1 port map(A=>ain,B=>bin,CO=>net2,SO=>net1); u2: h_adder_1 port map(net1,cin,net3,sum); u3: or2a port map(a=>net2,b=>net3,c=>cout); end
    architecture behav;

      其中的兩輸入或門可以呼叫系統元件庫也可以自己設計和封裝,或者通過畫圖的方式來實現,本人是通過程式設計的方式來實現的,即在相同的資料夾下,新建VHDL檔案,然後編寫或門。

    --兩輸入或門
    library ieee;
    use ieee.std_logic_1164.all;
    entity or2a  is
    port (a,b :in std_logic;
    c: out std_logic);
    end entity or2a;
    
    architecture one of or2a is
    begin
    c<=a or b;
    end architecture one;
  3. 多位全加器的設計

    library ieee;
    use ieee.std_logic_1164.all;
    entity f_adder_n is
    generic (n:integer :=8);
    
    port(q: out std_logic_vector(0 to n-1);
    a:in std_logic_vector(0 to n-1);
    b:in std_logic_vector(0 to n-1);
    in_1: in std_logic;
    cout_n:out std_logic);
    end entity f_adder_n;
    
    architecture behav of f_adder_n is
    
    component f_adder_1
    port(ain,bin,cin:in std_logic;
    cout,sum: out std_logic);
    end component;
    
    signal cc:std_logic_vector(0 to n);
    begin
    --<=in_1;
    q_1:for i in 0 to n-1 generate
    f_adder: f_adder_1 port map (a(i),b(i),cc(i),cc(i+1),q(i));
    end generate;
    cout_n<=cc(n);
    end architecture behav;

3. 實驗結果

  • RTL

n位全加器

  • 模擬圖
    模擬時序圖

相關推薦

基於VHDL語言的一位

全加器的真值表如下:該全加器程式由以下三個子程式構成1)“f_adder”全加器程式LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder I

VHDLVHDL設計n

1. 實驗任務 設計並實現一個n(n=8)的全加器 2. 如何實現 先設計出一個半加器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

VHDL設計多路選擇、鎖存

end style ces cin 實現 std spa sum component 1.2選1多路選擇器 1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 ENTITY mux21 IS 4 PORT ( a,

VHDLVHDL設計一個分頻

1. 實驗任務 嘗試用兩種或以上方式設計並實現一個分頻器 2. 如何實現 二進位制分頻器的設計 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.

4位VHDL描述

 libraryieee; useieee.std_logic_1164.all; -- definition of a full adder entity FULLADDER is port (a, b, c: in std_logic; sum, carry: o

轉載史上最:TensorFlow 好玩的技術、應用和你不知道的黑科技

tube map 高性能 知識 seq 出現 執行時間 mes lex 【導讀】TensorFlow 在 2015 年年底一出現就受到了極大的關註,經過一年多的發展,已經成為了在機器學習、深度學習項目中最受歡迎的框架之一。自發布以來,TensorFlow 不斷在完善並增加新

網易 作業 程序設計入門—C語言 翁愷 第二周

rate span asio tin bar ase read con hab #include<stdio.h> int main() { int a=0,b=0; scanf("%d",&a); if(a>=800)

EasyUI使用Jquery.load動態載時重新渲染

() class .html query code 動態加載 元素 xhr app EasyUI重新渲染: $.parser.parse(‘#app‘); // 重新渲染 #app 下的元素 添加個擴展方法(方便使用): 1 $.fn.extend({ 2

HibernateHibernate中使用延遲載應該註意的事項

取出 struts2 dial 表示 指定 cef init pen ima 1,簡介 在使用一些查詢方法時,方法執行了,但是並沒有立刻發送SQL語句查詢數據庫。而是在訪問對象的getXxx方法時候才觸發SQL執行加載對象數據。這種機制就稱為延遲加載。 2,優點 延

網易 作業 程序設計入門—C語言 翁愷 第五周

完數 字符 啊啊啊 垃圾 sys class -c system logs #include<stdio.h> int sushume(x) { int i=2,ret=0; for(i=2;x%i!=0;i++){;} //pri

MT67窺一斑知

證明 滿足 ria 表示 ace face nbsp $$ str 已知$f(x)=ax^2+bx+c$在$x\in{-1,0,1}$時滿足$|f(x)|\le1$求證:當$|x|\le1$時$|f(x)|\le\frac{5}{4}$.證明:$$f(x)]=\frac{1

無縫世界網遊服務架構的設計思路

seam 最大 基於 gif 導致 屬於 ref 優勢 左右 轉自 http://blog.csdn.net/SmartTony/article/details/6842065 過去一年中,花了很多時間在考慮服務器架構設計方面的問題。看了大量文章、也研究了不少開源項目,眼

javascriptjavascript設計模式之單例模式

函數 設置 tin 私有 資源 公有 key fun 初始化 單例模式: 定義:單例模式之所以這麽叫,是因為它限制一個類只能有一個實例化對象。 實現方法:判斷實例是否存在,如果存在則直接返回,如果不存在就創建了再返回。(確保一個類只有一個實例對象) 特點: 命名空間提供者,

Android Studio打包攻略---從入門到精通

UC store 類型 安裝文件 public alt url tool 描述 原文地址:http://blog.csdn.net/zivensonice/article/details/51672846 初出茅廬 手動打包 怎麽手動打包 項目寫完了,現在需要把應用上傳

javascriptjavasrcipt設計模式之策略模式

影響 配置 可能 pan style 類庫 ava 自由 AC 策略模式支持在運行時由使用者選擇合適的算法,對於使用者而言不用關心背後的具體事項,而使用者自動根據當前程序執行的上下文和配置,從已有的算法列表中選擇出合適的算法來處理當前任務。 1.要解決的問題 2.如何實現

PyQt5(02)添組件:圖標、按鈕

5.1 connect pyqt 任務 模塊 內置 圖標 utf block 環境說明: 平臺:WIN10(教育版) 環境:Anaconda5.2(Python3.6.6) IDE:Pacharm2018.2.1(專業版) PyQt5:5.11.2 任務目標一:添加圖標

PyQt5(06)添組件:按鈕,並設置位置和大小

github 輸出 技術 代碼 qt5 上傳 評論 教育版 www 特別說明 為了直接展示本篇的重點,往期內容將不再寫入代碼中,讀者可按需自行編碼組合 為了更好的展示效果,代碼段將以圖片的形式上傳,若想復制代碼可移步筆者的Github 為了便於學習,每篇只解決一個小問題,

BZOJ1089[SCOI2003]嚴格n元樹(高精度,動態規劃)

space mem www. ++ 只有一個 per ++i https 乘法 【BZOJ1089】[SCOI2003]嚴格n元樹(高精度,動態規劃) 題面 BZOJ 洛谷 題解 設\(f[i]\)表示深度為\(i\)的\(n\)元樹個數。然後我們每次加入一個根節點,然後枚

概率論條件概率 & 概率公式 & 樸素貝葉斯公式

  0. 說明   條件概率 & 全概率公式 & 樸素貝葉斯公式 學習筆記     參考   scikit-learn機器學習(五)--條件概率,全概率和貝葉斯定理及python實現   1. 條件概率   【定義】   已知 事件A 發

LeetCode 784. 字母大小寫排列

1.題目 給定一個字串S,通過將字串S中的每個字母轉變大小寫,我們可以獲得一個新的字串。返回所有可能得到的字串集合。 2.思路 遞迴思路 3.程式碼 class Solution { public: void change(vector<s