1 |
2 |
julius |
// _/ _/_/
|
2 |
|
|
// _/_/ _/_/_/
|
3 |
|
|
// _/_/_/_/ _/_/_/
|
4 |
|
|
// _/_/_/_/_/ _/_/_/ ____________________________________________
|
5 |
|
|
// _/_/_/_/_/ _/_/_/ / /
|
6 |
|
|
// _/_/_/_/_/ _/_/_/ / 28F256P30 /
|
7 |
|
|
// _/_/_/_/_/ _/_/_/ / /
|
8 |
|
|
// _/_/_/_/_/_/ _/_/_/ / 256Mbit /
|
9 |
|
|
// _/_/_/_/_/_/ _/_/_/ / single die /
|
10 |
|
|
// _/_/_/ _/_/_/ _/_/_/ / /
|
11 |
|
|
// _/_/_/ _/_/_/ _/_/_/ / Verilog Behavioral Model /
|
12 |
|
|
// _/_/_/ _/_/_/ _/_/_/ / Version 1.3 /
|
13 |
|
|
// _/_/_/ _/_/_/ _/_/_/ / /
|
14 |
|
|
// _/_/_/ _/_/_/_/_/_/ / Copyright (c) 2010 Numonyx B.V. /
|
15 |
|
|
// _/_/_/ _/_/_/_/_/ /___________________________________________/
|
16 |
|
|
// _/_/_/ _/_/_/_/
|
17 |
|
|
// _/_/ _/_/_/
|
18 |
|
|
//
|
19 |
|
|
//
|
20 |
|
|
// NUMONYX
|
21 |
|
|
|
22 |
|
|
// ******
|
23 |
|
|
//
|
24 |
|
|
// data.h
|
25 |
|
|
//
|
26 |
|
|
// ******
|
27 |
|
|
|
28 |
|
|
// ********************
|
29 |
|
|
//
|
30 |
|
|
// Main Characteristics
|
31 |
|
|
//
|
32 |
|
|
// ********************
|
33 |
|
|
|
34 |
|
|
`define ADDRBUS_dim 24 // - Address Bus pin numbers
|
35 |
|
|
`define DATABUS_dim 16 // - Data Bus pin numbers
|
36 |
|
|
`define MEMORY_dim 1 << `ADDRBUS_dim // - Memory Dimension
|
37 |
|
|
`define LAST_ADDR (`MEMORY_dim) - 1 // - Last Address
|
38 |
|
|
|
39 |
|
|
// ********************
|
40 |
|
|
//
|
41 |
|
|
// Address & Data range
|
42 |
|
|
//
|
43 |
|
|
// ********************
|
44 |
|
|
|
45 |
|
|
`define ADDRBUS_range `ADDRBUS_dim - 1 : 0
|
46 |
|
|
`define DATABUS_range `DATABUS_dim - 1 : 0
|
47 |
|
|
|
48 |
|
|
// *****************
|
49 |
|
|
//
|
50 |
|
|
// Init Memory Files
|
51 |
|
|
//
|
52 |
|
|
// *****************
|
53 |
|
|
|
54 |
|
|
`define CFI_dim 9'h157
|
55 |
|
|
`define CFI_range `CFI_dim - 1:9'h10
|
56 |
|
|
// *******************
|
57 |
|
|
//
|
58 |
|
|
// Protection Register
|
59 |
|
|
//
|
60 |
|
|
// *******************
|
61 |
|
|
|
62 |
|
|
|
63 |
|
|
`define REG_addrStart 16'h0
|
64 |
|
|
`define REG_addrEnd 16'h15
|
65 |
|
|
|
66 |
|
|
`define REGSTART_addr 9'h80 // Protection Register Start Address
|
67 |
|
|
`define REGEND_addr 9'h109 // Protection Register End Address
|
68 |
|
|
`define REG_dim `REGEND_addr - `REGSTART_addr + 1
|
69 |
|
|
|
70 |
|
|
`define REG_addrRange `REG_addrEnd:`REG_addrStart
|
71 |
|
|
|
72 |
|
|
`define REG_addrbitStart 8'd0
|
73 |
|
|
`define REG_addrbitEnd 8'd8
|
74 |
|
|
`define REG_addrbitRange `REG_addrbitEnd:`REG_addrbitStart
|
75 |
|
|
|
76 |
|
|
`define PROTECTREGLOCK_addr 9'h80 // Protection Register Lock Address
|
77 |
|
|
|
78 |
|
|
|
79 |
|
|
`define UDNREGSTART_addr 9'h81
|
80 |
|
|
`define UDNREGEND_addr 9'h84
|
81 |
|
|
`define UDNprotect_bit 8'hFE
|
82 |
|
|
|
83 |
|
|
`define UPREGSTART_addr 9'h85
|
84 |
|
|
`define UPREGEND_addr 9'h88
|
85 |
|
|
`define UPprotect_bit 8'hFD // serve ad indentificare quale bit deve essere 0 nel lock regi
|
86 |
|
|
`define PRL_default 16'h0002 // Protection Register Lock default definito anche in def
|
87 |
|
|
|
88 |
|
|
// *****************************
|
89 |
|
|
//
|
90 |
|
|
// Extended User OTP
|
91 |
|
|
//
|
92 |
|
|
// *****************************
|
93 |
|
|
|
94 |
|
|
`define ExtREG_dim 8'h20
|
95 |
|
|
|
96 |
|
|
|
97 |
|
|
`define ExtREG_regiondim 8'h8
|
98 |
|
|
`define ExtREGSTART_regionaddr 9'h8A // Ext Protection Register Start Address
|
99 |
|
|
`define ExtREGEND_regionaddr 9'h109 // Ext Protection Register End Address
|
100 |
|
|
|
101 |
|
|
`define ExtPROTECTREGLOCK_addr 9'h89 // Ext Protection Register Lock Address
|
102 |
|
|
`define ExtPRL_default 16'hFFFF // Protection Register Lock default
|
103 |
|
|
|
104 |
|
|
|
105 |
|
|
|
106 |
|
|
// ***********************
|
107 |
|
|
//
|
108 |
|
|
// Voltage Characteristics
|
109 |
|
|
//
|
110 |
|
|
// ***********************
|
111 |
|
|
`define Voltage_range 35:0
|
112 |
|
|
`define VDDmin 36'd01700
|
113 |
|
|
`define VDDmax 36'd02000
|
114 |
|
|
`define VDDQmin 36'd01700
|
115 |
|
|
`define VDDQmax 36'd03600
|
116 |
|
|
`define VPPmin 36'd00900
|
117 |
|
|
`define VPPmax 36'd03600
|
118 |
|
|
`define VPPHmin 36'd08500
|
119 |
|
|
`define VPPHmax 36'd09500
|
120 |
|
|
|
121 |
|
|
// **********************
|
122 |
|
|
//
|
123 |
|
|
// Configuration Register
|
124 |
|
|
//
|
125 |
|
|
// **********************
|
126 |
|
|
|
127 |
|
|
`define ConfigurationReg_dim 16
|
128 |
|
|
`define ConfigReg_default 16'hF94F
|
129 |
|
|
|
130 |
|
|
// ********************
|
131 |
|
|
//
|
132 |
|
|
// Electronic Signature
|
133 |
|
|
//
|
134 |
|
|
// ********************
|
135 |
|
|
|
136 |
|
|
`define ManufacturerCode 8'h89
|
137 |
|
|
`define TopDeviceCode 8'h19
|
138 |
|
|
`define BottomDeviceCode 8'h1C
|
139 |
|
|
`define SignAddress_dim 9
|
140 |
|
|
`define SignAddress_range `SignAddress_dim - 1 : 0
|
141 |
|
|
|
142 |
|
|
|
143 |
|
|
|
144 |
|
|
// *********************
|
145 |
|
|
//
|
146 |
|
|
// Write Buffer constant
|
147 |
|
|
//
|
148 |
|
|
// *********************
|
149 |
|
|
|
150 |
|
|
|
151 |
|
|
`define ProgramBuffer_addrDim 9 // Program Buffer address dimension
|
152 |
|
|
`define ProgramBuffer_addrRange `ProgramBuffer_addrDim - 1:0
|
153 |
|
|
`define ProgramBuffer_dim 512 // Buffer Size= 2 ^ ProgramBuffer_addrDim
|
154 |
|
|
`define ProgramBuffer_range `ProgramBuffer_dim - 1:0
|
155 |
|
|
|
156 |
|
|
// *********************
|
157 |
|
|
//
|
158 |
|
|
// Buffer Enhanced Program constant
|
159 |
|
|
//
|
160 |
|
|
// *********************
|
161 |
|
|
|
162 |
|
|
`define BuffEnhProgramBuffer_dim 512
|
163 |
|
|
`define BuffEnhProgramBuffer_range `BuffEnhProgramBuffer_dim - 1 : 0
|
164 |
|
|
`define BuffEnhProgramBuffer_addrDim 9
|
165 |
|
|
`define BuffEnhProgramBuffer_addrRange `BuffEnhProgramBuffer_addrDim - 1:0
|
166 |
|
|
|
167 |
|
|
|
168 |
|
|
// Warning and Error Messages
|
169 |
|
|
|
170 |
|
|
`define NoError_msg 0 // No Error Found
|
171 |
|
|
`define CmdSeq_msg 1 // Sequence Command Unknown
|
172 |
|
|
`define SuspCmd_msg 2 // Cannot execute this command during suspend
|
173 |
|
|
`define SuspAcc_msg 3 // Cannot access this address due to suspend
|
174 |
|
|
`define AddrRange_msg 4 // Address out of range
|
175 |
|
|
`define AddrTog_msg 5 // Cannot change block address during command sequence
|
176 |
|
|
`define SuspAccWarn_msg 6 // It isn't possible access this address due to suspend
|
177 |
|
|
`define InvVDD_msg 7 // Voltage Supply must be: VDD>VDDmin or VDD<VDDmax
|
178 |
|
|
`define InvVPP_msg 8 // Voltage Supply must be: VDD>VDDmin or VDD<VDDmax
|
179 |
|
|
`define BlockLock_msg 9 // Cannot complete operation when the block is locked
|
180 |
|
|
`define ByteToggle_msg 10 // Cannot toggle BYTE_N while busy
|
181 |
|
|
`define NoUnLock_msg 11 // Invalid UnLock Block command in Locked-Down Block
|
182 |
|
|
`define AddrCFI_msg 12 // CFI Address out of range
|
183 |
|
|
`define PreProg_msg 13 // Program Failure due to cell failure
|
184 |
|
|
`define NoBusy_msg 14 // Device is not Busy
|
185 |
|
|
`define NoSusp_msg 15 // Nothing previus suspend command
|
186 |
|
|
`define Suspend_msg 16 // Device is Suspend mode
|
187 |
|
|
`define UDNlock_msg 17 // Unique Device Number Register is locked
|
188 |
|
|
`define UPlock_msg 18 // User Programmable Register is locked
|
189 |
|
|
`define ExitPHASE_BEFP_msg 19
|
190 |
|
|
`define WrongEraseConfirm_msg 20 // Wrong Erase Confirm code
|
191 |
|
|
`define SignAddrRange_msg 21 // Signature Address out of range
|
192 |
|
|
`define CFIAddrRange_msg 22 // CFI Address out of range
|
193 |
|
|
`define WrongBlankCheckConfirm_msg 23 // Wrong Blank Check Confirm code command
|
194 |
|
|
`define BlankCheckFailed_msg 24 // Blank Check Failed
|
195 |
|
|
`define ProgramPHASE_BEFP_msg 25 // End of Program or Verify Phase on Enhanced Factory Program
|
196 |
|
|
`define BlkBuffer_msg 26 // Program Buffer cannot cross block boundary
|
197 |
|
|
`define ExtREGLock_msg 27 // Extended User Programmable Register is locked
|
198 |
|
|
`define LeastAddr0 28 // Significative bit [%d,0] of Start Address must be 0
|
199 |
|
|
`define ProtRegAddrRange_msg 29 // Protect Register Address out of range
|
200 |
|
|
`define BuffSize_msg 30 // Buffer size is too large
|
201 |
|
|
`define WrongBlankCheckBlock 31 // No main block
|
202 |
|
|
|
203 |
|
|
// ******************
|
204 |
|
|
//
|
205 |
|
|
// Valid Access Times
|
206 |
|
|
//
|
207 |
|
|
// ******************
|
208 |
|
|
|
209 |
|
|
`define tAccess_1 100
|
210 |
|
|
`define tAccess_2 110
|
211 |
|
|
|
212 |
|
|
|
213 |
|
|
|
214 |
|
|
|