硬盤讀寫裝置的控制方法及裝置制造方法
【專利摘要】本發(fā)明公開一種硬盤讀寫裝置的控制方法及裝置,用于實(shí)現(xiàn)無主機(jī)干預(yù)和控制地將數(shù)據(jù)正確寫入/讀出硬盤。該硬盤讀寫裝置的控制方法包括:對硬盤讀寫裝置進(jìn)行連接初始化控制;控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸;判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果;以及在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)行中斷初始化控制。采用本發(fā)明的控制方法,可以使硬盤讀寫裝置體積小、靈活性高、速度快,能夠獨(dú)立應(yīng)用于視頻、音頻等需要大量數(shù)據(jù)存儲的系統(tǒng)中,完成對數(shù)據(jù)的高速安全存儲。
【專利說明】硬盤讀寫裝置的控制方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)存儲【技術(shù)領(lǐng)域】,更具體的,涉及一種硬盤讀寫裝置的控制方法及裝置。
【背景技術(shù)】
[0002]硬盤接口是主機(jī)與硬盤之間傳輸命令和數(shù)據(jù)的連接部件,接口的優(yōu)劣將直接影響硬盤的性能。IDE(ATA)硬盤接口具有兼容性強(qiáng),數(shù)據(jù)傳輸穩(wěn)定,價格低廉等特點(diǎn)被大量應(yīng)用于圖像、視頻和音頻處理以及信息家電等需要存儲大量數(shù)據(jù)的設(shè)備中。通常情況下,由硬件電路構(gòu)成主機(jī)方ATA接口控制器需要主機(jī)的軟件控制和干預(yù),但這種由主機(jī)控制的存儲結(jié)構(gòu)復(fù)雜,重量大,不夠靈活,對環(huán)境的適應(yīng)性不佳,不能滿足低成本,嵌入式和個性化的數(shù)據(jù)存儲需求。
[0003]因此,現(xiàn)有技術(shù)中存在無法有效節(jié)省處理器和內(nèi)存資源,提高數(shù)據(jù)存儲速度的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明公開一種硬盤讀寫裝置的控制方法及裝置,用于解決現(xiàn)有技術(shù)中存在的無法有效節(jié)省處理器和內(nèi)存資源,提高數(shù)據(jù)存儲速度的問題。
[0005]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的第一方面,提供一種硬盤讀寫裝置的控制方法,并采用如下技術(shù)方案:
[0006]硬盤讀寫裝置的控制方法,包括:對硬盤讀寫裝置進(jìn)行連接初始化控制;控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸;判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果;以及在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)行中斷初始化控制。
[0007]進(jìn)一步地,所述對硬盤讀寫裝置進(jìn)行連接初始化控制包括:接收硬盤端發(fā)出直接內(nèi)存存取請求;根據(jù)所述存取請求控制所述硬盤讀寫裝置在第一預(yù)設(shè)時間內(nèi)作出將直接存儲器信號置高的響應(yīng);在第二預(yù)設(shè)時間內(nèi)控制所述硬盤讀寫裝置的STOP信號置O以及HDMARDY信號置I ;發(fā)送一通知信息至所述硬盤端,所述通知信息用于通知所述硬盤端準(zhǔn)備接收數(shù)據(jù);在獲取所述硬盤端產(chǎn)生第一個所述選通脈沖信號的跳變后,將第一組數(shù)據(jù)傳輸給數(shù)據(jù)總線。
[0008]進(jìn)一步地,所述對所述硬盤讀寫裝置進(jìn)行中斷初始化控制包括:控制所述硬盤端使所述直接內(nèi)存存取請求無效;控制所述硬盤讀寫裝置在第三預(yù)設(shè)時長內(nèi)置高所述STOP信號、復(fù)位所述HDMARDY信號;在所述硬盤端收到所述STOP信號跳變后的所述第四預(yù)設(shè)時長內(nèi)置高所述選通脈沖信號;控制所述硬盤讀寫裝置產(chǎn)生DMACK-跳變沿,同時將CRC校驗(yàn)傳入所述數(shù)據(jù)總線。
[0009]進(jìn)一步地,所述控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸包括:觸發(fā)設(shè)定程序的空閑狀態(tài)st_idle,當(dāng)收到讀/寫命令時進(jìn)入所述讀狀態(tài)St_readStl ;通過設(shè)定地址線讀取所述硬盤端的狀態(tài)寄存器,查看所述硬盤端是否滿足所述空閑狀態(tài)st_idle ;在所述硬盤端滿足所述空閑狀態(tài)st_idle時,通過寫設(shè)備/磁頭寄存器選定將要訪問設(shè)備I或者設(shè)備O ;向特征寄存器寫03h開始設(shè)定傳輸模式,扇區(qū)數(shù)寄存器高5位寫入01000,表示選定所述高級直接內(nèi)存訪問方式模式,低3位寫入010,表示選用模式2,最后向命令寄存器寫入set feature命令;所述扇區(qū)數(shù)寄存器存儲本次需要傳輸數(shù)據(jù)所占扇區(qū)數(shù),當(dāng)為O時表示需要傳輸256個扇區(qū)的數(shù)據(jù);扇區(qū)號寄存器、柱面數(shù)低/高8位寄存器以及設(shè)備/磁頭寄存器寫入本次硬盤操作的起始扇區(qū)地址物理地址或邏輯地址;判斷所述數(shù)據(jù)傳輸?shù)臓顟B(tài),若為讀操作,則在所述選通脈沖信號的上升和下降沿接收數(shù)據(jù);若為寫操作,則由所述硬盤讀寫裝置按預(yù)設(shè)時間要求產(chǎn)生HSTROBE波形,并在跳變沿將數(shù)據(jù)傳入數(shù)據(jù)總線。
[0010]根據(jù)本發(fā)明的另外一個方面,提供一種硬盤讀寫裝置的控制裝置,并采用如下技術(shù)方案:
[0011]硬盤讀寫裝置的控制裝置,包括:第一控制模塊,用于對硬盤讀寫裝置進(jìn)行連接初始化控制;第二控制模塊,用于控制所述硬盤讀寫裝置在發(fā)送給動態(tài)機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸;第一判斷模塊,用于判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果;以及第三控制模塊,用于在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)行中斷初始化控制。
[0012]進(jìn)一步地,所述第一控制模塊包括:接收模塊,用于接收硬盤端發(fā)出直接內(nèi)存存取請求;響應(yīng)模塊,用于根據(jù)所述存取請求控制所述硬盤讀寫裝置在第一預(yù)設(shè)時間內(nèi)作出將直接存儲器信號置高的響應(yīng);第一控制子模塊,用于在第二預(yù)設(shè)時間內(nèi)控制所述硬盤讀寫裝置的STOP信號置O以及HDMARDY信號置I ;發(fā)送模塊,用于發(fā)送一通知信息至所述硬盤端,所述通知信息用于通知所述硬盤端準(zhǔn)備接收數(shù)據(jù);傳輸模塊,用于在獲取所述硬盤端產(chǎn)生第一個所述選通脈沖信號的跳變后,將第一組數(shù)據(jù)傳輸給數(shù)據(jù)總線。
[0013]進(jìn)一步地,所述第三控制模塊包括:第一子模塊,用于控制所述硬盤端使所述直接內(nèi)存存取請求無效;第二子模塊,用于控制所述硬盤讀寫裝置在第三預(yù)設(shè)時長內(nèi)置高所述STOP信號、復(fù)位所述HDMARDY信號;置高模塊,用于在所述硬盤端收到所述STOP信號跳變后的所述第四預(yù)設(shè)時長內(nèi)置高所述選通脈沖信號;第三子模塊,用于控制所述硬盤讀寫裝置產(chǎn)生DMACK-跳變沿,同時將CRC校驗(yàn)傳入所述數(shù)據(jù)總線。
[0014]進(jìn)一步地,所述第二控制模塊包括:觸發(fā)模塊,用于觸發(fā)設(shè)定程序的空閑狀態(tài)st_idle,當(dāng)收到讀/寫命令時進(jìn)入所述讀狀態(tài)st_readstl ;查看模塊,用于通過設(shè)定地址線讀取所述硬盤端的狀態(tài)寄存器,查看所述硬盤端是否滿足所述空閑狀態(tài)st_idle ;寫模塊,用于在所述硬盤端滿足所述空閑狀態(tài)st_idle時,通過寫設(shè)備/磁頭寄存器選定將要訪問設(shè)備I或者設(shè)備O ;設(shè)定模塊,用于向特征寄存器寫03h開始設(shè)定傳輸模式,扇區(qū)數(shù)寄存器高5位寫入01000,表示選定所述高級直接內(nèi)存訪問方式模式,低3位寫入010,表示選用模式2,最后向命令寄存器寫入set feature命令;存儲模塊,用于所述扇區(qū)數(shù)寄存器存儲本次需要傳輸數(shù)據(jù)所占扇區(qū)數(shù),當(dāng)為O時表示需要傳輸256個扇區(qū)的數(shù)據(jù);扇區(qū)號寄存器、柱面數(shù)低/高8位寄存器以及設(shè)備/磁頭寄存器寫入本次硬盤操作的起始扇區(qū)地址物理地址或邏輯地址;以及第二判斷模塊,用于判斷所述數(shù)據(jù)傳輸?shù)臓顟B(tài),若為讀操作,則在所述選通脈沖信號的上升和下降沿接收數(shù)據(jù);若為寫操作,則由所述硬盤讀寫裝置按預(yù)設(shè)時間要求產(chǎn)生HSTROBE波形,并在跳變沿將數(shù)據(jù)傳入數(shù)據(jù)總線。
[0015]本發(fā)明在FPGA(現(xiàn)場可編程門陣列)上設(shè)計實(shí)現(xiàn)了一種無主機(jī)干預(yù)的UltraDMA(高級直接內(nèi)存訪問)讀寫控制器,具有體積小、靈活性高、速度快的優(yōu)點(diǎn),可用于實(shí)現(xiàn)海量數(shù)據(jù)存儲,具有更好的實(shí)用性。
【專利附圖】
【附圖說明】
[0016]附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0017]圖1表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置的控制方法示意圖;
[0018]圖2表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置高級直接內(nèi)存訪問硬盤端數(shù)據(jù)輸入初始化過程時序邏輯圖;
[0019]圖3表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置高級直接內(nèi)存訪問數(shù)據(jù)傳輸過程的狀態(tài)圖;
[0020]圖4表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置高級直接內(nèi)存訪問硬盤端啟動終止連接時序邏輯圖;
[0021]圖5表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)輸入初始化階段示意圖;
[0022]圖6表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)傳輸過程不意圖;
[0023]圖7表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)輸入終止階段示意圖;
[0024]圖8表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)輸出初始化階段示意圖;
[0025]圖9表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)輸出終止階段示意圖;
[0026]圖10表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置占用FPGA資源情況;
[0027]圖11表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置的控制裝置總體架構(gòu);
[0028]圖12表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置的控制裝置接口定義圖;
[0029]圖13表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置的控制裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0030]以下結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明,但是本發(fā)明可以由權(quán)利要求限定和覆蓋的多種不同方式實(shí)施。
[0031]圖1表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置的控制方法示意圖。
[0032]參見圖1所示,硬盤讀寫裝置的控制方法包括:
[0033]SlOl:對硬盤讀寫裝置進(jìn)行連接初始化控制;
[0034]S103:控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸;
[0035]S105:判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果;[0036]S107:在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)行中斷初始化控制。
[0037]在步驟SlOl中,參見圖2所示的高級直接內(nèi)存訪問硬盤端數(shù)據(jù)輸入初始化過程時序邏輯圖。首先由硬盤端發(fā)出直接內(nèi)存存取請求,主機(jī)收到請求后在第一預(yù)設(shè)時間內(nèi)作出將直接存儲器信號置高的響應(yīng),同時在第二預(yù)設(shè)時間內(nèi)控制所述硬盤讀寫裝置的STOP信號置O以及HDMARDY信號置I,通知硬盤主機(jī)端已作好接收數(shù)據(jù)的準(zhǔn)備,此后,硬盤端產(chǎn)生第一個選通脈沖信號的跳變,并將第一組數(shù)據(jù)傳輸給數(shù)據(jù)總線,完成連接初始化控制。作為系統(tǒng)驗(yàn)證,圖5是周Chipscope軟件抓取的數(shù)據(jù)輸入初始化階段示意圖,如圖示首先硬盤端發(fā)出直接內(nèi)存存取請求(dmarq= I),控制器端作為響應(yīng)使DMACK有效(低電平有效),然后STOP復(fù)位、hdmardy有效,表示主控制器準(zhǔn)備好接收數(shù)據(jù)。硬盤端在收到信號后開始產(chǎn)生第一個選通脈沖信號跳變,同時傳出第一組16位數(shù)據(jù),至此初始化結(jié)束。圖8為用Chipscope軟件抓取的數(shù)據(jù)輸出初始化階段示意圖,硬盤與控制器“握手”完成后,由控制器產(chǎn)生第一個HSTROBE (寫)跳變,同時把第一個數(shù)據(jù)(OOOOh)傳入數(shù)據(jù)總線,此后數(shù)據(jù)按順序傳輸。
[0038]在步驟S103中,參見圖3所示的高級直接內(nèi)存訪問數(shù)據(jù)傳輸過程的狀態(tài)圖,詳細(xì)描述了數(shù)據(jù)傳輸過程的各個狀態(tài),包括:
[0039]S301:空閑狀態(tài) st_idle ;
[0040]在此步驟中,設(shè)定程序首先觸發(fā)此狀態(tài),當(dāng)收到讀/寫命令時進(jìn)入St_readStl狀態(tài),否則保持。
[0041]S302:讀狀態(tài)寄存器 st_readstl ;
[0042]在此步驟中,通過設(shè)定地址線(CS&DA =“10111”)讀硬盤狀態(tài)寄存器,查看是否滿足BSY = 0&DRQ = 0(硬盤空閑),滿足進(jìn)入下一狀態(tài),否則繼續(xù)訪問直到硬盤空閑為止。
[0043]S303:設(shè)備選擇狀態(tài) st_selectdev ;
[0044]在此步驟中,通過寫設(shè)備/磁頭寄存器(CS&DA =“10110”)選定將要訪問設(shè)備I或者設(shè)備O。
[0045]S304:讀狀態(tài)寄存器 st_readst2 ;
[0046]在此步驟中,讀取硬盤狀態(tài),空閑進(jìn)入下一狀態(tài),否則保持。
[0047]S305:設(shè)置接 口特性 st_setfeature ;
[0048]在此步驟中,選定設(shè)備后,向特征寄存器寫03h開始設(shè)定傳輸模式:扇區(qū)數(shù)寄存器高5位寫入01000,表示選定高級直接內(nèi)存訪問模式,低3位寫入010,表示選用模式2,最后向命令寄存器寫入set feature命令(EFh),設(shè)置結(jié)束。
[0049]S306:讀狀態(tài)寄存器 st_readst3。
[0050]S307:寫命令參數(shù) st_weparameter ;
[0051]在此步驟中,扇區(qū)數(shù)寄存器存儲本次需要傳輸數(shù)據(jù)所占扇區(qū)數(shù),當(dāng)為O時表示需要傳輸256個扇區(qū)的數(shù)據(jù);扇區(qū)號寄存器、柱面數(shù)低/高8位寄存器以及設(shè)備/磁頭寄存器寫入本次硬盤操作的起始扇區(qū)地址(物理地址或邏輯地址)。
[0052]S308:寫命令 st_wec ;
[0053]在此步驟中,讀操作時寫入命令C8h (Read DMA),寫操作時寫入命令CAh (Wri teDMA)。
[0054]S309:高級直接內(nèi)存訪問初始化st_initiate ;[0055]在此步驟中,進(jìn)入此狀態(tài)后首先等待DMARQ信號置一,然后高級直接內(nèi)存訪問控制器開始按圖1時序設(shè)定STOP (讀/寫)、DMACK (讀/寫)、HDMARDY (讀)和HSTROBE (寫),直到收到或輸出第一組數(shù)據(jù)后進(jìn)入數(shù)據(jù)傳輸狀態(tài)。
[0056]S310:數(shù)據(jù)傳輸狀態(tài) st_transdata ;
[0057]在此步驟中,若為讀操作,則在DSTR0BE的上升和下降沿接收數(shù)據(jù)即可;若為寫操作,則由高級直接內(nèi)存訪問控制器按mode2的時間要求(Cycle = 54ns)產(chǎn)生HSTROBE波形,并在跳變沿將數(shù)據(jù)傳入數(shù)據(jù)總線(ddi(15:0))。
[0058]S311:終止連接和發(fā)送CRC校驗(yàn)值st_crc ;
[0059]在此步驟中,當(dāng)一個扇區(qū)數(shù)據(jù)傳輸完(未開中斷)或者所有數(shù)據(jù)傳輸完(開中斷)時,在DMACK的跳變沿將控制器計算的CRC值寫入硬盤。
[0060]S312:讀狀態(tài)寄存器 st_readst4 ;
[0061]在此步驟中,若BSY = 0&DRQ = O,則回到st_idle狀態(tài),結(jié)束一次傳輸^BSY =1&DRQ = O,則保持;若 BSY = O&DRQ = 1&DMARQ = I (未開中斷),則進(jìn)入 st_initiate,繼續(xù)數(shù)據(jù)傳輸。
[0062]S313:錯誤狀態(tài)St_err,當(dāng)有錯誤發(fā)生時進(jìn)入此狀態(tài)。
[0063]作為系統(tǒng)驗(yàn)證,圖6為硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)傳輸過程示意圖,即從硬盤讀數(shù)據(jù)過程。此次讀操作讀取硬盤主引導(dǎo)記錄扇區(qū),此扇區(qū)中“引導(dǎo)指示符”的值應(yīng)為0x80,起始磁頭和起始扇區(qū)的值一般為0x01。圖6中0180(反字節(jié)顯示:高地址在前,低地址在后)即為讀取的“引導(dǎo)指示符”和起始磁頭,接下來的0001即為起始扇區(qū),讀取結(jié)果與理論相符。
[0064]在步驟S107中,參見圖4所示的高級直接內(nèi)存訪問硬盤端啟動終止連接時序邏輯圖。首先硬盤端使直接內(nèi)存存取請求無效,主機(jī)端檢測到直接內(nèi)存存取請求無效后在第三預(yù)設(shè)時長內(nèi)置高STOP信號、復(fù)位HDMARDY信號,硬盤端收到STOP信號跳變后的第四預(yù)設(shè)時長內(nèi)置高所述選通脈沖信號,表明此后沒有數(shù)據(jù)等待傳輸。之后主機(jī)端產(chǎn)生DMACK-跳變沿,同時將CRC校驗(yàn)傳入所述數(shù)據(jù)總線,硬盤收到校驗(yàn)結(jié)果與自己的校驗(yàn)值進(jìn)行比較,以此判斷傳輸是否錯誤,完成整個高級直接內(nèi)存訪問控制過程。作為系統(tǒng)驗(yàn)證,圖7是硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)輸入終止階段示意圖。其中讀到最后兩字節(jié)數(shù)據(jù)為AA55,即“引導(dǎo)區(qū)標(biāo)記”,與實(shí)際情況相同;圖中最后的F445為CRC校驗(yàn)值,在DMACK的跳變到來時回傳給硬盤,由硬盤判斷是否正確??刂破鲗⒆x到數(shù)據(jù)存入接收緩沖區(qū),等待CPU讀取。圖9為硬盤讀寫裝置用Chipscope軟件抓取的數(shù)據(jù)輸出終止階段示意圖。硬盤首先使ddmardy (低電平有效)和dmarq無效,主控制器端則產(chǎn)生stop信號,并在最后一個HSTROBE (寫)跳變沿傳輸最后兩字節(jié)數(shù)據(jù)(OOFFh)。用戶數(shù)據(jù)傳輸完后在DMACK跳變沿將CRC校驗(yàn)值(8985h)傳給硬盤。
[0065]圖10為系統(tǒng)驗(yàn)證過程中硬盤讀寫裝置占用FPGA資源情況。從圖中也可以看出,采用上述技術(shù)方案,整個過程在無CPU環(huán)境下進(jìn)行,控制器的讀/寫由各自使能信號控制完成,體積小、靈活性高、速度快,可獨(dú)立應(yīng)用于視頻、音頻等需要大量數(shù)據(jù)存儲的系統(tǒng)中,完成對數(shù)據(jù)的高速安全存儲。
[0066]硬盤讀寫裝置的控制裝置總體架構(gòu)如圖11所示,設(shè)計的控制器包括高級直接內(nèi)存訪問讀寫控制模塊、接收緩沖模塊和發(fā)送緩沖模塊。其中高級直接內(nèi)存訪問讀寫控制是設(shè)計的主要模塊,用于實(shí)現(xiàn)以高級直接內(nèi)存訪問方式訪問硬盤的整個流程,包括對硬盤寄存器的訪問和用戶數(shù)據(jù)的傳輸;接收/發(fā)送緩沖模塊實(shí)現(xiàn)對用戶數(shù)據(jù)的緩存,設(shè)計時采用雙端口 RAM實(shí)現(xiàn)。
[0067]具體地接口連接設(shè)計如圖12所示,該圖為將VHDL代碼經(jīng)ISE10.1綜合后的RTL頂層封裝圖,右側(cè)信號是由控制器輸出到硬盤的控制信號,左側(cè)信號為輸入高級直接內(nèi)存訪問控制器的信號。設(shè)計采用Xilinx的Virtex-1I開發(fā)板實(shí)現(xiàn),由于開發(fā)板上沒有IDE接口,故將硬盤經(jīng)自己設(shè)計的轉(zhuǎn)接卡接入J5擴(kuò)展口。J5可以提供37個雙向接口、一根地線和兩根直流電源線。連接時將IDE的7根地線與J5地線相連,其余32根信號線自定義接入。定義各信號線的電平驅(qū)動時均采用FPGA提供的LVTTL(電平標(biāo)準(zhǔn))方式即可。
[0068]圖13表示本發(fā)明實(shí)施例所述的硬盤讀寫裝置的控制裝置結(jié)構(gòu)圖。
[0069]參見圖13所示,硬盤讀寫裝置的控制裝置包括:第一控制模塊1301,用于對硬盤讀寫裝置進(jìn)行連接初始化控制;第二控制模塊1303,用于控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸;第一判斷模塊1305,用于判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果;第三控制模塊1307,用于在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)行中斷初始化控制。
[0070]進(jìn)一步地,第一控制模塊包括:接收模塊(圖中未示),用于接收硬盤端發(fā)出直接內(nèi)存存取請求;響應(yīng)模塊(圖中未示),用于根據(jù)所述存取請求控制所述硬盤讀寫裝置在第一預(yù)設(shè)時間內(nèi)作出將直接存儲器信號置高的響應(yīng);第一控制子模塊(圖中未示),用于在第二預(yù)設(shè)時間內(nèi)控制所述硬盤讀寫裝置的STOP信號置O以及HDMARDY信號置I ;發(fā)送模塊(圖中未示),用于發(fā)送一通知信息至所述硬盤端,所述通知信息用于通知所述硬盤端準(zhǔn)備接收數(shù)據(jù);傳輸模塊(圖中未示),用于在獲取所述硬盤端產(chǎn)生第一個所述選通脈沖信號的跳變后,將第一組數(shù)據(jù)傳輸給數(shù)據(jù)總線。
[0071]進(jìn)一步地,第二控制模塊包括:觸發(fā)模塊(圖中未示),用于觸發(fā)設(shè)定程序的空閑狀態(tài)st_idle,當(dāng)收到讀/寫命令時進(jìn)入所述讀狀態(tài)st_readstl ;查看模塊(圖中未示),用于通過設(shè)定地址線讀取所述硬盤端的狀態(tài)寄存器,查看所述硬盤端是否滿足所述空閑狀態(tài)st_idle ;寫模塊(圖中未示),用于在所述硬盤端滿足所述空閑狀態(tài)st_idle時,通過寫設(shè)備/磁頭寄存器選定將要訪問設(shè)備I或者設(shè)備O ;設(shè)定模塊(圖中未示),用于向特征寄存器寫03h開始設(shè)定傳輸模式,扇區(qū)數(shù)寄存器高5位寫入01000,表示選定所述高級直接內(nèi)存訪問方式模式,低3位寫入010,表示選用模式2,最后向命令寄存器寫入set feature命令;存儲模塊(圖中未示),用于所述扇區(qū)數(shù)寄存器存儲本次需要傳輸數(shù)據(jù)所占扇區(qū)數(shù),當(dāng)為O時表示需要傳輸256個扇區(qū)的數(shù)據(jù);扇區(qū)號寄存器、柱面數(shù)低/高8位寄存器以及設(shè)備/磁頭寄存器寫入本次硬盤操作的起始扇區(qū)地址物理地址或邏輯地址;第二判斷模塊(圖中未示),用于判斷所述數(shù)據(jù)傳輸?shù)臓顟B(tài),若為讀操作,則在所述選通脈沖信號的上升和下降沿接收數(shù)據(jù);若為寫操作,則由所述硬盤讀寫裝置按預(yù)設(shè)時間要求產(chǎn)生HSTROBE波形,并在跳變沿將數(shù)據(jù)傳入數(shù)據(jù)總線。
[0072]進(jìn)一步地,第三控制模塊包括:第一子模塊(圖中未示),用于控制所述硬盤端使所述直接內(nèi)存存取請求無效;第二子模塊(圖中未示),用于控制所述硬盤讀寫裝置在第三預(yù)設(shè)時長內(nèi)置高所述STOP信號、復(fù)位所述HDMARDY信號;置高模塊(圖中未示),用于在所述硬盤端收到所述STOP信號跳變后的所述第四預(yù)設(shè)時長內(nèi)置高所述選通脈沖信號;第三子模塊(圖中未示),用于控制所述硬盤讀寫裝置產(chǎn)生DMACK-跳變沿,同時將CRC校驗(yàn)傳入所述數(shù)據(jù)總線。
[0073]采用上述技術(shù)方案,用FPGA實(shí)現(xiàn)符合ATA標(biāo)準(zhǔn)的UltraDMA讀寫控制器,能夠獨(dú)立完成對硬盤的讀寫操作。若對控制器稍加改動,如配合相應(yīng)文件系統(tǒng),如FAT32或者EXT,將可用于嵌入式設(shè)備中,實(shí)現(xiàn)海量數(shù)據(jù)存儲,使系統(tǒng)具有更好的實(shí)用性。
【權(quán)利要求】
1.一種硬盤讀寫裝置的控制方法,其特征在于,包括: 對硬盤讀寫裝置進(jìn)行連接初始化控制; 控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸; 判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果; 在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)行中斷初始化控制。
2.如權(quán)利要求1所述的控制方法,其特征在于,所述對硬盤讀寫裝置進(jìn)行連接初始化控制包括: 接收硬盤端發(fā)出直接內(nèi)存存取請求; 根據(jù)所述存取請求控制所述硬盤讀寫裝置在第一預(yù)設(shè)時間內(nèi)作出將直接存儲器信號置聞的響應(yīng); 在第二預(yù)設(shè)時間內(nèi)控制所述硬盤讀寫裝置的STOP信號置O以及HDMARDY信號置I ; 發(fā)送一通知 信息至所述硬盤端,所述通知信息用于通知所述硬盤端準(zhǔn)備接收數(shù)據(jù); 在獲取所述硬盤端產(chǎn)生第一個所述選通脈沖信號的跳變后,將第一組數(shù)據(jù)傳輸給數(shù)據(jù)總線。
3.如權(quán)利要求1所述的控制方法,其特征在于,所述對所述硬盤讀寫裝置進(jìn)行中斷初始化控制包括: 控制所述硬盤端使所述直接內(nèi)存存取請求無效; 控制所述硬盤讀寫裝置在第三預(yù)設(shè)時長內(nèi)置高所述STOP信號、復(fù)位所述HDMARDY信號; 在所述硬盤端收到所述STOP信號跳變后的所述第四預(yù)設(shè)時長內(nèi)置高所述選通脈沖信號; 控制所述硬盤讀寫裝置產(chǎn)生DMACK-跳變沿,同時將CRC校驗(yàn)傳入所述數(shù)據(jù)總線。
4.如權(quán)利要求1所述的控制方法,其特征在于,所述控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸包括: 觸發(fā)設(shè)定程序的空閑狀態(tài)st_idle,當(dāng)收到讀/寫命令時進(jìn)入所述讀狀態(tài)st_readstl ; 通過設(shè)定地址線讀取所述硬盤端的狀態(tài)寄存器,查看所述硬盤端是否滿足所述空閑狀態(tài) st_idle ; 在所述硬盤端滿足所述空閑狀態(tài)st_idle時,通過寫設(shè)備/磁頭寄存器選定將要訪問設(shè)備I或者設(shè)備O ; 向特征寄存器寫03h開始設(shè)定傳輸模式,扇區(qū)數(shù)寄存器高5位寫入01000,表示選定所述高級直接內(nèi)存訪問方式模式,低3位寫入010,表示選用模式2,最后向命令寄存器寫入set feature 命令; 所述扇區(qū)數(shù)寄存器存儲本次需要傳輸數(shù)據(jù)所占扇區(qū)數(shù),當(dāng)為O時表示需要傳輸256個扇區(qū)的數(shù)據(jù);扇區(qū)號寄存器、柱面數(shù)低/高8位寄存器以及設(shè)備/磁頭寄存器寫入本次硬盤操作的起始扇區(qū)地址物理地址或邏輯地址; 判斷所述數(shù)據(jù)傳輸?shù)臓顟B(tài),若為讀操作,則在所述選通脈沖信號的上升和下降沿接收數(shù)據(jù);若為寫操作,則由所述硬盤讀寫裝置按預(yù)設(shè)時間要求產(chǎn)生HSTR0BE波形,并在跳變沿將數(shù)據(jù)傳入數(shù)據(jù)總線。
5.一種硬盤讀寫裝置的控制裝置,其特征在于,包括: 第一控制模塊,用于對硬盤讀寫裝置進(jìn)行連接初始化控制; 第二控制模塊,用于控制所述硬盤讀寫裝置在發(fā)送給動態(tài)隨機(jī)存取控制器的選通脈沖信號的上升沿與下降沿均進(jìn)行數(shù)據(jù)傳輸; 第一判斷模塊,用于判斷所述數(shù)據(jù)傳輸是否完成,得到一判斷結(jié)果; 第三控制模塊,用于在所述判斷結(jié)果為所述數(shù)據(jù)傳輸完成時,對所述硬盤讀寫裝置進(jìn)打中斷初始化控制。
6.如權(quán)利要求5所述的控制裝置,其特征在于,所述第一控制模塊包括: 接收模塊,用于接收硬盤端發(fā)出直接內(nèi)存存取請求; 響應(yīng)模塊,用于根據(jù)所述存取請求控制所述硬盤讀寫裝置在第一預(yù)設(shè)時間內(nèi)作出將直接存儲器信號置高的響應(yīng); 第一控制子模塊,用于在第二預(yù)設(shè)時間內(nèi)控制所述硬盤讀寫裝置的STOP信號置O以及HDMARDY信號置I ; 發(fā)送模塊,用于發(fā) 送一通知信息至所述硬盤端,所述通知信息用于通知所述硬盤端準(zhǔn)備接收數(shù)據(jù); 傳輸模塊,用于在獲取所述硬盤端產(chǎn)生第一個所述選通脈沖信號的跳變后,將第一組數(shù)據(jù)傳輸給數(shù)據(jù)總線。
7.如權(quán)利要求5所述的控制裝置,其特征在于,所述第三控制模塊包括: 第一子模塊,用于控制所述硬盤端使所述直接內(nèi)存存取請求無效; 第二子模塊,用于控制所述硬盤讀寫裝置在第三預(yù)設(shè)時長內(nèi)置高所述STOP信號、復(fù)位所述HDMARDY信號; 置高模塊,用于在所述硬盤端收到所述STOP信號跳變后的所述第四預(yù)設(shè)時長內(nèi)置高所述選通脈沖信號; 第三子模塊,用于控制所述硬盤讀寫裝置產(chǎn)生DMACK-跳變沿,同時將CRC校驗(yàn)傳入所述數(shù)據(jù)總線。
8.如權(quán)利要求5所述的控制裝置,其特征在于,所述第二控制模塊包括: 觸發(fā)模塊,用于觸發(fā)設(shè)定程序的空閑狀態(tài)st_idle,當(dāng)收到讀/寫命令時進(jìn)入所述讀狀態(tài) st_readstl ; 查看模塊,用于通過設(shè)定地址線讀取所述硬盤端的狀態(tài)寄存器,查看所述硬盤端是否滿足所述空閑狀態(tài)st_idle ; 寫模塊,用于在所述硬盤端滿足所述空閑狀態(tài)st_idle時,通過寫設(shè)備/磁頭寄存器選定將要訪問設(shè)備I或者設(shè)備O; 設(shè)定模塊,用于向特征寄存器寫03h開始設(shè)定傳輸模式,扇區(qū)數(shù)寄存器高5位寫入.01000,表示選定所述高級直接內(nèi)存訪問方式模式,低3位寫入010,表示選用模式2,最后向命令寄存器寫入set feature命令; 存儲模塊,用于所述扇區(qū)數(shù)寄存器存儲本次需要傳輸數(shù)據(jù)所占扇區(qū)數(shù),當(dāng)為O時表示需要傳輸256個扇區(qū)的數(shù)據(jù);扇區(qū)號寄存器、柱面數(shù)低/高8位寄存器以及設(shè)備/磁頭寄存器寫入本次硬盤操作的起始扇區(qū)地址物理地址或邏輯地址;第二判斷模塊,用于判斷所述數(shù)據(jù)傳輸?shù)臓顟B(tài),若為讀操作,則在所述選通脈沖信號的上升和下降沿接收數(shù)據(jù);若為寫操作,則由所述硬盤讀寫裝置按預(yù)設(shè)時間要求產(chǎn)生HSTROBE波形,并在 跳變沿將數(shù)據(jù)傳入數(shù)據(jù)總線。
【文檔編號】G06F3/06GK103995675SQ201410163291
【公開日】2014年8月20日 申請日期:2014年4月21日 優(yōu)先權(quán)日:2014年4月21日
【發(fā)明者】金中朝, 蘇本越, 江偉, 丁曉慧 申請人:安慶師范學(xué)院