Advertisement
Guest User

decod

a guest
May 9th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module numarator(data, up_down, load, clk, reset, oe, result, tc);
  2. input [3:0] data;
  3. input up_down, load, clk, reset, oe;
  4. output reg [3:0] result;
  5. output reg tc;
  6. always @(posedge clk) begin
  7.  if(oe == 1) begin
  8.   result = 4'bz;
  9.   tc = 4'bz;
  10.  end
  11.  else begin
  12.   if(reset == 1)
  13.    result = 0;
  14.   else begin
  15.    if(load == 1)
  16.     result = data;
  17.    else begin
  18.     if(up_down == 1) begin
  19.      result = result + 1;
  20.      if(result == 15)
  21.       tc = 1;
  22.      else
  23.       tc = 0;
  24.     end
  25.     else begin
  26.      result = result - 1;
  27.      if(result == 0)
  28.       tc = 1;
  29.      else
  30.       tc = 0;
  31.     end
  32.    end
  33.   end
  34.  end
  35. end
  36. endmodule
  37.  
  38. module tst_num();
  39. reg [3:0] data;
  40. reg up_down, load, clk, reset, oe;
  41. wire [3:0] result;
  42. wire tc;
  43. initial begin
  44.  clk = 1;
  45.  forever
  46.   #10 clk = ~clk;
  47. end
  48. initial begin
  49.  oe = 1;
  50.  #10 oe = 0; reset = 1;
  51.  #20 reset = 0; load = 1; data = 11;
  52.  #20 load = 0; up_down = 0;
  53.  #200 up_down = 1;
  54.  #150 reset = 1;
  55. end
  56. numarator tstn(data, up_down, load, clk, reset, oe, result, tc);
  57. endmodule
  58.  
  59. module reg_deplasare(clk, rst, sd, s_in, d_in, datareg, q);
  60. input clk, rst, s_in, d_in;
  61. input [1:0] sd;
  62. input [3:0] datareg;
  63. output reg [3:0] q;
  64. always @(posedge clk) begin
  65.  if(rst == 1)
  66.   q = 0;
  67.  if(sd == 0)
  68.   q = datareg;
  69.  else if(sd == 1)
  70.   q = {d_in, q[3:1]};
  71.  else if(sd == 2)
  72.   q = {q[2:0], s_in};
  73. end
  74. endmodule
  75.  
  76. module tst_reg();
  77. reg clk, rst, s_in, d_in;
  78. reg [1:0] sd;
  79. reg [3:0] datareg;
  80. wire [3:0] q;
  81. initial begin
  82.  clk = 1;
  83.  forever
  84.   #10 clk = ~clk;
  85. end
  86. initial begin
  87.  sd = 0;
  88.  datareg = 10;
  89.  #10 d_in = 0; s_in = 1; sd = 2;
  90.  #50 sd = 1;
  91. end
  92. reg_deplasare tstr(clk, rst, sd, s_in, d_in, datareg, q);
  93. endmodule
  94.  
  95. module decodificator(in, oe, y);
  96. input [3:0] in;
  97. input oe;
  98. output reg [15:0] y;
  99. integer k;
  100. always @(in or oe) begin
  101.  if(oe == 1)
  102.   y = 4'bz;
  103.  else begin
  104.   y = 0;
  105.   for(k=0; k<=15; k=k+1)
  106.    if(in == k)
  107.     y[k] = 1;
  108.  end
  109. end
  110. endmodule
  111.  
  112. module tst_dec();
  113. reg [3:0] in;
  114. reg oe;
  115. wire [15:0] y;
  116. integer k;
  117. initial begin
  118.  oe = 1;
  119.  #10 oe = 0; in = 0;
  120.  for(k=1; k<=15; k=k+1)
  121.   #10 in = k;
  122. end
  123. decodificator tstd(in, oe, y);
  124. endmodule
  125.  
  126. module schema();
  127. //parametri numarator
  128. reg [3:0] data;
  129. reg up_down, load, clk, reset, oe;
  130. wire [3:0] result;
  131. wire tc;
  132. //parametri decodificator
  133. wire [15:0] y;
  134. //parametri deplasare
  135. reg rst, s_in, d_in;
  136. reg [1:0] sd;
  137. wire [3:0] q;
  138. initial begin
  139.  clk = 1;
  140.  forever
  141.   #10 clk = ~clk;
  142. end
  143. initial begin
  144.  oe = 1; rst = 0;
  145.  #10 oe = 0; reset = 1;
  146.  #20 reset = 0; load = 1; data = 11; sd = 0;
  147.  #20 load = 0; up_down = 0; d_in = 0; s_in = 1; sd = 2;
  148.  #200 up_down = 1; sd = 1;
  149.  #150 reset = 1;
  150. end
  151. numarator ftstn(data, up_down, load, clk, reset, oe, result, tc);
  152. reg_deplasare ftstr(clk, rst, sd, s_in, d_in, result, q);
  153. decodificator ftstd(result, oe, y);
  154. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement