SHARE
TWEET

Untitled

a guest Sep 6th, 2019 109 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module verificator(input logic clk,
  2.     input logic rst,
  3.     input logic [31:0] slave_error_counter,
  4.     inout tri [31:0] data_line,
  5.     output logic clk_out,
  6.     output logic [31:0] error_counter,
  7.     output logic rdwr);
  8.    
  9.     logic [31:0] clk_counter;
  10.     logic [31:0] data_counter;
  11.     logic [31:0] data;
  12.     logic control;
  13.     logic [15:0] state;
  14.     assign data_line = control ? data : 'z;
  15.    
  16.     // creating sync clk for slave fpga
  17.     always @(posedge clk or posedge rst) begin
  18.         if(rst) begin
  19.             clk_out <= 0;
  20.             clk_counter <= 0;
  21.         end
  22.         else begin
  23.             clk_counter = clk_counter + 1;
  24.             if(clk_counter >= 10) begin
  25.                 clk_counter <= 0;
  26.                 clk_out <= ~clk_out;
  27.             end
  28.         end
  29.     end
  30.    
  31.     //creating data signal for slave fpga
  32.     always @(posedge clk_out or posedge rst) begin
  33.    
  34.         if(rst) begin
  35.             data_counter = 0;
  36.             control = 1;
  37.             data = 0;
  38.             state = 1;
  39.             error_counter = 0;
  40.             rdwr = 0;
  41.         end
  42.        
  43.         else begin
  44.             case (state)
  45.                 1: begin // start writing to port
  46.                         data_counter = data_counter + 1;
  47.                         control = 1;
  48.                         rdwr = 0;
  49.                         data = data_counter;
  50.                         state = 2;
  51.                     end
  52.                 2: begin //start reading from port
  53.                         control = 0;
  54.                         rdwr = 1;
  55.                         state = 3;
  56.                     end
  57.                 3: begin // validate data from port
  58.                         if(data_line != data_counter)
  59.                             error_counter = error_counter + 1;
  60.                         //rdwr = 0;
  61.                         state = 4;
  62.                     end
  63.                 4:  begin
  64.                         rdwr = 0;
  65.                         state = 1;
  66.                     end
  67.                 default:;
  68.  
  69.             endcase
  70.         end
  71.        
  72.     end
  73.  
  74. endmodule
  75.  
  76. module verificator_slave(input logic clk,
  77.     input logic clk_out,
  78.     input logic rst,
  79.     input logic rdwr,
  80.     inout tri [31:0] data_line,
  81.     output logic [31:0] slave_error);
  82.    
  83.     logic control, data_counter_flag;
  84.     logic [15:0] state;
  85.     logic [31:0] error_counter, data_aquired, data, data_counter;
  86.    
  87.     logic drdwr, dclk_out;
  88.     always @(posedge clk) begin
  89.         drdwr <= rdwr;
  90.         dclk_out <= clk_out;
  91.     end
  92.    
  93.     always @(posedge dclk_out or posedge rst) begin
  94.         if(rst) begin
  95.             control = 0;
  96.             data_aquired = 0;
  97.             state = 2;
  98.             slave_error = 0;
  99.             data_counter = 0;
  100.             data_counter_flag = 0;
  101.         end
  102.        
  103.         else begin
  104.             if(drdwr == 0) begin
  105.                 data_counter_flag = 1;
  106.                 case (state)
  107.                 1: begin
  108.                     control = 0;
  109.                     state = 2;
  110.                     end
  111.                 2: begin
  112.                         data = data_line;
  113.                     state = 1;
  114.                     end
  115.                 default:;
  116.                 endcase
  117.             end
  118.             else if (drdwr) begin
  119.                 state = 1;
  120.                 if(data_counter_flag) begin
  121.                     data_counter_flag = 0;
  122.                     data_counter = data_counter + 1;
  123.                    
  124.                     if (data != data_counter)
  125.                         slave_error = slave_error + 1;
  126.                 end
  127.                 control = 1;
  128.             end
  129.         end
  130.        
  131.     end
  132.  
  133. endmodule
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top