123456789101112131415161718192021222324252627282930313233343536 |
- (* LSC.Compile @ LSV.List Test.Lola.v *)
- MODULE Counter (IN CLK50M, rstIn: BIT;
- IN swi: BYTE; OUT leds: BYTE);
- REG (CLK50M) rst: BIT;
- cnt0: [16] BIT; (*milliseconds*)
- cnt1: [10] BIT; (*half seconds*)
- cnt2: [8] BIT;
- VAR tick0, tick1: BIT;
- BEGIN leds := swi.7 -> swi : cnt2;
- tick0 := (cnt0 = 24999);
- tick1 := tick0 & (cnt1 = 499);
- rst := ~rstIn;
- cnt0 := ~rst -> 0 : tick0 -> 0 : cnt0 + 1;
- cnt1 := ~rst -> 0 : tick1 -> 0 : cnt1 + tick0;
- cnt2 := ~rst -> 0 : cnt2 + tick1
- END Counter.
- MODULE Shifter(IN CLK50M, rstIn: BIT;
- IN swi: BYTE; OUT leds: BYTE);
- REG (CLK50M) rst, up: BIT;
- cnt0: [16] BIT; (*milliseconds*)
- cnt1: [10] BIT; (*half seconds*)
- shreg: [8] BIT;
- VAR tick0, tick1: BIT;
- BEGIN leds := swi.7 -> swi : shreg;
- tick0 := (cnt0 = 24999);
- tick1 := tick0 & (cnt1 = 499);
- rst := ~rstIn;
- cnt0 := ~rst -> 0 : tick0 -> 0 : cnt0 + 1;
- cnt1 := ~rst -> 0 : tick1 -> 0 : cnt1 + tick0;
- shreg := ~rst -> 1'8 :
- ~tick1 -> shreg :
- up -> {shreg[6:0], 0'1} : {0'1, shreg[7:1]};
- up := shreg.0 -> 1 : shreg.7 -> 0 : up
- END Shifter.
|