一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

請(qǐng)用Verilog分別實(shí)現(xiàn)1位半加器和1位全加器

冬至子 ? 來源:FPGA探索者 ? 作者:FPGA探索者 ? 2023-06-26 16:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.原理

半加器

圖片

圖片

全加器

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

圖片

圖片

2.編程思路

(1)根據(jù)真值表編寫

按照半加器和全加器的真值表寫出輸出端的邏輯表達(dá)式,對(duì)半加器,輸出的進(jìn)位端是量輸入的“與”,輸出的計(jì)算結(jié)果是量輸入的異或;對(duì)全加器,也按照邏輯表達(dá)式做。

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

//這里的always @(*)搭配里面的“=”阻塞賦值符號(hào)
//實(shí)現(xiàn)的效果和 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中的一種時(shí)間尺度預(yù)編譯指令,用來定義仿真時(shí)的時(shí)間單位和時(shí)間精度,左邊是時(shí)間單位,右邊是時(shí)間精度,時(shí)間單位是用于編寫激勵(lì)文件,時(shí)間精度是顯示時(shí)的刻度,比如#100也就是100ns。時(shí)間精度不能大于時(shí)間單位,比如timescale 1 ns/1 ps是正確的,而timescale 1 ps/1 ns是錯(cuò)誤的。

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

首先,#代表延時(shí),這個(gè)語句表示延時(shí)隨機(jī)的一個(gè)時(shí)間,結(jié)合`timescale 1 ns/1 ns是延時(shí)隨機(jī)的ns。

$random 是 verilog 中產(chǎn)生隨機(jī)數(shù)的系統(tǒng)函數(shù),在調(diào)用時(shí)返回一個(gè) 32 位的隨機(jī)數(shù),是帶符號(hào)的整形數(shù)。有幾種用法:

random 和random()意義一樣,都是產(chǎn)生隨機(jī)數(shù);

$random%100 在-99 到 99 之間產(chǎn)生隨機(jī)數(shù);

{$random}%100 采用位拼接符,在 0 到 100 之間產(chǎn)生隨機(jī)數(shù);

如 seed =10, $random(seed) 根據(jù) seed 值產(chǎn)生隨機(jī)數(shù),而后 seed 值也會(huì)更新。

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

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

實(shí)際上,括號(hào)外的引腳名稱代表的是模塊定義時(shí)的引腳,括號(hào)內(nèi)的引腳是目前實(shí)際使用的引腳名稱,如可以將@大神袁的測(cè)試文件改為:

`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)對(duì)于延時(shí),可以采用直接賦值的延時(shí),如#5,使用隨機(jī)延時(shí)目前暫時(shí)不常用。

當(dāng)仿真到想結(jié)束時(shí),可以在initial塊的最后加$finish(此處可參考@大神李),即調(diào)用系統(tǒng)函數(shù)結(jié)束仿真,否則,仿真在ModelSim中會(huì)一直進(jìn)行下去,不方便觀察(在Vivado中設(shè)置的第一次仿真結(jié)束時(shí)間停止,默認(rèn)1ns)。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 全加器
    +關(guān)注

    關(guān)注

    10

    文章

    62

    瀏覽量

    28838
  • 半加器
    +關(guān)注

    關(guān)注

    1

    文章

    29

    瀏覽量

    8973
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    835

    瀏覽量

    68784
  • Verilog語言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8555
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問Quartus2中的用一全加器實(shí)現(xiàn)全加器

    全加器是我自己封裝的,在四全加器中調(diào)用,在編譯過程總是出錯(cuò)
    發(fā)表于 03-06 15:48

    FPGA入門——1全加器設(shè)計(jì) 精選資料分享

    FPGA入門——1全加器設(shè)計(jì)一、原理圖輸入1.1 創(chuàng)建工程1.2 原理圖輸入1.3 將設(shè)計(jì)項(xiàng)目設(shè)置成可調(diào)用的元件1.4
    發(fā)表于 07-26 07:01

    怎樣去設(shè)計(jì)一種基于FPGA的1全加器

    怎樣去設(shè)計(jì)一種基于FPGA的1全加器?如何對(duì)基于FPGA的1全加器進(jìn)行仿真?
    發(fā)表于 09-17 07:38

    基于Quartus II軟件完成一個(gè)1全加器的設(shè)計(jì)

    FPGA 設(shè)計(jì)入門(嵌入式系統(tǒng)應(yīng)用開發(fā))一、實(shí)驗(yàn)要求二、實(shí)驗(yàn)步驟1. 新建工程2. 原理圖設(shè)計(jì)3. 將設(shè)計(jì)項(xiàng)目設(shè)置成可調(diào)用的元件4. 仿真5. 設(shè)計(jì)
    發(fā)表于 12-17 06:19

    什么是8全加器和8為帶超前進(jìn)位的全加器

    Verilog數(shù)字系統(tǒng)設(shè)計(jì)四復(fù)雜組合邏輯實(shí)驗(yàn)2文章目錄Verilog數(shù)字系統(tǒng)設(shè)計(jì)四前言一、什么是8全加器和8為帶超前進(jìn)位的全加器?二、編程
    發(fā)表于 02-09 07:49

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

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

    什么是一全加器,其原理是什么  是能夠計(jì)算低位進(jìn)位的二進(jìn)制加法電路 一全加器由2個(gè)
    發(fā)表于 03-08 17:13 ?7.8w次閱讀

    加法器仿真波形圖設(shè)計(jì)解析

    8全加器可由2個(gè)4全加器串聯(lián)組成,因此,先由一個(gè)
    發(fā)表于 11-24 10:01 ?3.3w次閱讀
    八<b class='flag-5'>位</b>加法器仿真波形圖設(shè)計(jì)解析

    全加器是什么?全加器的區(qū)別?

    是能夠計(jì)算低位進(jìn)位的二進(jìn)制加法電路。與相比,全加器不只考慮本位計(jì)算結(jié)果是否有進(jìn)位,也考
    發(fā)表于 07-25 11:15 ?7.6w次閱讀
    <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>的區(qū)別?

    全加器的原理及區(qū)別(結(jié)構(gòu)和功能)

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

    全加器真值表和真值表詳細(xì)分析

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

    Verilog數(shù)字系統(tǒng)設(shè)計(jì)——復(fù)雜組合邏輯實(shí)驗(yàn)2(8全加器和8為帶超前進(jìn)位的全加器

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

    基于FPGA的設(shè)計(jì)

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

    全加器的功能特點(diǎn)

    全加器是數(shù)字電路中的基本組件,用于執(zhí)行二進(jìn)制數(shù)的加法運(yùn)算。它們?cè)谟?jì)算機(jī)、微處理和其他數(shù)字系統(tǒng)中扮演著重要角色。
    的頭像 發(fā)表于 10-18 11:10 ?3675次閱讀

    全加器的區(qū)別是什么

    (Half Adder)和全加器(Full Adder)是數(shù)字電路中的基本組件,用于執(zhí)行二進(jìn)制加法運(yùn)算。它們的主要區(qū)別在于功能和輸入輸出的數(shù)量。
    的頭像 發(fā)表于 10-18 11:12 ?1w次閱讀