算術(shù)邏輯運(yùn)算實驗
一.實驗?zāi)康?/strong>
??1.了解簡單運(yùn)算器的數(shù)據(jù)傳輸通路。
??2.驗證運(yùn)算功能發(fā)生器的組合功能。
??3.掌握算術(shù)邏輯運(yùn)算加、減、與的工作原理。
??4.驗證實驗臺運(yùn)算的8位加、減、與、直通功能。
??5.按給定數(shù)據(jù),完成幾種指定的算術(shù)和邏輯運(yùn)算。
二.實驗原理
??算術(shù)邏輯單元ALU的數(shù)據(jù)通路如圖2-1所示。其中運(yùn)算器ALU181根據(jù)74LS181的功能用VHDL硬件描述語言編輯而成,構(gòu)成8位字長的ALU。參加運(yùn)算的兩個8位數(shù)據(jù)分別為A[7…0]和B[7…0],運(yùn)算模式由S[3…0]的16種組合決定,而S[3…0]的值由4位2進(jìn)制計數(shù)器LPM_COUNTER產(chǎn)生,計數(shù)時鐘是Sclk(圖2-1);此外,設(shè)M=0,選擇算術(shù)運(yùn)算,M=1為邏輯運(yùn)算,CN為低位的進(jìn)位位;F[7…0]為輸出結(jié)果,CO為運(yùn)算后的輸出進(jìn)位位。兩個8位數(shù)據(jù)由總線IN[7…0]分別通過兩個電平鎖存器74373鎖入,ALU功能如表2-1所示。
??

