7418alu算術邏輯單元
阿新 • • 發佈:2018-12-24
#7418alu算術邏輯單元
姓名:xx 學號:xxx 班級:計科班
實驗名稱:74181alu 實驗性質:綜合性實驗 時間:2018.11.13
一、實驗目的
設計一個簡單的算術邏輯單元,並用Verilog實現,在實驗箱上演示。
二、實驗原理與內容
算術邏輯單元ALU集成了各種算術運算和邏輯運算部件的功能,包括加、減、乘、除等數值運算、邏輯運算、移位運算等。把這些功能整合在一一個邏輯部件ALU之中,使得ALU具有算術運算和邏輯運算功能。這種設計方法可以使得功能比較緊湊,簡化對邏輯運算部件和算術運算部件的使用。同時還能最大限度的複用某些邏輯部件,從而減少邏輯電路的使用。
設計ALU首先要對各種算數邏輯運算進行編碼。表1為本文設計的處理器實用的ALU功能編碼表。
三、實驗過程
源程式:
module ALU181A(S,A,B,F,M,CN,CO,FZ); input[3:0] S; input[7:0] A,B; input M,CN; output[7:0] F; output CO,FZ; wire[7:0] F; wire CO; wire[8:0] A9,B9; reg FZ; reg[8:0] F9; assign A9={1'b0,A}; assign B9={1'b0,B}; always @(M or CN or A9 or B9 or S) begin case(S) 4'b0000: if(M==0) F9<=A9+CN; else F9<=~A9; 4'b0001: if(M==0) F9<=(A9|B9)+CN; else F9<=(~A9)&B9; 4'b0010: if(M==0) F9<=(A9|(~B9))+CN; else F9<=~A9; 4'b0011: if(M==0) F9<=9'b000000000-CN; else F9<=9'b000000000; 4'b0100: if(M==0) F9<=A9+(A9&~B9)+CN; else F9<=~(A9&B9); 4'b0101: if(M==0) F9<=((A9+B9)+(A9&~B9)+CN); else F9<=~B9; 4'b0110: if(M==0) F9<=A9-B9-CN; else F9<=A9^B9; 4'b0111: if(M==0) F9<=A9+(~B9)-CN; else F9<=A9&(~B9); 4'b1000: if(M==0) F9<=A9+(A9&B9)+CN; else F9<=(~A9)+B9; 4'b1001: if(M==0) F9<=A9+B9+CN; else F9<=~(A9^B9); 4'b1010: if(M==0) F9<=A9+(~B9)+(A9&B9)+CN; else F9<=B9; 4'b1011: if(M==0) F9<=(A9&B9)+CN; else F9<=(A9&B9); 4'b1100: if(M==0) F9<=A9+A9+CN; else F9<=9'b000000001; 4'b1101: if(M==0) F9<=(A9+B9)+A9+CN; else F9<=A9+(~B9); 4'b1110: if(M==0) F9<=A9+(~B9)+A9+CN; else F9<=A9+B9; 4'b1111: if(M==0) F9<=A9-CN; else F9<=A9; default: F9<=9'b000000000; endcase end assign F=F9[7:0]; assign CO=F9[8]; endmodule -----------------------------------------------------------------------------------------
四、實驗總結
在這個實驗中,我以74181ALU 為設計例項,用verilog實現,在測試時使用的變數值分別為:a=8’b00001101 ;b=8’ b01001001;s=4’ b1001; m=0;cn=0;a, b的值採用了多組進行測試,基本實現了74181ALU 的所有功能
五、實驗體會及改進建議
通過本次實驗我更好的理解了ALU加法器算術與邏輯單元的功能,瞭解了算術邏輯單元ALU的各種算術運算和邏輯運算部件的功能,包括加、減、乘、除等數值運算、邏輯運算、移位運算等。增強了實驗動手能力