天天看點

平時積累的FPGA知識點(1)

作者:徐丹的寫作空間
平時積累的FPGA知識點(1)

1 AXI4 Interface Block Memory Generator的使用

我看了很久axi的Memory 也該自己寫一個,找找相關代碼和仿真的源碼。

https://blog.csdn.net/liuhandd/article/details/115001224這是個例子 我在電腦上建立個項目study/project_1實際做一下

執行個體化這個ip後,等一會,等它自己綜合完。右鍵就可以open example design了。

在新的example design的工程界面下,可以點選RTL ANALYSIS-->open elaborated design看到schematic。

2 非對齊操作

https://jishuin.proginn.com/p/763bfbd293ac

編譯器傾向于根據變量的大小(size)将其放置在與其大小對齊的偶數位址上

怎麼了解這句話呢?舉個例子,如果我們沒有給出特别的訓示,編譯器會傾向于:

将uint32_t(4個位元組)對齊到4位元組位址上,0x0、0x4、0x8、0xC...,也就是我們常說的對齊到字(Word Aligned);

将uint16_t(2個位元組)對齊到2位元組位址上,0x0、0x2、0x4...也就是我們常說的對齊到半字(Half-word Aligned);

将uint64_t(8個位元組)對齊到8個位元組上,0x0、0x8... 也就是我們常說的對齊到雙字(Double Word Aligned);

3 DDR IP

ddr3的IP裡可以選擇是否帶controller,但必須是帶phy的,phy就是硬核了。注意看手冊。

我查的文章:

1、控制器單元:包括輸入指令解析,模式配置&控制部分;

2、行位址選通單元:行激活通過此處操作;

3、Bank控制邏輯:行/列位址解碼用到bank選通

4、列位址選擇單元,讀寫操作同時在打開列位址的時候送到1;

5、鎖存與控制邏輯:重新整理與預充電用到該子產品;

6、内部存儲陣列,此處分8個bank,每個bank分16384行,128列;

7、讀寫資料緩存及接口驅動; dq資料在此變換位寬後内外互動;

DDR基礎操作步驟:

啟動:上電->解複位->初始化->ZQCL->LEVELING->IDLE(READY)

讀:IDLE—>行激活—>讀資料(1次或多次突發)—>預充電—>IDLE

寫:IDLE—>行激活—>寫資料(1次或多次突發)—>預充電—>IDLE

重新整理:IDLE->REF->IDLE

自重新整理的進入與退出:IDLE->SFR->IDLE

定期校正:IDLE—>ZQCS—>IDLE,一般外部溫度或電壓改變時操作

動态更改配置:IDLE->MRS/MPR->IDLE

平時積累的FPGA知識點(1)

4 OCM

在zynq裡使用OCM的時候,怎麼可以把OCM重映射到高位位址0xfffc0000-0xfffffe00,我在設定完映射位址以後,ARM測就會進去死循環

我查的:

CPU0和CPU1上分别跑了自己的程式。這篇文章中我們需要讓兩個CPU之間能夠進行通信,傳遞資料可以采用DDR或OCM(on chip memory)。OCM是一個單端口的存儲空間,但是你可以利用ZynqSoC的DMA并行通路OCM其他的交換資源模拟出一個雙端口的存儲空間。要實作這個機制,通路必須是128位資料對齊,不管在任何情況下都要滿足。這個方式能夠實作較高的吞吐量,因為DMA可以實作高效的傳輸大量資料。

OCM共256KB按照64KB分為4塊,其中前三塊在SDK中表述為RAM0占192KB處于位址空間的最開頭和DDR共用位址空間,最後一塊64KB處于位址空間的最後。OCM可以組織成128位的字存儲空間,根據PS部分定義的位址空間OCM存儲空間可以劃分為四塊64k位元組的不同位置的存儲區域。初始配置是将前三個64k位元組的存儲塊映射到PS部分起始的位址空間,最後一個64K位元組存儲塊映射到PS部分的末端的位址空間

ZYNQ固化時,正常情況下都需要DDR參與,但是有時硬體設計時,可能将DDR去掉或設計出錯,這将導緻ZYNQ無法正常固化,之前有寫過一個使用靜态連結庫進行無DDR固化的文章,當時那個是壓縮了FSBL的相關代碼隻保留FLASH模式下的功能,對于其他模式可能無法正常使用,本文将無DDR固化的情況進一步進行介紹,講解如何修改FSBL實作ZYNQ的程式固化,給出一個demo進行示範測試。

平時積累的FPGA知識點(1)

5 failfast

用于查詢failfast的design utilities是在tool->Vivado store 或者tcl store安裝

failfast這個報告好用

https://www.likecs.com/show-44843.html

平台:Vivado16.4

項目:EADCH_2.3.0_Beta

根據《UltraFast Design Methodology Timing Closure Quick Reference Guide 》(UG1292)中的設計流程,第一個階段是"初始化設計流程檢查",該階段主要要讀懂三個操作生成的報告,這三個操作是:

report_failfast

report_timing_summary

report_methodology

report_failfast生成的項目報告,檢視哪些項是REVIEW,然後針對每項内容是什麼含義,導緻的可能原因,建議的優化方法等都可以從UG949中檢視,不斷反複嘗試,直至可以接受的結果為止。

參考文獻:

UG949

UG1292

平時積累的FPGA知識點(1)