EDA課程設(shè)計(jì) ALU算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)
《EDA課程設(shè)計(jì) ALU算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《EDA課程設(shè)計(jì) ALU算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)(14頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、1摘要摘要本文討論了基于FPGA 芯片的四位簡單微處理器的設(shè)計(jì)方法。依據(jù)微處理器的基本原理,以XILINUX ISE 9.2I軟件平臺(tái)作為開發(fā)工具,它與AMD公司生產(chǎn)的四位微處理器AM2901指令兼容,主要完成微處理器硬件系統(tǒng)設(shè)計(jì)和指令系統(tǒng)設(shè)計(jì)兩方面的任務(wù),運(yùn)用VHDL硬件編程語言,使微處理器能夠?qū)崿F(xiàn)兩個(gè)四位二進(jìn)制加、減算術(shù)運(yùn)算和與或等邏輯運(yùn)算功能。微處理器系統(tǒng)包括運(yùn)算器、控制器、存儲(chǔ)器以及其他必要的邏輯部件。關(guān)鍵詞關(guān)鍵詞:FPGA,VHDL,微處理器。 2目錄目錄一一 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù)33二二 總體設(shè)計(jì)總體設(shè)計(jì)33三三 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)33 1 1、ALUALU 輸入選擇器的設(shè)計(jì)輸入選擇器的
2、設(shè)計(jì)3 32 2、ALUALU 算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)443 3、存儲(chǔ)器、存儲(chǔ)器 RAMRAM 的設(shè)計(jì)的設(shè)計(jì)664 4、寄存器、寄存器 qreg1qreg1 的設(shè)計(jì)的設(shè)計(jì)775 5、輸出選擇器的設(shè)計(jì)、輸出選擇器的設(shè)計(jì)886 6、頂層模塊的設(shè)計(jì)、頂層模塊的設(shè)計(jì)99四四 結(jié)果分析結(jié)果分析1111五五 結(jié)束語結(jié)束語1313六六 參考文獻(xiàn)參考文獻(xiàn)13133一、設(shè)計(jì)任務(wù)一、設(shè)計(jì)任務(wù)本設(shè)計(jì)為一個(gè)基于VHDL語言的9位簡單指令,微處理器的設(shè)計(jì)流程,包括微處理器的ALU操作數(shù)選擇、ALU功能選擇、RAM輸入輸出及移位操作,最后用頂層設(shè)計(jì)進(jìn)行元件例化。通過編譯、仿真檢查程序,最后在FPGA
3、芯片上實(shí)現(xiàn)下載。二、總體設(shè)計(jì)二、總體設(shè)計(jì)系統(tǒng)的主要分五個(gè)模塊。模塊間的關(guān)系如下圖:ALU 輸入選擇設(shè)計(jì)輸入選擇設(shè)計(jì)ALU 功能選擇設(shè)計(jì)功能選擇設(shè)計(jì)RAM 輸入輸出及移位操作設(shè)計(jì)輸入輸出及移位操作設(shè)計(jì)寄存器輸入輸出及移位操作設(shè)計(jì)寄存器輸入輸出及移位操作設(shè)計(jì)系統(tǒng)本身輸入輸出及移位操作系統(tǒng)本身輸入輸出及移位操作三、詳細(xì)設(shè)計(jì)三、詳細(xì)設(shè)計(jì)微處理器的指令系統(tǒng)規(guī)定:基本指令字長為 9 位,指令的每一位從高到低用I8、I7、I6、I5、I4、I3、I2、I1、I0表示。1 1、ALUALU 輸入選擇器的設(shè)計(jì)輸入選擇器的設(shè)計(jì)指令的編碼方式如圖 指令碼指令碼 ALU 輸入選擇 其中,ALU 輸入選擇,可以對 AL
4、U 中運(yùn)算的操作數(shù)進(jìn)行選擇,即 r 和 s,選擇信指令碼 輸入選擇 I2 I1 I0 r s0 0 0 a q0 0 1 a b0 1 0 0 q0 1 1 0 b1 0 0 0 a1 0 1 d a1 1 0 d q1 1 1 d 04號(hào) a、b、d、q、0 到 ALU。ALU 輸入選擇器是由微處理器指令中的源操作數(shù)所控制的兩個(gè)多路選擇器構(gòu)成的。輸出信號(hào) r 在 a、d 和 0 之間選擇,s 信號(hào)在 a、b、q 和 0 之間選擇。其VHDL 源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;enti
5、ty 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 isbegin with aluin_ctrl select r=a when 000|001, 0000when 010|011|100, d when others; with aluin_ctrl select s=q when 000|
6、010|110, b when 001|011, a when 100|101, 0000 when others;end arc1;2 2、ALUALU 算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)算術(shù)邏輯運(yùn)算單元的設(shè)計(jì) ALU 算術(shù)運(yùn)算邏輯單元,可以對兩個(gè) 4 位操作數(shù)執(zhí)行 3 種算術(shù)運(yùn)算和 5 中邏輯運(yùn)算。輸入信號(hào)為 4 位 r 信號(hào),4 位 s 信號(hào)以及進(jìn)位信號(hào) cin,輸出信號(hào)為f3.0、進(jìn)位輸出信號(hào) c4、進(jìn)位生成信號(hào) g_bar、進(jìn)位傳輸信號(hào) p_bar 和溢出標(biāo)志 ovr。ALU 的輸出信號(hào) f3.0還反饋到寄存器和存儲(chǔ)器。指令碼 ALU 單元選擇I5 I4 I3 0 0 0 r+s0 0 1 s-
7、r0 1 0 r-s0 1 1 r or s1 0 0 r and s1 0 1 (not r) and s1 1 0 r xor s1 1 1 not(r xor s) ALU 功能選擇ALU 算術(shù)邏輯運(yùn)算單元的主要功能是根據(jù)指令碼的要求,分別對兩個(gè)操作執(zhí)行算術(shù)邏輯運(yùn)算單元的 VHDL 程序?qū)崿F(xiàn)如下:5library 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
8、); 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 issignal r1,s1,f1:unsigned(4 downto 0);begin r1=0&r; s1 if c
9、in=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) or6 (r(3)or s(3)and (r(2)or s(2)and (r(1)and s(1) or (r(3)
10、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 3、存儲(chǔ)器、存儲(chǔ)器 RAMRAM 的設(shè)計(jì)的設(shè)計(jì)存儲(chǔ)器 RAM 用于讀寫數(shù)據(jù)的雙端口存儲(chǔ)器。4 位 aaddr 信號(hào)和 baddr 信號(hào)對16 位存儲(chǔ)器進(jìn)行尋址,決定了輸出線 a、b 的讀出數(shù)據(jù)。指令碼 RAM 操作I8 I7 I60 0 0 0 0 1 0 1
11、 0 f3.00 1 1 f3.01 0 0 ram3 & f3.1 1 0 1 ram3 & f3.1 1 1 0 f2.0 & ram01 1 1 f2.0 & ram0 RAM 輸入輸出及移位操作存儲(chǔ)器操作包括在給定的地址信號(hào)作用下,實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。在本模塊中,數(shù)據(jù)的數(shù)入有 3 種不同的方式,由指令碼 I8.6所示的方式進(jìn)行控制。其 VHDL 源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.numeric_std.all;entity ram1 is po
12、rt ( 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)
13、of unsigned(3 downto 0); signal ab_data:ram_type; -存儲(chǔ)區(qū)值signal ctrl:std_logic_vector(1 downto 0); begin7ctrlab_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_
14、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 5、輸出選擇器設(shè)計(jì)、輸出選擇器設(shè)計(jì) 系統(tǒng)本身輸入輸出及移位操作輸出選擇器選擇將 a 信號(hào)或 f 信號(hào)輸出,用于選擇 ALU 輸出或者寄存器信號(hào)作為對外輸出信號(hào)。輸出選擇模塊主要是經(jīng)多路選擇器將輸出信號(hào)傳送到輸出總線 y3.0,輸出信號(hào)的選擇受指令碼控制
15、,輸出總線構(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 I60 0 0 f0 0 1 f0 1 0 a0 1 1
16、 f1 0 0 f1 0 1 f 1 1 0 f1 1 1 f9 y:buffer unsigned(3 downto 0); -輸出end outmux;architecture arc1 of outmux issignal y_data:unsigned(3 downto 0);beginy_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(cl
17、k=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ù)邏輯運(yùn)算單元的端口映射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 dow
18、nto 6),oe=oe,y=y);end rt1;四、結(jié)果分析四、結(jié)果分析1 1、ALUALU 輸入選擇器輸入選擇器 由運(yùn)行結(jié)果可知,當(dāng)指令為 0 時(shí),輸入選擇信號(hào) r 為 a,輸入選擇信號(hào) s 為 q,當(dāng)指令為 3 時(shí),輸入選擇信號(hào) r 為 0,輸入選擇信號(hào) s 為 b。圖中當(dāng)指令碼alum_ctrl 為 0,則輸入選擇信號(hào) r 為輸入 a 即 2,輸入選擇信號(hào) s 為 q 即 1。當(dāng)指令碼 alum_ctrl 為 3,則輸入選擇信號(hào) r 為 0,輸入選擇信號(hào) s 為 b 即 8。2 2、ALUALU 算術(shù)邏輯運(yùn)算單元算術(shù)邏輯運(yùn)算單元 由運(yùn)行結(jié)果可知,當(dāng)指令碼 alu_ctrl 為 0 時(shí)
19、,執(zhí)行加法運(yùn)算,即 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 時(shí),12執(zhí)行與運(yùn)算,即 r and s,圖中 5 與 d 進(jìn)行與運(yùn)算,結(jié)果為 5。3 3、存儲(chǔ)器、存儲(chǔ)器 RAMRAM由運(yùn)行結(jié)果可知,當(dāng)輸入指令 ram1_ctrl 時(shí),地址選擇信號(hào) baddr 選擇 ram存儲(chǔ)位置,存儲(chǔ)的值由 a 通道或 b 通道輸出,a 通道輸出的值由地址選擇信號(hào)aaddr 決定,通道輸出的值由地址選擇信號(hào) baddr 決定,圖中指令 ram1_ctrl
20、 為2 時(shí),將計(jì)算結(jié)果 1 存儲(chǔ)在地址 baddr 為 0 的存儲(chǔ)區(qū)內(nèi),a 通道輸出地址 aaddr為 0 的存儲(chǔ)區(qū)值,即輸出 1,b 通道輸出地址 aaddr 為 0 的存儲(chǔ)區(qū)值,即輸出1。4、寄存器、寄存器 qreg1qreg1 由運(yùn)行結(jié)果可知,指令 q_ctrl 有四種操作包括接收、左移、右移、保持,圖中當(dāng)指令 q_ctrl 為 0 時(shí),執(zhí)行接受輸入數(shù)據(jù) f,當(dāng)指令 q_ctrl 為 7 時(shí),執(zhí)行保持?jǐn)?shù)據(jù) f,q3 被賦值,當(dāng)指令 q_ctrl 為 4 時(shí),實(shí)現(xiàn)左移,q0 被賦值。5 5、輸出選擇器、輸出選擇器13 由運(yùn)行結(jié)果可知,當(dāng) oe 為高電平時(shí),輸出端 y 輸出高阻態(tài),否則輸出端
21、由輸出控制指令 mux_ctrl 決定,當(dāng) mux_qtrl 為 2 時(shí),輸出為 a 信號(hào),當(dāng) mux_ctrl為7 或 0 時(shí),輸出為 f 信號(hào)。6 6、總體仿真、總體仿真 由運(yùn)行結(jié)果可知,輸入端 d 輸入數(shù)據(jù),經(jīng) ALU 算術(shù)邏輯單元運(yùn)算后得到的結(jié)果送入存儲(chǔ)器和寄存器,最后經(jīng)輸出選擇器選擇輸出數(shù)據(jù)。當(dāng)輸入指令為 i 為 7 時(shí),將信號(hào) d 輸入,執(zhí)行加法運(yùn)算,經(jīng)存儲(chǔ)器存儲(chǔ),經(jīng)寄存器寄存,oe 為低電平控制輸出端 y輸出。五、結(jié)束語五、結(jié)束語14本文介紹了基于FPGA進(jìn)行微處理器的設(shè)計(jì),進(jìn)行系統(tǒng)建模,并且使用現(xiàn)場可編程器件FPGA,由九位指令控制,實(shí)現(xiàn)ALU操作數(shù)選擇、ALU功能選擇、RAM輸入輸出及移位操作、寄存器輸入輸出及移位操作。六、參考文獻(xiàn)六、參考文獻(xiàn)1 基于 Altera FPGA/CPLD 的電子系統(tǒng)設(shè)計(jì)及工程實(shí)踐 人民郵電出版社2 潘松,黃繼業(yè)主編.EDA 技術(shù)與 VHDL(第 3 版).清華大學(xué)出版社3 譚會(huì)生.EDA 技術(shù)綜合應(yīng)用實(shí)例與分析.西安電子科技大學(xué)出版社
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植樹問題講課
- 小小圖書館賈世喜
- 小班數(shù)學(xué):變得一樣多
- 蘇教版三年級(jí)數(shù)學(xué)上冊教學(xué)ppt課件58:解決問題的策略復(fù)習(xí)
- 小學(xué)科學(xué)六下《拓展與應(yīng)用》-公開課一等獎(jiǎng)ppt課件
- 高中英語人教版選修七Unit-2-Robots-ppt課件
- 第九章長期負(fù)債課件
- 皮膚免疫系統(tǒng)課件
- 辦公樓施工現(xiàn)場消防安全管理要求規(guī)范課件
- freeroi在功能磁共振roi分析中的應(yīng)用
- 《永遇樂·京口北固亭懷古》用典講解課件
- 《秋天的雨》微課課件
- 護(hù)患溝通技巧-課件
- 《高等數(shù)學(xué)B》第十章___微分方程與差分方程__第6節(jié)__差分與差分方程的概念_、……課件
- 英語(人教版)九年級(jí)總復(fù)習(xí)題型訓(xùn)練補(bǔ)全對話(含最新原創(chuàng)題)課件