一設計功能ide
對SPI_flash進行扇區擦除,分爲寫指令和扇區擦除兩個時序部分。測試
二設計知識點編碼
我簡單理解flash,第一它是掉電不丟失數據的存儲器,第二它每次寫入新數據前首先得擦除數據,分爲扇區擦除和全擦擦。spa
下面講講我本身親自動手設計的原創代碼過程:設計
本身設計過程:調試
第一步:就先看了SPI FLASH文檔,瞭解SPI FLAHS的原理:先有寫使能信號及其時序波形,而後是扇區擦除指令和地址及時序波形,再是延時3秒回到初始狀態。excel
第二步:本身畫出全部的狀態及其轉移圖,仍是就是用線性序列機表達寫使能指令的時序和扇區擦除的時序,而且把他們用EXCEL表弄出相應的時間點和信號的變化(對輸出信號賦值)。作完後再弄出模塊框圖。blog
第三步:根據本身的模塊框圖和狀態轉移圖,還有線性序列機的EXCEL表格,描述對應的代碼。ci
第四步:仿真驗證是否出錯。文檔
個人設計思想以下圖所示,三部分。
一是計數器(寫使能時序的計數器,扇區擦除的計數器,延時三秒的計數器).
二是,狀態機。(初始狀態,寫使能指令狀態,擦除扇區的狀態,延時三秒的狀態)
三是,線性序列機。(由寫指令和擦除扇區的時序圖弄好計數值及信號變化)
計數器:
一是WF計數器,計到41,位寬爲6。
二是SE計數器,計到128.,位寬爲9
三是延時3秒的計數器, 計到150M,位寬爲28
針對衆多時序邏輯的編碼方法:第一步在excel中,分紅兩列,一列是計數值(使用序列填充,等差),一列是對應的信號變化。第二步,直接在notepad++裏使用列編輯加上分號,歐克勒。
線性序列機:
WE的時序邏輯:下圖爲WREN時序波形圖。
時間ns |
計數值 |
信號的操做 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0 |
0 |
Begin sck<=0;cs_n<=1;sdi<=0;end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20 |
1 |
Begin sck<=0; cs_n<=0;end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
80 |
4 |
sck<=1; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
120 |
6 |
sck<=0;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
160 |
8 |
sck<=1;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
200 |
10 |
sck<=0;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
240 |
12 |
sck<=1;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
280 |
14 |
sck<=0;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
320 |
16 |
sck<=1;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
360 |
18 |
sck<=0;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
400 |
20 |
sck<=1;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
440 |
22 |
Begin sck<=0; sdi<=1;end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
480 |
24 |
sck<=1; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
520 |
26 |
Begin sck<=0; sdi<=1;end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
560 |
28 |
sck<=1;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
600 |
30 |
Begin sck<=0; sdi<=0;end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
640 |
32 |
sck<=1;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
680 |
34 |
sck<=0;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
700 |
35 |
cs_n<=1; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
800 |
40 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE的時序邏輯:下圖爲SE時序波形圖。
下面爲線性序列機的EXCEL描述SE時序:
二設計輸入 Flash扇區擦除的功能模塊
Flash扇區擦除的測試模塊
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
三FLASH的扇區擦除的仿真波形以下
個人收穫是:
首先是第一次遇到陌生有難度的東西,不要慫,要靜下心來親自動手作和思考,一步步的。
其次是,弄懂設計原理和設計思路,這可能佔了整個設計的40%,調試代碼佔了40%,敲代碼只佔了10%,還有10%就是記錄整理勒。畫好圖紙比敲代碼重要得多,代碼只不過是思路的描述。