數電基礎
加法器用于兩個數或者多個數的加和,加法器又分為半加器(half adder)和全加器(full adder)。半加器電路是指對兩個輸入數據位相加,輸出一個結果位和進位,沒有進位輸入的加法器電路。是實現兩個一位二進制數的加法運算電路。而全加器除了加數和被加數之和外還要加上上一級傳進來的進位信號。如果沒有理解,看真值表和邏輯式就理解了。
全加器可看作兩個半加器和一個或門組成。
設計規劃
本例中我們實現最簡單的半加器。這個示例中,采用兩個按鍵作為信號輸入A和B,兩個LED燈作為輸出C和S。按下按鍵為低電平,LED燈為低電平時點亮。需要實現的功能是,按下AB時CS點亮,按下其中一個時只有C點亮,都不按下時只有S點亮。
根據真值表很容易畫出波形。
編寫代碼
module half_adder
(
input wire in1 ,
input wire in2 ,
output wire sum ,
output wire cout
);
assign {cout, sum} = in1 + in2;
endmodule
添加.v文件后編譯通過。點擊RTL viewer可以查看設計的硬件電路結構,和我們設計所表達的意思相同。
編寫testbench
`timescale 1ns/1ns
module tb_half_adder();
reg in1;
reg in2;
wire sum;
wire cout;
initial begin
in1 <= 1'b0;
in2 <= 1'b0;
end
always #10 in1 <= {$random} % 2;
always #10 in2 <= {$random} % 2;
//--------------------half_adder_inst-----------------
half_adder half_adder_inst
(
.in1 (in1 ), //input in1
.in2 (in2 ), //input in2
.sum (sum ), //output sum
.cout (cout ) //output cout
);
endmodule
又是超級熟悉的testbench。
對比波形
波形與預想的一致。
分配管腳
按照設計規劃:采用S0和S1作為信號輸入A和B,LED0和LED1作為輸出C和S。按下AB(0+0)時CS(=00)都亮,按下其中一個(0+1)時只有C(01)亮,都不按下(1+1)時只有S(=10)亮。
全編譯后上板驗證
都不按時LED1亮
任意按一個時,LED0亮。
兩個都按下時,LED0和LED1都亮。
在完成這幾個實例的過程中,遇到了很多錯誤,但是只要會上網,把報錯信息進行檢索,都能圓滿解決。
-
led燈
+關注
關注
22文章
1592瀏覽量
107950 -
加法器
+關注
關注
6文章
183瀏覽量
30114 -
RTL
+關注
關注
1文章
385瀏覽量
59761 -
全加器
+關注
關注
10文章
62瀏覽量
28496
發布評論請先 登錄
相關推薦
評論