基于FPGA的微型數字存儲系統(tǒng)設計
讀操作較為復雜,需要XC2S50和CY7C68013協同工作。這里只給出讀信號的操作過程。先寫人讀設置命令00H,因為讀一次執(zhí)行一頁,所以地址的寫入是2個行地址和3個列地址,之后寫入讀命令,在等待rb變高后就可發(fā)送re信號將數據從Flash讀出。寫操作過程與讀操作類似,但寫操作完全由 XC2S50控制,寫完命令、地址后,開始寫入數據,直到寫滿2 KB數據,最后輸入頁編程命令。需要注意每寫完2 KB數據,Flash返回的狀態(tài)信號rb所等待的時間較長,大約是140μs。圖2為頁編程的流程。本文引用地址:http://butianyuan.cn/article/191913.htm
3.2 CY7C68013控制邏輯及固件程序設計
CY7C68013主要完成兩部分工作,一是實現對擦除的控制開關命令,即上位機通過USB接口發(fā)送擦除命令,CY7C68013接收到這個命令后,會發(fā)送一個約為200 ms低脈沖通知FPGA啟動擦除操作;二是通過與FPGA配合,完成從Flash通過CY7C68013的GPIF接口讀入上位機的任務。 CY7C68013所用到的I/O包括控制線USBCTR1,狀態(tài)線US-BS0,讀信號線USBRD及8條數據線。
讀數時,首先由單片機發(fā)出讀數開始命令USBCTR1,FPGA接收到該命令后開始初始化,包括寫入讀數設置命令、地址及讀數命令,等待rb變高, USBS0置低,當單片機檢測到USBS0變低后,開始給出一系列脈沖GPIF(USBRD),將2 KB數據依次讀出。與此同時,FPGA在等待幾百納秒后將USBS0置高,單片機在判斷USBS0變高后也將USBCTR1拉高,為下一頁讀數做準備。讀數時序如圖3所示。
按照上述控制邏輯關系編寫CY7C68013的同件程序。CY7C68013有3種可用接口模式:端口、GPIF主控和從FI-FO。“GPIF主控”接口模式使用PORTB和PORTD構成通向4個FX2端點FIFO(EP2、EP4、EP6和EP8)的16位數據接口。GPIF作為內部的主控制器與 FIFO直接相連.具有6個可編程控制輸出信號(CTR0~CTR5)和6個通用準備就緒輸入信號(RDY0~RDY5),用戶可通過編程設置控制信號的輸出狀態(tài),即器件在接收到何種就緒信號后執(zhí)行相應操作,GPIF控制代碼存放于器件內部RAM的波形描述器中。從該系統(tǒng)需求出發(fā),將CY7C68013設為FIFO Read模式,使GPIF中的Slave FIFO與USB通信中端點緩沖直接建立連接,數據傳送無需CPU參與。
評論