版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)組成原理課程設(shè)計(jì)說(shuō)明書(shū)</p><p> 題目:設(shè)計(jì)求負(fù)數(shù)平方和的CISC模型計(jì)算機(jī)</p><p> 院(系):計(jì)算機(jī)科學(xué)與工程學(xué)院</p><p> 專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù)</p><p><b> 目 錄</b></p><p> 1課
2、程設(shè)計(jì)的題目與內(nèi)容1</p><p><b> 1.1題目1</b></p><p><b> 1.2內(nèi)容1</b></p><p> 2系統(tǒng)總體設(shè)計(jì)2</p><p> 2.1CISC模型機(jī)數(shù)據(jù)通路框圖的設(shè)計(jì)2</p><p> 2.2操作控制
3、器的邏輯框圖的設(shè)計(jì)2</p><p> 2.3模型機(jī)的指令系統(tǒng)和所有指令的指令格式的設(shè)計(jì)3</p><p> 2.4時(shí)序產(chǎn)生電路的設(shè)計(jì)6</p><p> 2.5機(jī)器指令的微程序流程圖以及微指令的設(shè)計(jì)7</p><p> 2.6地址轉(zhuǎn)移邏輯電路的設(shè)計(jì)9</p><p> 2.7軟件清單9
4、</p><p> 2.8嵌入式CISC模型計(jì)算機(jī)的頂層電路圖28</p><p> 3匯編語(yǔ)言源程序29</p><p> 4機(jī)器語(yǔ)言源程序30</p><p> 5機(jī)器語(yǔ)言源程序的功能仿真波形圖及結(jié)果分析31</p><p> 6故障現(xiàn)象和故障分析33</p><p
5、><b> 7心得體會(huì)34</b></p><p> 課程設(shè)計(jì)的題目與內(nèi)容</p><p><b> 題目</b></p><p> 設(shè)計(jì)一臺(tái)嵌入式CISC模型計(jì)算機(jī)(采用定長(zhǎng)CPU周期、聯(lián)合控制方式),并運(yùn)行能完成一定功能的機(jī)器語(yǔ)言程序進(jìn)行驗(yàn)證,機(jī)器語(yǔ)言源程序功能如下:</p><p&
6、gt; 連續(xù)輸入5個(gè)有符號(hào)整數(shù)(用8位二進(jìn)制補(bǔ)碼表示,十六進(jìn)制數(shù)輸入),求所有負(fù)數(shù)的平方和并輸出顯示。</p><p><b> 說(shuō)明:</b></p><p> 5個(gè)有符號(hào)數(shù)從外部輸入;</p><p> 一定要使用符號(hào)位(比如說(shuō)SF),并且要使用負(fù)的時(shí)候轉(zhuǎn)移(比如說(shuō)JS)或不為負(fù)的時(shí)候轉(zhuǎn)移(比如說(shuō)JNS)指令;</p>
7、<p> 采用三數(shù)據(jù)總線結(jié)構(gòu)的運(yùn)算器,采用RAM,先將輸入數(shù)據(jù)依次存放在RAM的某一連續(xù)的存儲(chǔ)區(qū)域內(nèi),再依次讀出判斷是否為負(fù)數(shù),若為負(fù)數(shù)再求其平方和。</p><p><b> 內(nèi)容</b></p><p> 完成系統(tǒng)的總體設(shè)計(jì),畫(huà)出模型機(jī)數(shù)據(jù)通路框圖;</p><p> 設(shè)計(jì)微程序控制器(CISC模型計(jì)算機(jī))的邏輯結(jié)構(gòu)框圖
8、; </p><p> 設(shè)計(jì)機(jī)器指令格式和指令系統(tǒng); </p><p> 設(shè)計(jì)時(shí)序產(chǎn)生器電路; </p><p> 設(shè)計(jì)所有機(jī)器指令的微程序流程圖; </p><p> 設(shè)計(jì)操作控制器單元;</p><p> 在CISC模型計(jì)算機(jī)中,設(shè)計(jì)的內(nèi)容包括微指令格式(建議采用全水平型微指令)、微指令代碼表(根據(jù)微程序
9、流程圖和微指令格式來(lái)設(shè)計(jì))和微程序控制器硬件電路(包括地址轉(zhuǎn)移邏輯電路、微地址寄存器、微命令寄存器和控制存儲(chǔ)器等。具體電路根據(jù)微程序控制器的邏輯結(jié)構(gòu)框圖、微指令格式和微指令代碼來(lái)設(shè)計(jì))。</p><p> 設(shè)計(jì)模型機(jī)的所有單元電路,并用VHDL語(yǔ)言(也可使用GDF文件----圖形描述文件)對(duì)模型機(jī)中的各個(gè)部件進(jìn)行編程,并使之成為一個(gè)統(tǒng)一的整體,即形成頂層電路或頂層文件; </p><p>
10、; 由給出的題目和設(shè)計(jì)的指令系統(tǒng)編寫(xiě)相應(yīng)的匯編語(yǔ)言源程序;</p><p> 根據(jù)設(shè)計(jì)的指令格式,將匯編語(yǔ)言源程序手工轉(zhuǎn)換成機(jī)器語(yǔ)言源程序,并將其設(shè)計(jì)到模型機(jī)中的ROM中去;</p><p> 使用EDA軟件進(jìn)行功能仿真,要保證其結(jié)果滿足題目的要求;(其中要利用EDA軟件提供的波形編輯器,選擇合適的輸入輸出信號(hào)及中間信號(hào)進(jìn)行調(diào)試。)</p><p> 器件編
11、程,并在EDA實(shí)驗(yàn)平臺(tái)上進(jìn)行操作演示。</p><p><b> 系統(tǒng)總體設(shè)計(jì)</b></p><p> CISC模型機(jī)數(shù)據(jù)通路框圖的設(shè)計(jì)</p><p> 操作控制器的邏輯框圖的設(shè)計(jì)</p><p> 模型機(jī)的指令系統(tǒng)和所有指令的指令格式的設(shè)計(jì)</p><p><b> I/
12、O指令</b></p><p> 輸入指令(IN1)格式:</p><p> 輸出指令(OUT1)格式:</p><p><b> 轉(zhuǎn)移指令</b></p><p> 非零條件轉(zhuǎn)移指令(JNZ)格式:</p><p> 非負(fù)條件轉(zhuǎn)移指令(JNS)格式:</p>
13、<p> 無(wú)條件轉(zhuǎn)移指令(JMP)格式:</p><p><b> MOV指令</b></p><p><b> MOV指令格式:</b></p><p><b> 相加指令</b></p><p> 相加指令(ADD)格式:</p><
14、p><b> 有符號(hào)乘法指令</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> 字符串存儲(chǔ)指令</b></p><p> 乘法指令(STO)格式:</p><p><b> 字符串存儲(chǔ)指令</
16、b></p><p> 乘法指令(STOI)格式:</p><p><b> 取數(shù)指令</b></p><p> 取數(shù)指令(LAD)格式:</p><p><b> 指令系統(tǒng)表:</b></p><p> 其中,對(duì)源寄存器Rs與目的寄存器Rd的規(guī)定如下:<
17、;/p><p> 模型機(jī)規(guī)定數(shù)據(jù)的表示采用定點(diǎn)整數(shù)補(bǔ)碼表示,單字長(zhǎng)為8位,其格式如下: </p><p><b> 時(shí)序產(chǎn)生電路的設(shè)計(jì)</b></p><p> T1、T2、T3、T4與CLR、Q之間的關(guān)系圖如圖 1所示。</p><p><b> 圖 1</b></p><
18、p> 機(jī)器指令的微程序流程圖以及微指令的設(shè)計(jì)</p><p> 要設(shè)計(jì)微程序控制器,首先要設(shè)計(jì)微程序流程圖以及微指令,其次再設(shè)計(jì)地址轉(zhuǎn)移邏輯電路以及其它邏輯單元電路,設(shè)計(jì)步驟如下:</p><p> 根據(jù)指令格式和指令系統(tǒng)設(shè)計(jì)所有機(jī)器指令的微程序流程圖,并確定每條微指令的微地址和后繼微地址;</p><p> 設(shè)計(jì)微指令格式和微指令代碼表;</p
19、><p> 設(shè)計(jì)地址轉(zhuǎn)移邏輯電路;</p><p> 設(shè)計(jì)微程序控制器中的其它邏輯單元電路,包括微地址寄存器、微命令寄存器和控制存儲(chǔ)器。</p><p> 其中,微程序流程圖設(shè)計(jì)如下圖所示:</p><p> 微指令流程圖設(shè)計(jì)完成后,開(kāi)始設(shè)計(jì)微指令格式和微指令代碼表,按照要求,CISC模型機(jī)系統(tǒng)使用的微指令采用全水平型微指令,字長(zhǎ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ù)自身設(shè)計(jì)的微指令流程圖,可以得到以下的微指
21、令代碼表:</p><p> 地址轉(zhuǎn)移邏輯電路的設(shè)計(jì)</p><p> 地址轉(zhuǎn)移邏輯電路是根據(jù)微程序流程圖中的棱形框部分及多個(gè)分支微地址,利用微地址寄存器的異步置“1”端,實(shí)現(xiàn)微地址的多路轉(zhuǎn)移。</p><p> 由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與µA5~µA0對(duì)應(yīng)的異步置“1”控制信號(hào)SE6~SE1的邏輯表達(dá)式為:&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設(shè)計(jì):</b></p><p> 其中S2,S1,S0表示的是算術(shù)邏輯運(yùn)算單元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> 算術(shù)邏輯單元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> 其內(nèi)部電路圖如圖 7所示:</p>&l
69、t;p><b> 圖 7</b></p><p> 其組成的部件有以下:</p><p> 地址轉(zhuǎn)移邏輯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> ?地址轉(zhuǎn)移邏輯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> 微程序寄存器內(nèi)部電路圖如圖 10所示:</p><p><b> 圖 10</b></p><p> 微地址寄存器aa合成圖如圖 11所示:</p><p><b> 圖 11</b></p>&
91、lt;p><b> 微地址轉(zhuǎn)換器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> ?微地址轉(zhuǎn)換器F1電路圖如圖 12所示:</p>
95、<p><b> 圖 12</b></p><p> 控制存儲(chǔ)器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> ?控制存儲(chǔ)器CONRO
110、M電路圖如圖 13所示:</p><p><b> 圖 13</b></p><p><b> ROM芯片的設(shè)計(jì)</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芯片的設(shè)計(jì)電路圖如圖 14所示:</p><p><b> 圖 14</b></p&g
125、t;<p><b> 程序計(jì)數(shù)器PC</b></p><p><b> 程序計(jì)數(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> 程序計(jì)數(shù)器PC
132、電路圖如圖 15所示:</p><p><b> 圖 15</b></p><p><b> RAM芯片的設(shè)計(jì)</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芯片的設(shè)計(jì)電路圖如圖 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> 時(shí)序產(chǎn)生器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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《計(jì)算機(jī)組成原理》課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--計(jì)算機(jī)組成原理算法實(shí)現(xiàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---模型機(jī)組成設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理-課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)日志
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理課程設(shè)計(jì) (2)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)論文
- 計(jì)算機(jī)組成原理-課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--基本模型計(jì)算機(jī)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告--簡(jiǎn)單計(jì)算機(jī)
評(píng)論
0/150
提交評(píng)論