Advertisement
AtomSoft

Untitled

Nov 27th, 2012
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module SimpleUART(CLOCK_50,KEY,KEY1,TXPIN);
  2.  
  3. input CLOCK_50;
  4. input KEY;
  5. input KEY1;
  6. output TXPIN;
  7.  
  8. reg [15:0]  count;
  9. reg [15:0]  cSpeed = 16'b101000101100;
  10. reg ClkOut = 1'b0;
  11.  
  12. always@(posedge CLOCK_50)
  13.  
  14. begin
  15.     if(count == cSpeed)
  16.         begin
  17.             count = 0;
  18.             ClkOut = ~ClkOut;
  19.         end
  20.     else
  21.         count = count + 1;
  22. end
  23.  
  24. assign KEYA = KEY;
  25. assign KEYB = KEY1;
  26.  
  27. always@(posedge ClkOut)
  28. begin
  29.     if(!KEYA)
  30.     begin
  31.         tx_enable = 1'b1;
  32.         tx_reg = 8'b01001010;
  33.     end
  34.    
  35.     if(!KEYB)
  36.     begin
  37.         tx_enable = 1'b1;
  38.         tx_reg = 8'b01000001;
  39.     end
  40.    
  41.     if(KEYB && KEYA)
  42.         tx_enable <= 0;
  43.  
  44. end
  45.  
  46.  
  47. reg [7:0]    tx_reg         ;
  48. reg [3:0]    tx_cnt         ;
  49. reg          tx_out         ;
  50. reg              tx_enable;
  51.  
  52. // UART TX Logic
  53. always @ (posedge ClkOut)
  54. begin
  55.    if (tx_enable) begin
  56.      if (tx_cnt == 0) begin
  57.        tx_out <= 0;
  58.      end
  59.      if (tx_cnt > 0 && tx_cnt < 9) begin
  60.         tx_out <= tx_reg[tx_cnt -1];
  61.      end
  62.      if (tx_cnt == 9) begin
  63.        tx_out <= 1;
  64.        tx_cnt <= 0;
  65.          tx_cnt <= 0;
  66.      end
  67.       tx_cnt <= tx_cnt + 1;
  68.    end
  69.    
  70. end
  71.  
  72. assign TXPIN = tx_out;
  73. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement