在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于FPGA層次化設計構成全加器

CHANBAEK ? 來源:小小研究生 ? 作者:xxyjs2020 ? 2023-05-14 15:07 ? 次閱讀

在上一節半加器中,介紹了全加器可看作兩個半加器和一個或門組成。

首先半加器是A+B構成了{C,S}。由于全加器多了一個低位的進位,就是將{C,S}再加上Ci-1。此時再使用一個半加器將S與Ci-1相加,結果的低位就是全加器的低位Si。全加器的高位Ci來自于兩個半加器的高位,如果有一個高位為1,結果就為1。

設計規劃

本例中將采用3個按鍵作為輸入in1,in2和進位信號cin,并采用兩個LED燈作為信號輸出count和sum。根據上一節中全加器真值表,可以畫出波形圖:

編寫代碼

module full_adder
(
input wire in1 , 
input wire in2 , 
input wire cin , 
output wire sum , 
output wire cout 
);


 //wire define
 wire h0_sum ;
 wire h0_cout;
 wire h1_cout;


 //------------------------half_adder_inst0------------------------
 half_adder half_adder_inst0
 (
 .in1 (in1 ), 
 .in2 (in2 ), 
 .sum (h0_sum ), 
 .cout (h0_cout) 
 );


 //------------------------half_adder_inst1------------------------
 half_adder half_adder_inst1
 (
 .in1 (h0_sum ), 
 .in2 (cin ), 
 .sum (sum ), 
 .cout (h1_cout) 
 );


 assign cout = h0_cout|h1_cout;
 endmodule

還記得FPGA從入門到精通(一)中的移位寄存器的實例化練習嗎?以module模塊名(輸入,輸出)開頭,以endmodule結尾。

上一節中已經封裝好了half_adder函數,內部的邏輯就不用再次寫了,只需要將外部端口和full_adder的端口對應好就可以直接調用。這就是verilog的方便之處,否則完成這個程序,需要將半加器的代碼寫兩次。

再上面的全加器結構圖中可以看到端口的對應,其中除了全加器的5個端口外,還需要引入三根連線。需要定義wire變量h0_count,h1_count和h0_sum。

下面完成兩次實例化,上一節中的半加器有in1,in2,cout,sum四個端口,第一個半加器分別對應著全加器的輸入端口in1,in2,h0_count,h0_sum,第二個半加器分別對應著上一個半加器的結果的低位h0_sum和低位進位cin,h1_count1,全加器的結果的低位sum。全加器的結果的高位count是h0_count和h1_count的或。

現在將.v文件綜合一定會報錯,因為還沒有將half_adder模塊添加進來。所以調用時找不到半加器的函數。因此需要將half_adder.v復制到文件夾中并添加到Files中:

看RTL視圖,兩個half_adder模塊是可以展開的:

編寫testbench

