diff --git a/src/main/scala/backBoard/BackBoardSlv.scala b/src/main/scala/backBoard/BackBoardSlv.scala index 7a871d6..4bc42e5 100644 --- a/src/main/scala/backBoard/BackBoardSlv.scala +++ b/src/main/scala/backBoard/BackBoardSlv.scala @@ -12,6 +12,7 @@ class BackBoardSlvIO extends Bundle{ val oser_fclk = Input(Bool()) val ides_pclk = Input(Bool()) val ides_fclk = Input(Bool()) + val clk8us = Input(Bool()) val lvds_down_din = Input(Bool()) val lvds_down_dout = Output(Bool()) diff --git a/src/main/scala/backBoard/LocalRegisters.scala b/src/main/scala/backBoard/LocalRegisters.scala index cb93341..4fc3813 100644 --- a/src/main/scala/backBoard/LocalRegisters.scala +++ b/src/main/scala/backBoard/LocalRegisters.scala @@ -60,8 +60,9 @@ abstract class BackBoardSlvLocal extends BackBoardSlvBase with BackBoardSlvDown } - - val (usCounter, usTrigger) = Counter(Range(0, 10)) + val clk16us = withClockAndReset( io.clk8us.asClock, reset ){ Reg(Bool())} + withClockAndReset( io.clk8us.asClock, reset ){ clk16us := ~clk16us } + // val (usCounter, usTrigger) = Counter(Range(0, 10)) } @@ -71,13 +72,13 @@ abstract class BackBoardSlvLocal extends BackBoardSlvBase with BackBoardSlvDown trait BackBoardSlvStatusPR { this: BackBoardSlvLocal => - val flashCounter = RegInit( 0.U( 19.W ) ) + val flashCounter = RegInit( 0.U( 15.W ) ) val flash2HZ = Reg(Bool()) val flash1HZ = Reg(Bool()) - when( usTrigger ){ - when( flashCounter >= 500000.U ){ + when( clk16us ){ + when( flashCounter === 31249.U ){ flashCounter := 0.U flash2HZ := ~flash2HZ when( flash2HZ ){ @@ -103,20 +104,21 @@ trait BackBoardSlvStatusPR { this: BackBoardSlvLocal => trait BackBoardSlvIn16 { this: BackBoardSlvLocal => val inPin = Wire(UInt(16.W)) - - - val flitCnt = RegInit(MixedVecInit(Seq( false.B, 0.U(4.W), false.B, false.B, false.B, false.B, false.B, false.B, false.B) )) - val flitTrigger = Wire(Vec(9, Bool())) val digitalFilter = for( i <- 0 until 2 ) yield { RegInit( 1.U(8.W) ) } - val digitalIn = for( i <- 0 until 2 ) yield { Reg( Vec(8, Bool()) ) } + val flitCnt = withClockAndReset( io.clk8us.asClock, reset ){ RegInit(MixedVecInit(Seq( false.B, 0.U(4.W), false.B, false.B, false.B, false.B, false.B, false.B, false.B) )) } + val flitTrigger = withClockAndReset( io.clk8us.asClock, reset ){ Wire(Vec(9, Bool())) } + val digitalIn = withClockAndReset( io.clk8us.asClock, reset ){ for( i <- 0 until 2 ) yield { Reg( Vec(8, Bool()) ) } } + +withClockAndReset( io.clk8us.asClock, reset ){ flitTrigger(0) := ~RegNext(flitTrigger(0)) - flitTrigger(1) := flitCnt(1) === 15.U - when( ~RegNext(usTrigger) & usTrigger ){ - flitCnt(1) := flitCnt(1) + 1.U - } + flitTrigger(1) := clk16us + // flitTrigger(1) := flitCnt(1) === 15.U + // when( ~RegNext(usTrigger) & usTrigger ){ + // flitCnt(1) := flitCnt(1) + 1.U + // } flitTrigger(2) := flitCnt(2) when( ~RegNext(flitTrigger(1)) & flitTrigger(1) ){ @@ -202,6 +204,7 @@ trait BackBoardSlvIn16 { this: BackBoardSlvLocal => } } } +} } diff --git a/src/main/verilog/di16_top.v b/src/main/verilog/di16_top.v index 66d8caa..ec01b99 100644 --- a/src/main/verilog/di16_top.v +++ b/src/main/verilog/di16_top.v @@ -25,6 +25,9 @@ wire clk_400m_a; wire clk_100m_a; wire clk_50m_a; wire clk_10m_a; +wire clk_2m_a; +wire clk_500k_a; +wire clk_8us_a; wire lock_o; wire reset_stop; @@ -125,6 +128,33 @@ CLKDIV Inst5_CLKDIVC( .CLKOUT (clk_10m_a) ); +defparam Inst6_CLKDIVC.DIV_MODE="5"; +defparam Inst6_CLKDIVC.GSREN="false"; +CLKDIV Inst6_CLKDIVC( + .RESETN (~reset_calib), + .HCLKIN (clk_10m_a), + .CALIB (1'b0 ), + .CLKOUT (clk_2m_a) +); + +defparam Inst7_CLKDIVC.DIV_MODE="4"; +defparam Inst7_CLKDIVC.GSREN="false"; +CLKDIV Inst7_CLKDIVC( + .RESETN (~reset_calib), + .HCLKIN (clk_2m_a), + .CALIB (1'b0 ), + .CLKOUT (clk_500k_a) +); + +defparam Inst8_CLKDIVC.DIV_MODE="4"; +defparam Inst8_CLKDIVC.GSREN="false"; +CLKDIV Inst8_CLKDIVC( + .RESETN (~reset_calib), + .HCLKIN (clk_500k_a), + .CALIB (1'b0 ), + .CLKOUT (clk_8us_a) +); + DIn16 i_din16( .reset(~rst_n), .clock(clk_10m_a), @@ -133,6 +163,7 @@ DIn16 i_din16( .io_oser_fclk(clk_50m_a), .io_ides_pclk(clk_100m_a), .io_ides_fclk(clk_400m_a), + .io_clk8us(clk_8us_a), .io_lvds_down_din(lvds_down_din), .io_lvds_down_dout(lvds_down_dout),