歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

EDA課程設(shè)計 ALU算術(shù)邏輯運算單元的設(shè)計

  • 資源ID:28170792       資源大?。?span id="1ljp2to" class="font-tahoma">177.50KB        全文頁數(shù):14頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

EDA課程設(shè)計 ALU算術(shù)邏輯運算單元的設(shè)計

1 摘要 本文討論了基于FPGA 芯片的四位簡單微處理器的設(shè)計方法。依據(jù)微處理器 的基本原理,以XILINUX ISE 9.2I軟件平臺作為開發(fā)工具,它與AMD公司生產(chǎn)的 四位微處理器AM2901指令兼容,主要完成微處理器硬件系統(tǒng)設(shè)計和指令系統(tǒng)設(shè) 計兩方面的任務(wù),運用VHDL硬件編程語言,使微處理器能夠?qū)崿F(xiàn)兩個四位二進(jìn) 制加、減算術(shù)運算和與或等邏輯運算功能。微處理器系統(tǒng)包括運算器、控制器、 存儲器以及其他必要的邏輯部件。 關(guān)鍵詞:FPGA,VHDL,微處理器。 2 目錄 一 設(shè)計任務(wù)3 二 總體設(shè)計3 三 詳細(xì)設(shè)計3 1、ALU 輸入選擇器的設(shè)計3 2、ALU 算術(shù)邏輯運算單元的設(shè)計4 3、存儲器 RAM 的設(shè)計6 4、寄存器 qreg1 的設(shè)計7 5、輸出選擇器的設(shè)計8 6、頂層模塊的設(shè)計9 四 結(jié)果分析11 五 結(jié)束語13 六 參考文獻(xiàn)13 3 一、設(shè)計任務(wù) 本設(shè)計為一個基于VHDL語言的9位簡單指令,微處理器的設(shè)計流程,包括微 處理器的ALU操作數(shù)選擇、ALU功能選擇、RAM輸入輸出及移位操作,最后用頂層 設(shè)計進(jìn)行元件例化。通過編譯、仿真檢查程序,最后在FPGA芯片上實現(xiàn)下載。 二、總體設(shè)計 系統(tǒng)的主要分五個模塊。模塊間的關(guān)系如下圖: ALU 輸入選擇設(shè)計 ALU 功能選擇設(shè)計 RAM 輸入輸出及移位操作設(shè)計 寄存器輸入輸出及移位操作設(shè)計 系統(tǒng)本身輸入輸出及移位操作 三、詳細(xì)設(shè)計 微處理器的指令系統(tǒng)規(guī)定:基本指令字長為 9 位,指令的每一位從高到低用 I8、I 7、I 6、I 5、I 4、I 3、I 2、I 1、I 0 表示。 1、ALU 輸入選擇器的設(shè)計 指令的編碼方式如圖 指令碼 ALU 輸入選擇 其中,ALU 輸入選擇,可以對 ALU 中運算的操作數(shù)進(jìn)行選擇,即 r 和 s,選擇信 指令碼 輸入選擇 I2 I1 I0 r s 0 0 0 a q 0 0 1 a b 0 1 0 0 q 0 1 1 0 b 1 0 0 0 a 1 0 1 d a 1 1 0 d q 1 1 1 d 0 4 號 a、b、d、q、0 到 ALU。 ALU 輸入選擇器是由微處理器指令中的源操作數(shù)所控制的兩個多路選擇器構(gòu)成 的。輸出信號 r 在 a、d 和 0 之間選擇,s 信號在 a、b、q 和 0 之間選擇。其 VHDL 源程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity alumux is port ( d,q,a,b : in unsigned(3 downto 0); aluin_ctrl:in std_logic_vector(2 downto 0); -輸入選擇控制 r,s:buffer unsigned(3 downto 0); end alumux; architecture arc1 of alumux is begin with aluin_ctrl select r=a when 000|001, 0000when 010|011|100, d when others; with aluin_ctrl select s=q when 000|010|110, b when 001|011, a when 100|101, 0000 when others; end arc1; 2、ALU 算術(shù)邏輯運算單元的設(shè)計 ALU 算術(shù)運算邏輯單元,可以對兩個 4 位操作數(shù)執(zhí)行 3 種算術(shù)運算和 5 中 邏輯運算。輸入信號為 4 位 r 信號,4 位 s 信號以及進(jìn)位信號 cin,輸出信號為 f3.0、進(jìn)位輸出信號 c4、進(jìn)位生成信號 g_bar、進(jìn)位傳輸信號 p_bar 和溢出 標(biāo)志 ovr。ALU 的輸出信號 f3.0還反饋到寄存器和存儲器。 指令碼 ALU 單元選擇 I5 I4 I3 0 0 0 r+s 0 0 1 s-r 0 1 0 r-s 0 1 1 r or s 1 0 0 r and s 1 0 1 (not r) and s 1 1 0 r xor s 1 1 1 not(r xor s) ALU 功能選擇 ALU 算術(shù)邏輯運算單元的主要功能是根據(jù)指令碼的要求,分別對兩個操作執(zhí) 行算術(shù)邏輯運算單元的 VHDL 程序?qū)崿F(xiàn)如下: 5 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.std_logic_unsigned.all; entity alu is port ( r,s : in unsigned(3 downto 0); alu_ctrl:in std_logic_vector(2 downto 0); -功能選擇控制 cin:in std_logic; -進(jìn)位輸入 f:buffer unsigned(3 downto 0); -結(jié)果輸出 g_bar,p_bar:buffer std_logic; -進(jìn)位生成標(biāo)志和進(jìn)位傳輸標(biāo)志 c4:buffer std_logic; -進(jìn)位輸出 ovr:buffer std_logic); end alu; architecture rt1 of alu is signal r1,s1,f1:unsigned(4 downto 0); begin r1=0 s1 if cin=0 then f1=r1+s1; -r+s else f1 if cin=0 then f1=s1+not(r1); -s-r else f1 if cin=0 then f1=r1+not(s1); -r-s else f1 f1 f1 f1 f1 f1 null; end case; end process; f=f1(3 downto 0); c4=f1(4); g_bar=not( (r(3)and s(3) or (r(3)or s(3)and (r(2)and s(2) or 6 (r(3)or s(3)and (r(2)or s(2)and (r(1)and s(1) or (r(3)or s(3)and (r(2)or s(2)and (r(1)and s(1)and (r(0)and s(0); p_bar=not( (r(3)or s(3)and(r(2)or s(2)and(r(1)and s(1)and(r(0)and s(0); ovr=1when (f1(4)/=f1(3)else 0; end rt1; 3、存儲器 RAM 的設(shè)計 存儲器 RAM 用于讀寫數(shù)據(jù)的雙端口存儲器。4 位 aaddr 信號和 baddr 信號對 16 位存儲器進(jìn)行尋址,決定了輸出線 a、b 的讀出數(shù)據(jù)。 指令碼 RAM 操作 I8 I7 I6 0 0 0 0 0 1 0 1 0 f3.0 0 1 1 f3.0 1 0 0 ram3 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity ram1 is port ( clk : in std_logic; aaddr,baddr,f:in unsigned(3 downto 0); -a 地址、b 地址 f:in unsigned(3 downto 0) -輸入數(shù)據(jù) ram1_ctrl:in std_logic_vector(2 downto 0);-RAM 操作控制 ram0,ram3:in std_logic; a,b:buffer unsigned(3 downto 0); -a、b 通道 end ram1; architecture rt1 of ram1 is -16 位地址 type ram_type is array(15 downto 0)of unsigned(3 downto 0); signal ab_data:ram_type; -存儲區(qū)值 signal ctrl:std_logic_vector(1 downto 0); begin 7 ctrlab_data(to_integer(baddr)ab_data(to_integer(baddr)ab_data(to_integer(baddr)ab_data(to_integer(baddr)=ab_data(to_integer(baddr); end case; end if; end process; a=ab_data(to_integer(aaddr); -a 通道 bq_dataq_dataq_dataq_data=q_data; -保持 end case; q=q_data; end if; end process; q3=f(3)when (q_ctrl=110 or q_ctrl=111)else Z; q0=f(0)when (q_ctrl=100 or q_ctrl=101)else Z; end rt1; 5、輸出選擇器設(shè)計 系統(tǒng)本身輸入輸出及移位操作 輸出選擇器選擇將 a 信號或 f 信號輸出,用于選擇 ALU 輸出或者寄存器信 號作為對外輸出信號。輸出選擇模塊主要是經(jīng)多路選擇器將輸出信號傳送到 輸出總線 y3.0,輸出信號的選擇受指令碼控制,輸出總線構(gòu)成三態(tài)結(jié)構(gòu), 受控制端 OE 的控制。其 VHDL 源程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity outmux is port ( a,f : in unsigned(3 downto 0); mux_ctrl:in std_logic_vector(2 downto 0); -輸出控制 oe:in std_logic; -三態(tài)控制 指令碼 輸出 I8 I7 I6 0 0 0 f 0 0 1 f 0 1 0 a 0 1 1 f 1 0 0 f 1 0 1 f 1 1 0 f 1 1 1 f 9 y:buffer unsigned(3 downto 0); -輸出 end outmux; architecture arc1 of outmux is signal y_data:unsigned(3 downto 0); begin y_data=a when mux_ctrl=010 else f; yclk,aaddr=aaddr,baddr=baddr,f=ff, ram1_ctrl=i(8 downto 6),ram0=ram0,ram3=ram3,a=aa,b=bb); -寄存器的端口映射 u2:qreg1 port map(clk=clk,f=ff, q_ctrl=i(8 downto 6),q0=q0,q3=q3,q=qq); 11 -輸入選擇器的端口映射 u3:alumux port map(d=d,q=qq,a=aa,b=bb, aluin_ctrl=i(2 downto 0),r=rr,s=ss); -ALU 算術(shù)邏輯運算單元的端口映射 u4:alu port map(r=rr,s=ss, alu_ctrl=i(5 downto 3),cin=cin,f=ff,g_bar=g_bar,c4=c4,ovr=ovr); -輸出選擇器的端口映射 u5:outmux port map(a=qq,f=ff,mux_ctrl=i(8 downto 6),oe=oe,y=y); end rt1; 四、結(jié)果分析 1、ALU 輸入選擇器 由運行結(jié)果可知,當(dāng)指令為 0 時,輸入選擇信號 r 為 a,輸入選擇信號 s 為 q, 當(dāng)指令為 3 時,輸入選擇信號 r 為 0,輸入選擇信號 s 為 b。圖中當(dāng)指令碼 alum_ctrl 為 0,則輸入選擇信號 r 為輸入 a 即 2,輸入選擇信號 s 為 q 即 1。 當(dāng)指令碼 alum_ctrl 為 3,則輸入選擇信號 r 為 0,輸入選擇信號 s 為 b 即 8。 2、ALU 算術(shù)邏輯運算單元 由運行結(jié)果可知,當(dāng)指令碼 alu_ctrl 為 0 時,執(zhí)行加法運算,即 r+s,如果 進(jìn)位輸入為 1,則再加上進(jìn)位,即 r+s+1,圖中 2 加 4 加進(jìn)位 1 得 7,相加之后 沒有進(jìn)位,進(jìn)位輸出 c4 即為 0,溢出標(biāo)志 ovr 為 0,當(dāng)指令碼 alu_ctrl 為 4 時, 12 執(zhí)行與運算,即 r and s,圖中 5 與 d 進(jìn)行與運算,結(jié)果為 5。 3、存儲器 RAM 由運行結(jié)果可知,當(dāng)輸入指令 ram1_ctrl 時,地址選擇信號 baddr 選擇 ram 存儲位置,存儲的值由 a 通道或 b 通道輸出,a 通道輸出的值由地址選擇信號 aaddr 決定,通道輸出的值由地址選擇信號 baddr 決定,圖中指令 ram1_ctrl 為 2 時,將計算結(jié)果 1 存儲在地址 baddr 為 0 的存儲區(qū)內(nèi),a 通道輸出地址 aaddr 為 0 的存儲區(qū)值,即輸出 1,b 通道輸出地址 aaddr 為 0 的存儲區(qū)值,即輸出 1。 4、寄存器 qreg1 由運行結(jié)果可知,指令 q_ctrl 有四種操作包括接收、左移、右移、保持,圖 中當(dāng)指令 q_ctrl 為 0 時,執(zhí)行接受輸入數(shù)據(jù) f,當(dāng)指令 q_ctrl 為 7 時,執(zhí)行 保持?jǐn)?shù)據(jù) f,q3 被賦值,當(dāng)指令 q_ctrl 為 4 時,實現(xiàn)左移,q0 被賦值。 5、輸出選擇器 13 由運行結(jié)果可知,當(dāng) oe 為高電平時,輸出端 y 輸出高阻態(tài),否則輸出端由輸 出控制指令 mux_ctrl 決定,當(dāng) mux_qtrl 為 2 時,輸出為 a 信號,當(dāng) mux_ctrl 為 7 或 0 時,輸出為 f 信號。 6、總體仿真 由運行結(jié)果可知,輸入端 d 輸入數(shù)據(jù),經(jīng) ALU 算術(shù)邏輯單元運算后得到的結(jié)果送 入存儲器和寄存器,最后經(jīng)輸出選擇器選擇輸出數(shù)據(jù)。當(dāng)輸入指令為 i 為 7 時,將信 號 d 輸入,執(zhí)行加法運算,經(jīng)存儲器存儲,經(jīng)寄存器寄存,oe 為低電平控制輸出端 y 輸出。 五、結(jié)束語 14 本文介紹了基于FPGA進(jìn)行微處理器的設(shè)計,進(jìn)行系統(tǒng)建模,并且使用現(xiàn)場 可編程器件FPGA,由九位指令控制,實現(xiàn)ALU操作數(shù)選擇、ALU功能選擇、RAM輸 入輸出及移位操作、寄存器輸入輸出及移位操作。 六、參考文獻(xiàn) 1 基于 Altera FPGA/CPLD 的電子系統(tǒng)設(shè)計及工程實踐 人民郵電出版社 2 潘松,黃繼業(yè)主編.EDA 技術(shù)與 VHDL(第 3 版).清華大學(xué)出版社 3 譚會生.EDA 技術(shù)綜合應(yīng)用實例與分析.西安電子科技大學(xué)出版社

注意事項

本文(EDA課程設(shè)計 ALU算術(shù)邏輯運算單元的設(shè)計)為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!