專利名稱:Cpld實現cf卡移動存儲的方法
技術領域:
本發(fā)明涉及一種實現移動存儲的方法,尤其涉及CPLD實現CF卡移動存儲的方法。
背景技術:
在現有的工業(yè)控制和工業(yè)設備領域中,越來越多的用到了智能處理器和CPU,這樣使這些設備的智能化大大提高,能處理更多了信息。同時,由于大量使用到了CPU,這些設備和軟件的結合也越來越緊密,數據量的增加,使設備管理也更加復雜,而且軟件本身的容量也越做越大,使用傳統(tǒng)的串口,或者網口升級軟件變得更加復雜,緩慢,而且不穩(wěn)定。特別是在大規(guī)模生產中,軟件下載的緩慢和不穩(wěn)定大大影響生產的效率,影響了生產線產出。外部的可移動便攜存儲設備,為工業(yè)設備提供了一個穩(wěn)定便捷的接口,可以和外部方便的進行數據交換,因此得到了廣泛地應用。
便攜式移動存儲系統(tǒng)中,通用并行總線是一種比較常見的CPU控制總線,其大致上分為Intel結構和Motorola結構,以Intel結構為例,它又分為地址總線(Address)、數據總線(Data)、片選(/CS)、讀(/OE)、寫(/WE)信號等,如果系統(tǒng)支持慢速設備的話,還就會有準備信號(Ready)。Motorola總線和Intel的原理類似,只是接口信號線的定義不一樣。通過簡單的邏輯轉換,Motorola總線也能轉化成Intel總線。
在便攜式移動存儲系統(tǒng)中,CPU通用并行總線通過片選信號(/CS)選擇需要操作的設備,用讀信號(/OE)做讀數據的操作,用寫信號(/WE)做寫數據的操作。CPU和外設分別在/OE和/WE的上升沿采樣數據。對于慢速外設,在外設忙的時候,它會拉低Ready信號,那么CPU會在操作中插入等待周期,直到Ready信號重新跳高。
便攜式移動存儲設備如今廣泛應用于各種消費類電子產品。存儲介質主要采用的是Flash,存儲設備的接口主要有CF(Compact Flash)Card,另外一種是PC Card。得到廣泛應用的是CF Card,并且支持這種標準的廠家很多,主要有IBM,Hitachi,HP,Kodak等。
便攜式移動存儲設備可更方便于信息的導入和導出,以以太網交換機管理為例,現在的大型,高端交換設備,管理非常復雜,需要大量的配置信息,主要是一些路由表項;如果對每臺交換機分別配置,需要花費大量的時間和精力,但如果將配置信息燒入CF卡中,用一張卡就可以解決所有機器的配置,方便快捷;另外,對于使用過程中交換機出現的異常信息,也可以通過CF卡將其方便地導出,便于記錄。
便攜式移動存儲設備有著穩(wěn)定可靠的數據通道,以以太網交換機升級為例;通過CF讀卡器,可以將所用到的升級軟件,燒入CF卡,將CF卡插在設備中就可以方便的進行升級,速度比串口加載快,比網口加載稍慢,但是由于沒有物理連接,不用擔心掉線,這種方式更加穩(wěn)定可靠。
由于CF卡在使用上的種種優(yōu)勢,使之大面積的在工業(yè)設備上廣泛應用。但是一般的應用方式是采用CF卡接口適配芯片,這種接口芯片同時具備接口訪問控制和電源管理(支持熱插拔)兩種功能。但是接口芯片的造價比較高,無疑增加了設備的成本,不利于這種先進方式的大規(guī)模應用。
發(fā)明內容
針對上述普通便攜式移動存儲設備所存在的問題和不足,本發(fā)明的目的是提供一種造價較低的CPLD實現CF卡移動存儲的方法。
本發(fā)明是這樣實現的一種CPLD實現CF卡移動存儲的方法,包括以下步驟選擇CF卡的True IDE Mode接口模式,并使CF卡通過CPLD與CPU連接,即設置CPLD使CPU的地址線與CF卡的地址線及片選端連接;CPU對CF卡發(fā)出讀寫命令,對CF卡進行讀寫操作。
進一步地,所述CF卡的socket槽中的CD0、CD1插針長度應該比電源插針短,兩者之間的長度差應保證CF卡在拔出的時候,CD0和CD1已經和插槽脫離,CF還保持供電狀態(tài);CF卡的中斷通過CPLD與CPU連接,如果CPU僅支持電平信號的中斷觸發(fā),則在CPLD中把CD0、CD1跳變轉換成電平中斷信號。
進一步地,所述CPU的地址線與CF卡的地址線及片選端連接具體為用CPU通用串行總線的五條地址線通過CPLD與CF卡的三條地址線和兩個片選端連接。
本發(fā)明通過造價比較低的CPLD代替接口芯片,選擇CF卡的True IDE Mode接口模式,并設置CPLD,使其具備接口適配芯片功能,這樣,CPU就可完成對CF卡的讀寫功能,CF卡就實現了移動存儲功能。為使CF卡同時具備即插即用功能,還通過將CF卡的socket槽中的CD0、CD1插針長度設計得比電源插針短,兩者之間的長度差異,可保證CF卡在拔出的時候,CD0和CD1已經和插槽脫離,但是CF還保持供電狀態(tài),并且CPU必須支持邊緣中斷信號觸發(fā),如果CPU指支持電平信號的中斷觸發(fā),那么就必須在CPLD中把/CD0和/CD1跳變轉換成電平中斷信號,CF卡就可輕松實現熱插拔了。這樣,使用CPLD和特殊的技術手段,就可完成相當于專門的接口芯片完成的功能。
下面結合附圖,對本發(fā)明作出詳細描述。
圖1為本發(fā)明的CPU和CF的連接結構示意圖;圖2為本發(fā)明的在位控制和熱插拔控制結構示意圖。
具體實施例方式本發(fā)明所提出的CF卡移動存儲機制是這樣實現的
選擇CF卡的True IDE Mode接口模式,并使CF卡通過CPLD與CPU連接,即設置CPLD使CPU的地址線與CF卡的地址線及片選端連接,用CPU通用串行總線的五條地址線通過CPLD與CF卡的三條地址線和兩個片選端連接。
CPU對CF卡發(fā)出讀寫命令,對CF卡進行讀寫操作。
并且,CF卡的socket槽中的CD0、CD1插針長度設計得比電源插針短,兩者之間的長度差異,應該能保證CF卡在拔出的時候,CD0和CD1已經和插槽脫離,但是CF還保持供電狀態(tài),根據實際情況,設計的CF卡stocket槽中的CD0、CD1插針長度至少比電源插針短1.5mm,CF卡的中斷與通過CPLD與CPU連接,如果CPU僅支持電平信號的中斷觸發(fā),則在CPLD中把CD0、CD1跳變轉換成電平中斷信號。
在這里介紹一下CF卡CF卡支持三種接口模式,分別為PC Card MemoryMode,PC Card IO Mode,True IDE Mode,本發(fā)明選用True IDE mode,True IDEMode從硬件連接來看最簡單,而且在軟件上可以大量借用IDE接口的驅動程序,因此相對具有優(yōu)勢。
下表是CF卡設置成True IDE Mode時候的真值表
這樣,通過CF卡的三條地址線(A2~A0)和兩個片選信號(/CS1和/CS0),就能訪問表中的所有寄存器,通過這些寄存器,CPU就能實現對CF卡的讀寫操作,同時還可以監(jiān)控CF的狀態(tài)。
CF卡內比較重要的幾個寄存器分別是Error Register監(jiān)控是否出現扇區(qū)錯誤或者不可根正的錯誤,以及是否出現扇區(qū)溢出;Sector Count,Sector No.Cylinder Low,Cylinder High這四個寄存器是用于定位需要進行讀寫操作的空間的寄存器,與IDE硬盤類似,如果CF卡處于True IDE Mode,那么它也是用柱面加扇區(qū)來定位需要讀寫的空間的。CylinderLow,Cylinder High這兩個寄存器都是8Bits,組成一個16bit Cylinder地址。SectorNo.寄存器指明了扇區(qū)開始的地址,Sector Count寄存器指明了扇區(qū)的偏移量;Status該寄存器的內容表明了CF卡當前的狀態(tài),是否忙,是否出現可恢復性的錯誤,是否出現操作錯誤等;Control該寄存器主要是用來控制CF卡的復位和中斷。
如圖1所示,用CPU通用并行總線的AD0~AD4這5條地址線加片選信號譯碼得到用于訪問CF寄存器地址空間的A0~A2和/CS0,/CS1,當然,還包括CF的中斷連接,以下為CPLD中的邏輯代碼CF_ADD(0)<=IO_AD_REG(0);CF_ADD(1)<=IO_AD_REG(1);CF_ADD(2)<=IO_AD_REG(2);CF_CS(0)<=IO_CS_L or IO_AD4 or(not IO_AD3);CF_CS(1)<=IO_CS_L or(not IO_AD4)or(not IO_AD3);CF_WR<=IO_CS_L or IO_WR_L;CF_RD<=IO_CS_L or IO_OE_L;IO_RDY<=IO_CS_L or CF RDY;CPU_IRQ<=CF_IRQ。
這樣,就實現了CF與CPU的連接,CPU就可對CF進行讀寫訪問了。
CF卡是通過/CD0和/CD1來控制在位信息的。在CF卡內部/CD0和/CD1是直接強下拉到地的,而在CF stocket中,/CD0和/CD1是弱上拉到3.3V。當CF卡插入的時候,CF stocket的/CD0和/CD1被CF拉低,以此觸發(fā)CPU INT,表明此時CF已經插入。此時CPU可以通過GPIO或者通用并行總線打開電子開關,給CF卡供電,可以開始對CF卡操作。在拔出CF卡之前,CPU通過GPIO或者通用并行總線關閉電子開關,停止給CF卡供電之后,CF卡就可以順利拔出。但以上的熱插拔操作在拔出的時候,還不是很智能,必須輸入一個關閉CF卡電源的命令,確保CF卡電源已經關閉之后,才能拔出,不能做到即插即用。
如圖2所示,CF的stocket槽中/CD0和/CD1針的長度要比電源針的長度短至少1.5mm。那么在拔出CF的時候,/CD0和/CD1在CF卡斷電之前即電源針和CF卡分離之前就已經跳高,即/CD0和/CD1比電源先和CF卡分離。此時會引發(fā)一個CPU_INT的上跳,CPU在監(jiān)控到這個上跳信號之后,就可以把CF卡的電源關閉,此時就可以順利拔出。如果要實現以上的熱插拔,那么CPU必須支持邊緣中斷信號觸發(fā),如果CPU只支持電平信號的中斷觸發(fā),那么就必須在CPLD中把/CD0和/CD1跳變轉換成電平中斷信號。以下為其邏輯代碼<pre listing-type="program-listing">process(GRESET,GCLK)begin if(GRESET=′0′)then CD0_REG<=′0′; CD1_REG<=′0′; CD0_REG_CMP<=′0′; CD1_REG_CMP<=′0′; Elsif(GCLK′event and GCLK=′1′)thenif(((CD0_REG_CMP=′0′)and(CD0_REG=′1′))and((CD1_REG_CMP=′0′)and(CD1_REG=′1′)))then CPU_INT<=′0′;end if;CD0_REG<=/CD0;CD1_REG<=/CD1;CD0_REG_CMP<=CD0_REG; CD1_REG_CMP<=CD1_REG;<!-- SIPO <DP n="4"> --><dp n="d4"/> end if;end process.</pre>
權利要求
1.一種CPLD實現CF卡移動存儲的方法,包括以下步驟選擇CF卡的True IDE Mode接口模式,并使CF卡通過CPLD與CPU連接,即設置CPLD使CPU的地址線與CF卡的地址線及片選端連接;CPU對CF卡發(fā)出讀寫命令,對CF卡進行讀寫操作。
2.如權利要求1所述的CPLD實現CF卡移動存儲的方法,其特征在于,所述CF卡的socket槽中的CD0、CD1插針長度應該比電源插針短,兩者之間的長度差應保證CF卡在拔出的時候,CD0和CD1已經和插槽脫離,CF還保持供電狀態(tài);CF卡的中斷通過CPLD與CPU連接,如果CPU僅支持電平信號的中斷觸發(fā),則在CPLD中把CD0、CD1跳變轉換成電平中斷信號。
3.如權利要求1所述的CPLD實現CF卡移動存儲的方法,其特征在于,所述CPU的地址線與CF卡的地址線及片選端連接具體為用CPU通用串行總線的五條地址線通過CPLD與CF卡的三條地址線和兩個片選端連接。
全文摘要
本發(fā)明公開了一種CPLD實現CF卡移動存儲的方法,該方法包括選擇CF卡的True IDE Mode接口模式,并使CF卡通過CPLD與CPU連接,即設置CPLD使CPU的地址線與CF卡的地址線及片選端連接;CPU對CF卡發(fā)出讀寫命令,對CF卡進行讀寫操作。并且,CF卡的socket槽中的CD0、CD1插針長度應該比電源插針短,兩者之間的長度差應保證CF卡在拔出的時候,CD0和CD1已經和插槽脫離,CF還保持供電狀態(tài);CF卡的中斷通過CPLD與CPU連接,如果CPU僅支持電平信號的中斷觸發(fā),則在CPLD中把CD0、CD1跳變轉換成電平中斷信號。本發(fā)明通過的CPLD代替接口芯片,成本比較低。
文檔編號G06F13/00GK1540529SQ200310103420
公開日2004年10月27日 申請日期2003年10月31日 優(yōu)先權日2003年10月31日
發(fā)明者周川, 周 川 申請人:港灣網絡有限公司