summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fizzbuzz.tb.v35
-rw-r--r--fizzbuzz.v18
2 files changed, 53 insertions, 0 deletions
diff --git a/fizzbuzz.tb.v b/fizzbuzz.tb.v
new file mode 100644
index 0000000..cf31546
--- /dev/null
+++ b/fizzbuzz.tb.v
@@ -0,0 +1,35 @@
+`timescale 1us/1ns
+
+module fizzbuzz_tb (
+);
+
+
+reg [7:0] number = 0;
+wire [7:0] num_out;
+
+fizzbuzz uut(
+ .num_i(number),
+ .num_o(num_out),
+ .fizz_o(),
+ .buzz_o(),
+ .fizzbuzz_o()
+);
+
+initial begin
+ $dumpfile("fizzbuzz.lxt2"); $dumpvars();
+
+end
+
+always #10 begin
+ number <= number + 1;
+ if (number == 3) assert(num_out == 0);
+ if (number == 5) assert(num_out == 0);
+ if (number == 15) assert(num_out == 0);
+end
+
+initial begin
+ #2570
+ $finish();
+end
+
+endmodule
diff --git a/fizzbuzz.v b/fizzbuzz.v
new file mode 100644
index 0000000..e568013
--- /dev/null
+++ b/fizzbuzz.v
@@ -0,0 +1,18 @@
+module fizzbuzz (
+ input [7:0] num_i,
+ output [7:0] num_o,
+ output fizz_o,
+ output buzz_o,
+ output fizzbuzz_o
+);
+
+wire is_fizz, is_buzz;
+assign is_fizz = num_i % 3 == 0;
+assign is_buzz = num_i % 5 == 0;
+
+assign fizz_o = is_fizz && !is_buzz;
+assign buzz_o = !is_fizz && is_buzz;
+assign fizzbuzz_o = is_fizz && is_buzz;
+assign num_o = (is_fizz || is_buzz) ? 0 : num_i;
+
+endmodule