提要:
如果想通過axi匯流排控制bram,呼叫axi_bram_ctrl模組,那麼後端的bram必須要配置成bram ctrl mode;
如果是全部自己寫**控制bram,建議用stand alone mode,位址線的分配跟思維一致;
最理想的方式是雙口ram一側是axi的bram-ctrl模式,另一側是stand-alone模式給user控制,但是mode只能選一種;
blk_mem_gen_0: bram controller mode;預設使用32bit-addr;預設勾選byte write enable,32bit-width的每個byte都能單獨控制,we[3:0];
blk_mem_gen_1: stand alone mode,2k-depth對應 11bit-addr,addr[10:0];沒有勾選 byte write enable 則是乙個we[0:0]控制整條位寬;
blk_mem_gen_2: stand alone mode,勾選了 byte write enable,則每個byte單獨受控,we[3:0];
告警bram介面型別不匹配,配成stand alone的話type都是other。
如果前端使用axi_bram_ctrl模組來控制,那後面的blk_mem_gen要配置成bram controller模式,不然很明顯會不匹配。
ctrl與mem之間的位址線不一致,系統預設連線低位線。
點開synthesis或者implement中的schematic原理圖,檢視實際連線情況
blk_mem_gen_0側的addr連線(bram ctrl mode)
2k的depth需要11bit-addr,而8k的size需要13bit-addr。(addr[1:0]應該是預留給定址單個byte用的,讀byte位址+1),讀位寬4byte的話位址+4;
所以從mem外殼介面來看,addr[1:0]是懸空不用的,實際addr從[2]開始;user在操作的時候,位址是按照+4來增加的。
但是實際ctrl與mem連線中,除了addr[12:2]對接外,其他都是n/c的,[31:13] [1:0]。所以想控制單獨byte只能控制we[3:0]。
在ctrl側,同樣[1:0]也是n/c;[11:2]與ctrl內部的q[9:0]連線,內部的bram_addr_a[0]控制最高位[12];(是否也能為ramb36e1塊的片選功能預留?)
blk_mem_gen_1/2側的addr連線(stand alone mode)
首先在mem側外部的[10:0]直接跟內部的ramb36e1塊[10:0]直連;
在ctrl側外部,跟其低[10:0]相連;
進入ctrl內部,卻只有[10:2]跟控制觸發器q[8:0]對接,低位[1:0]置0,仍然是bram_ctrl模式,低位用來控制byte,導致只能間隔讀寫1/4的ram空間;
結論是:bram ctrl模式下,連線位址是從[2]開始的,[1:0]沒有連線;但是在stand alone模式下,位址都是從[0]開始連線的,而在ctrl側低[1:0]又是跳開的,那麼只能操作ram的[0] [4][8][...];
在bram ctrl mod下,ctrl與mem之間的we[3:0]是一一對應的;
到內部的ramb36e1,是兩個we控制16bit寬度,所以是每個we控制乙個byte;
在stand alone mode下,ctrl的we[3:0]只有[0]跟mem的we相連
在2個ramb36e1內部,是共用這乙個we訊號
結論是:we訊號單獨控制還是統一控制都可以。
兩個16位寬的ram組成乙個32位寬的bram。ramb36e1是36kb的ram塊,相容8bit和9bit位元組,即4kb的size。
告警mem0少乙個connection,點開design_1.v檔案,發現少了doutb介面,這裡沒有用到,忽略。
SRAM位址線的連線
在嵌入式系統設計過程中,由於主控晶元 如arm ppc mips等 片上的儲存空間不夠大,經常需要外接儲存器晶元 如rom sram sdram ddr2 nand flash等 因此,弄清楚主控晶元與外界儲存晶元的引腳連線原理至關重要,由於nand flash的引腳連線比較簡單,不涉及位址線的連線...
攻克儲存 SRAM位址線的連線
在嵌入式系統設計過程中,由於主控晶元 如arm ppc mips等 片上的儲存空間不夠大,經常需要外接儲存器晶元 如rom sram sdram ddr2 nand flash等 因此,弄清楚主控晶元與外界儲存晶元的引腳連線原理至關重要,由於nand flash的引腳連線比較簡單,不涉及位址線的連線...
攻克儲存 SRAM位址線的連線
在嵌入式系統設計過程中,由於主控晶元 如arm ppc mips等 片上的儲存空間不夠大,經常需要外接儲存器晶元 如rom sram sdram ddr2 nand flash等 因此,弄清楚主控晶元與外界儲存晶元的引腳連線原理至關重要,由於nand flash的引腳連線比較簡單,不涉及位址線的連線...