⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 am29lv160d.v

📁 本程式為並列flash ROM之控制程式, 可將flash rom的資料讀出後, 經過CPLD controller將圖檔轉成VESA影像訊號, 輸出至螢幕, 本程式已經過硬體驗證
💻 V
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////////////////////////////////////////////////////
//  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 ns

module 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'b1;
    parameter mem_file_name   = "init.mem";
    parameter prot_file_name  = "none";

    parameter TimingModel = "am29lv160dt-70";
    //parameter TimingModel = "DefaultTimingModel";

    parameter PartID    = "AM29LV160D";
    parameter MaxData   = 255;
    parameter SecSize   = 65535;
    parameter SecNum    = 31;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -