Guest User

Untitled

a guest
Jan 12th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module cntrl_7seg(
  2.     input clk,
  3.     input rst,
  4.     input [3:0] din0,
  5.     input [3:0] din1,
  6.     output [3:0] AN,
  7.     output [7:0] SEG,
  8.     output dbg_en,
  9.     output [1:0] dbg_cntr,
  10.     output [3:0] dbg_dmux
  11. );
  12.  
  13.  
  14. // ~kHz periódusidejû engedélyezõjel generálása
  15. wire en;
  16. reg [15:0] cnt;
  17.  
  18. always @ (posedge clk)
  19.    if(en | rst)
  20.       cnt <= 0;
  21.    else
  22.       cnt <= cnt + 1;
  23.      
  24. //assign en = (cnt == 49999);
  25. assign en = (cnt == 1);
  26.  
  27. // 4 bites shift regiszter
  28. reg [3:0] shr;
  29.  
  30. always @ (posedge clk)
  31.    if(rst)
  32.       shr <= 4'b1110;
  33.    else
  34.       if(en)
  35.          shr <= {shr[2:0], shr[3]};
  36.  
  37. assign AN = shr;
  38.  
  39. // 2 bites számláló
  40. reg [1:0] cntr;
  41.  
  42. always @ (posedge clk)
  43.    if(rst)
  44.       cntr <= 0;
  45.    else
  46.       if(en)
  47.       cntr <= cntr + 1;
  48.  
  49. // 4 bites, 4:1 multiplexer
  50. reg [3:0] dmux;
  51.  
  52. always @ (*)
  53. case (cntr)
  54.    2'b00: dmux <= din0;
  55.    2'b01: dmux <= din1;
  56.    2'b10: dmux <= 0;
  57.    2'b11: dmux <= 0;
  58. endcase
  59.    
  60.  
  61. // szegmens dekóder
  62. reg [7:0] SEG_DEC;
  63. always @(dmux)
  64.     case (dmux)
  65.         4'h0:    SEG_DEC <= 8'b00000011;
  66.         4'h1:    SEG_DEC <= 8'b10011111;
  67.         4'h2:    SEG_DEC <= 8'b00100101;
  68.         4'h3:    SEG_DEC <= 8'b00001101;
  69.         4'h4:    SEG_DEC <= 8'b10011001;
  70.         4'h5:    SEG_DEC <= 8'b01001001;
  71.         4'h6:    SEG_DEC <= 8'b01000001;
  72.         4'h7:    SEG_DEC <= 8'b00011111;
  73.         4'h8:    SEG_DEC <= 8'b00000001;
  74.         4'h9:    SEG_DEC <= 8'b00001001;
  75.         default: SEG_DEC <= 8'b11111111;
  76.     endcase
  77.  
  78. assign SEG = SEG_DEC;
  79.  
  80. assign dbg_en = en;
  81. assign dbg_cntr = cntr;
  82. assign dbg_dmux = dmux;
  83.  
  84. endmodule
Add Comment
Please, Sign In to add comment