From 1209f6a7004cbdb8ff8316ca1aa09f322fd5fd85 Mon Sep 17 00:00:00 2001 From: Yehowshua Immanuel Date: Mon, 25 Sep 2023 02:45:27 -0400 Subject: [PATCH] now converted clock divider --- {src => old_src}/ClkDivider.bs | 0 src/ClkDivider.bsv | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) rename {src => old_src}/ClkDivider.bs (100%) create mode 100644 src/ClkDivider.bsv diff --git a/src/ClkDivider.bs b/old_src/ClkDivider.bs similarity index 100% rename from src/ClkDivider.bs rename to old_src/ClkDivider.bs diff --git a/src/ClkDivider.bsv b/src/ClkDivider.bsv new file mode 100644 index 0000000..862fb2b --- /dev/null +++ b/src/ClkDivider.bsv @@ -0,0 +1,41 @@ +package ClkDivider; +export mkClkDivider; + +export ClkDivider(..); + +interface ClkDivider#(numeric type hi); + method Action reset(); + method Bool isAdvancing(); + method Bool isHalfCycle(); +endinterface + +module mkClkDivider#(Handle fileHandle)(ClkDivider#(hi)); + Reg#(UInt#(TLog#(hi))) counter <- mkReg(0); + UInt#(TLog#(hi)) hi_value = fromInteger(valueOf(hi)); + UInt#(TLog#(hi)) half_hi_value = fromInteger(valueOf(TDiv#(hi, 2))); + + Real val = fromInteger(valueOf(hi)); + let msg = "Clock Div Period : " + realToString(val) + "\n"; + + hPutStr(fileHandle, msg); + hPutStr(fileHandle, genModuleName); + + rule tick; + $display(counter); + counter <= (counter == hi_value) ? 0 : counter + 1; + endrule + + method Action reset(); + counter <= 0; + endmethod + + method Bool isAdvancing(); + return (counter == hi_value); + endmethod + + method Bool isHalfCycle(); + return (counter == half_hi_value); + endmethod +endmodule + +endpackage \ No newline at end of file