隨著電子產(chǎn)品對大容量存儲(chǔ)的要求,硬盤的使用也越來越廣。安防領(lǐng)域的DVR需要把數(shù)據(jù)寫入到硬盤中,數(shù)據(jù)安全領(lǐng)域需要擦除和修復(fù)硬盤的數(shù)據(jù),這些場合都要對硬盤進(jìn)行訪問。
硬盤是一種典型的IDE設(shè)備,對硬盤的訪問涉及到IDE設(shè)備的控制?,F(xiàn)有的方案是用CPU通過PIO控制的方式訪問IDE設(shè)備占用的資源比較多,速度比較慢。本文主要介紹采用高可靠性、低成本的Actel FPGA來實(shí)現(xiàn)IDE設(shè)備控制的接口,為大家提供一種IDE設(shè)備讀寫控制的實(shí)現(xiàn)方案。結(jié)合Actel FPGA單芯片、上電即行、低成本、低功耗、高安全性和高可靠性的優(yōu)點(diǎn),可以應(yīng)用在各種不同需求的場合。
1 概述
(1)功能概述
·與外部Mcu接口采用Intel 8080接口,簡單易用;
·MCU與FPGA通信的帶寬,讀:22MB/s,寫:22MB/s;
·MCu接口可以根據(jù)用戶的需要靈活的修改,如增加數(shù)據(jù)線位寬:
·可以更改設(shè)計(jì)方便的擴(kuò)展多路IDE接口(SATA~口需要另加一顆轉(zhuǎn)換芯片),每個(gè)接口可以掛兩個(gè)mE設(shè)備;
·數(shù)據(jù)傳輸支持P100-P104和UDMA0-UDMA5,高傳輸速度達(dá)IOOMB/s:
·支持硬盤的48bits地址操作模式,支持137GB以上硬盤:
·支持MCU訪問IDE設(shè)備的任意寄存器:
·支持Mcu讀寫IDE設(shè)備的任意扇區(qū)的數(shù)據(jù):
·支持IDE設(shè)備的數(shù)據(jù)高速填充(相當(dāng)于完全格式化),填充速度6SMB/s:
·提供基于Lpczxx系列的例程c函數(shù),減少項(xiàng)目開發(fā)時(shí)間;
·采用Actel Flash構(gòu)架FPGA,高可靠性,低功耗,高安全性:
·FPGA的可編程性使得功能設(shè)計(jì)非常靈活,可以根據(jù)用戶需求定制特殊功能:
·真正完美的單芯片、低成本、低功耗解決方案:
·ActelFpGA的Plasllock和AES雙重加密,保護(hù)您的設(shè)計(jì):
·Actel FPGA的固件錯(cuò)誤免疫使得系統(tǒng)可以工作于較惡劣的環(huán)境中,可靠性極高。
(2)系統(tǒng)框圖
圖1是基于Actel FPGA的IDE控制器的結(jié)構(gòu)圖。該IDE控制器按照模塊化的設(shè)計(jì)方法,由MCu接口、寄存器管理、寄存器譯碼、寫入FIFO、讀出FIFO、PIO控制和LIDMA控制等模塊構(gòu)成。其中,MCU接口模塊把外部的MCU總線轉(zhuǎn)換為內(nèi)部的總線協(xié)議;寄存器管理管理內(nèi)部的寄存器;寄存器譯碼模塊把相關(guān)的寄存器值譯碼成內(nèi)部一些控制參數(shù):寫入FIFO模塊用來在寫入的時(shí)候用作緩沖區(qū);讀出FIFO用來在讀出數(shù)據(jù)的時(shí)候用作緩沖區(qū):PIO控制模塊用來控制PIO類型的數(shù)據(jù)傳輸:UDMA控制模塊用來控制uDMA類型的數(shù)據(jù)傳輸。
IDE控制器的外部接口主要是與MCU的接口和與IDE設(shè)備的接口。MCU的接口用來連接系統(tǒng)中的主控MCU,以構(gòu)成一個(gè)完整的系統(tǒng);IDE設(shè)備接口是標(biāo)準(zhǔn)的IDE接口,用來連接IDE設(shè)備,一個(gè)接口可以最多連接兩個(gè)IDE設(shè)備。
2 各功能模塊介紹
(1)MCU接口模塊
MCu接口模塊需要將外部的MCU的總線轉(zhuǎn)換為FPGA內(nèi)部的總線。這樣內(nèi)部就可以方便的擴(kuò)展模塊。MCU的總線時(shí)序的寫和讀如圖2和圖3所示,寫數(shù)據(jù)是把總線上的數(shù)據(jù)寫入對應(yīng)地址的寄存器中,讀數(shù)據(jù)是將對應(yīng)地址的寄存器讀出。
(2)寄存器管理模塊
寄存器的管理用來管理內(nèi)部的寄存器,所有控制寄存器都通過這個(gè)模塊管理和分配地址。這樣在增加或減少寄存器的時(shí)候就比較的方便和簡單。
寄存器管理模塊的功能框圖如圖4所示。FPGA通過內(nèi)部的總線傳遞過來地址和數(shù)據(jù)相關(guān)的信號。然后通過寄存器管理橫塊轉(zhuǎn)換執(zhí)行的信號傳遞到相關(guān)的執(zhí)行部件,如果是傳遞一個(gè)數(shù)據(jù),就把數(shù)據(jù)送入到相關(guān)的部件;內(nèi)部FPGA執(zhí)行的結(jié)果或待輸出的數(shù)據(jù)需要通過寄存器管理模塊傳遞到FPGA內(nèi)部總線上,然后在通過MCU接口模塊傳遞給外部的MCU。由于寄存器管理的功能比較的多,圖中只是示意性的給出了幾個(gè)信號傳遞的路徑。
(3)寄存器譯碼模塊
寄存器譯碼模塊是把相關(guān)的寄存器值譯碼成相關(guān)的控制參數(shù),例如PIO在不同模式下的時(shí)間參數(shù)是不同的,需要把PIO模式寄存器的值譯碼成對應(yīng)的時(shí)間參數(shù)值。
(4)讀寫FlFO模塊
讀寫EIFO是在數(shù)據(jù)傳輸?shù)臅r(shí)候?qū)τ脖P進(jìn)行DMA讀寫的時(shí)候用到。數(shù)據(jù)寫入的總線先寫入到PIFO中,然后再由FIFO寫入到IDE設(shè)備中;數(shù)據(jù)的讀出總是先讀出到FIFO中,然后再被MCU接收。
(5)PIO控制模塊
PIO控制模塊是控制數(shù)據(jù)以PIO方式傳輸?shù)囊粋€(gè)模塊,通過訪問IDE設(shè)備的控制寄存器來完成。IDE設(shè)備的傳輸方式有兩種,一種是PIO,一種是UDMAo PIO方式可以用來訪問IDE設(shè)備的寄存器,也可以用來傳輸數(shù)據(jù),傳輸數(shù)據(jù)是通過訪問數(shù)據(jù)寄存器來實(shí)現(xiàn)的。伴隨IDE設(shè)備的不斷發(fā)展,PIO模式經(jīng)歷TPIO mode 0-PIO mode 4幾種模式。PIO傳輸在各模式下的傳輸?shù)乃俣热绫韑所示。
PIO模式在傳輸數(shù)據(jù)時(shí)受限于傳輸速率低下和極高的CPU占有率,這種數(shù)據(jù)傳輸模式很快就被淘汰,取而代之的是DMA傳輸模式。
(6)UDMA控制模塊
uDMA控制模塊是控制數(shù)據(jù)以uDMA方式傳輸?shù)囊粋€(gè)模塊。UDMA傳輸在標(biāo)準(zhǔn)協(xié)議中為Ultra DMA,是IDE設(shè)備兩種DMA傳輸方式的一種,另外一種為MultiwordDMA。uDMA傳輸方式是一種高速的數(shù)據(jù)傳輸方式,只能用來傳輸數(shù)據(jù),不能用來訪問IDE設(shè)備的寄存器。UDMA傳輸為了提高傳輸速度,采用雙邊沿的方式實(shí)現(xiàn),其速度在UDMA5模式下能夠達(dá)到100MByte/s。在高速傳輸下為了提高數(shù)據(jù)的穩(wěn)定性,每次數(shù)據(jù)傳輸完畢都進(jìn)行一次CRC的校驗(yàn)。CRC的校驗(yàn)是在UDMA傳輸中控制器和從設(shè)備根據(jù)傳輸?shù)臄?shù)據(jù)各生成一個(gè)CKC值,在傳輸結(jié)束的時(shí)候比較這兩個(gè)值是否相等,如果相等,則傳輸正確。UDMA在IDE設(shè)備不斷發(fā)展的過程中經(jīng)歷了UDMA mode 0-UDMA mode 5,主要是增加傳輸?shù)乃俣?。UDMA各模式下的傳輸?shù)乃俣热绫?所示。
3 市場應(yīng)用
IDE控制器可以用來控制大容量的硬盤。也可以用來控制工業(yè)上常用的CF卡。對于SATA接口類型的硬盤來說,只需要增加一顆接口芯片即可。硬盤的控制可以用到DvR系統(tǒng)、數(shù)據(jù)修復(fù)和復(fù)制系統(tǒng)和工業(yè)CF卡存儲(chǔ)系統(tǒng)中。如圖4所示就是一種便攜式的硬盤復(fù)制修復(fù)儀器。
4 小結(jié)
本文主要介紹了基于Actel FPGA的IDE設(shè)備控制器的功能和應(yīng)用。敬請關(guān)注周立功公司的網(wǎng)站www.zlgmcu.com以獲得更多的信息。我們有著一個(gè)接近30人的FPGA團(tuán)隊(duì)提供強(qiáng)有力的售后服務(wù)和技術(shù)支持,解決用戶在產(chǎn)品使用和研發(fā)過程中遇到的困難。若有更多的需求可以與我們聯(lián)系,我們將會(huì)竭誠為您服務(wù),并請關(guān)注下期的FPGA專題技術(shù)講座。