Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. //fibonacci module, version 3.0
  2. module fibonacci(output [15:0]fibval, input rst, input clk);//establish fibval, reset and clock
  3. wire [15:0] fibval;
  4. reg [15:0] Reg1; //for first fib value an-1
  5. reg [16:0] Reg2; //for second an-2, 1 bit higher to allow carryover and to catch potential error without error wire
  6.  
  7. initial
  8. begin
  9. $monitor("\tFibonacci Value = %d ", fibval);
  10. end
  11.  
  12. always@(posedge clk or negedge rst)
  13. begin
  14. if(rst == 0) begin
  15. Reg1<=0;//establish registers to 0 and 1 by default
  16. Reg2<=1;
  17. end
  18. else if(clk==1)
  19. begin
  20. Reg1 <= Reg2;//fibonacci arithmetic
  21. Reg2 <= Reg2 + Reg1;
  22. if(Reg2[16] == 1)
  23. $display("\tValues now Out of Range and Incorrect");//backup error message
  24. end
  25. end
  26.  
  27. assign fibval = Reg1;
  28.  
  29. endmodule//end Fibonacci
  30.  
  31.  
  32. //Test Bench
  33. module fibonacci_tb; // stimulus for Fibonacci generator
  34. reg clk, rst;
  35. wire[15:0] fibval;
  36. parameter maxFibval=46368;//setting max fib value for 16bits
  37.  
  38. // Instantiating the Fibonacci Module of fibo.v
  39. fibonacci fib(fibval,rst,clk);
  40.  
  41. initial forever begin //starting clock
  42. clk=0;
  43. #1;
  44. clk=1;
  45. #1;
  46. if(fibval>=maxFibval) $display("\tNow Out of range of 16 bit fibonacci values");//primary error message
  47. if(fibval>=maxFibval) $finish; //finish at last possible 16 bit fib number
  48.  
  49. end
  50.  
  51. initial begin//starting reset
  52. #1;
  53. rst=0;
  54. #1;
  55. rst=1;
  56.  
  57. end
  58.  
  59. endmodule//end Testbench
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement