基于F240的IDE接口仿真器的設(shè)計_第1頁
基于F240的IDE接口仿真器的設(shè)計_第2頁
基于F240的IDE接口仿真器的設(shè)計_第3頁
基于F240的IDE接口仿真器的設(shè)計_第4頁
基于F240的IDE接口仿真器的設(shè)計_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于F240的IDE接口仿真器的設(shè)計             基于F240的IDE接口仿真器的設(shè)計 The Design of IDE Interface Simulator Based On F240 中國航空計算技術(shù)研究所 姜運生    摘  要 本文介紹了以F240為核心設(shè)計IDE接口仿真器的硬件和軟件設(shè)計方法突出特點是硬件設(shè)計簡練實用,監(jiān)控軟件精巧靈活,在設(shè)計嵌入式系統(tǒng)調(diào)試工具中具有典型性和實用性,對其它系統(tǒng)的調(diào)試方法也有借鑒。

2、    關(guān)鍵詞 仿真器 監(jiān)控程序 硬件調(diào)試 IDE接口    隨著航空電子系統(tǒng)數(shù)字化的發(fā)展,機載嵌入式計算機也逐步擺脫了"純粹嵌入"時代,開始以主要控制角色而顯露頭腳,其存儲系統(tǒng)也和地面計算機系統(tǒng)一樣提出了"海量存儲"的要求借鑒和使用IDE接口是一條重要途徑。但在調(diào)試時一般缺乏IDE接口主方(Host)控制器。PC機雖然帶有兩個標(biāo)準(zhǔn)的集成在主板上的IDE接口,但在目前的Windows系統(tǒng)下卻是透明的,無法在硬件調(diào)試級進行控制驅(qū)動。"工欲善其事,必先利其器"。為解決調(diào)試工具,筆

3、者設(shè)計了一個IDE接口仿真器。硬件簡練實用,軟件精巧靈活。仿真器硬件設(shè)計    眾所周知,IDE/ATA接口是16Bit總線,映象在主機的I/O空間。由主機對接口內(nèi)的2組寄存器操作而完成"海量存儲"。這些寄存器僅由2根片選/CS1FX、/CS3FX和3根地址線(A2A1A0)來尋址。仿真器硬件只要能在監(jiān)控程序的控制下產(chǎn)生對應(yīng)控制信號,便能真實仿真IDE調(diào)試所需的環(huán)境。信號方向以仿真器為參照,輸出方向由仿真器驅(qū)動,輸入信號由IDE設(shè)備驅(qū)動。    IDE接口的讀寫時序和一般CPU外設(shè)時序波形相似,其讀寫周期為70ns

4、,具體波形不再給出。使用TI公司的TMS320F240可以方便地仿真出IDE的時序波形。只要使用外部READY信號,把I/O周期延長到70ns以上就可以保證仿真數(shù)據(jù)讀寫可靠。以F240為核心,仿真器硬件設(shè)計就非常簡練。除去初期調(diào)試和驅(qū)動芯片外,整個核心就是F240和GAL16V8,能仿真全部的IDE時序波形。圖1是仿真器自身調(diào)試仿真監(jiān)控程序電路。使用2片CY7C199,組成32K x 16Bit的片外RAM程序存儲器空間。當(dāng)程序調(diào)試完成后,將H1斷接,將監(jiān)控程序通過JTAG口直接燒入F240,就可以拔去2片外部程序存儲器CY7C199。    當(dāng)仿真監(jiān)控程序調(diào)試完

5、成后,正式定型的仿真核心電路如圖2所示。電路設(shè)計總的原則是簡練實用。所以復(fù)位采用普通的RC電路,外加手工復(fù)位開關(guān)SW保證仿真器自身復(fù)位。和主機之間利用RS232通訊,減少硬件額外開銷。IDE接口的中斷請求HIRQ直接F240的外部中斷XINT1。因為HIRQ高電平有效,所以將其余不用的外部中斷XINT2等接地,保證其余中斷源不產(chǎn)生中斷請求,減少軟件中斷響應(yīng)多重判斷環(huán)節(jié)。將F240的PB端口設(shè)置為輸出端口,DMA請求HDRQ接到PB端口的最低位PB0,可以直接由硬件檢測DRQ狀態(tài)即可,并不真正需要DMA控制器。將F240的PC端口設(shè)置為輸出端口,最高位PC7為復(fù)位IDE端口信號。當(dāng)該位設(shè)置為0(

6、低電平)時,產(chǎn)生復(fù)位IDE設(shè)備信號/HDRST,該位設(shè)置為1時結(jié)束復(fù)位。其復(fù)位時間可由軟件控制。IDE設(shè)備的寄存器映象在F240的I/O空間從0000H開始的16個地址。外部I/O只有IDE接口,不必采用全譯碼,直接由I/O片選/IS和地址A3區(qū)分產(chǎn)生/CF1FX和/CS3FX。接口內(nèi)偏移地址直接由A2.A0提供。F240的寫信號/WR可以直接作為接口寫信號。但是F240的讀信號是狀態(tài)信號,在連續(xù)讀操作中保持低電平,并無上升沿,所以需要專門產(chǎn)生讀信號。PC主機通過串口和仿真器通訊,監(jiān)控仿真器,從而驅(qū)動調(diào)試的IDE設(shè)備。仿真器和IDE設(shè)備通過標(biāo)準(zhǔn)的硬盤電纜連接,為提高信號抗干擾,這些信號經(jīng)過總線

7、驅(qū)動器驅(qū)動。圖3是驅(qū)動和接口電路。    數(shù)據(jù)通路用16路驅(qū)動的IDT74LS16245實現(xiàn),開門信號直接由I/O片選信號/IS控制,方向端由寫信號/WR控制。而單向提供給IDE設(shè)備的其它信號,都經(jīng)過54F244驅(qū)動。所有控制信號由GAL16V8全部實現(xiàn),以下是其控制邏輯代碼。EQUATIONS!HRST = !POR # !HRST; / RC上電復(fù)位 和 F240設(shè)置復(fù)位都產(chǎn)生 IDE復(fù)位!CS1FX =!IS &!A3; /A3=0:產(chǎn)生第一組寄存器片選 /CS1FX!CS3FX =!IS &A3; /A3 =1:產(chǎn)生第二組寄存器片選 /CS

8、3FX!IOR = !IS & !RD; / 專門產(chǎn)生寄存器讀信號Q1,Q0.CLK = CPUCLK;Q1,Q0.OE = !OE;Q1,Q0.AR = !.POR; /復(fù)位/F240 系統(tǒng)控制狀態(tài)機./其時鐘 20MHz,每一拍50ns/程序存儲器CY7C199 讀寫周 期 <= 35ns,無需等待/IDE接口寄存器讀寫周期>= 70ns,等 待2拍足矣.State_Diagram Q1,Q0;State S0: / 空閑狀態(tài).READY = H; / 支持 CY7C199訪問.if (!IS) then / 要訪問IDE接口寄存器.S1 with READY240 =

9、 L;State S1: / 開始等待READY240 = L;goto S2;State S2:READY240 = L;goto S3;State S3: / 時間到.READY240 = H;goto S0; / F240對READY信號只采樣一次.END    仿真硬件的核心只有一片F(xiàn)240和一片GAL16V8而已。仿真器監(jiān)控軟件設(shè)計    軟件設(shè)計包括駐留在F240的監(jiān)控程序和PC宿主機的監(jiān)控程序。兩者之間通過串口配合工作。這當(dāng)然降低了IDE接口的數(shù)據(jù)吞吐率,但在邏輯仿真調(diào)試時不是主要焦點。為簡約起見,避免復(fù)雜的詞法分析,主

10、從之間采用單字符監(jiān)控命令。其串口監(jiān)控命令通訊幀定義如下:    其校驗和為前n-1個字節(jié)代數(shù)和的補碼,即    CheckSum = -Bi (i=0,1. n-1)    下面介紹幾個主要命令和程序?qū)崿F(xiàn)方法    1 .I 命令: 讀IDE寄存器    當(dāng)監(jiān)控程序識別出I命令后,根據(jù)參數(shù)提供的寄存器索引,映射為對應(yīng)的I/O地址。F240的輸入/輸出命令和x86系列不同,它在指令中必須直接給出地址。LACC RegBZ IsDatReg / 0號

11、索引,即讀數(shù)據(jù)寄存器SUB #1BZ IsError / 1號索引,即讀錯誤類型寄存器BZ IsAltReg / 8號索引,即讀后備狀態(tài)寄存器SUB #1BZ IsDrvAddrReg / 9號索引,即讀驅(qū)動器地址寄存器IsDatRegIN Value,DatReg / 讀數(shù)據(jù)寄存器RETIsAltReg:IN Value,DevAddrReg / 讀驅(qū)動器地址寄存器RET    當(dāng)I命令執(zhí)行完畢,應(yīng)該將寄存器讀入值回送PC主機。    2 .O命令: 寫IDE寄存器    寄存器輸出命令參數(shù)需要提供寄存

