程式碼下載
即時時脈 MCP9410 Pmod 控制器(頂層檔案):pmod_real_time_clock.vhd (16.0 KB)
I2C 主控制器(必須包含在專案中):i2c_master.vhd (14.1 KB)
特點
- Digilent Pmod RTCC(適用於 Microchip MCP79410 即時時脈 /日曆的 Pmod)精簡介面的 VHDL 原始碼
- 透過平行介面持續輸出最新的時脈和日曆數據
- 使用者可透過簡潔的介面設定時脈和日曆
- 處理與 RTCC Pmod 的所有 I2C 通信
- 可設定的系統時脈速率
介紹
本文詳細介紹了一個 VHDL 元件,負責將 FPGA 與 Digilent 的即時時脈 /日曆 (RTCC) Pmod 介面連接,如圖 1 所示。圖 2 展示了此 RTCC Pmod 控制器整合到系統中的典型範例。如圖所示,RTCC 控制器連接到 Pmod 連接埠並執行傳輸,以設定 Pmod 上的時間和日期,並收集即時時間和日期值。時間和日期輸出會持續更新,並透過簡單的平行介面顯示。
圖 1. Digilent 即時時脈 / 日曆 Pmod
圖 2. 範例實現
工作原理
RTCC Pmod 控制器主要由狀態機和 I2C 主組件組成。
狀態機
此設計使用圖 3 所示的狀態機來實現其操作。啟動後,組件立即進入啟動狀態。它會在此狀態保持 100ms,以確保 Pmod 有足夠的時間完成上電。然後,組件進入路由狀態。如果使用者邏輯已透過切換 set_clk_ena 訊號閂鎖新的時脈設置,則路由至 set_clock 狀態。否則,路由至 read_clock 狀態。 set_clock 狀態將使用者提供的新時脈設定寫入 pmod 上的 RTCC,然後返回路由狀態。 read_clock 狀態從 RTCC 檢索當前時間和日期,然後進入 output_result 狀態,並將時間和日期輸出到對應的輸出資料連接埠。雖然圖中未顯示,但任何時間重置組件都會使其返回啟動狀態。
RTCC Pmod 控制器在 set_clock 狀態下啟動 RTCC 的板載振盪器。這啟動了計時過程。因此,在使用者第一次設定時鐘之前,輸出讀數均為零。
I2C 主控
在 set_clock 和 read_clock 狀態下,狀態機控制 I2C 主控元件與 Pmod 上的 MCP79410 RTCC 進行通訊。 I2C 主控的文件可在此處取得。
系統時脈頻率
在實體中,通用參數 sys_clk_freq 必須設定為透過其 clk 連接埠提供給 RTCC Pmod 控制器的系統時脈頻率(以 Hz 為單位)。
I2C 上拉電阻
與大多數 Digilent Pmod 開發板不同,Pmod RTCC 不包含上圖 2 所示的 I2C 上拉電阻。如果沒有這些電阻,I2C 匯流排將無法正常運作。
使用者可以透過將 2.2kohm 電阻連接到電路(如圖所示)來解決此問題。
Digilent 的其他幾款 Pmod 也使用 I2C 接口,包含這些電阻,並且還包含用於將其他 Pmod 插入同一 I2C 總線的連接器。如果將此 RTCC Pmod 與其中一款 Pmod 配合使用,使用者可以自動利用這些開發板上已包含的上拉電阻,無需採取進一步措施。
連接埠描述
表 1 描述了 RTCC Pmod 控制器的連接埠。
表 1. 連接埠描述
連接
此 Pmod 有一個 8 針連接器。表 2 提供了此連接器的引腳排列。RTCC Pmod 控制器的連接埠需要指派給連接到此連接器的 FPGA 引腳,具體如下表所示。J1 連接器的兩排在 Pmod 板上連接在一起,因此只需將其中一端連接到 FPGA。
表 2. RTCC Pmod 引腳排列及與 RTCC Pmod 控制器的連接
重置
reset_n 輸入連接埠必須為邏輯高電平,RTCC Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,元件將中止目前與 Pmod 的傳輸,並清除所有時間和日期時鐘輸出,例如秒、分、時、am_pm、星期、日、月和年。它也會清除 i2c_ack_err 輸出。重置不會重置 RTCC 本身,因此 RTCC 將繼續追蹤上次設定的時間和日期。重置解除後,RTCC Pmod 控制器將重新啟動工作,繼續從 RTCC 收集時間和日期資料並輸出結果。
結論
此 RTCC Pmod 控制器是一款可程式邏輯元件,可與 Digilent 的 Pmod RTCC(即時時脈/日曆 Pmod)進行介接。它負責處理與該 Pmod 的所有通訊,允許使用者設定時間和日期、啟動計時,並持續將更新後的時間和日期輸出給使用者。




