summaryrefslogtreecommitdiff
path: root/examples/intel/asicworld_lfsr/lfsr_updown.v
diff options
context:
space:
mode:
authorRuben Undheim <ruben.undheim@gmail.com>2018-08-30 20:46:22 +0200
committerRuben Undheim <ruben.undheim@gmail.com>2018-08-30 20:46:22 +0200
commit78bfe0de96fa5c6a7e53689ef53deaeac1d0a7b8 (patch)
treecc36d8cc573f1e6cc9b15ccc85a66883356cbf5f /examples/intel/asicworld_lfsr/lfsr_updown.v
parent291bd6d9b3f51ea86c38bbe998c0896ad8b9fed2 (diff)
parent5033b51947a6ef02cb785b5622e993335efa750a (diff)
Merge tag 'upstream/0.7+20180830git0b7a184'
Upstream version 0.7+20180830git0b7a184
Diffstat (limited to 'examples/intel/asicworld_lfsr/lfsr_updown.v')
-rw-r--r--examples/intel/asicworld_lfsr/lfsr_updown.v35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/intel/asicworld_lfsr/lfsr_updown.v b/examples/intel/asicworld_lfsr/lfsr_updown.v
new file mode 100644
index 00000000..43db1606
--- /dev/null
+++ b/examples/intel/asicworld_lfsr/lfsr_updown.v
@@ -0,0 +1,35 @@
+`default_nettype none
+module lfsr_updown (
+clk , // Clock input
+reset , // Reset input
+enable , // Enable input
+up_down , // Up Down input
+count , // Count output
+overflow // Overflow output
+);
+
+ input clk;
+ input reset;
+ input enable;
+ input up_down;
+
+ output [7 : 0] count;
+ output overflow;
+
+ reg [7 : 0] count;
+
+ assign overflow = (up_down) ? (count == {{7{1'b0}}, 1'b1}) :
+ (count == {1'b1, {7{1'b0}}}) ;
+
+ always @(posedge clk)
+ if (reset)
+ count <= {7{1'b0}};
+ else if (enable) begin
+ if (up_down) begin
+ count <= {~(^(count & 8'b01100011)),count[7:1]};
+ end else begin
+ count <= {count[5:0],~(^(count & 8'b10110001))};
+ end
+ end
+
+endmodule