??
三.實驗步驟
??1. 設(shè)計ALU元件
??在Quartus II 環(huán)境下,用文本輸入編輯器Text Editor輸入ALU181.VHD算術(shù)邏輯單元文件,編譯VHDL文件,并將ALU181.VHD文件制作成一個可調(diào)用的原理圖元件。
ALU181.VHD文件內(nèi)容如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ALU181 IS
??PORT (
?? ? S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 );
?? ? A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
?? ? B : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
?? ? F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
?? ? M : IN STD_LOGIC;
?? ? CN : IN STD_LOGIC;
?? ? CO : OUT STD_LOGIC );
END ALU181;
ARCHITECTURE behav OF ALU181 IS
SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0);
SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0);
SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0);
BEGIN
? A9 <= ‘0’ & A ; B9 <= ‘0’ & B ;
? PROCESS(M,CN,A9,B9)
? ? BEGIN
? ? ? CASE S IS
? ? ? WHEN “0000” => IF M=‘0’ THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF;
? ? ? WHEN “0001” => IF M=‘0’ THEN F9<=(A9 or B9) + CN ; ELSE F9<=NOT(A9 OR B9); END IF;
? ? ? WHEN “0010” => IF M=‘0’ THEN F9<=(A9 or (NOT B9))+ CN ; ELSE F9<=(NOT A9) AND B9; END IF;
? ? ? WHEN “0011” => IF M=‘0’ THEN F9<= “000000000” - CN ; ELSE F9<=“000000000”; END IF;
? ? ? WHEN “0100” => IF M=‘0’ THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF;
? ? ? WHEN “0101” => IF M=‘0’ THEN F9<=(A9 or B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF;
? ? ? WHEN “0110” => IF M=‘0’ THEN F9<=(A9 - B9) - CN ; ELSE F9<=A9 XOR B9; END IF;
? ? ? WHEN “0111” => IF M=‘0’ THEN F9<=(A9 or (NOT B9)) - CN ; ELSE F9<=A9 and (NOT B9); END IF;
? ? ? WHEN “1000” => IF M=‘0’ THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9)and B9; END IF;
? ? ? WHEN “1001” => IF M=‘0’ THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF;
? ? ? WHEN “1010” => IF M=‘0’ THEN F9<=(A9 or(NOT B9))+(A9 AND B9)+CN ; ELSE F9<=B9; END IF;
? ? ? WHEN “1011” => IF M=‘0’ THEN F9<=(A9 AND B9)- CN ; ELSE F9<=A9 AND B9; END IF;
? ? ? WHEN “1100” => IF M=‘0’ THEN F9<=(A9 + A9) + CN ; ELSE F9<= “000000001”; END IF;
? ? ? WHEN “1101” => IF M=‘0’ THEN F9<=(A9 or B9) + A9 + CN ; ELSE F9<=A9 OR (NOT B9); END IF;
? ? ? WHEN “1110” => IF M=‘0’ THEN F9<=((A9 or (NOT B9)) +A9) + CN ; ELSE F9<=A9 OR B9; END IF;
? ? ? WHEN “1111” => IF M=‘0’ THEN F9<=A9 - CN ; ELSE F9<=A9 ; END IF;
? ? ? WHEN OTHERS => F9<= “000000000” ;
? ? ? END CASE;
END PROCESS;
? F<= F9(7 DOWNTO 0) ; CO <= F9(8) ;
END behav;
? ? 2.以原理圖方式建立頂層文件工程
選擇圖形方式。根據(jù)圖2-1輸入實驗電路圖,從Quartus II的基本元件庫中將各元件調(diào)入圖形編輯窗口、連線,添加輸入輸出引腳。
將所設(shè)計的圖形文件ALU.bdf保存到原先建立的文件夾中,將當(dāng)前文件設(shè)置成工程文件,以后的操作就都是對當(dāng)前工程文件進(jìn)行的。
? ?3.器件選擇
選擇Cyclone系列,在Devices中選擇器件EP1C6QC240C8。編譯,引腳鎖定,再編譯。引腳鎖定后需要再次進(jìn)行編譯,才能將鎖定信息確定下來,同時生成芯片編程/配置所需要的各種文件。
? ?4.芯片編程
打開編程窗口。將配置文件ALU.sof下載進(jìn)GW48系列現(xiàn)代計算機(jī)組成原理系統(tǒng)中的FPGA中。
? ?5.驗證ALU的運(yùn)算器的算術(shù)運(yùn)算和邏輯運(yùn)算功能
選擇實驗系統(tǒng)的電路模式為NO.0,根據(jù)表2-1,從鍵盤輸入數(shù)據(jù)A[7…0]和B[7…0],并設(shè)置S[3…0]、M、Cy,驗證ALU運(yùn)算器的算術(shù)運(yùn)算和邏輯運(yùn)算功能,記錄實驗數(shù)據(jù)。
??
??
四.實驗要求
??1. 做好實驗預(yù)習(xí),掌握運(yùn)算器的數(shù)據(jù)傳送通路和ALU的功能特性,并熟悉本實驗中所用的控制臺開關(guān)的作用和使用方法。
??2. 寫出實驗報告,內(nèi)容是:
???①實驗?zāi)康模?br> ???②按理論分析值填寫好表2-2、表2-3和表2-4,給出對應(yīng)的仿真波形。
???③列表比較實驗數(shù)據(jù)(2)的理論分析值與實驗結(jié)果值;并對結(jié)果進(jìn)行分析。實驗結(jié)果與理論分析值比較,有沒有不同?為什么?
???④通過本實驗,你對運(yùn)算器ALU有何認(rèn)識,有什么心得體會?
五.實驗結(jié)果
??填寫表格2-3、2-4:
??文章來源:http://www.zghlxwxcb.cn/news/detail-457553.html

??

六.實驗心得體會
??1.通過本次實驗,我掌握了運(yùn)算器的傳輸和計算方法,了解了簡單運(yùn)算器的數(shù)據(jù)傳輸通路。
??2.通過本次實驗,我熟悉了邏輯運(yùn)算單元ALU181的真值表和對應(yīng)的功能。
??3.通過本次實驗,我加深了對FPGA器件工作方式的理解,在驗證ALU181功能的過程中提升了自己的動手能力,這也能讓自己變得更細(xì)致和有耐心。
??4.在驗證ALU功能特性的時候,我發(fā)現(xiàn)當(dāng)S3 S2 S1 S0 = 1000,M=1,Cn=0時,ALU原本應(yīng)該實現(xiàn)F=A非+B,但實際操作下來卻發(fā)現(xiàn)并非如此,詢問老師后得知可能是ALU181真值表與實際功能實現(xiàn)間存在極少數(shù)不對應(yīng)的情況。文章來源地址http://www.zghlxwxcb.cn/news/detail-457553.html
到了這里,關(guān)于西電計組實驗二 運(yùn)算器實驗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!