輸作準(zhǔn)備。地址高字節(jié)寄存器add_h數(shù)值56H通過spi_dout 傳輸給SPI Flash,當(dāng)tx_bit_cnt計(jì)數(shù)到8時(shí),狀態(tài)機(jī)進(jìn)入txadd_m狀態(tài),傳輸?shù)刂分虚g字節(jié),同理,控制器在狀態(tài)txadd_m和狀態(tài) txadd_l狀態(tài)下完成傳輸?shù)刂分虚g字節(jié)34H和地址低字節(jié)12H.當(dāng)24位地址傳輸完畢,狀態(tài)機(jī)在等待后進(jìn)入rxdata狀態(tài),接收從spi_din 輸入的第一字節(jié)數(shù)據(jù)01H.當(dāng)rx_bit_cnt計(jì)數(shù)到8時(shí),控制器完成第1字節(jié)數(shù)據(jù)的接收,rx_data顯示為01H,狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換為wait8 狀態(tài),等待用戶設(shè)定{sel,addr,wr}以接收第2字節(jié)。當(dāng)用戶設(shè)定{sel,addr,wr}為10000b時(shí),狀態(tài)機(jī)再次進(jìn)入rxdata狀態(tài),接收從spi_din輸入的第2字節(jié)數(shù)據(jù)02H,同時(shí)rx_ready被拉低,rx_empty被拉高,rd_data被拉高,表示將要讀出新輸入的數(shù)據(jù)。當(dāng)rx_bit_cnt計(jì)數(shù)到8時(shí),第2字節(jié)數(shù)據(jù)接收完畢,rx_ready被拉高,rx_empty為低,rd_data顯示新接收的字節(jié)數(shù)據(jù) 02H,狀態(tài)機(jī)經(jīng)等待后重新進(jìn)入wait8狀態(tài),等待用戶再次設(shè)定{sel,addr,wr}值,接收第3字節(jié)數(shù)據(jù)值,同理,可讀出SPI Flash內(nèi)部所有數(shù)據(jù)。 當(dāng)狀態(tài)機(jī)處于wait8狀態(tài)而用戶想退出讀數(shù)據(jù)操作時(shí),可向控制器輸入NOP指令強(qiáng)制結(jié)束當(dāng)前讀數(shù)據(jù)操作。狀態(tài)機(jī)在接收到NOP指令后將進(jìn)入clr_cmd狀態(tài)和idle空閑態(tài),等待下一條指令的到來。當(dāng)讀數(shù)據(jù)操作還沒結(jié)束時(shí),busy將一直置高。
5.結(jié)語
目前SPI Flash控制器IP核已經(jīng)在XUPV5-LX110T FPGA開發(fā)板上通過硬件測試,并且將作為功能模塊應(yīng)用于SOC芯片設(shè)計(jì)。實(shí)踐證明,基于FPGA的SPI Flash控制器能夠簡化SPI Flash讀寫操作流程,從而提高SPI Flash的讀寫速度,而操作時(shí)不占用CPU資源的特點(diǎn),將使SPIFlash的讀寫更有優(yōu)勢。
fpga相關(guān)文章:fpga是什么
評(píng)論