杭電計算機組成實驗3(三)多功能ALU設計實驗

2021-10-12 12:55:53 字數 4213 閱讀 9484

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.計算機效能指...