...
//////////计数器实现数码管扫描时间(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;
...