Advertisement
Guest User

Untitled

a guest
Aug 6th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module dmx (
  2.     clock,
  3.     tx
  4.    
  5. );
  6.  
  7. input clock;
  8. output tx;
  9.  
  10. parameter s_break = 3'b000;
  11. parameter s_mab = 3'b001;
  12. parameter s_start_code = 3'b010
  13. parameter s_tx_slots = 3'b011;
  14. parameter s_idle = 3'b100
  15.  
  16. parameter clks_per_bit = 48
  17. parameter break = 23
  18. parameter mab = 3
  19. parameter start_code = 3'b000
  20. parameter slot = 3'b128
  21. parameter num_slots = 9'b100000000
  22.  
  23. reg [2:0] r_sm_main = 0;
  24. reg [7:0] r_clock_count = 0;
  25. reg [9:0] r_slots_sent = 0;
  26. reg [2:0] r_tx_bits_sent = 0;
  27.  
  28. always @(posedge clock)
  29.     begin
  30.         case (r_sm_main)
  31.             s_idle :
  32.                 begin
  33.                     tx <= 0;
  34.                     r_clock_count <= 0:
  35.                     r_sm_main <= s_break;
  36.                 end
  37.             s_break :
  38.                 begin
  39.                     if(r_clock_count < clocks_per_bit * break)
  40.                     begin
  41.                         tx <= 0;
  42.                         r_sm_main <= s_break;
  43.                         r_clock_count <= r_clock_count + 1;
  44.                     end
  45.                     else
  46.                         r_sm_main <= s_mab;
  47.                         r_clock_count <= 0;
  48.  
  49.                 end
  50.             s_mab :
  51.                 begin
  52.                     if(r_clock_count < clocks_per_bit * mab)
  53.                         begin
  54.                             tx <= 1;
  55.                             r_sm_main <= s_mab;
  56.                             r_clock_count <= r_clock_count + 1;
  57.                         end
  58.                     else
  59.                         r_clock_count <= 0;
  60.                         r_sm_main <= s_tx_slots;
  61.                 end
  62.             s_tx_slots :
  63.                 begin
  64.                     if(r_clock_count < clocks_per_bit)
  65.                     begin
  66.                         if(r_slots_sent < num_slots)
  67.                             begin
  68.                                 tx <= 0;
  69.                                 r_sm_main <= s_tx_slots;
  70.                                 r_clock_count <= r_clock_count + 1;
  71.                             end
  72.  
  73.            
  74.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement