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





