Page 376 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 376
always@(posedge clk, negedge reset) //50ms 발생부(5*10)
if(!reset) cnt_50ms<=5'b0;
else begin
if(state==delay_5ms) begin
if(cnt_5ms>=249999) begin
if(cnt_50ms>=9) cnt_50ms<=5'b0;
else cnt_50ms<=cnt_50ms+1;
end
end
else cnt_50ms<=5'b0;
end
always@(posedge clk, negedge reset) //5ms마다 line 값 증가(각 자리에 맞는 값 표시)
if(!reset) line<=5'b0;
else begin
if(state==disp_data) begin
if(cnt_5ms>=249999) begin
if(line>=34) line<=5'b0;
else line<=line+1;
end
end
else line<=5'b0;
end
always@(posedge clk, negedge reset) //lcd_en 조건부
if(!reset) lcd_en<=1'b0;
else begin
if(state==delay_100ms || state==delay_5ms) lcd_en<=1'b0;
else begin
if(cnt_5ms>=62499 && cnt_5ms<=cnt_5ms_half) lcd_en<=1'b1;
else lcd_en<=1'b0;
end
end
always@(posedge clk, negedge reset) //상태 레지스터 + 상태 천이회로
if(!reset) state<=delay_100ms;
else begin
if(cnt_5ms==0) begin //5ms마다 0이된다.(이로인해 상태값이 5ms씩 지연되므로 타이밍도에 따른 동작을 구현한
다.)
case(state)
- 369 -