為了熟悉整個數字ic設計流程,以知識點+實驗的方式記錄。
四位全加器的寫法有很多種,按照fpga的設計方法,可以直接呼叫乙個四位的加法器;但數字ic基於標準cell的設計,為了速度與面積的trade off,以及後端佈線方便,本實驗採用模組呼叫的寫法。
module adder_4bits(
input [3:0] num1,
input [3:0] num2,
output cout,
output [3:0]
sum)
;wire cout_0;
wire cout_1;
wire cout_2;
adder_1bit adder0 (
.num1 ( num1[0]
),.num2 ( num2[0]
),.cin ( 1'b0 ),
.cout ( cout_0 ),
.sum ( sum[0]))
;adder_1bit adder1 (
.num1 ( num1[1]
),.num2 ( num2[1]
),.cin ( cout_0 ),
.cout ( cout_1 ),
.sum ( sum[1]))
;adder_1bit adder2 (
.num1 ( num1[2]
),.num2 ( num2[2]
),.cin ( cout_1 ),
.cout ( cout_2 ),
.sum ( sum[2]))
;adder_1bit adder3 (
.num1 ( num1[3]
),.num2 ( num2[3]
),.cin ( cout_2 ),
.cout ( cout ),
.sum ( sum[3]))
;endmodule
module adder_1bit(
input num1 ,
input num2 ,
input cin ,
output cout ,
output sum);
assign
=num1+num2+cin;
endmodule
`timescale 1ns/1ps
module test_tb();
reg clk_1 ;
reg clk_16 ;
reg [3:0] num1 ;
reg [3:0] num2 ;
wire cout ;
wire [3:0]
sum;
//instance
adder_4bits adder (
.num1 ( num1 ),
.num2 ( num2 ),
.cout ( cout ),
.sum (
sum));
//generate clk
always
begin
forever
#10 clk_1=~clk_1;
endalways
begin
forever
#160 clk_16=~clk_16;
end//add driven by clk
always@(clk_1)
begin
num1=num1+4'b0001;
endalways@(clk_16)
begin
num2=num2+4'b0001;
endinitial
begin
//test begin
clk_1=0;
clk_16=0;
num1=4'b0000;
num2=4'b0000;
#20000;
$finish
;end
endmodule
實驗報告二 例2 19 一位全加器
廣工計算機組成原理實驗 實驗二要求 例2 19一位全加器,要做出 波形 提交完整詳細的 元件圖,測試波形,說明文字 學習 掌握quartusii開發平台的基本使用 設計乙個一位全加器,並驗證全加器的功能 乙個一位全加器可以用兩個一位半加器和乙個或門連線而成。而乙個一位半加器可由基本閘電路組成。半加器...
取數字的最低四位 進製轉換
用數字 15得最低四位 有符號右移 開頭是1補1 是0補0 無符號右移 開頭補0 輸出數字對應的十六進製制元素 普通方法 system.out.print char num 10 a 輸出數字的十六進製制表現形0 9,a f 查表法 將所有元素臨時儲存起來,建立對應關係,每次 15後的值作為索引去查...
把DX,AX中的雙字右移四位
把dx,ax中的雙字右移四位。assume cs code code segment start mov dx,0ffffh mov cl,4 設定迴圈次數為 shr ax,cl 實現將ax邏輯右移 mov bl,dl 將dl的低4位暫存在bl中 shr dx,cl 實現將dx邏輯右移 shl bl...