`timescale 1ns/1ns
module tb_full_adder();
reg in1;
reg in2;
reg cin;
wire sum ;
wire cout;


 initial begin
 in1 <= 1'b0;
 in2 <= 1'b0;
 cin <= 1'b0;
 end


 always #10 in1 <= {$random} % 2;
 always #10 in2 <= {$random} % 2;
 always #10 cin <= {$random} % 2;


 //------------------------------------------------------------
 initial begin
 $timeformat(-9, 0, "ns", 6);
 $monitor("@time %t:in1=%b in2=%b cin=%b sum=%b cout=%b",$time,in1,in2,cin,sum,cout);
 end
 //------------------------------------------------------------


 //---------------full_adder_inst------------------
 full_adder full_adder_inst(
 .in1 (in1), 
 .in2 (in2), 
 .cin (cin), 
 .sum (sum), 
 .cout (cout) 
 );


 endmodule

這里testbench依然是先聲明變量,其中輸入是reg類型,輸出是wire類型。初始化令變量都為0,延時10ns給輸入隨機賦值0或1,然后實例化將tb_full_adder模塊和full_adder模塊端口進行連接,就可以觀察波形。

需要注意的是!!!在本例中引入了打印模塊,可以直觀看到隨機輸入對應輸出的真值表。

$timeformat(units_number, precision_number, suffix_string, minimum_field_wdith);

timefomat的語法:

第一個參數units_number表示打印的時間值的單位,取0 到-15 之間的整數值:0 表示秒,-3 表示毫秒,-6 表示微秒,-9 表示納秒, -12 表示皮秒, -15 表示飛秒

第二個參數precision_number表示打印時間值時,小數點后保留的位數。

第三個參數suffix_string在時間值后面打印時間單位。其默認值為空字符串,如果用ns作為單位可以打印ns。

第四個參數MinFieldWidth 是時間值與單位字符串的最小長度,不足這個長度,則在字符串之前補空格。其默認值為20。

monitor的語法:

$monitor (“format_string”, parameter1, parameter2, … );

當在monitor調用時對多個變量進行監控,當monitor監控的變量中任何一個發生變化時,將會打印出當前仿真時刻的值;如果$monitor監控的所有變量在某一時刻均不改變,將不會打印任何信息。本例中會打印出時間和5個端口值。

對比波形

當端口多了之后,看波形相對不直觀了,這里可以通過觀察我們剛才打印的數據進行判斷。通過View-transcript可以觀察transcript窗口:

表格的方式相對直觀多了,且輸出和預期一致。

分配管腳

全編譯后分配引腳,這里的按鍵和LED燈管腳我們已經非常熟悉了。在location這一欄分配引腳,不要和fitterlocation弄混了。

現在cin,in1,in2對應S0,S1,S2,cout對應LED0,sum對應LED1。那么cin,in1,in2按下去表示為0,點亮的LED表示對應為輸出為低電平。都不按下去時,應該都熄滅,按下去一個時,LED0亮,按下兩個時,LED1亮,按下三個時,兩個LED同時亮。

全編譯后上板驗證

一個都不按下時,都不亮

按下一個時,LED0亮

按下兩個時,LED1亮

全部按下時,兩個都亮

組合邏輯電路的實例就結束了,后面是簡單的時序邏輯電路實例。

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

    關注

    1630

    文章

    21801

    瀏覽量

    606363
  • 信號
    +關注

    關注

    11

    文章

    2809

    瀏覽量

    77159
  • 波形圖
    +關注

    關注

    1

    文章

    34

    瀏覽量

    14983
  • 全加器
    +關注

    關注

    10

    文章

    62

    瀏覽量

    28566
  • 半加器
    +關注

    關注

    1

    文章

    29

    瀏覽量

    8825
收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 FPGA技術應用:全加器設計

    fpga全加器
    Mr_haohao
    發布于 :2022年10月19日 17:24:52

    如何快速學習FPGA之煉獄傳奇層次

    本節我們通過驅動流水燈的不同方式來體現Fpga中的一個重要思想—層次設計。首先介紹一下我所使用開發板的硬件資源,50MHZ時鐘輸入、4個低電平點亮的流水燈。然后通過兩種不同驅動方式的對比使讀者更加深
    發表于 06-18 10:20

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

    FPGA入門——1位全加器設計一、原理圖輸入1.1 創建工程1.2 原理圖輸入1.3 將設計項目設置成可調用的元件1.4 半加器仿真1.5 設計全加器頂層文件二、Verilog編程Ending
    發表于 07-26 07:01

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

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

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

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

    全加器

    全加器   全加器能進行加數、被加數和低位來的進位信號相加,并根據求和結果給出該位的進位信號。  根據全加器的功能,可列出它的真值表:
    發表于 04-07 10:34 ?9493次閱讀
    <b class='flag-5'>全加器</b>

    用兩個全加器構成二一十進制相減器

    用兩個全加器構成二一十進制相減器
    發表于 04-09 10:34 ?910次閱讀
    用兩個<b class='flag-5'>全加器</b><b class='flag-5'>構成</b>二一十進制相減器

    用四位全加器構成二一十進制加法器

    用四位全加器構成二一十進制加法器
    發表于 04-09 10:34 ?5994次閱讀
    用四位<b class='flag-5'>全加器</b><b class='flag-5'>構成</b>二一十進制加法器

    監控系統設備構成的分層次結構詳析

    監控系統設備構成的分層次結構詳析 在這介召一下監控系統中采用的設備構成的分層次結構,在計算機網絡中運用的拓撲結構同樣在監控系統中得到廣泛的運用,而拓
    發表于 12-18 09:56 ?1765次閱讀

    全加器,全加器是什么意思

    全加器,全加器是什么意思  full-adder    用門電路實現兩個二進數相加并求出和的組合線路,稱為一個全加器
    發表于 03-08 17:04 ?8.5w次閱讀

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

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

    什么是全加器 全加器工作原理

    全加器英語名稱為full-adder,是用門電路實現兩個二進制數相加并求出和的組合線路,稱為一位全加器
    的頭像 發表于 07-25 16:03 ?7.8w次閱讀

    全加器邏輯表達式_全加器的邏輯功能

    本文主要介紹了全加器邏輯表達式及全加器的邏輯功能。
    的頭像 發表于 04-23 09:51 ?13.2w次閱讀
    <b class='flag-5'>全加器</b>邏輯表達式_<b class='flag-5'>全加器</b>的邏輯功能

    層次設計構成全加器

    首先半加器是A+B構成了{C,S}。由于全加器多了一個低位的進位,就是將{C,S}再加上Ci-1。
    的頭像 發表于 05-22 15:26 ?1840次閱讀
    <b class='flag-5'>層次</b><b class='flag-5'>化</b>設計<b class='flag-5'>構成全加器</b>

    在Spartan 6 FPGA上從頭開始實現全加器

    電子發燒友網站提供《在Spartan 6 FPGA上從頭開始實現全加器.zip》資料免費下載
    發表于 06-15 10:13 ?0次下載
    在Spartan 6 <b class='flag-5'>FPGA</b>上從頭開始實現<b class='flag-5'>全加器</b>
    主站蜘蛛池模板: 亚洲你我色| 国产黄在线观看免费观看不卡 | 你懂的免费在线观看 | 免费恐怖片 | a级精品九九九大片免费看 a级毛毛片看久久 | 免费看污视频的网站 | aaaa大片| 日本不卡一区二区三区视频 | 嫩草影院久久国产精品 | 在线视频黄色 | 福利视频第一区 | 超薄肉色丝袜精品足j福利 超黄视频在线观看 | 亚洲综合激情丁香六月 | 深夜在线视频免费网址 | 久久人人青草97香蕉 | 天天做天天爱夜夜爽女人爽宅 | 免费你懂的 | 91操碰| 日韩爽片| 日日摸夜夜爽 | 激情综合丝袜美女一区二区 | 国产久热精品 | 久久青草精品一区二区三区 | 成 人色 网 站 欧美大片在线观看 | 免费黄色三级网站 | 222aaa天堂 | 特级毛片女人18毛片 | 一区二区三区在线免费 | 九九热在线免费 | www.四虎影院在线观看 | 手机看高清特黄a大片 | 国产伦子系列视频6 | 97影院午夜在线观看视频 | 澳门三级bd高清 | 日本一区二区三区在线观看视频 | 色色色色色色色色色色色色色色 | www射| 欧美午夜视频在线 | 亚洲天天做夜夜做天天欢人人 | 久久夜夜操 | 五月婷婷色综合 |