Verwendeter Programmcode in Studienarbeit für ESY1B zum Thema "Verifikation mit SystemVerilog und Python"
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

filter.v 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /* Machine-generated using Migen */
  2. module filter(
  3. input signed [15:0] i,
  4. output signed [15:0] o,
  5. input sys_clk,
  6. input sys_rst
  7. );
  8. reg signed [15:0] sreg0 = 16'sd0;
  9. reg signed [15:0] sreg1 = 16'sd0;
  10. reg signed [15:0] sreg2 = 16'sd0;
  11. reg signed [15:0] sreg3 = 16'sd0;
  12. reg signed [15:0] sreg4 = 16'sd0;
  13. reg signed [15:0] sreg5 = 16'sd0;
  14. reg signed [15:0] sreg6 = 16'sd0;
  15. reg signed [15:0] sreg7 = 16'sd0;
  16. reg signed [15:0] sreg8 = 16'sd0;
  17. reg signed [15:0] sreg9 = 16'sd0;
  18. reg signed [15:0] sreg10 = 16'sd0;
  19. reg signed [15:0] sreg11 = 16'sd0;
  20. reg signed [15:0] sreg12 = 16'sd0;
  21. reg signed [15:0] sreg13 = 16'sd0;
  22. reg signed [15:0] sreg14 = 16'sd0;
  23. reg signed [15:0] sreg15 = 16'sd0;
  24. reg signed [15:0] sreg16 = 16'sd0;
  25. reg signed [15:0] sreg17 = 16'sd0;
  26. reg signed [15:0] sreg18 = 16'sd0;
  27. reg signed [15:0] sreg19 = 16'sd0;
  28. reg signed [15:0] sreg20 = 16'sd0;
  29. reg signed [35:0] sum_full = 36'sd0;
  30. wire signed [31:0] sum_accu;
  31. wire signed [35:0] sig_i_q0;
  32. wire signed [31:0] sig_o0;
  33. wire signed [31:0] sig_i_q1;
  34. wire signed [15:0] sig_o1;
  35. // synthesis translate_off
  36. reg dummy_s;
  37. initial dummy_s <= 1'd0;
  38. // synthesis translate_on
  39. assign sig_i_q0 = (sum_full <<< 1'd0);
  40. assign sig_o0 = sig_i_q0;
  41. assign sum_accu = sig_o0;
  42. assign sig_i_q1 = (sum_accu >>> 4'd15);
  43. assign sig_o1 = sig_i_q1;
  44. assign o = sig_o1;
  45. always @(posedge sys_clk) begin
  46. sreg0 <= i;
  47. sreg1 <= sreg0;
  48. sreg2 <= sreg1;
  49. sreg3 <= sreg2;
  50. sreg4 <= sreg3;
  51. sreg5 <= sreg4;
  52. sreg6 <= sreg5;
  53. sreg7 <= sreg6;
  54. sreg8 <= sreg7;
  55. sreg9 <= sreg8;
  56. sreg10 <= sreg9;
  57. sreg11 <= sreg10;
  58. sreg12 <= sreg11;
  59. sreg13 <= sreg12;
  60. sreg14 <= sreg13;
  61. sreg15 <= sreg14;
  62. sreg16 <= sreg15;
  63. sreg17 <= sreg16;
  64. sreg18 <= sreg17;
  65. sreg19 <= sreg18;
  66. sreg20 <= sreg19;
  67. sum_full <= ((((((((((((((((((((($signed({1'd0, 11'd1135}) * sreg0) + ($signed({1'd0, 10'd512}) * sreg1)) + ($signed({1'd0, 9'd364}) * sreg2)) + (6'sd46 * sreg3)) + (11'sd1406 * sreg4)) + (12'sd2625 * sreg5)) + (13'sd5777 * sreg6)) + (13'sd4839 * sreg7)) + (14'sd12231 * sreg8)) + (14'sd11695 * sreg9)) + ($signed({1'd0, 15'd27889}) * sreg10)) + (14'sd11695 * sreg11)) + (14'sd12231 * sreg12)) + (13'sd4839 * sreg13)) + (13'sd5777 * sreg14)) + (12'sd2625 * sreg15)) + (11'sd1406 * sreg16)) + (6'sd46 * sreg17)) + ($signed({1'd0, 9'd364}) * sreg18)) + ($signed({1'd0, 10'd512}) * sreg19)) + ($signed({1'd0, 11'd1135}) * sreg20));
  68. if (sys_rst) begin
  69. sreg0 <= 16'sd0;
  70. sreg1 <= 16'sd0;
  71. sreg2 <= 16'sd0;
  72. sreg3 <= 16'sd0;
  73. sreg4 <= 16'sd0;
  74. sreg5 <= 16'sd0;
  75. sreg6 <= 16'sd0;
  76. sreg7 <= 16'sd0;
  77. sreg8 <= 16'sd0;
  78. sreg9 <= 16'sd0;
  79. sreg10 <= 16'sd0;
  80. sreg11 <= 16'sd0;
  81. sreg12 <= 16'sd0;
  82. sreg13 <= 16'sd0;
  83. sreg14 <= 16'sd0;
  84. sreg15 <= 16'sd0;
  85. sreg16 <= 16'sd0;
  86. sreg17 <= 16'sd0;
  87. sreg18 <= 16'sd0;
  88. sreg19 <= 16'sd0;
  89. sreg20 <= 16'sd0;
  90. sum_full <= 36'sd0;
  91. end
  92. end
  93. endmodule