Advertisement
Guest User

Untitled

a guest
Jan 31st, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module RS232_TEST(
  2.     input CLOCK_50, RESET, RX,
  3.     output SAMPLE,
  4.     output [7:0] LED
  5.     );
  6.    
  7.     // Internal signals
  8.     wire [7:0] data;
  9.     wire data_ready;
  10.     wire sample;
  11.     reg data_read, data_read_next;
  12.     reg [3:0] state, state_next;
  13.     reg [7:0] led_data, led_data_next;
  14.    
  15.     // Define states
  16.     localparam [3:0]
  17.         Start = 0,
  18.         Idle = 1,
  19.         Read = 2,
  20.         Wait = 3;
  21.    
  22.     // Define assignments
  23.     assign SAMPLE = sample;
  24.     assign LED = led_data;
  25.    
  26.     // Call instance of module
  27.     RS232 receiver1 (.CLOCK_50(CLOCK_50), .RESET(RESET), .RX(RX), .DATA_OUT(data), .DATA_READ(data_read), .DATA_READY(data_ready), .SAMPLE(sample));
  28.    
  29.     // Sequential logic
  30.     always @(posedge CLOCK_50)
  31.     begin
  32.         if(!RESET)
  33.         begin
  34.             data_read <= 0;
  35.             led_data <= 0;
  36.             state <= 0;
  37.         end
  38.         else
  39.         begin
  40.             data_read <= data_read_next;
  41.             led_data <= led_data_next;
  42.             state <= state_next;
  43.         end
  44.     end
  45.    
  46.     always @*
  47.     begin
  48.     data_read_next = data_read;
  49.     led_data_next = led_data;
  50.     state_next = state;
  51.    
  52.     case(state)
  53.         Start:
  54.         begin
  55.             data_read_next = 0;
  56.             led_data_next = 0;
  57.             state_next = Idle;
  58.         end
  59.        
  60.         Idle:
  61.         begin
  62.             data_read_next = 0;
  63.             led_data_next = led_data;
  64.             if(data_ready)
  65.             begin
  66.                 state_next = Read;
  67.             end
  68.             else
  69.             begin
  70.                 data_read_next = 0;
  71.                 state_next = Idle;
  72.             end
  73.         end
  74.        
  75.         Read:
  76.         begin
  77.             led_data_next = data;
  78.             data_read_next = 1;
  79.             state_next = Wait;
  80.         end
  81.        
  82.         Wait:
  83.         begin
  84.             data_read_next = 1;
  85.             if(data_ready)
  86.             begin
  87.                 data_read_next = 1;
  88.                 state_next = Wait;
  89.             end
  90.             else
  91.             begin
  92.                 data_read_next = 0;
  93.                 state_next = Idle;
  94.             end
  95.         end
  96.        
  97.     endcase
  98.     end
  99.    
  100. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement