Zynq-7000 PL端時鐘詳解
掃描二維碼
隨時隨地手機看文章
1PL 時鐘簡介
PL 具有自己的時鐘管理生成和分配功能,還從 PS 中的時鐘發(fā)生器接收四個時鐘信號,如下圖所示。
PL 時鐘生成
PS 產生的四個時鐘彼此完全異步,與其他 PL 時鐘沒有關系。
這四個時鐘來自 PS 中單獨選擇的 PLL。每個 PL 時鐘都是獨立的輸出信號,可產生適合 PL 使用的時鐘波形。
2時鐘油門
四個 PL 時鐘中的每一個都包含用于啟動和停止時鐘以及協(xié)助 PL 設計調試和協(xié)同仿真的邏輯。時鐘節(jié)流行為由軟件和來自 PL 的觸發(fā)輸入信號控制。
時鐘節(jié)流功能包括:
-
軟件控制下的啟動/停止時鐘
-
為預編程的脈沖數運行時鐘
-
運行時鐘并使用 PL 邏輯來暫停時鐘脈沖
每個時鐘節(jié)流閥都有一個 16 位計數器,該計數器針對要生成的時鐘脈沖數進行編程。
對于連續(xù)時鐘輸出,向計數器寫入 0,這是默認值,當前計數可由軟件讀取,PL 邏輯可以使用來自 PL 的FCLKCLKTRIGxN輸入信號暫停計數和時鐘脈沖,軟件可以通過寫入PL時鐘控制寄存器來重新啟動計時。
PL 時鐘油門輸入信號如下:
| 信號名稱 | I/O | 描述 |
|---|---|---|
| FCLKCLKTRIGxN | I | PL 時鐘觸發(fā)信號是來自 PL 邏輯的輸入,用于在對編程的時鐘脈沖數進行計數時暫停(暫停)PL 時鐘。暫停模式由FCLKCLKTRIGxN信號的上升沿(邏輯 0 到邏輯 1)進入, 該信號可以與 FCLK 和所有其他信號異步置位,當時鐘連續(xù)運行時,該引腳沒有影響,[LAST_CNT] = 0。 |
3時鐘油門編程
示例:停止/開始時鐘
此示例說明了使用寫入節(jié)流計數寄存器slcr.FPGAx_THR_CNT [LAST_CNT]中的最后一個計數字段來停止和啟動 PL 時鐘 (FCLKCLKx) 的簡單方法,該示例假設slcr.FPGAx_THR_CTRL寄存器保持其默認狀態(tài)0x0000_0000。
- 停止時鐘
將0x0000_0001寫入slcr.FPGAx_THR_CTRL,立即停止時鐘。
[LAST_CNT] = 1 [ReservedReserved] = 0
- 開始時鐘
將 0x0000_0000 寫入slcr.FPGAx_THR_CTRL以恢復連續(xù)時鐘。
[LAST_CNT] = 0 [Reserved] = 0
示例:運行 592 個脈沖的 PL 時鐘并停止
在本例中,將有 592 個時鐘脈沖和停止,slcr.FPGAx_THR_CTRL [CPU_START]位是正沿觸發(fā)以啟動時鐘。
- 啟動啟動時鐘位
將 0x0000_0004 寫入控制寄存器slcr.FPGAx_THR_CTRL。
[CPU_START] = 0 [CNT_RST] = 0 [Reserved] = 0x001
- 編程計數為 592
將 0x0000_0250 寫入計數寄存器slcr.FPGAx_THR_CNT。
[LAST_CNT] = 0x0250 [Reserved] = 0
- 置位起始時鐘位
將 0x0000_0005 寫入控制寄存器slcr.FPGAx_THR_CTRL。
[CPU_START] = 1 [CNT_RST] = 0 [Reserved] = 0x001
示例:編程 592 脈沖并與 PL 觸發(fā)器輸入交互
在這個例子中,將有 592 個時鐘脈沖被時鐘觸發(fā)信號暫停(FCLKCLKTRIGxN) 并由軟件重新啟動,slcr.FPGAx_THR_CTRL [CPU_START]位為正邊沿觸發(fā)以啟動時鐘。
-
啟動起始時鐘位
-
編程計數為 592
-
置位起始時鐘位
-
PL 邏輯暫停時鐘(HALT 狀態(tài)):邏輯置位 FCLKCLKTRIGxN 輸入以停止時鐘時鐘。
-
啟動起始時鐘位





