2014-10-07 41 views
1

所以我有一個任務來編寫一些僞代碼來編程一個頻率合成器。有三個主要端口可供我使用,'啓用','數據'和'時鐘'。用外部時鐘嵌入式編程合成器

設備初始關閉,當啓用(低電平有效)被觸發時,時鐘將循環(經過一些最小設置時間後)。除了延遲,我將有一個函數SendCommand(uint32_t addr,uint16_t data)。

我遇到的問題是,在給我的規範中,數據在下降時鐘邊沿是「讀取」。這意味着數據按參數中定義的地址逐個讀入到寄存器中,並一直保持讀取狀態,直到整個16位字被寫入寄存器。時鐘週期約爲10MHz。我的問題是:

- 如何模擬時鐘以10MHz(100 ns /週期)循環?

- 如何在所述時鐘的下降沿執行「數據讀取」。

現在忽略程序的寫作方面,它仍然只是僞代碼。

+0

你應該從寫作開始,而不是閱讀。但它聽起來像你有類似於「串行外設接口」或「SPI」的東西。要以10MHz的時鐘頻率完成這項工作,您可能需要一個硬件SPI引擎,如許多微控制器中所發現的 - 如果您的系統沒有,可以使用一個遠程微控制器作爲代表。但是,如果你不需要高性能,大多數(儘管不是全部)這樣的設備將以更低的時鐘速率接收數據。如果你有一個真實的(非USB)並行接口,軟件中的單個信號是一種常見的技術。 – 2014-10-07 21:10:18

回答

0

頻率合成器芯片通常使用沒有MISO線(即只寫SPI)的SPI接口。 SPI是一個同步通信接口,因此時鐘頻率不是關鍵;一個位將在CLOCK信號的下降沿(在這種情況下)被移入,但是當該邊緣發生時無關緊要 - 接收器將無限期地等待 - 它甚至不需要固定。

10MHz的規範將簡單地是最大頻率支撐,或更準確地反映了它在時鐘線的下降沿之間的最小時間段,爲1/10×10 6 100ns的。你很難推動維持這個速度,一致地在軟件中實現SPI。大多數微控制器都包含SPI硬件來自動輸出SPI信號。問題What are the disadvantages of bit banging SPI/I2C in embedded applications可能是唯一的興趣。 Here是一個軟件SPI實現的例子 - 你只需要寫功能,而不是讀,並且你可以將它擴展到16位,儘管你可以同樣發送兩個字節。