基于8086 CPU的單芯片計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)
系統(tǒng)總線在接收到外設(shè)的中斷請(qǐng)求之后,會(huì)向CPU 提出中斷申請(qǐng),一旦接收到中斷響應(yīng),要向外設(shè)傳送中斷響應(yīng)信號(hào),同時(shí)修改譯碼單元,選通該外設(shè),保證在第二個(gè)中斷響應(yīng)期間能將中斷類(lèi)型號(hào)通過(guò)總線傳送給CPU,使得CPU 能成功跳轉(zhuǎn)到中斷服務(wù)子程序。
DMA 控制器在執(zhí)行數(shù)據(jù)傳輸時(shí),需要掌握AHB 總線的控制權(quán),向片上存儲(chǔ)器或者總線上其他外設(shè)發(fā)出地址和控制信號(hào),即相當(dāng)于AMBA 的主設(shè)備;另一方面,在DMA 控制器啟動(dòng)工作之前,CPU 需要對(duì)其進(jìn)行預(yù)處理操作,以使其按照特定的配置參數(shù)進(jìn)行工作,在這個(gè)初始化階段,CPU 是AHB 總線上的主設(shè)備,DMA 控制器屬于從設(shè)備?;贒MA控制器的這種兩面性,在總線設(shè)計(jì)中配備了專(zhuān)門(mén)的DMA 通道與其相匹配:CPU 正常工作時(shí),
DMA 扮演從設(shè)備的角色,接受CPU 對(duì)其的初始化;利用HLDA 作仲裁信號(hào),當(dāng)CPU 響應(yīng)外設(shè)DMA 請(qǐng)求時(shí)(即HLDA 為高電平),讓出總線控制權(quán)給外設(shè),利用DMA 數(shù)據(jù)通道傳輸數(shù)據(jù),傳輸?shù)膮f(xié)議同樣遵從AMBA 協(xié)議??偩€的時(shí)序控制模塊狀態(tài)如圖5 所示。
3.3 存儲(chǔ)單元的接口設(shè)計(jì)
存儲(chǔ)器子系統(tǒng)包括一個(gè)RAM 和一個(gè)ROM,8086CPU 支持20 位地址總線,具有1M 字節(jié)存儲(chǔ)空間,分為RAM 區(qū)和ROM 區(qū)。本文利用開(kāi)發(fā)板的片上ROM 資源配置成16k*16 的格式作為存儲(chǔ)器中的ROM 單元,采用DE2 開(kāi)發(fā)板上的8M 的SDRAM 配置成256K*16 位總線格式代替存儲(chǔ)器中的RAM 單元。
在各種隨機(jī)存儲(chǔ)器件中,SDRAM 的價(jià)格低,體積小,速度快,容量大,是比較理想的器件。但SDRAM 的控制邏輯比較復(fù)雜,對(duì)時(shí)序要求也十分嚴(yán)格,這就要求有一個(gè)專(zhuān)門(mén)的控制器:控制SDRAM 的初始化,刷新和預(yù)沖以及基本的讀寫(xiě)操作。同時(shí),需要匹配SDRAM控制器和8086 CPU 的讀寫(xiě)時(shí)序。該接口具體實(shí)現(xiàn)的狀態(tài)機(jī)如圖6 所示。
T1:當(dāng)RDY 為高電平時(shí),首先確定是進(jìn)行讀還是寫(xiě)操作,這時(shí)DONE 為0:讀:設(shè)置WR=0,RD=1; 寫(xiě):設(shè)置WR=1,RD=0。
T2:當(dāng)DONE 信號(hào)為高電平,表示可以進(jìn)行讀/寫(xiě)操作,跳轉(zhuǎn)到T3。
T3:CPU 通過(guò)SDRAM 控制器對(duì)SDRAM 進(jìn)行讀寫(xiě)操作。
T4:當(dāng)?shù)妥止?jié)有效信號(hào)bwl_n 為高電平時(shí),執(zhí)行低字節(jié)傳輸。
T5:當(dāng)高字節(jié)有效信號(hào)bwh_n 為高電平時(shí),執(zhí)行高字節(jié)傳輸。
T6:CPU 完成讀寫(xiě)操作,相關(guān)控制信號(hào)清零。
其中,DONE 信號(hào)用于指示是否讀寫(xiě)完成,只有DONE 為高電平時(shí)表示讀寫(xiě)完成,才能進(jìn)行下次讀寫(xiě)操作。RDY 信號(hào)表示SDRAM 是否做好準(zhǔn)備接受CPU 的訪問(wèn),由SDRAM的寫(xiě)請(qǐng)求信號(hào)(IN_REQ =1)和讀有效信號(hào)(OUT_VALID =1 )共同控制,其產(chǎn)生過(guò)程偽碼如表5 所示。
根據(jù)單芯片計(jì)算機(jī)系統(tǒng)級(jí)設(shè)計(jì)的組成結(jié)構(gòu),調(diào)用已經(jīng)編寫(xiě)完成的8086 IP 軟核、8255 IP軟核、SDRAM 控制器、SDRAM 模型IS42S16400、AHB 總線 IP 軟核以及譯碼器IP 軟核。
連接相應(yīng)的輸入輸出端口,同時(shí)對(duì)8086 相關(guān)的輸入端口進(jìn)行賦值,將未使用的輸出端口懸空,完成單芯片計(jì)算機(jī)系統(tǒng)的RTL 級(jí)設(shè)計(jì)。
4 單芯片計(jì)算機(jī)系統(tǒng)的仿真與驗(yàn)證
單芯片計(jì)算機(jī)的RTL 級(jí)設(shè)計(jì)只是全部設(shè)計(jì)流程的一部分,為保證最終設(shè)計(jì)的成功,必須對(duì)其進(jìn)行全面的軟件仿真與硬件驗(yàn)證,包括搭建測(cè)試平臺(tái),設(shè)計(jì)測(cè)試方案以及分析仿真結(jié)果,實(shí)現(xiàn)FPGA 驗(yàn)證。
4.1 測(cè)試方案的設(shè)計(jì)
在包含8255 應(yīng)用電路的單芯片計(jì)算機(jī)系統(tǒng)搭建完成的基礎(chǔ)上,要求實(shí)現(xiàn)八個(gè)開(kāi)關(guān)量控制八個(gè)LED燈亮滅的功能。將八個(gè)開(kāi)關(guān)量連接8255 的PA0~PA7;將八個(gè)LED 燈驅(qū)動(dòng)電路連接8255 的PC0~PC7。在8086 CPU 的控制下,通過(guò)總線讀取連接在8255 PA 口的八個(gè)開(kāi)關(guān)量,將開(kāi)關(guān)值送往SDRAM 存儲(chǔ),再?gòu)腟DRAM 讀取開(kāi)關(guān)量發(fā)送到8255 PC 口,使其驅(qū)動(dòng)八個(gè)LED 燈的亮或滅。
4.2 仿真結(jié)果分析
單芯片計(jì)算機(jī)最小集的RTL 級(jí)仿真波形,如圖7 所示。在8086 CPU 的控制下,8255接口讀取連接在8255 PA 口的八個(gè)開(kāi)關(guān)量11000010 以后,將其發(fā)送到8255 的PC 口,驅(qū)動(dòng)輸出邏輯值11000010。
使用QuartusII 軟件成功編譯設(shè)計(jì),將布局布線生成的結(jié)果下載到FPGA 中,得到與設(shè)計(jì)等效的實(shí)際電路,對(duì)實(shí)際的電路用測(cè)試系統(tǒng)進(jìn)行測(cè)試,從而驗(yàn)證設(shè)計(jì)的正確性。將FPGA的驗(yàn)證結(jié)果經(jīng)邏輯分析儀讀取顯示,如圖8 所示。
5 結(jié)束語(yǔ)
本論文在基于集成電路設(shè)計(jì)方法學(xué)的指導(dǎo)下,探討了一種基于8086 CPU 核的單芯片計(jì)算機(jī)平臺(tái)的架構(gòu),研究了其與AMBA 總線、SDRAM、8255 等外圍IP 的集成。在此基礎(chǔ)上,設(shè)計(jì)基于8086 IP 軟核的單芯片計(jì)算機(jī)系統(tǒng),并實(shí)現(xiàn)了FPGA 功能演示。在后續(xù)的工作中,將考慮進(jìn)一步擴(kuò)展CPU 外圍接口IP 軟核;集成DMA 控制器,實(shí)現(xiàn)VGA 顯示功能;將DOS 操作系統(tǒng)加入8086 單芯片計(jì)算機(jī)平臺(tái),并開(kāi)發(fā)在操作系統(tǒng)下的設(shè)備驅(qū)動(dòng)程序和應(yīng)用軟件。
評(píng)論