2009-12-10 706 views
1

祝賀大家。將數字時鐘的時間模式從12HR更改爲24HR(VHDL)

我正在設計一個VHDL數字時鐘,我應該在FPGA上進行綜合。我將級聯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 2009-12-10 13:26:49

+1

mod12可合成 – 2009-12-10 20:30:28

回答

1

基本上,你正在做所有的二進制編碼的十進制(BCD)算術。所以只要自己建立一個BCD比較器/減法器:

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

不需要mod!

0

如果您有足夠的資源,則可以使H寄存器翻倍。讓旁邊的H24-1和H24-2(如你已經有的)和H12-1和H12-2「mod12」註冊。兩個對將始終保持同步,所以您將在每個時鐘週期都準備好格式。不僅僅是使用一些MUX來切換顯示它們中的哪一個。

相關問題