2013-06-13 65 views
0

我需要使用VHDL以50%佔空比將50 MHz時鐘分頻爲1.5 Mhz。爲此,我想用一個計數器來計數50 Mhz時鐘脈衝的數量,直到1.5 Mhz時鐘週期的一半,即16.6666,這是十進制的,我不知道如何在代碼中實現。任何人都可以幫助我嗎?VHDL時鐘以十進制分頻

非常感謝。

回答

1

我不是VHDL方面的專家,但我不認爲你可以用合成代碼精確到1.5 MHz。如果您改變了在50 MHz時鐘上等待多少個時鐘週期,直到您提高1.5 MHz時鐘,那麼平均可以得到1.5 MHz。

如果你只想要可以模擬的代碼,那麼當然你可以使用任意的延遲。

1

您建議的方法會產生一個近似值,這當然可以。如果沒有,我建議你使用實例化一個特定於目標技術的PLL或時鐘管理器。

+0

PLL是要走的路。如果你自己實現時鐘分頻器,你可以得到的最好是近似值。如果您使用Altera設計軟件,請查找ALTPLL宏功能。 –

+0

我正在使用Xilinx ISE。 DCM只能分到16位。因此,我不能用33.3333除以從50MHz輸入時鐘獲得1.5MHz。你知道如何使用DCM來實現嗎? – user24883

+0

使用DCM_clkgen原語:設置M = 3,d = 10(我已閱讀數據表,這是有效的)。這將需要50MHz的參考頻率,將其頻率提高到150MHz,並將頻率提高到15MHz。然後或者做一個5時鐘計數器給你1.5MHz,這可能會在那些速度下正常,或者放一秒dcm並進一步分頻。 – OllieB