Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2020
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module tx (
  2.     output reg  [8:0] data,
  3.     input  wire disp,
  4.     input  wire clk,
  5.     input  wire rst
  6. );
  7.  
  8.     reg [15:0] cnt;
  9.  
  10.     always @(posedge clk)
  11.     begin
  12.         if (rst) begin
  13.             cnt  <= 0;
  14.             data <= 9'h000;
  15.         end else begin
  16.             /* Default is inc */
  17.             cnt <= cnt + 1;
  18.  
  19.             if (cnt[11]) begin
  20.                 /* Packet */
  21.                 case (cnt[7:0])
  22.                     8'h00: data <= 9'h1fb; /* K27.7 - S SOP  */
  23.  
  24.                     8'h01: data <= 9'h055; /* Preamble */
  25.                     8'h02: data <= 9'h055;
  26.                     8'h03: data <= 9'h055;
  27.                     8'h04: data <= 9'h055;
  28.                     8'h05: data <= 9'h055;
  29.                     8'h06: data <= 9'h055;
  30.                     8'h07: data <= 9'h055;
  31.  
  32.                     8'h08: data <= 9'h0d5; /* SFD */
  33.  
  34.                     8'h09: data <= 9'h000; /* MAC Dest */
  35.                     8'h0a: data <= 9'h001;
  36.                     8'h0b: data <= 9'h002;
  37.                     8'h0c: data <= 9'h003;
  38.                     8'h0d: data <= 9'h004;
  39.                     8'h0e: data <= 9'h005;
  40.  
  41.                     8'h0f: data <= 9'h000; /* MAC Source */
  42.                     8'h10: data <= 9'h001;
  43.                     8'h11: data <= 9'h002;
  44.                     8'h12: data <= 9'h003;
  45.                     8'h13: data <= 9'h004;
  46.                     8'h14: data <= 9'h005;
  47.  
  48.                     8'h15: data <= 9'h008; /* IPv4 */
  49.                     8'h16: data <= 9'h000;
  50.  
  51.                     /* Payload */
  52.  
  53.                     8'h5a: data <= 9'h098; /* FCS */
  54.                     8'h5b: data <= 9'h04b;
  55.                     8'h5c: data <= 9'h06b;
  56.                     8'h5d: data <= 9'h032;
  57.  
  58.                     8'h5e: data <= 9'h1fd; /* K29.7 - T EOP1 */
  59.                     8'h5f: data <= 9'h1f7; /* K23.7 - R EOP2 */
  60.  
  61.                     default: data <= 9'h0a5;
  62.                 endcase
  63.  
  64.                 /* Wrap */
  65.                 if (cnt[7:0] == 8'h5f)
  66.                     cnt <= 0;
  67.             end else begin
  68.                 /* Default */
  69.                 data <= (!cnt[0]) ?
  70.                     9'h1bc /* K28.5 */ : (
  71.                         disp ?
  72.                             9'h0c5 /* D5.6 */ :
  73.                             9'h050 /* D16.2 */
  74.                     );
  75.             end
  76.         end
  77.     end
  78.  
  79. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement