티스토리 뷰

Verilog HDL를 주제로 한 여섯번째 포스팅에서 다룰내용은 Sec counter를 이용하여 시,분,초를 다 포함한  Digital_clock을 설계해 보겠습니다.

 

 

 

 

지난 포스팅에서는 1초마다 업카운팅 시켜주며 60카운팅시 캐리를

발생시키는 Sec counter(초 시계)를 다루어 보았습니다.

 

Sec counter에서는 count_out의 값이 60이 될때 값을 0으로 초기화 하고 carry를 발생

시켰었는데요, 바로 이 60sec를 카운트시 발생하는 carry를 CLK(클럭) 값으로 취하고

또 다시 60카운트를 돌리면 Min counter(분 시계)가 됩니다.

 

똑같은 설계구조로 Min counter의 carry를 CLK(클럭) 값으로 취하고 24카운트를 돌리면

우리가 이번 포스팅에서 목표로 한 Hour counter(시 시계)의 기본적인(basic) 설계를

마칠수 있습니다.

 

이번 포스팅에서는 24시계를 만들것이고 다음포스팅에서는 am/pm이 표시되는

12시계를 만들어볼계획입니다.

 

그럼 지금까지의 설명을 기반으로 하여 Min counter와  Hour counter를 Verilog HDL을

통해 프로그래밍 해보겠습니다.

 

Min counter(분 시계)의 경우 Sec counter의 아웃풋 값중 carry를 와이어를 통해 Min counter

의 클럭값으로 연결해주면 됩니다. 와이어의 선언은 다음과 같습니다.

 

wire Carry_to_min; 

 

캐리를 Min counter로 보내기 때문에 와이어 이름을 Carry_to_min이라 하였고 1비트 신호이기 때문에

비트수는 따로 선언해주지 않았습니다. 

 

이제 와이어를 통하여 서로를 연결해주기위해서 Sec counter의 선언과 Min counter의

선언을 다음과 같이 해줍니다.

 

wire Carry_to_min; 
clock_sec U2 (.RST(RST) , .binary(Sec_Binary), .CLK_1Hz(CLK_1Hz), .carry_to_min(Carry_to_min));

counter MinConter (.clk(Carry_to_min),.rst(RST), .count_out(Min_Binary), .carry_out(Carry_to_hour));

 

붉은 글씨로  표시해둔것처럼 선언 하여 Min counter를 마무리합니다.

 

이제 Min counter의 carry를 이용하여 Hour Conter를 설계해 보겠습니다.

Min counter의 설계와 같이 carry값을 전달해줄 와이어를 선언해주고 

카운터의 파라미터인 MOD값과 BIT값을 변경하여 선언해줍니다 방법은

모듈의 이름앞에 #(MOD,BIT)를 붙여 선언해주면됩니다. 

 

wire Carry_to_hour;

counter #(24,$clog2(24)) U4 (.clk(Carry_to_hour),.rst(RST), .count_out(Hour_Binary));

 

최종적으로 0시0분0초부터 흘러가는 Digital_clock시계를 완성했습니다.

 

전체 코드는 다음 포스팅의 am/pm이 표기되는 12시계와 함께 업로드 하겠습니다.

'Language > Verilog HDL' 카테고리의 다른 글

Verilog HDL - Digital Calendar_제안 (Year Mon Day module)  (0) 2021.02.03
Verilog HDL - Digital_clock(am/pm)  (1) 2021.02.03
Verilog HDL - Sec counter  (1) 2021.01.29
Verilog HDL - Clock Generator  (1) 2021.01.29
Verilog HDL - Counter  (0) 2021.01.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함