在創建完DDR4的仿真模型后,我們為了實現異步時鐘的讀寫,板卡中在PL端提供了一組差分時鐘,可以用它通過vivado中的Clock Wizard IP核生成多個時鐘,在這里生成兩個輸出時鐘,分別作為用戶的讀寫時鐘,這樣就可以用異步時鐘來讀寫ddr4數據。今天我們來介紹vivado中的Clock Wizard IP核。
Clock Wizard IP核是 Xilinx Vivado Design Suite 中的一個時鐘管理 IP核,主要用于FPGA設計中的時鐘生成和管理。Clock Wizard 提供了豐富的時鐘配置選項。
在基本配置中可以使用時鐘輸入(clk_in),時鐘輸出(clk_out),復位(reset),時鐘鎖(locked)等信號來完成Clock Wizard IP核的基本配置,其中locked用來指示輸出的時鐘是否穩定,當locked有效后方可使用輸出時鐘。
Clock Wizard IP核時鐘輸入的基本配置。
由于輸入時鐘為管腳輸入的差分時鐘,我們選擇Differential clock capable pin,時鐘頻率為100MHz差分時鐘。
根據需求可以自己勾選兩組輸出時鐘,修改輸出的時鐘頻率,在這里使用50MHz和100MHz作為兩組輸出時鐘,將來可以分別作為讀寫DDR4的時鐘。勾選上reset和locked,reset可以連接到復位管腳,locked作為輸出時鐘是否穩定的標志。
點擊OK,IP建立完成后,將IP例化到模塊頂層中。
接下來我們通過仿真觀察輸出的時鐘
可以看到當復位信號拉低后,過段時間會輸出兩組時鐘,一組為100MHz,一組為50MHz,隨后locked會拉高,表示輸出時鐘穩定,可以使用這兩組時鐘作為讀寫DDR4的時鐘。
后邊會使用兩個fifo來緩存從ddr4讀出的數據和將要寫入ddr4的數據:
(1)、寫DDR4的緩存fifo(wrfifo)使用100MHz時鐘作為wrfifo的寫時鐘,使用DDR4輸出的時鐘作為wrfifo的讀時鐘。
(2)、讀DDR4的緩存fifo(rdfifo)使用DDR4輸出的時鐘作為rdfifo的寫時鐘,使用50MHz時鐘作為rdfifo的讀時鐘。
這樣我們用這兩個fifo來連接DDR4:
如果DDR4不滿并且wrfifo不空,那么就將wrfifo中的數據寫入DDR4中,當DDR4滿后,停止向DDR4寫數據,此時如果wrfifo沒滿,還可以將wrfifo寫滿。
當DDR4不空并且rdfifo不滿時,將DDR4中的數據讀出放到rdfifo中,當rdfifo滿后,停止從DDR4讀數據。
由此可見最大容量為DDR4+wrfifo+rdfifo。
學習FPGA、技術交流可以私信或點擊主頁聯系
威三學社出品