查看: 744|回复: 0

FPGA控制TMS320C6678上电复位程序

[复制链接]

该用户从未签到

发表于 2020-11-25 17:42:11 | 显示全部楼层 |阅读模式
分享到:
FPGA控制TMS320C6678上电复位程序
  1. module DSP_RST(
  2.         input clk_25m,
  3.         input RESETSTAT,                     //DSP复位状态 0表示复位态 1表示工作态
  4.         input LOCKED,                         //时钟模块是否正常

  5.         output ref LRESETNMIENz = 1'b0,       //局部复位管脚
  6.         output reg PORz=1'b0,                 //Power-on Reset
  7.         output reg RESETFULL=1'b0,            //Full Reset
  8.         output reg RESET=1'b0        
  9.     );
  10.         
  11.         reg [2:0] RES_STATE=2'b00;
  12.         reg [15:0] por_counter=16'b0,resetfull_counter=16'b0,reset_counter=16'b0;
  13.         
  14.         parameter IDLE=2'b00,PULL_RESET=2'b01,PULL_POR=2'b10,PULL_RESETFULL=2'b11;
  15.         
  16. always @(posedge clk_25m)
  17.     if(LOCKED==1)
  18.         begin
  19.         case(RES_STATE)
  20.         IDLE:
  21.                  RES_STATE<=PULL_RESET ;
  22.         PULL_RESET: if(reset_counter<25000)
  23.                             begin
  24.                             reset_counter<=reset_counter+16'b1;
  25.                             RES_STATE<=RES_STATE;
  26.                             RESET<=1'b0;
  27.                             PORz<=1'b0;
  28.                             RESETFULL<=1'b0;
  29.                             end
  30.                         else
  31.                             begin
  32.                             RESET<=1'b1;
  33.                             LRESETNMIENz<=1`b1;    //禁止局部复位。
  34.                             RES_STATE<=PULL_POR;
  35.                             end
  36.         PULL_POR: if(por_counter<25000)  
  37.                             begin
  38.                             por_counter<=por_counter+16'b1;
  39.                             RES_STATE<=RES_STATE;
  40.                             PORz<=1'b0;
  41.                             end
  42.                      else
  43.                             begin
  44.                             PORz<=1'b1;
  45.                             RES_STATE<=PULL_RESETFULL;
  46.                             end
  47.         PULL_RESETFULL:if(resetfull_counter<25000)
  48.                                 begin
  49.                                 resetfull_counter<=resetfull_counter+16'b1;
  50.                                 RES_STATE<=RES_STATE;
  51.                                 RESETFULL<=1'b0;
  52.                                 end
  53.                             else
  54.                                 begin
  55.                                 RESETFULL<=1'b1;
  56.                                 RES_STATE<=RES_STATE;
  57.                                 end
  58.         endcase               
  59.         end
  60.     else
  61.         begin
  62.         reset_counter<=16'b0;
  63.         resetfull_counter<=16'b0;
  64.         por_counter<=16'b0;
  65.         RES_STATE<=IDLE;
  66.         RESET<=1'b0;
  67.         PORz<=1'b0;
  68.         RESETFULL<=1'b0;
  69.         end

  70. endmodule
复制代码


回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-22 09:17 , Processed in 0.106924 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.