12、器索引,和映射為對應(yīng)的I/O地址。    3 .H 命令: 硬件復(fù)位IDE設(shè)備    硬件復(fù)位時應(yīng)將F240的IOPC7管腳設(shè)置為低電平10ms以上。如下LDP #00E1h ;DP = 00E1H: 7080H-70FFH 的頁址LACL #8000H ;D15 = 1: IOPC7: 做輸出.;D7= 0:設(shè)置IOPC7= 0SACL PCDATDIR ;寫PC端口,設(shè)置/HRST信號為低電平CALL Delay10ms ;保持復(fù)位信號10ms 的低電平LACL #8080H ;D15= 1: IOPC7: 做輸出.;D7 = 1

13、:設(shè)置IOPC7 = 1SACL PCDATDIR ;恢復(fù) /HRST信號為高電平    類似地,監(jiān)測DMA請求HDRQ狀態(tài)時可以設(shè)置端口為輸入屬性,然后讀入IOPB0。監(jiān)測中斷請求HIRQ時,可以直接讀XINT1狀態(tài),即讀 7070H處的XINT1CR寄存器。    4 .S 命令: 軟件復(fù)位IDE設(shè)備    軟件復(fù)位時可以向IDE接口的DevCtrlReg(設(shè)備控制寄存器)寫入適當(dāng)值實現(xiàn),如下LDP #0; /指向.bss變量區(qū)SPLK #000EH,Value; /D2 = SW Rst = 1:軟

14、件強制復(fù)位/D1=/IEn=1:禁止IDE發(fā)中斷OUT Value, DevCtrlReg; /復(fù)位 IDE設(shè)備CALL Delay10ms; /保持復(fù)位狀態(tài)10msSPLK #000AH,Value; /D2= SW Rs= 0 : 結(jié)束復(fù)位狀態(tài)OUT Value, DevCtrlRegCALL Delay10msSPLK #000EH,Value; /D6=LBA=1:采用邏輯塊尋址模式.OUT Value,DrvHeadReg; /設(shè)置驅(qū)動器寄存器    5 .C 命令: 讀取IDE設(shè)備ID號和相關(guān)配置    IDE設(shè)備內(nèi)的相關(guān)

15、配置對其它操作影響較大,主機應(yīng)該掌握這些參數(shù)。諸如柱面數(shù)、磁頭數(shù)、每個磁道的扇區(qū)數(shù),以及最大扇區(qū)號等。    CALL WaitRDY; /讀狀態(tài)寄存器,等待D6 = 1,亦即IDE 設(shè)備完成上次命令/準(zhǔn)備好再接收新的命令SPLK #000EH, ValueOUT Value, DrvHeadReg; /選擇主從驅(qū)動器SPLK #00ECH,ValueOUT Value, CmdReg; /發(fā)命令,讀取配置參數(shù)CALL WaitDRQ; /讀狀態(tài)寄存器,等待D6 = 1并且D3=1/亦即RDY并發(fā)出DRQ請求,/表明已將所讀配置參數(shù)放入數(shù)據(jù)寄存 器緩沖MAR *,

16、 AR1; /AR1: 當(dāng)前輔助寄存器.LAR AR1,#BufSADDR; /AR1 扇區(qū)緩沖區(qū)開始地址RPT #0FFh ; /循環(huán)次數(shù)= FFH + 1 = 256IN *+, DatReg; /讀入配置數(shù)據(jù).    讀出配置參數(shù)后,再把它送給PC機的監(jiān)控程序,從中再細分出具體參數(shù)。讀一個扇區(qū) 或?qū)懸粋€扇區(qū)的命令和這個命令相似。只是在發(fā)命令前應(yīng)該設(shè)置柱面扇區(qū)等寄存器,定位到具體的扇區(qū)。    6.PC宿主機監(jiān)控程序功能    PC宿主機監(jiān)控程序主要通過串口監(jiān)控仿真器。在底層通訊中,應(yīng)該為每一個監(jiān)控命令建立對應(yīng)函數(shù)。在應(yīng)用層,可以將幾個簡單命令有機組合,完成復(fù)雜功能,減小仿真器駐留監(jiān)控難度。例如,在讀取配置參數(shù)命令中,分解緩沖數(shù)據(jù)。在讀寫扇區(qū)命令中,將LBA邏輯扇區(qū)地址分解成驅(qū)動器號、扇區(qū)號、柱面號等。 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論