用SD卡設計8086全硅計算機的硬盤(pán)
8086 CPU[1]全硅計算機,而由于8086 CoC高度集成性,傳統的機械硬盤(pán)已不適合。采用嵌入式的存儲設備,例如固態(tài)硬盤(pán)(Solid-State Disk)利用Flash芯片作為存儲介質(zhì),符合ATA[2]/SATA/SCSI等接口傳輸協(xié)議。固態(tài)硬盤(pán)設計最大的障礙就是設計過(guò)程復雜,用閃存(Flash Memory)芯片作為核心存儲介質(zhì)的固態(tài)硬盤(pán)需要設計復雜的控制器[3]。為了簡(jiǎn)化設計的復雜性又兼顧固態(tài)硬盤(pán)的優(yōu)點(diǎn),本設計采用SD卡(Secure Digital Card)作為8086 CoC的硬盤(pán)。因為SD卡是基于閃存的存儲卡,具有固態(tài)硬盤(pán)的特性,安全性高、容量大、性能佳、環(huán)境適應性好等優(yōu)點(diǎn)。采用SD卡作為8086 CoC的硬盤(pán)可避免設計復雜的硬盤(pán)控制器。
1 硬件設計
8086 CoC系統采用AMBA雙總線(xiàn)結構,高速設備如內存(SDRAM)、顯卡(VGA)等通過(guò)AHB總線(xiàn)與CPU進(jìn)行數據交換,而低速設備則經(jīng)由APB總線(xiàn)(Advanced Peripheral Bus)與CPU通信。SD卡作為8086 CoC的硬盤(pán)屬于低速I(mǎi)/O,因此SD卡是掛接在A(yíng)PB總線(xiàn)上。SD卡接口可以插入SD卡作為類(lèi)似硬盤(pán)的大容量存儲設備使用,CPU通過(guò)APB總線(xiàn)對SD卡的數據進(jìn)行操作。APB總線(xiàn)與SD卡連接的轉換接口是本文硬件設計的重點(diǎn),8086 CoC體系架構圖如圖1所示。
1.1 APB接口簡(jiǎn)介
APB總線(xiàn)是AMBA總線(xiàn)的外圍總線(xiàn),有關(guān)于A(yíng)PB總線(xiàn)協(xié)議可以參照AMBATM Specification(Rev2.0)。SD卡作為I/O掛接在A(yíng)PB的從主機口上,CPU要對I/O設備訪(fǎng)問(wèn),必須對I/O設備分配地址,本設計為SD卡分配的地址(只要與其他端口不沖突,地址可任選)是100H和101H(H為16進(jìn)制)分別為SD卡的數據端口與片選端口。CPU對SD卡進(jìn)行訪(fǎng)問(wèn)時(shí),CPU地址總線(xiàn)傳送APB總線(xiàn)的地址為100H或101H。此時(shí),APB總線(xiàn)通過(guò)自身內部的譯碼器使對應的從主機口有效,對應的從機設備被選中、SD卡I/O設備也被選中時(shí),SD卡就可以與主機進(jìn)行數據通信。
1.2 SD卡接口簡(jiǎn)介
SD卡的工作模式分別是SD模式和SPI模式[4],本設計采用SPI模式。SD卡的SPI模式設備使用SD卡協(xié)議的子協(xié)議和部分指令。SPI模式的優(yōu)勢在于可以使用標準主機,從而把外設減少到最低。表1所示為采用SPI模式下的SD卡的端口定義。
SPI模式是串行數據傳輸,而SD卡是掛接在A(yíng)PB的從口上的I/O設備,APB是并行數據,要使APB數據與SD卡的數據匹配,必須對APB數據進(jìn)行轉換,轉換為符合SPI模式下的數據格式。
1.3 SD卡轉換接口的設計
主機通過(guò)APB總線(xiàn)發(fā)送和接收的數據是1個(gè)字節(8位)的并行數據,而SD卡發(fā)送給主機設備的是串行數據,1個(gè)字節(8位)為1個(gè)數據單位。SD卡每次發(fā)送和接收串行數據是以SCLK為采樣時(shí)鐘,每次上升沿為1次采樣數據,因此1次完整的數據采樣需要8個(gè)SCLK時(shí)鐘周期。SD卡被訪(fǎng)問(wèn)期間的片選信號CS一直要保持為有效低電平。SD卡轉換接口的設計關(guān)鍵是:(1)APB總線(xiàn)的并行數據要轉換成符合SPI協(xié)議規范的串行數據;(2)SD卡發(fā)送的串行數據轉換成APB總線(xiàn)能夠接收的并行數據;(3)產(chǎn)生正確采樣時(shí)鐘信號SCLK和片選信號CS。圖2所示為SD卡轉換接口模塊的框圖。
片選信號由APB數據線(xiàn)的高位控制:當APB總線(xiàn)的高位輸出為低電平時(shí),SS信號為低電平,SD卡被選中;當APB總線(xiàn)的高位輸出為高電平時(shí),SS信號為高電平,SD卡不被選中。APB總線(xiàn)的高位數據產(chǎn)生是通過(guò)軟件編程實(shí)現。并串轉換器作用是:首先將APB總線(xiàn)輸出并行數據存儲到一組移位寄存器,然后移位寄存器的數據被移位成串行數據,串行轉換器就是并串轉換器反過(guò)程。采樣時(shí)鐘發(fā)生器作用是:采樣時(shí)鐘的上升沿應在每一位串行數據中央,以確保采樣時(shí)鐘能夠采樣到正確的數據。
采用Verilog HDL硬件描述語(yǔ)言對SD卡轉換接口模塊進(jìn)行設計,用modelsim6.1f 對該模塊在8086 CoC系統平臺進(jìn)行仿真和調試。為了測試硬件接口,通過(guò)編寫(xiě)基于8086CPU的匯編程序,使CPU執行相應的匯編指令對SD卡進(jìn)行操作,實(shí)驗證明SD卡轉接口的數據端口信號的仿真波形滿(mǎn)足SPI協(xié)議規范。
2 SD卡的軟件編程及功能調試
SD卡的配置、讀寫(xiě)和擦除是通過(guò)主機給SD卡發(fā)送相應的執行命令,主機給SD卡發(fā)送命令通過(guò)軟件控制來(lái)實(shí)現。SD卡的所有命令都有固定的格式,由6個(gè)字節組成:起始位、傳輸位、命令索引、參數、CRC和結束位。表2所示為SD卡的命令格式。復位命令CMD0:起始位為0、傳輸位為1、命令索引為0、CRC為固定值1001010、結束位為1。即CMD0的格式為40H00H00H00H00H95H(H為16進(jìn)制)。
評論