Improve igloo2 example
authorClifford Wolf <clifford@clifford.at>
Wed, 6 Mar 2019 04:35:48 +0000 (20:35 -0800)
committerClifford Wolf <clifford@clifford.at>
Wed, 6 Mar 2019 04:36:00 +0000 (20:36 -0800)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
examples/igloo2/example.pdc
examples/igloo2/example.v

index 0cf34adb34d0a3f25512365dbd22f96588ae004c..298d9e934bdc8dc785da5cacceefed74dd18c66a 100644 (file)
@@ -1,8 +1,20 @@
 # Add placement constraints here
+
 set_io clk  -pinname H16 -fixed yes -DIRECTION INPUT
+
 set_io SW1  -pinname H12 -fixed yes -DIRECTION INPUT
 set_io SW2  -pinname H13 -fixed yes -DIRECTION INPUT
+
 set_io LED1 -pinname J16 -fixed yes -DIRECTION OUTPUT
 set_io LED2 -pinname M16 -fixed yes -DIRECTION OUTPUT
 set_io LED3 -pinname K16 -fixed yes -DIRECTION OUTPUT
 set_io LED4 -pinname N16 -fixed yes -DIRECTION OUTPUT
+
+set_io AA   -pinname L12 -fixed yes -DIRECTION OUTPUT
+set_io AB   -pinname L13 -fixed yes -DIRECTION OUTPUT
+set_io AC   -pinname M13 -fixed yes -DIRECTION OUTPUT
+set_io AD   -pinname N15 -fixed yes -DIRECTION OUTPUT
+set_io AE   -pinname L11 -fixed yes -DIRECTION OUTPUT
+set_io AF   -pinname L14 -fixed yes -DIRECTION OUTPUT
+set_io AG   -pinname N14 -fixed yes -DIRECTION OUTPUT
+set_io CA   -pinname M15 -fixed yes -DIRECTION OUTPUT
index b701c707d532a05e8fa602b5090562cff41af1aa..05b6ced5ef6f89832d8787fa03f3af940d806664 100644 (file)
@@ -5,10 +5,13 @@ module example (
        output LED1,
        output LED2,
        output LED3,
-       output LED4
+       output LED4,
+
+       output AA, AB, AC, AD,
+       output AE, AF, AG, CA
 );
 
-       localparam BITS = 4;
+       localparam BITS = 8;
        localparam LOG2DELAY = 22;
 
        reg [BITS+LOG2DELAY-1:0] counter = 0;
@@ -20,4 +23,41 @@ module example (
        end
 
        assign {LED1, LED2, LED3, LED4} = outcnt ^ (outcnt >> 1);
+
+       // seg7enc seg7encinst (
+       //      .seg({AA, AB, AC, AD, AE, AF, AG}),
+       //      .dat(CA ? outcnt[3:0] : outcnt[7:4])
+       // );
+
+       assign {AA, AB, AC, AD, AE, AF, AG} = ~(7'b 100_0000 >> outcnt[7:4]);
+       assign CA = counter[10];
+endmodule
+
+module seg7enc (
+       input [3:0] dat,
+       output [6:0] seg
+);
+       reg [6:0] seg_inv;
+       always @* begin
+               seg_inv = 0;
+               case (dat)
+                       4'h0: seg_inv = 7'b 0111111;
+                       4'h1: seg_inv = 7'b 0000110;
+                       4'h2: seg_inv = 7'b 1011011;
+                       4'h3: seg_inv = 7'b 1001111;
+                       4'h4: seg_inv = 7'b 1100110;
+                       4'h5: seg_inv = 7'b 1101101;
+                       4'h6: seg_inv = 7'b 1111101;
+                       4'h7: seg_inv = 7'b 0000111;
+                       4'h8: seg_inv = 7'b 1111111;
+                       4'h9: seg_inv = 7'b 1101111;
+                       4'hA: seg_inv = 7'b 1110111;
+                       4'hB: seg_inv = 7'b 1111100;
+                       4'hC: seg_inv = 7'b 0111001;
+                       4'hD: seg_inv = 7'b 1011110;
+                       4'hE: seg_inv = 7'b 1111001;
+                       4'hF: seg_inv = 7'b 1110001;
+               endcase
+       end
+       assign seg = ~seg_inv;
 endmodule