📄 am29lv160d.v
字号:
//////////////////////////////////////////////////////////////////////////////// File name : am29lv160d.v//////////////////////////////////////////////////////////////////////////////// Copyright (C) 2003, 2004 Spansion, LLC.//// MODIFICATION HISTORY ://// version: | author: | % date: | changes made:// V0.1 J.Bogosavljevic 03 Sept 01 Initial// v0.2 J.BOgosavljevic 03 Sept 02 FSM modified, RY_zd generation// modified, timings edited// v0.3 J.Bogosavljevic 03 Oct 08 Handleing TimingModel changed// v0.4 J.Bogosavljevic 03 Oct 31// 1) read is modified so DQ2 toggles// only if sector selected for erasure// is read.// -if sector that is not selected for// erasure is read DQ2 stays does// not change vaule// 2) CTMOUT// 3) path delays from OE and CE to DATA// modified// 4) path delay from DQ15 to DQ0 when// byte mode added// 5) pulse watch modified// v0.5 J.Bogosavljevic 03 Dec 10 RY changend to open drain// multidim arrays removed (Mem and// sssa and ssea)// v0.6 J.Bogosavljevic 03 Dec 16 Memory preload moved to initial// process// current_state generation modified// v0.7 J.Bogosavljevic 03 Dec 19 Memory preload modified, same sdf// for modelsim and NCsim// v0.8 J.Bogosavljevic 04 Feb 27 - elapsed_erase timer suspended as// soon as erase suspend command issued// v0.9 J.Bogosavljevic 04 Apr 29 - CTMOUT bug fix// - tpd_BYTENeg_Dq0 removed//////////////////////////////////////////////////////////////////////////////// PART DESCRIPTION://// Library: AMD// Technology: Flash Memory// Part: AM29LV160D//// Description: 16Mbit(2M x 8-Bit/1M x 16-Bit) CMOS Boot Sector Flash Memory// Boot sector determined by TimingModel generic////////////////////////////////////////////////////////////////////////////////// Known Bugs://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// MODULE DECLARATION ////////////////////////////////////////////////////////////////////////////////`timescale 1 ns/1 nsmodule am29lv160d( A19 , A18 , A17 , A16 , A15 , A14 , A13 , A12 , A11 , A10 , A9 , A8 , A7 , A6 , A5 , A4 , A3 , A2 , A1 , A0 , DQ15 , DQ14 , DQ13 , DQ12 , DQ11 , DQ10 , DQ9 , DQ8 , DQ7 , DQ6 , DQ5 , DQ4 , DQ3 , DQ2 , DQ1 , DQ0 , CENeg , OENeg , WENeg , RESETNeg , BYTENeg , RY );////////////////////////////////////////////////////////////////////////// Port / Part Pin Declarations//////////////////////////////////////////////////////////////////////// input A19 ; input A18 ; input A17 ; input A16 ; input A15 ; input A14 ; input A13 ; input A12 ; input A11 ; input A10 ; input A9 ; input A8 ; input A7 ; input A6 ; input A5 ; input A4 ; input A3 ; input A2 ; input A1 ; input A0 ; inout DQ15 ; inout DQ14 ; inout DQ13 ; inout DQ12 ; inout DQ11 ; inout DQ10 ; inout DQ9 ; inout DQ8 ; inout DQ7 ; inout DQ6 ; inout DQ5 ; inout DQ4 ; inout DQ3 ; inout DQ2 ; inout DQ1 ; inout DQ0 ; input CENeg ; input OENeg ; input WENeg ; input RESETNeg ; input BYTENeg ; output RY ;// interconnect path delay signals wire A19_ipd ; wire A18_ipd ; wire A17_ipd ; wire A16_ipd ; wire A15_ipd ; wire A14_ipd ; wire A13_ipd ; wire A12_ipd ; wire A11_ipd ; wire A10_ipd ; wire A9_ipd ; wire A8_ipd ; wire A7_ipd ; wire A6_ipd ; wire A5_ipd ; wire A4_ipd ; wire A3_ipd ; wire A2_ipd ; wire A1_ipd ; wire A0_ipd ; wire [19 : 0] A; assign A = { A19_ipd, A18_ipd, A17_ipd, A16_ipd, A15_ipd, A14_ipd, A13_ipd, A12_ipd, A11_ipd, A10_ipd, A9_ipd, A8_ipd, A7_ipd, A6_ipd, A5_ipd, A4_ipd, A3_ipd, A2_ipd, A1_ipd, A0_ipd }; wire DQ15_ipd ; wire DQ14_ipd ; wire DQ13_ipd ; wire DQ12_ipd ; wire DQ11_ipd ; wire DQ10_ipd ; wire DQ9_ipd ; wire DQ8_ipd ; wire DQ7_ipd ; wire DQ6_ipd ; wire DQ5_ipd ; wire DQ4_ipd ; wire DQ3_ipd ; wire DQ2_ipd ; wire DQ1_ipd ; wire DQ0_ipd ; wire [15 : 0 ] DIn; assign DIn = {DQ15_ipd, DQ14_ipd, DQ13_ipd, DQ12_ipd, DQ11_ipd, DQ10_ipd, DQ9_ipd, DQ8_ipd, DQ7_ipd, DQ6_ipd, DQ5_ipd, DQ4_ipd, DQ3_ipd, DQ2_ipd, DQ1_ipd, DQ0_ipd }; wire [15 : 0 ] DOut; assign DOut = {DQ15, DQ14, DQ13, DQ12, DQ11, DQ10, DQ9, DQ8, DQ7, DQ6, DQ5, DQ4, DQ3, DQ2, DQ1, DQ0 }; wire CENeg_ipd ; wire OENeg_ipd ; wire WENeg_ipd ; wire RESETNeg_ipd ; wire BYTENeg_ipd ;// internal delays reg HANG_out ; // Program/Erase Timing Limit reg HANG_in ; reg START_T1 ; // Start TimeOut reg START_T1_in ; reg CTMOUT ; // Sector Erase TimeOut reg CTMOUT_in ; reg READY_in ; reg READY ; // Device ready after reset wire DQ15_zd ; wire DQ14_zd ; wire DQ13_zd ; wire DQ12_zd ; wire DQ11_zd ; wire DQ10_zd ; wire DQ9_zd ; wire DQ8_zd ; wire DQ7_zd ; wire DQ6_zd ; wire DQ5_zd ; wire DQ4_zd ; wire DQ3_zd ; wire DQ2_zd ; wire DQ1_zd ; wire DQ0_zd ; reg [15 : 0] DOut_zd; assign {DQ15_zd, DQ14_zd, DQ13_zd, DQ12_zd, DQ11_zd, DQ10_zd, DQ9_zd, DQ8_zd, DQ7_zd, DQ6_zd, DQ5_zd, DQ4_zd, DQ3_zd, DQ2_zd, DQ1_zd, DQ0_zd } = DOut_zd; reg RY_zd; parameter UserPreload = 1'b0; parameter mem_file_name = "none"; parameter prot_file_name = "none"; parameter TimingModel = "DefaultTimingModel"; parameter PartID = "AM29LV160D"; parameter MaxData = 255; parameter SecSize = 65535; parameter SecNum = 31; parameter SubSecNum = 3; parameter HiAddrBit = 19; parameter MemSize = (SecNum+1) *(SecSize+1)-1; //varaibles to resolve if bottom or top architecture is used reg [20*8-1:0] tmp_timing;//stores copy of TimingModel reg [20*8-1:0] tmp1_timing;//stores copy of TimingModel reg [7:0] tmp_char;//stores "t" or "b" character integer found = 1'b0; // powerup reg PoweredUp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -