Files
Toooba/src_SSITH_P3/src_BSV/PowerOnReset.bsv
rsnikhil a6a227ed66 Incorporated patches/additions from Joe Stoy after GFE debugging (w. amendment ...)
Amendment: RegUNInit.v updated, removing an extraneous RST line.
2020-03-13 16:38:54 -04:00

52 lines
1014 B
Plaintext

package PowerOnReset;
import Clocks::*;
UInt#(8) resetCycles = 10;
import "BVI" RegUNInit =
module mkRegUNInit#(parameter a init) (Reg#(a))
provisos (Bits#(a,sa));
parameter width = valueOf(sa);
parameter init = pack(init);
default_clock clk(CLK, (*unused*)CLK_GATE);
no_reset;
method Q_OUT _read();
method _write(D_IN) enable(EN);
schedule _read CF _read;
schedule _write SBR _write;
schedule _read SB _write;
endmodule
import "BVI" ASSIGN1 =
module mkBoolToReset#(Bool xin) (ResetGenIfc);
default_clock ();
no_reset;
port IN = xin;
output_reset gen_rst(OUT);
endmodule
(*synthesize*)
module mkPowerOnReset (ResetGenIfc);
Reg#(UInt#(8)) ctr <- mkRegUNInit(resetCycles);
Reg#(Bool) isInPowerOnReset <- mkRegUNInit(True);
rule countDown(isInPowerOnReset);
let n = ctr - 1;
ctr <= n;
if (n==0) isInPowerOnReset <= False;
endrule
let rst_ifc <- mkBoolToReset(!isInPowerOnReset);
return rst_ifc;
endmodule
endpackage