第一篇:西南交通大學計算機組成原理課程設計報告
《計算機組成實驗 C》
課程設計
適用專業:電子信息類專業
專 班 學 姓
業:軟件工程 級:軟件一班 號: 名:某某某
指導教師:陳紅梅
實驗學期:2014-2015 第 1 學期
西 南 交 通 大 學
信息科學與技術學院 目錄
簡化計算機系統的設計.......................................................................................................................2
一、實驗目的...............................................................................................................................2 二.、實驗內容...............................................................................................................................2 三.、預習要求...............................................................................................................................2
四、實驗報告...............................................................................................................................2 1.BLOCK圖...........................................................................................................................3 2.程序設計(紙質的版本我用手抄)...........................................................................4 3.仿真波形圖.................................................................................................................11
4、仿真中遇到的問題:...................................................................................................14
五、實驗感想............................................................................................................................15
簡化計算機系統的設計
一、實驗目的
通過學習簡單的指令系統及其各指令的操作流程,用 VHDL 語言實現簡單 的處理器模塊,并通過調用存儲器模塊,將處理器模塊和存儲器模塊連接形成簡化的計 算機系統。
二.、實驗內容
1.用 VHDL 語言實現簡單的處理器模塊。2.調用存儲器模塊設計 64×8 的存儲器模塊。
3.將簡單的處理器模塊和存儲器模塊連接形成簡單的計算機系統。4.將指令序列存入存儲器,然后分析指令執行流程。
三.、預習要求
1、學習簡單指令集。
2、學習各指令的操作流程。
四、實驗報告
1.BLOCK圖
2.程序設計(紙質的版本我用手抄)
CPU的設計: LIBRARY ieee;USE ieee.std_logic_1164.ALL;
PACKAGE mypack IS CONSTANT idle : std_logic_vector(3 DOWNTO 0):=“0000”;CONSTANT load : std_logic_vector(3 DOWNTO 0):=“0001”;CONSTANT move : std_logic_vector(3 DOWNTO 0):=“0010”;CONSTANT addx : std_logic_vector(3 DOWNTO 0):=“0011”;CONSTANT subp : std_logic_vector(3 DOWNTO 0):=“0100”;CONSTANT andp : std_logic_vector(3 DOWNTO 0):=“0101”;CONSTANT orp : std_logic_vector(3 DOWNTO 0):=“0110”;CONSTANT xorp : std_logic_vector(3 DOWNTO 0):=“0111”;CONSTANT shrp : std_logic_vector(3 DOWNTO 0):=“1000”;CONSTANT shlp : std_logic_vector(3 DOWNTO 0):=“1001”;CONSTANT swap : std_logic_vector(3 DOWNTO 0):=“1010”;CONSTANT jmp : std_logic_vector(3 DOWNTO 0):=“1011”;CONSTANT jz : std_logic_vector(3 DOWNTO 0):=“1100”;CONSTANT read : std_logic_vector(3 DOWNTO 0):=“1101”;CONSTANT write : std_logic_vector(3 DOWNTO 0):=“1110”;CONSTANT stop : std_logic_vector(3 DOWNTO 0):=“1111”;END mypack;
LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE WORK.mypack.ALL;
------------------------cpu實體聲明--ENTITY cpu IS PORT(reset : IN std_logic;--清零信號低有效
clock : IN std_logic;--時鐘信號
Write_Read: OUT std_logic;--讀寫信號,'1'為寫 M_address: OUT std_logic_vector(11 DOWNTO 0);--地址線 M_data_in: IN std_logic_vector(7 DOWNTO 0);--數據輸入線 M_data_out: OUT std_logic_vector(7 DOWNTO 0);--數據輸出線
overflow: OUT std_logic);
--溢出標志 END cpu;
------------------------cpuRTL級行為描述-
ARCHITECTURE RTL of cpu IS
SIGNAL IR: std_logic_vector(15 DOWNTO 0);--指令寄存器 SIGNAL MDR: std_logic_vector(7 DOWNTO 0);--數據寄存器 SIGNAL MAR: std_logic_vector(11 DOWNTO 0);--地址寄存器 SIGNAL status: integer RANGE 0 TO 6;--狀態寄存器 BEGIN status_change: PROCESS(reset, clock, status)BEGIN IF reset = '0' THEN status <= 0;ELSIF clock'EVENT AND clock = '0' THEN
CASE status IS WHEN 0 =>
status <= 1;WHEN 1 => IF IR(15 DOWNTO 12)= Stop THEN
status <= 1;ELSE
status <= 2;END IF;WHEN 2 => CASE IR(15 DOWNTO 12)IS
WHEN Read|Write|Jmp|Jz|Swap =>
status <= 3;
WHEN OTHERS =>
status <= 0;
END CASE;WHEN 3 => IF IR(15 DOWNTO 12)= Swap THEN
status <= 0;ELSE
status <= 4;END IF;WHEN 4 => status <= 5;WHEN 5 => CASE IR(15 DOWNTO 12)IS
WHEN Read|Write =>
status <= 6;
WHEN OTHERS =>
status <= 0;
END CASE;WHEN OTHERS => status <= 0;END CASE;
ELSE
NULL;END IF;END PROCESS status_change;
seq: PROCESS(reset,clock)
VARIABLE PC:std_logic_vector(11 DOWNTO 0);--程序計數器
VARIABLE R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0);--通用寄存器
VARIABLE A: std_logic_vector(7 DOWNTO 0);--臨時寄存器
VARIABLE temp: std_logic_vector(8 DOWNTO 0);--臨時變量 BEGIN IF(reset='0')THEN
--清零
IR <=(OTHERS=>'0');PC :=(OTHERS=>'0');R0 :=(OTHERS=>'0');R1 :=(OTHERS=>'0');R2 :=(OTHERS=>'0');R3 :=(OTHERS=>'0');A :=(OTHERS=>'0');MAR <=(OTHERS=>'0');MDR <=(OTHERS=>'0');ELSIF(clock'event AND clock='1')THEN overflow <= '0';CASE status IS
WHEN 0=>--狀態0 IR <= M_data_in & “00000000”;
--取指令
PC := PC+1;
--程序計數器加1
WHEN 1=>--狀態1 IF(IR(15 DOWNTO 12)/= stop)THEN MAR <= PC;
END IF;
CASE IR(15 DOWNTO 12)IS WHEN load => R0:= “0000” & IR(11 DOWNTO 8);WHEN shlp|shrp => CASE IR(11 DOWNTO 10)IS
--Rx to A WHEN “00”=> A:= R0;WHEN “01”=> A:= R1;WHEN “10”=> A:= R2;WHEN OTHERS => A:= R3;END CASE;WHEN Move|addx|subp|andp|orp|xorp|Swap=> CASE IR(9 DOWNTO 8)IS
--Ry to A WHEN “00”=> A:=R0;WHEN “01”=> A:=R1;WHEN “10”=> A:=R2;WHEN OTHERS=> A:=R3;END CASE;WHEN OTHERS => NULL;END CASE;
WHEN 2=>--狀態2
CASE IR(15 DOWNTO 12)IS WHEN addx =>--Rx:= Rx + A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> temp :=(R0(7)& R0(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R0:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “01”=> temp :=(R1(7)& R1(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R1:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “10”=> temp :=(R2(7)& R2(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R2:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN OTHERS=> temp :=(R3(7)& R3(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R3:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);END CASE;WHEN subp =>--Rx:= Rx-A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> temp :=(R0(7)& R0(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R0:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “01”=> temp :=(R1(7)& R1(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R1:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “10”=> temp :=(R2(7)& R2(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R2:=temp(7 DOWNTO 0);
overflow <= temp(8)xor temp(7);WHEN OTHERS=> temp :=(R3(7)& R3(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R3:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);END CASE;WHEN move => CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:= A;WHEN “01”=> R1:= A;WHEN “10”=> R2:= A;WHEN OTHERS=> R3:= A;END CASE;
WHEN shrp => CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:= '0' & A(7 DOWNTO 1);WHEN “01”=> R1:= '0' & A(7 DOWNTO 1);WHEN “10”=> R2:= '0' & A(7 DOWNTO 1);WHEN OTHERS=> R3:= '0' & A(7 DOWNTO 1);END CASE;WHEN shlp => CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:= A(6 DOWNTO 0)& '0';WHEN “01”=> R1:= A(6 DOWNTO 0)& '0';WHEN “10”=> R2:= A(6 DOWNTO 0)& '0';WHEN OTHERS=> R3:= A(6 DOWNTO 0)& '0';END CASE;WHEN andp =>--Rx:= Rx AND A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=R0 AND A;WHEN “01”=> R1:=R1 AND A;WHEN “10”=> R2:=R2 AND A;WHEN OTHERS=> R3:=R3 AND A;END CASE;WHEN orp =>--Rx:= Rx OR A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=R0 OR A;WHEN “01”=> R1:=R1 OR A;WHEN “10”=> R2:=R2 OR A;WHEN OTHERS=> R3:=R3 OR A;END CASE;WHEN xorp =>--Rx:= Rx XOR A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=R0 XOR A;WHEN “01”=> R1:=R1 XOR A;WHEN “10”=> R2:=R2 XOR A;WHEN OTHERS=> R3:=R3 XOR A;END CASE;WHEN Swap =>--Swap: Rx to Ry;CASE IR(11 DOWNTO 8)IS WHEN “0100”=> R0:=R1;WHEN “1000”=> R0:=R2;WHEN “1100”=> R0:=R3;WHEN “0001”=> R1:=R0;WHEN “1001”=> R1:=R2;WHEN “1101”=> R1:=R3;WHEN “0010”=> R2:=R0;WHEN “0110”=> R2:=R1;WHEN “1110”=> R2:=R3;WHEN “0111”=> R3:=R1;WHEN “1011”=> R3:=R2;WHEN “0011”=> R3:=R0;
WHEN OTHERS=> NULL;END CASE;WHEN OTHERS => NULL;END CASE;
WHEN 3=>--狀態3 CASE IR(15 DOWNTO 12)IS WHEN Swap=>--Swap: A to Rx CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=A;WHEN “01”=> R1:=A;WHEN “10”=> R2:=A;WHEN OTHERS=> R3:=A;END CASE;WHEN jmp|Jz|Read|Write => IR(7 DOWNTO 0)<= M_data_in;PC := PC+1;
WHEN OTHERS => NULL;END CASE;
WHEN 4=>--CASE IR(15 DOWNTO 12)IS WHEN jmp =>
條件轉移指令
PC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);
WHEN Jz =>--令
IF(R0=“00000000”)then PC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);else MAR <= PC;END IF;
WHEN Read => MAR <= IR(11 DOWNTO 0);WHEN Write => MAR <= IR(11 DOWNTO 0);MDR <= R0;WHEN OTHERS => NULL;END CASE;
WHEN 5 =>--MAR <= PC;WHEN 6 =>--
CASE IR(15 DOWNTO 12)IS WHEN Read => R0 := M_data_in;
WHEN OTHERS=> NULL;END CASE;
取雙字節指令的后半部分狀態4
--無條件轉移指狀態5 狀態6--
END CASE;END IF;END process seq;
comb: PROCESS(reset, status)BEGIN IF(reset = '1' AND status = 5 AND IR(15 DOWNTO 12)= Write)THEN
Write_Read <= '1';
ELSE Write_Read <= '0';END IF;END PROCESS comb;M_address <= MAR;M_data_out <= MDR;END RTL;
3.仿真波形圖
3.1總體的仿真波形圖
1、我們可以看到CPU有6種工作模式,并且在不同的工作模式下實現了不同的功能。
2、我們的仿真波形上的M_q輸出的波形為,000、15、24、D0、1F......與我們cpu_mem.Mif文件中所輸入的指令一一對應。
3、我們看到PC隨著時鐘信號的改變在自加1。并且不斷的從內存文件中依次讀出相應的指令,將其執行。
4、我們看到R0的值在變化,依次為00、05、39、43、9、0A、3B、18、43、00,和所給的實例程序的情況完全吻合。同理也可以看出R1、R2、R3均為正確結果
5、我們可以看到地址寄存器也隨著時鐘信號在自加1,說明我們的PC和地址寄存器是共同協調工作的,隨著PC加1地址也隨之加1.6、在數據寄存器在CPU執行第7、8兩條指令后其值也是隨之改變為了R0中的值,與我們的預期相同。
3.2仿真波形的分析
變化: 我們可以看到執行完上面的的七條指令后R0、R1中的值發生了變化,而R2、R3中的值依然為00 沒有發生變化。
分析:第一條指令:由于我們程序中設定為00010101即為load指令,轉化為十六進制即為第一條指令15H,而我們在CPU中約定load指令為Read 01F R0<-(01F),即為將立即數5送給R0寄存器,所以當我們執行15H這條指令后CPU會將05送給R0寄存器,我們也可以從波形上看到,當執行完成15H指令后R0中的值變成了05;
第二條指令:同樣的我們將24H設定為Move R1,R0 R1<-(R0)是一條轉移指令,把R0中的值送給R1,從波形圖上可看出 執行完成24H后 R1中的值變成了05,與我們的預期相符。
第三、四指令:我們將 D0H、1FH設定為 Read 01F,即R0<-(01)F 將1F中的值送給R0,操作完后R0的值就為我們在1F單元中存儲的39 的數據值了。從波形圖上我們也能看出吻合。
第五條指令:我們將94H設定為 Shl R1 即將R1中的值左移一位,操作完成后R1的值變成了0A,與波形的情況也吻合。第六條指令:我們將31H設定為 Add R0,R1 R0<-(R0)+(R1)操作完成后R0的值為R0和R1的和,很明顯的看出我們仿真波形上的值是正確的。
第七、八兩條指令:我們將E0H和1EH設定為 Write 01E 01E<-(R0)我們執行完成后01E單元的值在RAM中顯示為43,與實際相符。
第九條指令:我們將41H設定為 SUB R0,R1 R0<-(R0-R1)指令,即為減法指令,我們預測執行完41H后R0的值為39,波形圖顯示正確。
第十條指令:我們將A1H設定為 Awap R0,R1(R0)?(R1)指令,即為交換指令,我們預期R0=0A R1=39,從波形上看出我們執行了 A1H后與我們的R0、R1值與預期結果相同。
第十一條指令:61H 設定為 OR R0,R1 R0<-(R0)AND(RI)執行完城后R0=3B 與波形圖相同。
第十二條指令:84H設定為Shr RI R1<-(RI)右移執行完成后R1應為1C 與波形圖結果相同指令正確。
第十三條指令:51H設定為AND R0,R1 執行相與操作,預計R0中為18,波形圖上當執行到這條指令后R0中結果確實為38,指令運行正確。
第十四條指令:28H設定為Move R2,R0 轉移指令,將R0的值送給R2,預計R2中的值將為18,從波形圖上看出R2值當運行到28H的時候確實為18,我們的指令運行正確。
第十五條指令:2DH設定為Move R3,R1 轉移指令 將R1中的值送給R3,我們預期R3中的值將會為1C,但執行完成后我們從波形圖上看出R3的值為1CH,指令運行正確。
第十六條指令:7BH設定為XOR R2,R3 將R2和R3異或 我們預期 R3中的之將會變為1CH,從波形圖上看到我們運行完成7BH后R3 的值為1CH,指令運行正確。
第十七、十八條指令:D0H、1EH設定為Read 01E R0<-(01E)將01E地址中的值送給R0寄存器,我們預期R0中的值將會為 43,從波形圖上可以看出當運行到此處的時候R0的值變成了43,指令運行正確。
第十九、二十條指令:C0H、19H 設定為:JZ019,若(R0)=0轉移至019,否則執行下一條指令,我們分析R0中的值并不為0,故不會跳轉,我們從波形上也可以看出,R0、R1、R2、R3中的值并沒有發生任何變化
第二十一、二十二條指令:1DH、D0H設定為Read 01D R0<-(01D),即將01D地址中的值取出送給R0,預期R0中的值將為0,從波形圖上也可以看出,執行到此處R0的值變成了0。
第二十三、二十四條指令:B0H、13H設定為: JMP 013指令 無條件跳轉至013H地址,而013H 為JZ 019 指令 同時這是的R0寄存器中的值為0,滿足了跳轉條件,此時程序將跳轉到019H地質處執行,即是我們的低二十五條指令,為停止指令,程序停止。
第二十五條指令:F0H 設定為Stop 指令,執行到此處程序停止。
此后的指令均為數據存儲的指令,在這里我就不一一進行介紹了,詳情可以查看下圖這個32字節的RAM內情表。
4、仿真中遇到的問題:
仿真過程中的一些問題首先是PC、R0、R1、R2、R3里面的值的順序需要將其顛倒。
仿真后還有一個問題是R0、R1、R2、R3的值顯示不正確,R0只顯示了到了05 后面的值就都不正確了,調試了半天,我發現波形顯示M_q在上升沿變化后,與之相連的M_data_in竟然不變,最后經過各種搜索后解決了此問題,原來lpm為輸出多做了一次寄存,也就是兩個脈沖才會讀出MAR的值。與PC的變化不銜接,整整快了兩個脈沖。所以把圖上紅圈處的勾去掉就行了。
五、實驗感想
經過此次實驗
我對CPU的工作原理有了很深刻的認識,發現了其中蘊藏著巨大的樂趣,我完全的搞懂了此次試驗的原理,再次基礎上,我還能結合此次實驗去理解微機接口,計算機組成原理等課程,通過此次實驗,我能熟練的使用VHDL來編寫大型的程序代碼,對于一個學軟件的人來說,我的編程能力又上了一個臺階。
除此之外,我學習到了很多底層的東西,讓我對計算機的工作原理有了更深刻的理解,讓我在此后的編程中將受益無窮。
可能老師您會看到我這個課程設計的很多拷貝,反正是我做的就是我做的,別人參考也好拷貝也好,我都覺得無所謂,重要的是我能學習到東西,這也讓我學習到了很多做人的道理,你說同學問你要課程設計,我能不給么,但是作為同學我只能啰嗦一句,你只能參考啊,不要完全照搬。單是有些人他就要完全照搬你的圖和分析,自己也不提出自己的看法和見解,這總是讓我很心寒,特別是那些學習成績還不錯的。我真是想不通問什么要人家好心給你的報告參考,你反過來要坑人家,就這樣的人品,學習好又能咋樣呢,都是轉空子的人,以后也不會得到大家的認可。
第二篇:計算機組成原理課程設計
《計算機組成原理》課程設計
任務書
中原工學院計算機學院 2007年6月
前言
“計算機組成原理”是大學本科計算機相關專業的一門核心專業基礎課程,必修,在先導課和后繼課之間起著承上啟下的作用。主要講授單處理機系統的組成和工作原理,包括運算器、存儲器、控制器和輸入輸出系統,其中控制器的設計是課程的重點和難點。為了讓學生能融會貫通各知識點,增強對計算機系統各模塊協同工作的認識,充分理解數據通路,掌握控制器的設計技術,課程設計一般也側重于控制器的設計。考慮到學生的基礎和現有實驗環境,本次課程設計的題目是“微程序控制器的設計與實現”。通過該課程設計,希望學生在理論與實踐相結合的基礎上,加深對計算機整機概念,進一步理解計算機的內部結構和時空關系,進一步理解和掌握微程序控制器的設計思想和具體方法、步驟,從而提高自行設計、調試和分析問題的能力。課程設計題目
微程序控制器的設計與實現
目的
? 鞏固和深刻理解“計算機組成原理”課程所講解的原理,加深對計算機各模塊協同工作的認識
? 掌握微程序設計的思想和具體流程、操作方法。? 培養學生獨立工作和創新思維的能力,取得設計與調試的實踐經驗。
? 嘗試利用編程實現微程序指令的識別和解釋的工作流程
內容
按照要求設計一指令系統,該指令系統能夠實現數據傳送,進行加、減運算和無條件轉移,具有累加器尋址、寄存器尋址、寄存器間接尋址、存儲器直接尋址、立即數尋址等五種尋址方式。
具體要求
? 仔細復習所學過的理論知識,掌握微程序設計的思想,并根據掌握的理論寫出要設計的指令系統的微程序流程。指令系統至少要包括六條指令,具有上述功能和尋址方式。? 根據微操作流程及給定的微指令格式寫出相應的微程序 ? 將所設計的微程序在虛擬環境中運行調試程序,并給出測試思路和具體程序段
? 嘗試用C或者Java語言實現所設計的指令系統的加載、識別和解釋功能。? 撰寫課程設計報告。
設計環境
? 偉福COP2000型計算機組成原理實驗儀,微機,相關虛擬軟件。
? VC開發環境或者Java開發環境。
課程設計時間
? 1.5周
課程設計報告要求 完成設計任務后,在課程設計的最后階段,需要總結全部設計工作,寫出完整,規范的設計報告,在指定的時間內提交指導教師.課程設計報告要求有完整的格式,包括封面,目錄,正文等,具體如下:
一、封面
包括:課程設計題目,姓名,學號,班級,指導教師,完成日期.二、目錄
正文前必須要有目錄.三、正文 正文包括的內容有: ⑴ 設計任務與要求;⑵ 設計方案(包括設計思路,采用的微指令格式,每條指令的指令流程及其微程序清單)(3)調試過程(包括實驗步驟,出現的問題,解決的方法(4)小結(在整個課程設計過程中的總結和體會)(5)參考資料
成績評定
課程設計的考核結果按優秀,良好,中等,及格和不及格來評價.對設計任務理解透徹,能夠全面,正確,獨立地完成設計內容所規定的任務,得出設計結果,并按時提交準確,完整,規范的設計報告,可評為優秀;按照設計任務要求能夠順利地完成任務,得出結果,按時提交較完整的,符合要求的設計報告,可評定為良好;按照設計要求完成了軟件的編程與調試,基本完成了任務要求,提交符合要求的設計報告,可評為中等;基本完成設計目標,但不夠完善,可能有若干小的缺陷,在幫助下能夠完成任務要求,提交設計報告,可評為及格;不能完成指定的要求和任務,未提交設計報告的,評為不及格.參考資料 1.“計算機組成原理課程設計任務書” 2.“計算機組成原理” 課堂教材
第三篇:計算機組成原理課程設計范文
計算機組成原理課程設計指導材料
一. 課程設計目的
課程設計教學目的:通過本課程設計,學生可熟悉典型計算機的基本結構、基本組成和基本功能,掌握計算機主要組成部件工作原理的基本分析與設計方法,加深對理論課知識內容的理解。
二. 設計題目
題目1.內存擴充與連接 1.設計目的:
2.主要任務:
3.設計要求:
4.圖表
畫圖時請按以下給出的原件圖畫 圖1-1 8086芯片引腳圖 圖1-2內存芯片邏輯圖
圖1-3 譯碼器與門電路邏輯圖 題目2.模型機組成設計
1.目的:通過對一個簡單模型機的設計與實現,對計算機的基本組成、部件的設計、部件間的連接以及微指令執行的過程。
2.基本要求:畫出模型機的設計圖并舉例描述利用該模型機進行加法運算時,各個功能部件的工作情況。
題目3.算數邏輯運算 1.目的:
(1).了解運算器 的組成結構。(2).掌握運算器的工作原理。(3).學習運算器的設計方法。
(4).掌握簡單運算器的數據傳 送通路。
(5).驗證運算功能發生器74LS181 的組 合功能。
2.設計原理:
設計中所用的運算器數據通路圖如下圖。圖中所示的是由兩片74LS181 芯片以并/串 形式構成的8 位字長的運算器。右方為低4 位運算芯片,左方為高4 位運算芯片。低位芯片 的進位輸出端Cn+4 與高位芯片的進位輸入端Cn 相連,使低4 位運算產生的進位送進高4 位運算中。低位芯片的進位輸入端Cn 可與外來進位相連,高位芯片的進位輸出引至外部。兩個芯片的控制端S0~S3 和M 各自相連,其控制電平按表。為進行雙操作數運算,運算器的兩個數據輸入端分別由兩個數據暫存器DR1、DR2(用鎖存器74LS273 實現)來鎖存數據。要將內總線上的數據鎖存到DR1 或DR2 中,則鎖存器74LS273 的控制端LDDR1 或LDDR2 須為高電平。當T4 脈沖來到的時候,總線上的數據就被鎖存進DR1 或DR2 中了。為控制運算器向內總線上輸出運算結果,在其輸出端連接了一個三態門(用74LS245 實現)。若要將運算結果輸出到總線上,則要將三態門74LS245 的控制端ALU-B 置低電平。否則輸出高阻態。
3.根據設計原理描述進行原碼加減運算及邏輯運算的程序流程 4.填寫下表
三. 課程設計報告格式
1.報告組成及裝訂順序:封面、目錄、引言、正文、結論、參考文獻、心得體會。2.書寫格式要求:見學院課程設計報告要求
四. 其它要求
1.報告提交時間:截止12月31日
2.報告提交形式:以班級為單位提交電子版和打印版
第四篇:計算機組成原理課程設計任務書
《計算機組成原理》
課程設計任務書
一、設計任務:
1、基本模型機設計與實現;
2、在基本模型機設計的基礎上設計一臺復雜模型機。
二、功能指標和設計要求:
利用所學過的理論知識,特別是微程序設計的思想,設計基于微程序控制器的模型計算機,包括設計相應的硬件平臺、機器指令系統和微指令等。設計環境為TD-CMA計算機組成原理教學實驗箱、微機,聯機軟件等。同時設計好基于模型機的測試驗證程序,并在設計好的硬件平臺上調試通過,以驗證所設計的模型機功能的可行性與可靠性。在設計完成的前提下,撰寫出符合要求的課程設計說明書并通過設計答辯。
1.基本模型機設計與實現
設計一臺簡單模型機,在具備基本必要的硬件平臺的基礎上,進一步要求其機器指令系統至少要包括五條不同類型指令:如一條輸入指令(假設助記符為IN),一條加法指令(假設助記符為ADD),一條輸出指令(假設助記符為OUT)、一條無條件轉移指令(假設助記符為JMP)和一條停機指令(假設助記符為HLT);在設計好的模型機基礎上,設計一個進行兩個數求和運算的測試驗證程序,用以驗證模型機功能的可行性與可靠性。
2.在任務1的基礎上,增加機器指令系統的功能,設計具有不少于10條機器指令的復雜指令系統模型機,包含算術邏輯指令、訪問內存指令、控制轉移指令、輸入輸出指令、停機指令等。數據的尋址方式要包括直接、間接、變址和相對尋址等多種尋址方式。利用設計的復雜模型機實現兩個數的減法運算并判斷差得正負,差為正數則輸出A,差為負數則輸出B,差為零則輸出C。在設計好的模型機基礎上,進一步設計一個測試驗證程序,驗證模型機功能的可行性與可靠性。
3、基本模型機和復雜模型機的CPU數據字長為8位,采用定點補碼表示。指令字長為8的整數倍。微指令字長為24位。
三、設計步驟:
1、確定設計目標 進行全面深入的模型機設計需求分析,確定所設計計算機的功能和用途。
2、總體結構、數據通路設計及硬件實現
總體結構設計包括確定模型機應具有的基本功能部件(如運算器、控制器以及基本的寄存器等等)以及它們之間的數據通路。
硬件實現基于現有的基本實驗箱平臺,根據所設計模型機選擇必要的元器件,并通過接插件(各種連線等)進行器件連接,組成所設計的模型機硬件系統(物理機)。綜合考慮計算機的速率、性能價格比、可靠性等要求,設計合理的數據通路結構,數據通路不同,執行指令所需要的邏輯操作就不同,計算機的結構也就不一樣。在此基礎上,在后面的微指令設計階段,就可以依據數據通路關系確定模型機工作過程中的所有微操作,并進一步確定微指令格式中的相應微命令。
3、確定指令系統(機器指令系統)
確定數據的表示格式、位數、指令的編碼、類型、需要設計哪些指令及使用的尋址方式。確定相對應指令所包含的微操作。
4、機器指令轉化為微程序執行的相關設計
過程2、3完成后,就可以根據機器指令系統進行指令周期分析,確定出每條機器指令的CPU周期數。對于微程序控制的計算機,進一步確定出每個CPU周期內的微操作(明確哪些微操作可以安排在同一CPU周期中,哪些微操作則不能)。設計出每條機器指令的方框圖形式的指令周期流程圖。
5、微指令代碼化
依據指令周期流程圖以及指定的微指令格式,將設計出程序格式中的各字段(操作控制字段、P測試字段、直接微地址字段)相應的二進制代碼(即對應的微命令編碼)。
6、設計微指令的相關微地址
根據后續微地址的形成方法(直接微地址或P測試轉移后重新形成),確定每條微指令的相關后續微地址。確定好微命令在控存中的存放地址,并將所有微命令寫入到控存的相應存儲單元中。
7、組裝、調試
7.1、在總調試前,先按功能模塊進行組裝和分調,因為只有各功能模塊工作正常后,才能保證整機的正常運行。首先調試每條微指令功能,再調試每條機器指令功能。
連接所有模塊,用單步微指令方式執行機器指令的微程序流程圖,當全部微程序流程圖檢查完后,若運行結果正確,則在內存中裝入一段機器指令,進行其他的運行方式等功能調試及執行指令的正確性驗證。
7.2、當所有功能模塊都調試正常后,進入總調試。根據設計好的模型機,進一步設計一個功能測試驗證程序,運行程序并驗證所涉及的模型機功能是否可行和可靠。
四、課程設計報告要求:
課程設計報告要求打印,其中的數據通路框圖、微程序流程圖、實驗接線圖用VISIO等繪圖工具軟件繪制或用鉛筆工工整整繪制,要求圖文清晰,報告內容包括:
(1)封面
(包括:題目、所在系、班級、學號、指導教師及時間等項)(2)任務書(3)目錄
(目錄要層次清晰,要給出標題及頁次,目錄的最后一項是無序號的“參考文獻”)。(4)正文
正文應按目錄中編排的章節依次撰寫,要求論述清楚,文字簡練通順,插圖清晰,書寫整潔。“設計”不同于實驗,要充分體現出“設計”的思想,不能寫成實驗報告的形式。文中圖、表及公式應規范地繪制和書寫。正文是實踐設計報告的主體,具體由以下幾部分組成:
1)課程設計題目;
2)課程設計使用的相關軟硬件資源;
3)設計的具體方法和步驟(包括確定所設計計算機的功能和用途、總體結構與數據通路與硬件設計、指令系統、設計指令執行流程、確定微程序地址、微指令代碼化、組裝、調試、測試驗證程序與功能驗證情況。)
4)課程設計總結(包括自己的收獲與體會;遇到的問題和解決的方法等);(5)附錄
附錄1:數據通路圖 附錄2:微程序流程圖
附錄3:實驗接線圖
附錄4:實驗程序及微程序 附錄5:參考文獻(資料)
五、設計工作量:
(1)作品:設計的最終作品包括硬件和軟件兩個部分,要求硬件實現正確,能夠演示并達到設計指標的要求。每個學生(或小組)在作品完成后,要經指導教師檢查,同意拆除后方可拆卸。(2)論文:嚴格按上述課程設計說明書的要求撰寫和裝訂。每個學生一份。
六、成績評定標準:
課程設計的成績分為:優秀、良好、中等、及格、不及格五個等級。
優秀:完成復雜模型機的設計與實現,指令系統完備有更新擴充。調試成功。文檔規范齊全。
良好:完成模型機的設計與實現,指令系統指令種類豐富有一定的更新。調試成功。文檔規范齊全。
中等:完成基本模型機的設計與實現,在老師指導下對指令系統有更新。調試成功。文檔規范齊全。
及格:完成基本模型機的設計與實現。調試成功。文檔規范齊全。不及格:沒有課程設計報告,無故缺勤,不能完成調試者不及格。
七、工作計劃:
時間:18周周1~周5 講授:2課時
設計及調試:26課時 設計報告編8課時 答辯:4課時
八、參考資料:
1、《計算機組成原理》教材,陳智勇主編;
2、《CMA組成原理與系統結實驗指導書》
第五篇:計算機組成原理課程設計指導書
長 沙 學
院
課程設計指導書
系(部)
計算機科學與技術
專
業
計算機科學與技術
2010年12 月 10 日
課程名稱:計算機組成原理 課程編號:7020130610 主 筆 人:鐘旭 主 審 人:
一、課程設計的目的
通過該課程設計的學習,總結計算機組成原理課程的學習內容,利用TDN-CM+教學實驗系統提供的軟硬件操作平臺掌握層次化設計方法、運用計算機原理知識,設計并實現一臺完整的計算機,從而鞏固課堂知識、深化學習內容、完成教學大綱要求,學好計算機科學與技術專業的專業基礎課。
二、課程設計的題目 1.基本模型機設計與實現;
2.帶移位運算的模型機的設計與實現; 3.復雜模型機的設計與實現。
三、設計內容(主要技術關鍵的分析、解決思路和方案比較等)
利用所學過的理論知識,特別是微程序設計的思想,寫出要設計的指令系統的微程序。設計環境為TDN-CM+計算機組成原理教學實驗系統,微機,虛擬軟件。將所設計的微程序在此環境中進行調試,并給出測試思路和具體程序段。最后撰寫出符合要求的課程設計說明書、完成答辯。1.基本模型機設計與實現
指令系統至少要包括六條不同類型指令:如一條輸入指令,一條減法指令,一條加法指令,一條存數指令,一條輸出指令和一條無條件轉移指令。2.帶移位運算的模型機的設計與實現
在基本模型機的基礎上增加左、右循環和左、右帶進位循環四條指令
3.設計不少于10條指令的指令系統。其中,包含算術邏輯指令,訪問內存指令,程序控制指令,輸入輸出指令,停機指令。重點是要包括直接、間接、變址和相對尋址等多種尋址方式。
以上數據字長為8位,采用定點補碼表示。指令字長為8的整數倍。微指令字長為24位。
四、設計步驟
1、確定設計目標
確定所設計計算機的功能和用途。
2、確定指令系統
確定數據的表示格式、位數、指令的編碼、類型、需要設計哪些指令及使用的尋址方式。
3、總體結構與數據通路
總體結構設計包括確定各部件設置以及它們之間的數據通路結構。在此基礎上,就可以擬出各種信息傳輸路徑,以及實現這些傳輸所需要的微命令。綜合考慮計算機的速率、性能價格比、可靠性等要求,設計合理的數據通路結構,確定采用何種方案的內總線及外總線。數據通路不同,執行指令所需要的操作就不同,計算機的結構也就不一樣。
4、設計指令執行流程
數據通路確定后,就可以設計指令系統中每條指令所需要的機器周期數。對于微程序控制的計算機,根據總線結構,需考慮哪些微操作可以安排在同一條微指令中,哪些微操作不能安排在同一條微指令中。
5、確定微程序地址
根據后續微地址的形成方法,確定每個微程序地址及分支轉移地址。
6、微指令代碼化
根據微指令格式,將微程序流程中的所有微指令代碼化,轉化成相應的二進制代碼寫入到控制存儲器中的相應單元中。
7、組裝、調試
在總調試前,先按功能模塊進行組裝和分調,因為只有各功能模塊工作正常后,才能保證整機的正常運行。
當所有功能模塊都調試正常后,進入總調試。連接所有模塊,用單步微指令方式執行機器指令的微程序流程圖,當全部微程序流程圖檢查完后,若運行結果正確,則在內存中裝入一段機器指令,進行其他的運行方式等功能調試及執行指令的正確性驗證。
五、設計說明書要求
課程設計說明書按學校統一格式撰寫和裝訂。課程設計報告要求打印,其中的數據通路框圖、微程序流程圖、實驗接線圖用VISIO等工具軟件繪制或用鉛筆工工整整繪制。
(1)封面(包括:題目、所在系、班級、學號、指導教師及時間等項,可到教務處網頁上下載)(2)任務書(3)目錄
目錄要層次清晰,要給出標題及頁次,目錄的最后一項是無序號的“參考文獻”。(4)正文
正文應按目錄中編排的章節依次撰寫,要求計算正確,論述清楚,文字簡練通順,插圖清晰,書寫整潔。文中圖、表及公式應規范地繪制和書寫。
正文是實踐設計報告的主體,具體由以下幾部分組成:
1)課程設計題目;
2)課程設計使用的實驗設備;
3)課程設計步驟(包括確定所設計計算機的功能和用途、指令系統、總體結構與數據通路、設計指令執行流程、確定微程序地址、微指令代碼化、組裝、調試。)
4)課程設計總結(包括自己的收獲與體會;遇到的問題和解決的方法等);
(5)附錄
附錄1:數據通路圖 附錄2:微程序流程圖 附錄3:實驗接線圖 附錄4:實驗程序及微程序
附錄5:參考文獻(資料)(格式規范參照長沙學院畢業設計(論文)撰寫規范)
六、設計進度安排 時間:
15、16周 講授:2課時 答疑及設計:26課時 上機調試:8課時 答辯:6課時
七、考核標準
課程設計的成績分為:優秀:、良好、中等、及格、不及格五個等級。
優秀:完成復雜模型機的設計與實現,指令系統完備有更新擴充。調試成功。文檔規范齊全。良好:完成模型機的設計與實現,指令系統指令種類豐富有一定的更新。調試成功。文檔規范齊全。中等:完成基本模型機的設計與實現,在老師指導下對指令系統有更新。調試成功。文檔規范齊全。及格:完成基本模型機的設計與實現。調試成功。文檔規范齊全。不及格:沒有課程設計報告,無故缺勤,不能完成調試者不及格。