SHARE
TWEET

Untitled

a guest Aug 6th, 2019 84 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
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