Guest User

Untitled

a guest
May 23rd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. `define DEBUG
  2.  
  3. module dbl(
  4. input clk,rst,
  5. input logic [N-1:0] alpha,Xn,Zn,
  6. output logic [N-1:0] X2n,Z2n
  7. `ifdef DEBUG
  8. ,output wire [3:0] o_count,
  9. output wire [2:0] o_in_sel0,o_in_sel1,o_in_sel2,
  10. output wire [N-1:0] o_calc_out0,o_calc_out1,o_calc_out2,
  11. output wire [N-1:0] o_memory_out0,o_memory_out1,o_memory_out2,o_memory_out3,o_memory_out4,o_memory_out5
  12. `endif
  13. );
  14.  
  15. parameter N = 16;
  16.  
  17. logic inf;
  18. logic [N-1:0] calc_out[2:0];
  19. logic [N-1:0] memory_out[5:0];
  20. logic [2:0] in_sel[2:0];
  21. logic [2:0] out_sel[5:0];
  22. logic [3:0] count;
  23.  
  24. adder adder1(memory_out[0],memory_out[1],calc_out[0]);
  25. subtractor subtractor1(memory_out[2],memory_out[3],calc_out[1]);
  26. multiplier multiplier3(memory_out[4],memory_out[5],calc_out[2]);
  27. memory_d memory_d1(clk,rst,in_sel,out_sel,alpha,Xn,Zn,calc_out,memory_out);
  28.  
  29. initial begin
  30. count=4'b0000;
  31. in_sel='{3'b101,3'b101,3'b101};
  32. out_sel='{3'b000,3'b000,3'b010,3'b001,3'b010,3'b001};
  33. end
  34.  
  35. `ifdef DEBUG
  36. assign o_count=count;
  37. assign o_in_sel0=in_sel[0];
  38. assign o_in_sel1=in_sel[1];
  39. assign o_in_sel2=in_sel[2];
  40. assign o_calc_out0=calc_out[0];
  41. assign o_calc_out1=calc_out[1];
  42. assign o_calc_out2=calc_out[2];
  43. assign o_memory_out0=memory_out[0];
  44. assign o_memory_out1=memory_out[1];
  45. assign o_memory_out2=memory_out[2];
  46. assign o_memory_out3=memory_out[3];
  47. assign o_memory_out4=memory_out[4];
  48. assign o_memory_out5=memory_out[5];
  49. `endif
  50.  
  51. always @(posedge clk or negedge rst) begin
  52. if(rst==0) begin
  53. count=4'b0000;
  54. in_sel='{3'b101,3'b101,3'b101};
  55. out_sel='{3'b000,3'b000,3'b010,3'b001,3'b010,3'b001};
  56. end else begin
  57. case(count)
  58. 4'b0000:begin
  59. if(Zn==0)begin
  60. inf=1;
  61. X2n=Xn;
  62. Z2n=Zn;
  63. end else begin
  64. inf=0;
  65. end
  66. in_sel='{3'b101,3'b010,3'b001};
  67. out_sel='{3'b001,3'b001,3'b000,3'b000,3'b000,3'b000};
  68. count=4'b0001;
  69. end
  70. 4'b0001:begin
  71. in_sel='{3'b011,3'b101,3'b101};
  72. out_sel='{3'b010,3'b010,3'b000,3'b000,3'b000,3'b000};
  73. count=4'b0010;
  74. end
  75. 4'b0010:begin
  76. in_sel='{3'b100,3'b101,3'b101};
  77. out_sel='{3'b100,3'b011,3'b100,3'b011,3'b000,3'b000};
  78. count=4'b0011;
  79. end
  80. 4'b0011:begin
  81. in_sel='{3'b011,3'b010,3'b101};
  82. out_sel='{3'b010,3'b000,3'b000,3'b000,3'b000,3'b000};
  83. count=4'b0100;
  84. end
  85. 4'b0100:begin
  86. if(inf==0)begin
  87. X2n=calc_out[2];
  88. end
  89. in_sel='{3'b001,3'b101,3'b101};
  90. out_sel='{3'b000,3'b000,3'b000,3'b000,3'b001,3'b100};
  91. count=4'b0101;
  92. end
  93. 4'b0101:begin
  94. in_sel='{3'b101,3'b101,3'b001};
  95. out_sel='{3'b001,3'b010,3'b000,3'b000,3'b000,3'b000};
  96. count=4'b0110;
  97. end
  98. 4'b0110:begin
  99. in_sel='{3'b100,3'b101,3'b101};
  100. out_sel='{3'b000,3'b000,3'b010,3'b001,3'b010,3'b001};
  101. count=4'b0111;
  102. end
  103. 4'b0111:begin
  104. if(inf==0)begin
  105. Z2n=calc_out[2];
  106. end
  107. in_sel='{3'b101,3'b010,3'b001};
  108. out_sel='{3'b000,3'b000,3'b010,3'b001,3'b010,3'b001};
  109. count=4'b1111;
  110. end
  111. default:begin
  112. end
  113. endcase
  114. end
  115. end
  116.  
  117. endmodule
Add Comment
Please, Sign In to add comment