版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 計算機組成原理課程設計說明書</p><p> 題目:設計求負數(shù)平方和的CISC模型計算機</p><p> 院(系):計算機科學與工程學院</p><p> 專業(yè):計算機科學與技術</p><p><b> 目 錄</b></p><p> 1課
2、程設計的題目與內容1</p><p><b> 1.1題目1</b></p><p><b> 1.2內容1</b></p><p> 2系統(tǒng)總體設計2</p><p> 2.1CISC模型機數(shù)據(jù)通路框圖的設計2</p><p> 2.2操作控制
3、器的邏輯框圖的設計2</p><p> 2.3模型機的指令系統(tǒng)和所有指令的指令格式的設計3</p><p> 2.4時序產生電路的設計6</p><p> 2.5機器指令的微程序流程圖以及微指令的設計7</p><p> 2.6地址轉移邏輯電路的設計9</p><p> 2.7軟件清單9
4、</p><p> 2.8嵌入式CISC模型計算機的頂層電路圖28</p><p> 3匯編語言源程序29</p><p> 4機器語言源程序30</p><p> 5機器語言源程序的功能仿真波形圖及結果分析31</p><p> 6故障現(xiàn)象和故障分析33</p><p
5、><b> 7心得體會34</b></p><p> 課程設計的題目與內容</p><p><b> 題目</b></p><p> 設計一臺嵌入式CISC模型計算機(采用定長CPU周期、聯(lián)合控制方式),并運行能完成一定功能的機器語言程序進行驗證,機器語言源程序功能如下:</p><p&
6、gt; 連續(xù)輸入5個有符號整數(shù)(用8位二進制補碼表示,十六進制數(shù)輸入),求所有負數(shù)的平方和并輸出顯示。</p><p><b> 說明:</b></p><p> 5個有符號數(shù)從外部輸入;</p><p> 一定要使用符號位(比如說SF),并且要使用負的時候轉移(比如說JS)或不為負的時候轉移(比如說JNS)指令;</p>
7、<p> 采用三數(shù)據(jù)總線結構的運算器,采用RAM,先將輸入數(shù)據(jù)依次存放在RAM的某一連續(xù)的存儲區(qū)域內,再依次讀出判斷是否為負數(shù),若為負數(shù)再求其平方和。</p><p><b> 內容</b></p><p> 完成系統(tǒng)的總體設計,畫出模型機數(shù)據(jù)通路框圖;</p><p> 設計微程序控制器(CISC模型計算機)的邏輯結構框圖
8、; </p><p> 設計機器指令格式和指令系統(tǒng); </p><p> 設計時序產生器電路; </p><p> 設計所有機器指令的微程序流程圖; </p><p> 設計操作控制器單元;</p><p> 在CISC模型計算機中,設計的內容包括微指令格式(建議采用全水平型微指令)、微指令代碼表(根據(jù)微程序
9、流程圖和微指令格式來設計)和微程序控制器硬件電路(包括地址轉移邏輯電路、微地址寄存器、微命令寄存器和控制存儲器等。具體電路根據(jù)微程序控制器的邏輯結構框圖、微指令格式和微指令代碼來設計)。</p><p> 設計模型機的所有單元電路,并用VHDL語言(也可使用GDF文件----圖形描述文件)對模型機中的各個部件進行編程,并使之成為一個統(tǒng)一的整體,即形成頂層電路或頂層文件; </p><p>
10、; 由給出的題目和設計的指令系統(tǒng)編寫相應的匯編語言源程序;</p><p> 根據(jù)設計的指令格式,將匯編語言源程序手工轉換成機器語言源程序,并將其設計到模型機中的ROM中去;</p><p> 使用EDA軟件進行功能仿真,要保證其結果滿足題目的要求;(其中要利用EDA軟件提供的波形編輯器,選擇合適的輸入輸出信號及中間信號進行調試。)</p><p> 器件編
11、程,并在EDA實驗平臺上進行操作演示。</p><p><b> 系統(tǒng)總體設計</b></p><p> CISC模型機數(shù)據(jù)通路框圖的設計</p><p> 操作控制器的邏輯框圖的設計</p><p> 模型機的指令系統(tǒng)和所有指令的指令格式的設計</p><p><b> I/
12、O指令</b></p><p> 輸入指令(IN1)格式:</p><p> 輸出指令(OUT1)格式:</p><p><b> 轉移指令</b></p><p> 非零條件轉移指令(JNZ)格式:</p><p> 非負條件轉移指令(JNS)格式:</p>
13、<p> 無條件轉移指令(JMP)格式:</p><p><b> MOV指令</b></p><p><b> MOV指令格式:</b></p><p><b> 相加指令</b></p><p> 相加指令(ADD)格式:</p><
14、p><b> 有符號乘法指令</b></p><p> 乘法指令(IMUL)格式:</p><p><b> 加1指令</b></p><p> 加1指令(INC)格式:</p><p><b> 減1指令</b></p><p> 減
15、1指令(DEC)格式:</p><p><b> 相與指令</b></p><p> 相與指令(AND)格式:</p><p><b> 字符串存儲指令</b></p><p> 乘法指令(STO)格式:</p><p><b> 字符串存儲指令</
16、b></p><p> 乘法指令(STOI)格式:</p><p><b> 取數(shù)指令</b></p><p> 取數(shù)指令(LAD)格式:</p><p><b> 指令系統(tǒng)表:</b></p><p> 其中,對源寄存器Rs與目的寄存器Rd的規(guī)定如下:<
17、;/p><p> 模型機規(guī)定數(shù)據(jù)的表示采用定點整數(shù)補碼表示,單字長為8位,其格式如下: </p><p><b> 時序產生電路的設計</b></p><p> T1、T2、T3、T4與CLR、Q之間的關系圖如圖 1所示。</p><p><b> 圖 1</b></p><
18、p> 機器指令的微程序流程圖以及微指令的設計</p><p> 要設計微程序控制器,首先要設計微程序流程圖以及微指令,其次再設計地址轉移邏輯電路以及其它邏輯單元電路,設計步驟如下:</p><p> 根據(jù)指令格式和指令系統(tǒng)設計所有機器指令的微程序流程圖,并確定每條微指令的微地址和后繼微地址;</p><p> 設計微指令格式和微指令代碼表;</p
19、><p> 設計地址轉移邏輯電路;</p><p> 設計微程序控制器中的其它邏輯單元電路,包括微地址寄存器、微命令寄存器和控制存儲器。</p><p> 其中,微程序流程圖設計如下圖所示:</p><p> 微指令流程圖設計完成后,開始設計微指令格式和微指令代碼表,按照要求,CISC模型機系統(tǒng)使用的微指令采用全水平型微指令,字長為28位
20、,其中微命令字段為19位,P字段為3位,后繼微地址為6位,其格式如下:</p><p> LOAD LDPC LDAR LDIR LDRi LDPSW RS_B S2 S1 S0 ALU_B SW_B LED_B RD_D CS_D RAM_B CS_I ADDR_B CS_I P1 P2 P3 u5-uO</p><p> 按照以上格式,依據(jù)自身設計的微指令流程圖,可以得到以下的微指
21、令代碼表:</p><p> 地址轉移邏輯電路的設計</p><p> 地址轉移邏輯電路是根據(jù)微程序流程圖中的棱形框部分及多個分支微地址,利用微地址寄存器的異步置“1”端,實現(xiàn)微地址的多路轉移。</p><p> 由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與µA5~µA0對應的異步置“1”控制信號SE6~SE1的邏輯表達式為:&l
22、t;/p><p> SE6= ZF·P(3)·T4</p><p> SE5=ZF·P(2)·T4</p><p> SE4=I15·P(1)·T4</p><p> SE3=I14·P(1)·T4</p><p> SE2=I13&
23、#183;P(1)·T4</p><p> SE1=I12·P(1)·T4</p><p><b> 軟件清單</b></p><p><b> ALU設計:</b></p><p> 其中S2,S1,S0表示的是算術邏輯運算單元ALU,其功能表為:</p
24、><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_L
25、OGIC_SIGNED.all;</p><p> ENTITY ALU IS</p><p><b> PORT(</b></p><p> X: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> Y: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</
26、p><p> S2,S1,S0: IN STD_LOGIC;</p><p> ALUOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;</p><p> SF,ZF: OUT STD_LOGIC</p><p><b> );</b></p><p><b&
27、gt; END ALU;</b></p><p> ARCHITECTURE A OF ALU IS</p><p> SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN </b></p><p><b>
28、PROCESS</b></p><p><b> BEGIN </b></p><p> IF(S2='0' AND S1='0' AND S0='0') THEN--ADD</p><p><b> AA<=X;</b></p>&l
29、t;p><b> BB<=Y;</b></p><p> TEMP<=AA+BB;</p><p> ALUOUT<=TEMP(7 DOWNTO 0);</p><p> SF<=TEMP(7);</p><p> IF (TEMP="10000000" OR
30、TEMP="00000000")THEN</p><p><b> ZF<='1';</b></p><p><b> ELSE</b></p><p><b> ZF<='0';</b></p><p>&
31、lt;b> END IF;</b></p><p> ELSIF(S2='0' AND S1='0' AND S0='1') THEN --CMP(SUB)</p><p> ALUOUT<=X-Y;</p><p> IF(X<Y) THEN</p><
32、p><b> SF<='1';</b></p><p><b> ZF<='0';</b></p><p> ELSIF(X=Y) THEN</p><p><b> SF<='0';</b></p><
33、;p><b> ZF<='1';</b></p><p><b> ELSE </b></p><p><b> SF<='0';</b></p><p><b> ZF<='0';</b></
34、p><p><b> END IF;</b></p><p> ELSIF(S2='0' AND S1='1' AND S0='0') THEN --INC</p><p><b> AA<=Y;</b></p><p> TEMP&
35、lt;=AA+1;</p><p> ALUOUT<=TEMP(7 DOWNTO 0);</p><p> SF<=TEMP(7);</p><p> IF (TEMP="10000000" OR TEMP="00000000") THEN</p><p><b> ZF&
36、lt;='1';</b></p><p><b> ELSE</b></p><p><b> ZF<='0';</b></p><p><b> END IF;</b></p><p> ELSIF(S2='0
37、' AND S1='1' AND S0='1') THEN --DEC</p><p><b> AA<=Y;</b></p><p> TEMP<=AA-1;</p><p> ALUOUT<=TEMP(7 DOWNTO 0);</p><p>
38、 SF<=TEMP(7);</p><p> IF (TEMP="10000000" OR TEMP="00000000") THEN</p><p><b> ZF<='1';</b></p><p><b> ELSE</b></p>
39、<p><b> ZF<='0';</b></p><p><b> END IF;</b></p><p> ELSIF(S2='1' AND S1='0' AND S0='0') THEN --AND</p><p>
40、TEMP<=Y AND Y;</p><p> ALUOUT<=TEMP;</p><p> SF<=TEMP(7);</p><p> IF (TEMP="10000000" OR TEMP="00000000") THEN</p><p><b> ZF<=
41、'1';</b></p><p><b> ELSE</b></p><p><b> ZF<='0';</b></p><p><b> END IF;</b></p><p> ELSIF(S2='1'
42、; AND S1='0' AND S0='1') THEN --OR</p><p> TEMP<=X OR Y;</p><p> ALUOUT<=TEMP;</p><p> SF<=TEMP(7);</p><p> IF (TEMP="10000000&quo
43、t; OR TEMP="00000000") THEN</p><p><b> ZF<='1';</b></p><p><b> ELSE</b></p><p><b> ZF<='0';</b></p><
44、;p><b> END IF;</b></p><p> ELSIF(S2='1' AND S1='1' AND S0='0') THEN --Rd->BUS</p><p> ALUOUT<=Y;</p><p><b> SF<=Y(7);&l
45、t;/b></p><p> ELSIF(S2='1' AND S1='1' AND S0='1') THEN --IMUL</p><p> TEMP<=Y *Y;</p><p> SF<=TEMP(7);</p><p> ALUOUT<=TEMP;
46、</p><p> IF (TEMP="10000000" OR TEMP="00000000") THEN</p><p><b> ZF<='1';</b></p><p><b> ELSE</b></p><p><b
47、> ZF<='0';</b></p><p><b> END IF;</b></p><p><b> ELSE</b></p><p> ALUOUT<="00000000" ;</p><p><b> ZF
48、<='0';</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p> 算術邏輯單元ALU電路圖如圖 2所示:</p><p&g
49、t;<b> 圖 2</b></p><p> 4選1數(shù)據(jù)選擇器MUX4</p><p><b> VHDL源程序</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
50、ENTITY MUX4_1 IS</p><p><b> PORT(</b></p><p> R0,R1,R2,R3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> X:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> I11,I10:I
51、N STD_LOGIC</p><p><b> );</b></p><p> END MUX4_1;</p><p> ARCHITECTURE A OF MUX4_1 IS</p><p><b> BEGIN</b></p><p><b> PR
52、OCESS</b></p><p><b> BEGIN </b></p><p> IF(I11='0' AND I10='0') THEN </p><p><b> X<=R0;</b></p><p> ELSIF(I1
53、1='0' AND I10='1')THEN </p><p><b> X<=R1;</b></p><p> ELSIF(I11='1' AND I10='0')THEN </p><p><b> X<=R2;</b><
54、;/p><p><b> ELSE</b></p><p><b> X<=R3;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;<
55、/b></p><p> 4選1選擇器MUX4電路圖如圖 3所示:</p><p><b> 圖 3</b></p><p> 5選1數(shù)據(jù)選擇器MUX5</p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;
56、 </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY MUX5 IS</p><p><b> PORT(</b></p><p> SW_B,RS_B,RAM_B,ADDR_B,ALU_B : IN STD_LOGIC;<
57、;/p><p> SW,RS,RAM,ADDR,ALU: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> W: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p><b> END MUX5;</
58、b></p><p> ARCHITECTURE A OF MUX5 IS</p><p> SIGNAL SEL:STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p><b> BEGIN </b></p><p> SEL<=SW_B&RS_B&RAM_B&a
59、mp;ADDR_B&ALU_B;</p><p> PROCESS(SEL)</p><p><b> BEGIN</b></p><p> IF(SEL="01111")THEN </p><p><b> W<=SW;</b></p>&l
60、t;p> ELSIF(SEL="10111")THEN </p><p><b> W<=RS;</b></p><p> ELSIF(SEL="11011")THEN </p><p><b> W<=RAM;</b></p><p&g
61、t; ELSIF(SEL="11101")THEN </p><p><b> W<=ADDR;</b></p><p> ELSIF(SEL="11110")THEN </p><p><b> W<=ALU;</b></p><p>&
62、lt;b> ELSE</b></p><p><b> NULL;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p
63、> 5選1數(shù)據(jù)選擇器電路圖如圖 4所示:</p><p><b> 圖 4</b></p><p><b> 狀態(tài)字器存器PSW</b></p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;
64、 </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY PSW IS</p><p><b> PORT(</b></p><p> LDPSW : IN STD_LOGIC;</p><p> ZI,SI: IN STD
65、_LOGIC;</p><p> FZ,FS: OUT STD_LOGIC</p><p><b> );</b></p><p><b> END PSW;</b></p><p> ARCHITECTURE A OF PSW IS</p><p><b>
66、; BEGIN </b></p><p> PROCESS(LDPSW)</p><p><b> BEGIN</b></p><p> IF(LDPSW'EVENT AND LDPSW='1')THEN</p><p><b> FZ<=ZI;</b&
67、gt;</p><p><b> FS<=SI;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p> 狀態(tài)字寄存器PSW電
68、路圖如圖 5所示:</p><p><b> 圖 5</b></p><p> 微程序控制器CROM</p><p> CROM的電路圖如圖 6所示:</p><p><b> 圖 6</b></p><p> 其內部電路圖如圖 7所示:</p>&l
69、t;p><b> 圖 7</b></p><p> 其組成的部件有以下:</p><p> 地址轉移邏輯ADDR</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY ADDR I
70、S </p><p><b> PORT(</b></p><p> I15,I14,I13,I12:IN STD_LOGIC;</p><p> FZ,FS,T4,P1,P2,P3:IN STD_LOGIC;</p><p> SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOGIC</
71、p><p><b> );</b></p><p><b> END ADDR;</b></p><p> ARCHITECTURE A OF ADDR IS</p><p><b> BEGIN</b></p><p> SE6<=NOT
72、((NOT FS) AND P3 AND T4); </p><p> SE5<=NOT ((NOT FZ) AND P2 AND T4);</p><p> SE4<=NOT ( I15 AND P1 AND T4);</p><p> SE3<=NOT (I14 AND P1 AND T4);</p><p>
73、 SE2<=NOT (I13 AND P1 AND T4);</p><p> SE1<=NOT (I12 AND P1 AND T4);</p><p><b> END A;</b></p><p> ?地址轉移邏輯ADDR電路圖如圖 8所示:</p><p><b> 圖 8</
74、b></p><p> 微命令寄存器MCOMMAND</p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC
75、_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_SIGNED.ALL;</p><p> ENTITY MCOMMAND IS</p><p><b> PORT(</b></p><p> T2,T3,T4:IN STD_LOGIC; </p><p>
76、 D:IN STD_LOGIC_VECTOR(20 DOWNTO 0);</p><p> LOAD,LDPC,LDAR,LDIR,LDRI,LDPSW,RS_B,S2,S1,S0:OUT STD_LOGIC;</p><p> ALU_B,SW_B,LED_B,RD_D,CS_D,RAM_B,CS_I,ADDR_B,P1,P2,P3:OUT STD_LOGIC <
77、/p><p><b> );</b></p><p> END MCOMMAND;</p><p> ARCHITECTURE A OF MCOMMAND IS</p><p> SIGNAL DATAOUT:STD_LOGIC_VECTOR(20 DOWNTO 0);</p><p>&l
78、t;b> BEGIN </b></p><p> PROCESS(T2)</p><p><b> BEGIN</b></p><p> IF(T2'EVENT AND T2='1') THEN</p><p> DATAOUT(20 DOWNTO 0)<=D(2
79、0 DOWNTO 0);</p><p><b> END IF;</b></p><p> LOAD<=DATAOUT(20);</p><p> LDPC<=DATAOUT(19) AND T4;</p><p> LDAR<=DATAOUT(18) AND T3;</p>&
80、lt;p> LDIR<=DATAOUT(17) AND T3;</p><p> LDRI<=DATAOUT(16) AND T4;</p><p> LDPSW<=DATAOUT(15) AND T4;</p><p> RS_B<=DATAOUT(14);</p><p> S2<=DATAO
81、UT(13);</p><p> S1<=DATAOUT(12);</p><p> S0<=DATAOUT(11);</p><p> ALU_B<=DATAOUT(10);</p><p> SW_B<=DATAOUT(9);</p><p> LED_B<=DATAOUT(
82、8);</p><p> RD_D<=NOT(NOT DATAOUT(7) AND (T2 OR T3));</p><p> CS_D<=NOT(NOT DATAOUT(6) AND T3);</p><p> RAM_B<=DATAOUT(5);</p><p> CS_I<=DATAOUT(4);<
83、/p><p> ADDR_B<=DATAOUT(3);</p><p> P1<=DATAOUT(2);</p><p> P2<=DATAOUT(1);</p><p> P3<=DATAOUT(0);</p><p> END PROCESS;</p><p>
84、<b> END A;</b></p><p> ?微命令寄存器MCOMMAND電路圖如圖 9所示:</p><p><b> 圖 9</b></p><p><b> 微地址寄存器aa</b></p><p><b> VHDL源程序</b>
85、</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY MMM IS </p><p><b> PORT(</b></p><p> SE:IN STD_LOGIC; </p
86、><p> T2:IN STD_LOGIC; </p><p> D:IN STD_LOGIC; </p><p> CLR:IN STD_LOGIC; </p><p> UA:OUT STD_LOGIC </p><p><b> );</b></p>
87、<p><b> END MMM;</b></p><p> ARCHITECTURE A OF MMM IS</p><p><b> BEGIN</b></p><p> PROCESS(CLR,SE,T2)</p><p><b> BEGIN</b&g
88、t;</p><p> IF(CLR='0') THEN </p><p><b> UA<='0';</b></p><p> ELSIF(SE='0')THEN </p><p><b> UA<='1';</b>
89、;</p><p> ELSIF(T2'EVENT AND T2='1') THEN </p><p><b> UA<=D;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p
90、><b> END A;</b></p><p> 微程序寄存器內部電路圖如圖 10所示:</p><p><b> 圖 10</b></p><p> 微地址寄存器aa合成圖如圖 11所示:</p><p><b> 圖 11</b></p>&
91、lt;p><b> 微地址轉換器F1</b></p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY F1 IS </p>
92、<p><b> PORT(</b></p><p> UA5,UA4,UA3,UA2,UA1,UA0: IN STD_LOGIC;</p><p> D:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)</p><p><b> );</b></p><p>
93、<b> END F1;</b></p><p> ARCHITECTURE A OF F1 IS</p><p><b> BEGIN</b></p><p> D(5)<=UA5;</p><p> D(4)<=UA4;</p><p> D(3)
94、<=UA3;</p><p> D(2)<=UA2;</p><p> D(1)<=UA1;</p><p> D(0)<=UA0;</p><p><b> END A;</b></p><p> ?微地址轉換器F1電路圖如圖 12所示:</p>
95、<p><b> 圖 12</b></p><p> 控制存儲器CONROM</p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p>&l
96、t;p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_SIGNED.ALL;</p><p> ENTITY CONTROM IS</p><p> PORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p>
97、UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> O:OUT STD_LOGIC_VECTOR(20 DOWNTO 0)</p><p><b> );</b></p><p> END CONTROM;</p><p> ARCHITECTURE A OF CONTRO
98、M IS</p><p> SIGNAL DATAOUT: STD_LOGIC_VECTOR(26 DOWNTO 0);</p><p><b> BEGIN </b></p><p><b> PROCESS</b></p><p><b> BEGIN</b><
99、;/p><p> CASE ADDR IS </p><p> WHEN "000000" => DATAOUT<="110100100011111101100000000";</p><p> WHEN "000001" => DATAOUT<="10001010
100、0010111111000000000";</p><p> WHEN "000010" => DATAOUT<="100010100011111110000000000";</p><p> WHEN "000011" => DATAOUT<="101000000011111111
101、000001111";</p><p> WHEN "000100" => DATAOUT<="100011100001111111000000000";</p><p> WHEN "000101" => DATAOUT<="100011101001111111000000000&
102、quot;;</p><p> WHEN "000110" => DATAOUT<="100011101101111111000000000";</p><p> WHEN "000111" => DATAOUT<="100000100011111111010000000";<
103、/p><p> WHEN "001000" => DATAOUT<="101000100011111110000010001";</p><p> WHEN "001001" => DATAOUT<="010000100011111110000000000";</p>&l
104、t;p> WHEN "001010" => DATAOUT<="100000000011011111000000000";</p><p> WHEN "001011" => DATAOUT<="101000111001111111000010001";</p><p> W
105、HEN "001100" => DATAOUT<="100011111101111111000000000";</p><p> WHEN "001101" => DATAOUT<="100011110001111111000000000";</p><p> WHEN "
106、001110" => DATAOUT<="100000100011111111001000000";</p><p> WHEN "001111" => DATAOUT<="100010100011110011000000000";</p><p> WHEN "010000&quo
107、t; => DATAOUT<="010000100011111110000000000";</p><p> WHEN "010001" => DATAOUT<="100000000011100111000000000";</p><p> WHEN "100000" => D
108、ATAOUT<="010000100011111110000000000";</p><p> WHEN OTHERS => DATAOUT<="100000100011111111000000000";</p><p><b> END CASE;</b></p><p>
109、UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0);</p><p> O(20 DOWNTO 0)<=DATAOUT(26 DOWNTO 6);</p><p> END PROCESS;</p><p><b> END A;</b></p><p> ?控制存儲器CONRO
110、M電路圖如圖 13所示:</p><p><b> 圖 13</b></p><p><b> ROM芯片的設計</b></p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE
111、 IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_SIGNED.ALL;</p><p> ENTITY ROM IS </p><p><b> PORT(</b></p
112、><p> DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);</p><p> ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> CS_I:IN STD_LOGIC</p><p><b> );</b></p><p>
113、;<b> END ROM;</b></p><p> ARCHITECTURE A OF ROM IS</p><p><b> BEGIN</b></p><p> DOUT<="0010000100010001" WHEN ADDR="00000000" AND
114、CS_I='0' ELSE</p><p> "0010001000000101" WHEN ADDR="00000001" AND CS_I='0' ELSE</p><p> "0001000000000000" WHEN ADDR="00000010" AND CS_I
115、='0' ELSE</p><p> "1011000100000000" WHEN ADDR="00000011" AND CS_I='0' ELSE</p><p> "0101000100000000" WHEN ADDR="00000100" AND CS_I=
116、9;0' ELSE</p><p> "0110001000000000" WHEN ADDR="00000101" AND CS_I='0' ELSE</p><p> "0111000000000010" WHEN ADDR="00000110" AND CS_I='0&
117、#39; ELSE</p><p> "0010000000000000" WHEN ADDR="00000111" AND CS_I='0' ELSE</p><p> "0010000100010001" WHEN ADDR="00001000" AND CS_I='0'
118、 ELSE</p><p> "0010001000000101" WHEN ADDR="00001001" AND CS_I='0' ELSE</p><p> "0011011100000000" WHEN ADDR="00001010" AND CS_I='0' ELS
119、E</p><p> "0101000100000000" WHEN ADDR="00001011" AND CS_I='0' ELSE</p><p> "1101111100000000" WHEN ADDR="00001100" AND CS_I='0' ELSE<
120、;/p><p> "1110000000010000" WHEN ADDR="00001101" AND CS_I='0' ELSE</p><p> "1100111100000000" WHEN ADDR="00001110" AND CS_I='0' ELSE</p&
121、gt;<p> "0100110000000000" WHEN ADDR="00001111" AND CS_I='0' ELSE</p><p> "0110001000000000" WHEN ADDR="00010000" AND CS_I='0' ELSE</p>
122、<p> "0111000000001010" WHEN ADDR="00010001" AND CS_I='0' ELSE</p><p> "1000000000010000" WHEN ADDR="00010010" AND CS_I='0' ELSE</p><
123、;p> "1010000000000000" WHEN ADDR="00010011" AND CS_I='0' ELSE</p><p> "1001000000010011" WHEN ADDR="00010100" AND CS_I='0' ELSE</p><p&g
124、t; "0000000000000000";</p><p><b> END A;</b></p><p><b> ?</b></p><p> ROM芯片的設計電路圖如圖 14所示:</p><p><b> 圖 14</b></p&g
125、t;<p><b> 程序計數(shù)器PC</b></p><p><b> 程序計數(shù)器功能表:</b></p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_
126、1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_SIGNED.ALL;</p><p> ENTITY PC IS</p><p><b> PORT(</b></p><p> L
127、OAD,LDPC,CLR:IN STD_LOGIC;</p><p> D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p><b> END
128、PC;</b></p><p> ARCHITECTURE A OF PC IS</p><p> SIGNAL QOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(LDPC,CLR,LOAD)</
129、p><p><b> BEGIN</b></p><p> IF(CLR='0')THEN</p><p> QOUT<="00000000";</p><p> ELSIF(LDPC'EVENT AND LDPC='1')THEN</p>
130、<p> IF(LOAD='0')THEN</p><p><b> QOUT<=D;</b></p><p><b> ELSE</b></p><p> QOUT<=QOUT+1;</p><p><b> END IF;</b
131、></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> O<=QOUT;</b></p><p><b> END A; </b></p><p> 程序計數(shù)器PC
132、電路圖如圖 15所示:</p><p><b> 圖 15</b></p><p><b> RAM芯片的設計</b></p><p><b> RAM芯片功能表:</b></p><p><b> VHDL源程序:</b></p>
133、<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_SIGNED.ALL;</p><p> ENTITY RAM IS <
134、;/p><p><b> PORT(</b></p><p> RD_D,CS_D:IN STD_LOGIC;</p><p> DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p>
135、<p> DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p><b> END RAM;</b></p><p> ARCHITECTURE A OF RAM IS</p><p> TYPE ME
136、MORY IS ARRAY(0 TO 31) OF STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(CS_D)</p><p> VARIABLE MEM:MEMORY;</p><p><b> BEGIN&l
137、t;/b></p><p> IF(CS_D'EVENT AND CS_D='0') THEN</p><p> IF(RD_D='0') THEN</p><p> MEM(CONV_INTEGER(ADDR(4 DOWNTO 0))):=DIN;</p><p><b> E
138、LSE</b></p><p> DOUT<=MEM(CONV_INTEGER(ADDR(4 DOWNTO 0)));</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p
139、><p><b> END A;</b></p><p> ?RAM芯片的設計電路圖如圖 16所示:</p><p><b> 圖 16</b></p><p> 1:2分配器單元FEN2</p><p><b> VHDL源程序:</b><
140、;/p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY FEN2 IS</p><p><b> PORT(</b></p><p> LED_B:IN STD_LOGIC;</p>
141、<p> DBUS:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> FENOUT,OUTBUS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p><b> END FEN2;</b></p
142、><p> ARCHITECTURE A OF FEN2 IS</p><p><b> BEGIN</b></p><p><b> PROCESS</b></p><p><b> BEGIN </b></p><p> IF(LED_B=
143、39;0') THEN </p><p> OUTBUS<=DBUS;</p><p><b> ELSE </b></p><p> FENOUT<=DBUS;</p><p><b> END IF;</b></p><p>
144、; END PROCESS;</p><p><b> END A;</b></p><p> ?1:2分配器單元FEN2電路圖如圖 17所示:</p><p><b> 圖 17</b></p><p> 時序產生器COUNTER</p><p><b&g
145、t; VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_SIGNED.ALL;</p
146、><p> ENTITY COUNTER IS </p><p><b> PORT(</b></p><p> CLK,CLR:IN STD_LOGIC;</p><p> T2,T3,T4:OUT STD_LOGIC</p><p><b> );</b></
147、p><p> END COUNTER;</p><p> ARCHITECTURE A OF COUNTER IS</p><p> SIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS
148、(CLK,CLR)</p><p><b> BEGIN</b></p><p> IF(CLR='0') THEN</p><p><b> T2<='0';</b></p><p><b> T3<='0';</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《計算機組成原理》課程設計
- 計算機組成原理課程設計
- 計算機組成原理課程設計
- 計算機組成原理課程設計
- 計算機組成原理課程設計
- 計算機組成原理課程設計
- 計算機組成原理課程設計--計算機組成原理算法實現(xiàn)
- 計算機組成原理課程設計---模型機組成設計
- 計算機組成原理課程設計報告
- 計算機組成原理-課程設計報告
- 計算機組成原理課程設計報告
- 計算機組成原理課程設計日志
- 計算機組成原理課程設計報告
- 計算機組成原理課程設計報告
- 計算機組成原理課程設計 (2)
- 計算機組成原理課程設計報告
- 計算機組成原理課程設計論文
- 計算機組成原理-課程設計報告
- 計算機組成原理課程設計--基本模型計算機
- 計算機組成原理課程設計報告--簡單計算機
評論
0/150
提交評論