OpenCores
URL https://opencores.org/ocsvn/turbo8051/turbo8051/trunk

Subversion Repositories turbo8051

[/] [turbo8051/] [trunk/] [rtl/] [clkgen/] [clkgen.v] - Diff between revs 8 and 25

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 8 Rev 25
Line 42... Line 42...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
 
 
module clkgen (
module clkgen (
               reset_n      ,
               reset_n      ,
               fastsim_mode ,
               fastsim_mode ,
 
               mastermode   ,
               xtal_clk     ,
               xtal_clk     ,
               clkout       ,
               clkout       ,
               gen_resetn   ,
               gen_resetn   ,
               gen_reset    ,
               risc_reset   ,
               app_clk      ,
               app_clk      ,
               uart_ref_clk
               uart_ref_clk
              );
              );
 
 
 
 
 
 
input           reset_n        ; // Async reset signal
input           reset_n        ; // Async reset signal
input         fastsim_mode   ; // fast sim mode = 1
input         fastsim_mode   ; // fast sim mode = 1
 
input         mastermode     ; // 1 : Risc master mode
input           xtal_clk       ; // Xtal clock-25Mhx 
input           xtal_clk       ; // Xtal clock-25Mhx 
output        clkout         ; // clock output, 250Mhz
output        clkout         ; // clock output, 250Mhz
output        gen_resetn     ; // internally generated reset
output        gen_resetn     ; // internally generated reset
output        gen_reset      ; // internally generated reset
output        risc_reset      ; // internally generated reset
output        app_clk        ; // application clock
output        app_clk        ; // application clock
output        uart_ref_clk   ; // uart 16x Ref clock
output        uart_ref_clk   ; // uart 16x Ref clock
 
 
 
 
wire          hard_reset_st  ;
wire          hard_reset_st  ;
wire          configure_st   ;
wire          configure_st   ;
wire          wait_pll_st    ;
wire          wait_pll_st    ;
wire          run_st         ;
wire          run_st         ;
 
wire          slave_run_st   ;
reg           pll_done       ;
reg           pll_done       ;
reg [11:0]         pll_count      ;
reg [11:0]         pll_count      ;
reg [1:0]          clkgen_ps      ;
reg [2:0]          clkgen_ps      ;
reg           gen_resetn     ; // internally generated reset
reg           gen_resetn     ; // internally generated reset
reg           gen_reset      ; // internally generated reset
reg           risc_reset      ; // internally generated reset
 
 
 
 
assign        clkout = app_clk;
assign        clkout = app_clk;
wire          pllout;
wire          pllout;
/***********************************************
/***********************************************
Line 132... Line 135...
************************************************/
************************************************/
always @(posedge xtal_clk or negedge reset_n )
always @(posedge xtal_clk or negedge reset_n )
begin
begin
   if (!reset_n) begin
   if (!reset_n) begin
      gen_resetn <=  0;
      gen_resetn <=  0;
      gen_reset  <=  1;
      risc_reset  <=  1;
   end else if(run_st ) begin
   end else if(run_st ) begin
      gen_resetn <=  1;
      gen_resetn <=  1;
      gen_reset  <=  0;
      risc_reset  <=  0;
 
   end else if(slave_run_st ) begin
 
      gen_resetn  <=  1;
 
      risc_reset  <=  1; // Keet Risc in Reset
   end else begin
   end else begin
      gen_resetn <=  0;
      gen_resetn <=  0;
      gen_reset  <=  1;
      risc_reset  <=  1;
   end
   end
end
end
 
 
 
 
/****************************************
/****************************************
    Reset State Machine
    Reset State Machine
****************************************/
****************************************/
/*****************************************
/*****************************************
   Define Clock Gen stat machine state
   Define Clock Gen stat machine state
*****************************************/
*****************************************/
`define HARD_RESET      2'b00
`define HARD_RESET      3'b000
`define CONFIGURE       2'b01
`define CONFIGURE       3'b001
`define WAIT_PLL        2'b10
`define WAIT_PLL        3'b010
`define RUN             2'b11
`define RUN             3'b011
 
`define SLAVE_RUN       3'b100
 
 
assign hard_reset_st     = (clkgen_ps == `HARD_RESET);
assign hard_reset_st     = (clkgen_ps == `HARD_RESET);
assign configure_st      = (clkgen_ps == `CONFIGURE);
assign configure_st      = (clkgen_ps == `CONFIGURE);
assign wait_pll_st       = (clkgen_ps == `WAIT_PLL);
assign wait_pll_st       = (clkgen_ps == `WAIT_PLL);
assign run_st            = (clkgen_ps == `RUN);
assign run_st            = (clkgen_ps == `RUN);
 
assign slave_run_st      = (clkgen_ps == `SLAVE_RUN);
 
 
always @(posedge xtal_clk or negedge reset_n)
always @(posedge xtal_clk or negedge reset_n)
begin
begin
   if (!reset_n) begin
   if (!reset_n) begin
      clkgen_ps <= `HARD_RESET;
      clkgen_ps <= `HARD_RESET;
Line 173... Line 181...
 
 
          `CONFIGURE:
          `CONFIGURE:
             clkgen_ps <= `WAIT_PLL;
             clkgen_ps <= `WAIT_PLL;
 
 
         `WAIT_PLL:
         `WAIT_PLL:
           if (pll_done)
           if (pll_done) begin
 
              if ( mastermode )
             clkgen_ps <= `RUN;
             clkgen_ps <= `RUN;
 
                    else
 
                             clkgen_ps <= `SLAVE_RUN;
 
          end
      endcase
      endcase
   end
   end
end
end
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.