124|0

5088

帖子

0

资源

纯净的硅(高级)

FPGA控制DSP上电复位程序 [复制链接]

module DSP_RST(
        input clk_25m,
       input RESETSTAT,                     //DSP复位状态 0表示复位态 1表示工作态
        input LOCKED,                         //时钟模块是否正常

        output ref LRESETNMIENz = 1'b0,       //局部复位管脚
        output reg PORz=1'b0,                 //Power-on Reset
        output reg RESETFULL=1'b0,            //Full Reset
        output reg RESET=1'b0        
    );
        
        reg [2:0] RES_STATE=2'b00;
        reg [15:0] por_counter=16'b0,resetfull_counter=16'b0,reset_counter=16'b0;
        
        parameter IDLE=2'b00,PULL_RESET=2'b01,PULL_POR=2'b10,PULL_RESETFULL=2'b11;
        
always @(posedge clk_25m)
    if(LOCKED==1)
        begin
        case(RES_STATE)
        IDLE: 
                 RES_STATE<=PULL_RESET ;
        PULL_RESET: if(reset_counter<25000)
                            begin
                            reset_counter<=reset_counter+16'b1;
                            RES_STATE<=RES_STATE;
                            RESET<=1'b0;
                            PORz<=1'b0;
                            RESETFULL<=1'b0;
                            end
                        else
                            begin
                            RESET<=1'b1;
                            LRESETNMIENz<=1`b1;    //禁止局部复位。
                            RES_STATE<=PULL_POR;
                            end
        PULL_POR: if(por_counter<25000)  
                            begin
                            por_counter<=por_counter+16'b1;
                            RES_STATE<=RES_STATE;
                            PORz<=1'b0;
                            end
                     else
                            begin
                            PORz<=1'b1;
                            RES_STATE<=PULL_RESETFULL;
                            end
        PULL_RESETFULL:if(resetfull_counter<25000)
                                begin
                                resetfull_counter<=resetfull_counter+16'b1;
                                RES_STATE<=RES_STATE;
                                RESETFULL<=1'b0;
                                end
                            else
                                begin
                                RESETFULL<=1'b1;
                                RES_STATE<=RES_STATE;
                                end
        endcase                
        end
    else
        begin
        reset_counter<=16'b0;
        resetfull_counter<=16'b0;
        por_counter<=16'b0;
        RES_STATE<=IDLE;
        RESET<=1'b0;
        PORz<=1'b0;
        RESETFULL<=1'b0;
        end

endmodule


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/5 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表