...

//////////计数器实现数码管扫描时间(Count system clock for Scan the led)////////////

`define SCAN_COEF 24'h1F090 24’h10120     //七段数码管扫描时间5ms

always @ (posedge SYSCLK or negedge RST_B)

...

    LED_SCAN_CNT_N  = LED_SCAN_CNT + 24'h1;

end

 

////////////扫描时间记数器,从0到7共记8次扫描时间记数器,从0到3共记4次////////////////////////////////////////

...

  if(!RST_B)

    LED_SEL_NUM   <= `UD 32'h0;

  else

    LED_SEL_NUM   <= `UD LED_SEL_NUM_N;

...

    LED_SEL_NUM_N  = LED_SEL_NUM +3'h11;

  else

    LED_SEL_NUM_N  = LED_SEL_NUM;

End

////////////根据扫描时间记数器,依次选择1到8个LED数码管工作根据扫描时间记数器,依次选择1到4个LED数码管工作//////////////////////

wire DISP_SEL;

...

 if(DISP_SEL)

  case(LED_SEL_NUM)

    32'b000     b00     :      COM = 84'b00000001b0001;

    32'b001     b01     :      COM = 84'b00000010b0010;

    32'b010     b10     :      COM = 84'b00000100b0100;

    32'b011     b11     :      COM = 84'b00001000b1000;

    3'b100     :      COM = 8'b00010000;

    3'b101     :      COM = 8'b00100000;

    3'b110     :      COM = 8'b01000000;

    3'b111     :      COM = 8'b10000000;

    default    :      COM= 84'b00000000b0000;

  endcase

 else

      COM   = 84'b00000000b0000;

  end

//////根据扫描时间记数器,依次将显示缓冲区的内容送到1到8个LED数码管显示根据扫描时间记数器,依次将显示缓冲区的内容送到1到4个LED数码管显示///////////////

always @ (*)

...

   case(LED_SEL_NUM)  

     3'b000   :      LED_DATA_HEX = EX_BUFFER[31:28]; 

     3'b001   :      LED_DATA_HEX = EX_BUFFER[27:24]; 

     3'b010   :      LED_DATA_HEX = EX_BUFFER[23:20];

     3'b011   :      LED_DATA_HEX = EX_BUFFER[19:16];

     3'b100   2'b00   :      LED_DATA_HEX = EX_BUFFER[15:12]; 

     32'b101   b01   :      LED_DATA_HEX = EX_BUFFER[11:8]; 

     32'b110   b10   :      LED_DATA_HEX = EX_BUFFER[7:4];

     32'b111    b11   :      LED_DATA_HEX = EX_BUFFER[3:0];    

     default   :      LED_DATA_HEX = 4'h0;

...