精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

請用Verilog分別實現1位半加器和1位全加器

冬至子 ? 來源:FPGA探索者 ? 作者:FPGA探索者 ? 2023-06-26 16:32 ? 次閱讀

1.原理

半加器

圖片

圖片

全加器

當多位數相加時,半加器可用于最低位求和,并給出進位數。第二位的相加有兩個待加數和,還有一個來自前面低位送來的進位數。這三個數相加,得出本位和數(全加和數)和進位數。這種就是“全加"真值表:

圖片

圖片

2.編程思路

(1)根據真值表編寫

按照半加器和全加器的真值表寫出輸出端的邏輯表達式,對半加器,輸出的進位端是量輸入的“與”,輸出的計算結果是量輸入的異或;對全加器,也按照邏輯表達式做。

//半加器模塊
module adder_half(  
inputa,
inputb,
output regsum,
output regcout
);

//這里的always @(*)搭配里面的“=”阻塞賦值符號
//實現的效果和 assign sum = a ^ b; assign cout = a & b;是一樣的
always @(*)
begin
sum = a ^ b;
cout = a & b;
end
endmodule

全加器:

module all_adder(cout,sum,a,b,cin);

input a,b,cin;
output sum,cout;

wire sum,cout;

assign sum=a^b^cin;
assign cout=(a&b)|(a&cin)|(b&cin);
endmodule

3.問題匯總

(1)`timescale 1 ns/1 ps

timescale是verilog中的一種時間尺度預編譯指令,用來定義仿真時的時間單位和時間精度,左邊是時間單位,右邊是時間精度,時間單位是用于編寫激勵文件,時間精度是顯示時的刻度,比如#100也就是100ns。時間精度不能大于時間單位,比如timescale 1 ns/1 ps是正確的,而timescale 1 ps/1 ns是錯誤的。

(2)#({$random}%100)

首先,#代表延時,這個語句表示延時隨機的一個時間,結合`timescale 1 ns/1 ns是延時隨機的ns。

$random 是 verilog 中產生隨機數的系統函數,在調用時返回一個 32 位的隨機數,是帶符號的整形數。有幾種用法:

random 和random()意義一樣,都是產生隨機數;

$random%100 在-99 到 99 之間產生隨機數;

{$random}%100 采用位拼接符,在 0 到 100 之間產生隨機數;

如 seed =10, $random(seed) 根據 seed 值產生隨機數,而后 seed 值也會更新。

(3)add t0(.cin(cin), .a(a), .b(b), .sum(sum), .count(count));

例化的格式,先建立一個叫add的模塊(module),有5個引腳,分別是cin/a/b/sum/count,例化的模塊叫做t0,比較簡單的例化方式就是如上所示的,括號外的引腳與括號內的引腳名稱完全一致,無需區分。

實際上,括號外的引腳名稱代表的是模塊定義時的引腳,括號內的引腳是目前實際使用的引腳名稱,如可以將@大神袁的測試文件改為:

`timescale 1 ns/1 ns

module top_tb();

reg a1;

reg b1;

wire sum1;

wire count1;

initial

begin

a1 = 0;

b1 = 0;

forever

begin

#({$random}%100)

a1 = ~a1;

#({$random}%100)

b1 = ~b1;

end

end

top t0(.a(a1), .b(b1), .sum(sum1), .count(count1));

endmodule

(4)對于延時,可以采用直接賦值的延時,如#5,使用隨機延時目前暫時不常用。

當仿真到想結束時,可以在initial塊的最后加$finish(此處可參考@大神李),即調用系統函數結束仿真,否則,仿真在ModelSim中會一直進行下去,不方便觀察(在Vivado中設置的第一次仿真結束時間停止,默認1ns)。

此外,這里建議使用stop來代替finish,即停止仿真,在ModelSim中是暫停了仿真,而$finishi則可能會退出,看不到仿真波形。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 全加器
    +關注

    關注

    10

    文章

    62

    瀏覽量

    28452
  • 半加器
    +關注

    關注

    1

    文章

    29

    瀏覽量

    8776
  • Vivado
    +關注

    關注

    19

    文章

    808

    瀏覽量

    66321
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8213
收藏 人收藏

    評論

    相關推薦

    請問Quartus2中的用一全加器實現全加器

    全加器是我自己封裝的,在四全加器中調用,在編譯過程總是出錯
    發表于 03-06 15:48

    FPGA入門——1全加器設計 精選資料分享

    FPGA入門——1全加器設計一、原理圖輸入1.1 創建工程1.2 原理圖輸入1.3 將設計項目設置成可調用的元件1.4
    發表于 07-26 07:01

    怎樣去設計一種基于FPGA的1全加器

    怎樣去設計一種基于FPGA的1全加器?如何對基于FPGA的1全加器進行仿真?
    發表于 09-17 07:38

    基于Quartus II軟件完成一個1全加器的設計

    FPGA 設計入門(嵌入式系統應用開發)一、實驗要求二、實驗步驟1. 新建工程2. 原理圖設計3. 將設計項目設置成可調用的元件4. 仿真5. 設計
    發表于 12-17 06:19

    什么是8全加器和8為帶超前進位的全加器

    Verilog數字系統設計四復雜組合邏輯實驗2文章目錄Verilog數字系統設計四前言一、什么是8全加器和8為帶超前進位的全加器?二、編程
    發表于 02-09 07:49

    全加器是算術運算電路中的基本單元,它們
    發表于 04-07 10:34 ?1.5w次閱讀
    <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>

    什么是一全加器,其原理是什么?

    什么是一全加器,其原理是什么  是能夠計算低位進位的二進制加法電路 一全加器由2個
    發表于 03-08 17:13 ?7.6w次閱讀

    加法器仿真波形圖設計解析

    8全加器可由2個4全加器串聯組成,因此,先由一個
    發表于 11-24 10:01 ?3.1w次閱讀
    八<b class='flag-5'>位</b>加法器仿真波形圖設計解析

    全加器是什么?全加器的區別?

    是能夠計算低位進位的二進制加法電路。與相比,全加器不只考慮本位計算結果是否有進位,也考
    發表于 07-25 11:15 ?7.4w次閱讀
    <b class='flag-5'>全加器</b>是什么?<b class='flag-5'>全加器</b>和<b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>的區別?

    全加器的原理及區別(結構和功能)

    +加法和全加法是算術運算電路中的基本單元,它們是完成1二進制相加的一種組合邏輯電路。
    的頭像 發表于 07-25 11:37 ?33.7w次閱讀
    <b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>和<b class='flag-5'>全加器</b>的原理及區別(結構和功能)

    全加器真值表和真值表詳細分析

    全加器是組合電路中的基本元器件,也是CPU中處理加法運算的核心,理解、掌握并熟練應用是硬件課程的最基本要求。
    的頭像 發表于 07-25 14:39 ?13.9w次閱讀
    <b class='flag-5'>全加器</b>真值表和<b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>真值表詳細分析

    Verilog數字系統設計——復雜組合邏輯實驗2(8全加器和8為帶超前進位的全加器

    Verilog數字系統設計四復雜組合邏輯實驗2文章目錄Verilog數字系統設計四前言一、什么是8全加器和8為帶超前進位的全加器?二、編程
    發表于 12-05 19:06 ?4次下載
    <b class='flag-5'>Verilog</b>數字系統設計——復雜組合邏輯實驗2(8<b class='flag-5'>位</b><b class='flag-5'>全加器</b>和8為帶超前進位的<b class='flag-5'>全加器</b>)

    基于FPGA的設計

    加法器用于兩個數或者多個數的和,加法器又分為(half adder)和全加器(full adder)。
    的頭像 發表于 05-12 14:50 ?1006次閱讀
    基于FPGA的<b class='flag-5'>半</b><b class='flag-5'>加</b><b class='flag-5'>器</b>設計

    全加器的功能特點

    全加器是數字電路中的基本組件,用于執行二進制數的加法運算。它們在計算機、微處理和其他數字系統中扮演著重要角色。
    的頭像 發表于 10-18 11:10 ?668次閱讀

    全加器的區別是什么

    (Half Adder)和全加器(Full Adder)是數字電路中的基本組件,用于執行二進制加法運算。它們的主要區別在于功能和輸入輸出的數量。
    的頭像 發表于 10-18 11:12 ?2137次閱讀