1. 學習多功能alu的工作原理,掌握運算器的設計方法
2. 掌握運用verilog hdl 進行行為描述與建模的技巧和方法
1. 分析乙個具有8種運算功能的32位alu,並能夠產生運算結果的標誌:結果位零標誌(zf)和溢位標誌(of)
2. 首先,分析出zf只會在加減運算**現溢位情況,然後分析出alu 8種計算如何表達,如果使用「-」,就不用考慮如何減法
3. **展示:
頂層模組:
module
alu(
ab_sw
,alu_op
,f_led_sw
,led);
input[2
:0]ab_sw
,alu_op
,f_led_sw
;output[7
:0]led
;wire[31
:0]a
,b,f
;wirezf,
of;third_experiment_secondt2(
ab_sw,a
,b);
third_experiment_firstt1(
of,zf,
alu_op,a
,b,f
);third_experiment_thirdt3(
f_led_sw
,led,f
,zf,of
);endmodule
third_experiment_second模組(作為資料輸入)
module
third_experiment_second
(ab_sw,a
,b);
input[2
:0]ab_sw
;output
reg[31:
0]a,
b;always@(
*)begin
case
(ab_sw)3
'b000:begin a=32'
h0000_0000;b
=32'h0000_0000
;end
3'b001:begin a=32'
h0000_0003;b
=32'h0000_0607
;end
3'b010:begin a=32'
h8000_0000;b
=32'h8000_0000
;end
3'b011:begin a=32'
h7fff_ffff;b
=32'h7fff_ffff
;end
3'b100:begin a=32'
hffff_ffff;b
=32'hffff_ffff
;end
3'b101:begin a=32'
h8000_0000;b
=32'hffff_ffff
;end
3'b110:begin a=32'
hffff_ffff;b
=32'h8000_0000
;end
3'b111:begin a=32'
h1234_5678;b
=32'h3333_2222
;end
default:begina=
32'h9abc_def0;b=32'
h1111_2222
;end
endcase
endendmodule
third_experiment_first模組(運算)
module
third_experiment_first(of
,zf,alu_op,a
,b,f
);input[2
:0]alu_op
;input[31
:0]a
,b;output
reg[31:
0]f;
regc32
;output
regof=0
;output
regzf=0
;always@(
alu_opora
orb)begin
case
(alu_op)3
'b000:f
<=a
&b;3
'b001:f
<=a
|b;3
'b010:f
<=a
^b;3
'b011:f
<=a
~^b;
3'b100:
<=a
+b;3
'b101:
<
=a-b;3
'b110:begin if(ah0000_0001
;else
f<=32
'h0000_0000
;end3'
b111:begin
f<=b
<
endendcaseif(
f==32
'h0000_0000)zf
<=1
;else
zf<=0
;of=c32^f
[31]^
a[31]
^b[31
];endendmodule
third_experiment_third模組(作為led顯示)
module
third_experiment_third
(f_led_sw
,led,f
,zf,of
);input[31
:0]f
;inputzf,
of;input[2
:0]f_led_sw
;output
reg[7:
0]led;
always@(
*)begin
case
(f_led_sw)3
'b000:led=f
[7:0
];3'
b001:led=f
[15:8
];3'
b010:led=f
[23:16
];3'
b011:led=f
[31:24
];default:begin
led[7]
=zf;led[0
]=of;
led[6:
1]=6
'b0;end
endcase
endendmodule
測試模組
module
alu_test;/
/inputs
reg[2:
0]ab_sw
;reg[2
:0]alu_op
;reg[2
:0]f_led_sw;/
/outputs
wire[7
:0]led
;alu
uut(
.ab_sw
(ab_sw),
.alu_op
(alu_op),
.f_led_sw
(f_led_sw),
.led
(led))
;initial
begin
ab_sw=3
'b001
;alu_op=3
'b000
;f_led_sw=3
'b000;#
100;
ab_sw=3
'b001
;alu_op=3
'b001
;f_led_sw=3
'b000;#
100;
ab_sw=3
'b001
;alu_op=3
'b010
;f_led_sw=3
'b000
;end
endmodule
當時在做實驗的時候,有的朋友問我begin…end是幹什麼用,其實就是相當於c語言中的大括號 計算機組成原理 多功能ALU設計實驗
一 實驗目的與要求 實驗目的 1 學習多功能alu的工作原理,掌握運算器的設計方法 2 掌握運用verilog hdl 進行行為描述與建模的技巧和方法 實驗要求 本實驗要求設計乙個具有8種運算功能的32位alu,並能夠產生運算結果的標誌 結果為零標誌zf zero flag 溢位標誌of overf...
計算機組成實驗筆記
實驗 xdc檔案 預設情況下,vivado ide中顯示的xdc檔案 或tcl指令碼 的順序定義了將elaborated design或synthesized design載入到記憶體時工具使用的讀取順序。首先讀取列表頂部的檔案,最後讀取底部的檔案。只需在ide中選擇檔案並將其移動到列表中的所需位置...
計算機組成原理 3
本部落格的主要內容有 資料的表示和運算 bcd碼 奇偶校驗碼 等 1.計算機系統的層次結構 微程式機器m0 傳統機器m1 作業系統機器m2 組合語言m3 高階語言機器m4 2.編譯程式和解釋程式的區別 編譯程式是一次性全部翻譯成機器語言程式,解釋程式是一條一條進行翻譯成機器語言程式 3.計算機效能指...