2009-12-10 4 views
1

안녕하세요.디지털 시계의 시간 모드를 VHDL에서 12HR에서 24HR로 변경

FPGA에서 합성해야하는 VHDL로 디지털 시계를 설계하고 있습니다. 나는 S1, S2, M1, M2, H1과 H2를 계단식으로 연결하고있다 (S1 = 초 1, M1 = 분 1, H1 = 시간 1 등). 24HR 디스플레이에서 12HR 디스플레이 형식으로 전환하는 데 클럭이 필요합니다. H1과 H2가 각각 4 비트, 즉 현재 시간을 표시하기 위해 총 8 비트 인 으로 표시된다면 어떻게해야합니까? HR1과 HR2를 연결 한 다음 12를 빼고 다시 연결 해제해야합니까? X mod 12는 FPGA에서 구현하기위한 합성 가능한 연산이 아니라는 점을 명심하십시오.

대단히 감사합니다.

+0

'mod 12 '는 합성 가능한 작업이 아니지만 mod12 카운터를 쉽게 만들 수 있습니다 ... – Marty

+1

mod12는 합성 가능합니다 –

답변

1

기본적으로 BCD (이진 코드 소수)로 모든 산술 연산을 수행하고 있습니다. BCD 비교기/감산기를 직접 구축하십시오 :

if h1 = 1 and h2 > 2 
    subtract 1 off h1 
    subtract 2 off h2 
    if h2 wrapped 
    subtract 1 off h1 

아무런 수정이 필요하지 않습니다!

0

여분의 리소스가있는 경우 H 레지스터를 두 배로 늘릴 수 있습니다. H24-1과 H24-2 (이미 가지고 있듯이)와 H12-1과 H12-2 "mod12"레지스터를 옆에 두자. 두 쌍 모두 항상 클럭킹되므로 모든 클록주기마다 두 형식을 모두 준비 할 수 있습니다. 일부 MUX를 사용하여 표시되는 스위치를 전환하는 것뿐입니다.