一、實驗目的與要求
實驗目的:
(1)學習多功能alu的工作原理,掌握運算器的設計方法
(2)掌握運用verilog hdl 進行行為描述與建模的技巧和方法
實驗要求:本實驗要求設計乙個具有8種運算功能的32位alu,並能夠產生運算結果的標誌:結果為零標誌zf(zero flag)、溢位標誌of(overflow flag)。alu通過3根控制線alu_op[2:0]來選擇其8種功能。
功能表:
alu_op[2:0]
alu_op[2:0]
功能說明
0000
and按位與運算
0001
or按位或運
0010
xor按位異或運算
0011
nor按位或非運算
0100
add算術加運算
0101
sub算術減運算
0110
slt若a0111
sllb邏輯左移a所指定的位數
二、實驗設計與程式**
module alu
(op,a,b,f,zf,cf,of,sf,pf)
; parameter size =32;
//運算位數
input [3:
0] op;
//運算操作
input [size:
1] a;
//左運算數
input [size:
1] b;
//右運算數
output [size:
1] f;
//運算結果
output zf,
//0標誌位, 運算結果為0(全零)則置1, 否則置0
cf,//進借位標誌位, 取最高位進製c,加法時c=1則cf=1表示有進製,減法時c=0則cf=1表示有借位
of,//溢位標誌位,對有符號數運算有意義,溢位則of=1,否則為0
sf,//符號標誌位,與f的最高位相同
pf;//奇偶標誌位,f有奇數個1,則pf=1,否則為0
reg [size:
1] f;
reg c,zf,cf,of,sf,pf;
//c為最高位進製
always@(*)
begin
c=0;
case
(op)
4'b0000:begin f=a&b; end //按位與
4'b0001:begin f=a|b; end //按位或
4'b0010:begin f=a^b; end //按位異或
4'b0011:begin f=
~(a|b)
; end //按位或非
4'b0100:begin
=a+b; end //加法
4'b0101:begin
=a-b; end //減法
4'b0110:begin f=a
endcase
zf = f==0;
//f全為0,則zf=1
cf = c;
//進製借位標誌
of = a[size]
^b[size]
^f[size]
^c;//溢位標誌公式
sf = f[size]
;//符號標誌,取f的最高位
pf =
~^f;
//奇偶標誌,f有奇數個1,則f=1;偶數個1,則f=0
end
endmodule
三、實驗**
****?
module test()
; reg [31:
0] a,b;
reg [3:
0] op;
initial//初始化,每中運算擦拭兩組資料
begin
/*按位與*/
op=4'b0000;a=32'h0000_0000; b=
32'h0000_0001;#50
; op=
4'b0000;a=32'h0000_0001; b=
32'h0000_0001;#50
;/*按位或*/
op=4'b0001;a=32'h0000_0000; b=
32'h0000_0001;#50
; op=
4'b0001;a=32'h0000_0000; b=
32'h0000_0000;#50
;/*按位異或*/
op=4'b0010;a=32'h0000_0000; b=
32'h0000_0001;#50
; op=
4'b0010;a=32'h0000_0000; b=
32'h0000_0000;#50
;/*按位或非*/
op=4'b0011;a=32'h0000_0000; b=
32'h0000_0001;#50
; op=
4'b0011;a=32'h0000_0000; b=
32'h0000_0000;#50
;/*算術加運算*/
op=4'b0100;a=32'h7fff_ffff; b=
32'h7fff_ffff;#50
; op=
4'b0100;a=32'hffff_ffff; b=
32'hffff_ffff;#50
;/*算術減運算*/
op=4'b0101;a=32'h7fff_ffff; b=
32'h7fff_fffd;#50
; op=
4'b0101;a=32'h7fff_ffff; b=
32'hffff_ffff;#50
;/*aop=
4'b0110;a=32'h7fff_ffff; b=
32'h8fff_ffff;#50
; op=
4'b0110;a=32'hffff_ffff; b=
32'h7fff_ffff;#50
;/*b邏輯左移a指定的位數*/
op=4'b0111;a=32'h0000_0001; b=
32'h0000_0001;#50
; op=
4'b0111;a=32'h0000_0001; b=
32'h0000_0008;#50
; end
wire [31:
0] f;
wire zf, cf, of, sf, pf;
alu alu_test(.
op(op),.
a(a),.
b(b),.
f(f),.
zf(zf),.
cf(cf),.
of(of),.
sf(sf),.
pf(pf));
endmodule
**波形?
四、電路圖
杭電計算機組成實驗3(三)多功能ALU設計實驗
1.學習多功能alu的工作原理,掌握運算器的設計方法 2.掌握運用verilog hdl 進行行為描述與建模的技巧和方法 1.分析乙個具有8種運算功能的32位alu,並能夠產生運算結果的標誌 結果位零標誌 zf 和溢位標誌 of 2.首先,分析出zf只會在加減運算 現溢位情況,然後分析出alu 8種...
計算機組成原理cu 計算機組成原理 計算機概論
現代計算機樣式千奇百怪,常見的有我們的筆記本,台式電腦,也有各種伺服器 手機 攝像頭等都屬於計算機範疇。計算機包含我們看得見摸得著的計算機實體,稱為計算機硬體,如cpu 記憶體 各種掛接裝置等 還有我們看不見摸不著的軟體,它支援著硬體按照我們的預想在操作,包括系統軟體和應用軟體 計算機硬體樣式千奇百...
計算機組成原理
1計算機系統概論 1.1 計算機簡介 計算機由 硬體 和 軟體 組成。硬體 是看得見摸得著的各種電子元器件,各類光,電,機裝置的實物組成,如主機,外設等等。軟體 是看不見摸不著,由人們事先編製成具有各類特殊功能的資訊組成。計算機的三層結構 高階語言 組合語言 機器語言 微指令系統。計算機組成與計算機...