From ba3d8c0c57d5cb198c94fad6ce5d8dd8ed6a0359 Mon Sep 17 00:00:00 2001 From: uvok Date: Sat, 27 Dec 2025 10:13:30 +0100 Subject: Implement fizzbuzz --- fizzbuzz.tb.v | 35 +++++++++++++++++++++++++++++++++++ fizzbuzz.v | 18 ++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 fizzbuzz.tb.v create mode 100644 fizzbuzz.v 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 -- cgit v1.2.3