實驗一 四位全加器的RTL設計

2021-10-07 16:36:27 字數 2049 閱讀 7789

為了熟悉整個數字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...