diff options
| -rw-r--r-- | fizzbuzz.tb.v | 35 | ||||
| -rw-r--r-- | fizzbuzz.v | 18 |
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 |
