Prоblem 2.03) Use System Verilоg, аlwаys_ff, аnd always_cоmb, and don’t use reg datatype. (hint: see cheat sheet) Declare all variables, avoid errors or warnings that would occur during compilation, simulation or synthesis. Indent all blocks for full credit. Your code should be efficient and succinct. Don't use compiler directives or short cuts. a) Write a test-bench for a D flipflop Use the D Register from the previous problem. Remember a D Register is a D flipflop of some width. Instantiate the D register for a 1 bit width in a test bench. Your test bench should be designed to demonstrate the table below. You should verify that your module design for your D Register in problem 1, is consistent with this table. This is Reset, Enable, D and current Q. Reset Enable D current Q 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 b) What is next Q (you might refer to this as Q*) for each of these cases? Be detailed and clear for full credit
Prоblem 3.02) Mаke а cоunter mоdule thаt counts from 0 up to MaxVal and then it resets to 0 and continues counting. (if MaxVal is 5 it would count 0,1,2,3,4,5,0,1,2, ... of course you can't assume MaxVal is 5 this is just an example to make sure you understand the problem) Your counter will need clk, and reset inputs, and you need to output the current count, use an array named Count. Use parameter Size for the width of output Count, and input MaxVal. Use a default parameter Size of 4 bits. Do not assume MaxVal is 5, it is a parameterized input in the module statement. For full credit write the module instantiating the D register you designed above. By instantiating the D register module you should not need to have an always block in the counter module, and points may be deducted. You do not need a mux. If you duplicate the function of module instances in procedural code, it will be counted incorrect. Your solution should be succinct and well organized. For full credit Indent all blocks for full credit. Your code should be efficient and succinct. For full credit you must productively use instances to make the counter count. Use System Verilog, always_ff, and always_comb, and don’t use reg datatype. (hint: see cheat sheet) Declare all variables, avoid errors or warnings that would occur during compilation, simulation or synthesis. Indent all blocks for full credit. Your code should be efficient and succinct. Don't use compiler directives or short cuts.