在嵌入式系統設計過程中,由於主控晶元(如arm、ppc、mips等)片上的儲存空間不夠大,經常需要外接儲存器晶元(如rom、sram、sdram、ddr2、nand flash等),因此,弄清楚主控晶元與外界儲存晶元的引腳連線原理至關重要,由於nand flash的引腳連線比較簡單,不涉及位址線的連線,而sdram和ddr2訪問原理與rom和sram有一些不同,故以後再專門講述,這裡我將主要介紹arm與rom、sram這兩種儲存晶元的連線。
首先,我們看乙個電路圖。
這個電路圖為三星公司的arm晶元s3c2440與1片128kb的sram晶元的連線原理圖。其中,sram晶元的引腳與圖中晶元方框圖中所標示,而arm晶元的引腳則為導線上的標號。
初學者可能會有幾個疑問,為什麼sram晶元的a0位址引腳連線的是arm晶元的a1引腳呢?那什麼情況下sram晶元的a0連線arm晶元的a0引腳呢?
首先,我們分析一下圖中的 sram晶元,該晶元有a0~a15一共16根位址線,有d0~d15一共16根資料線,故其儲存空間為 2^16 * 16 bit = 2^17 * 8 bit = 2^17 byte = 128kb
我們知道,要定址 128kb 需要 17 根位址線(128 = 2^17 ),然而sram晶元的位址引腳卻只有16根,arm端該如何給位址線呢?
由圖可以看出,sram晶元的資料匯流排是16位寬,即一次傳輸2個位元組的資料。因此,我們可以這樣理解,即
乙個位址空間其實對應著2個位元組的資料,實際上真正的定址空間只有64kb而已,16根位址線足夠。這樣arm端並不需要將17根位址線全部連線到sram晶元上,只需要給出高16位位址(a1~a16),然後,sram晶元即根據這16根位址找到對應的位址空間,將該位址空間的2個位元組傳送到資料匯流排上,然後arm端根據未連線到sram晶元的a0的電平,來決定具體是取高位元組,還是低位元組。
由這些分析可以推出乙個規律,即
arm端的位址線到底是 a0 、a1 還是 a2 連線 儲存晶元的 a0,取決於儲存系統的資料匯流排位寬,如果是 8位則a0->a0,如果是16位則a1->a0,如果是32位則a2->a0。
大致搞清楚了上面的原理後,arm與儲存晶元的連線方法也就很清晰了,下面給幾張分別描述了各種情況下的arm與儲存晶元的連線示意圖(擷取自s3c2440的datasheet)。
【說明】:上圖的rom為 2^16 x 8 bit = 64kb ,由於資料匯流排為8位寬,故乙個位址空間對應著1個位元組,故arm端的a0連線rom的a0
【說明】:上圖中,由兩片8位寬64kb的rom構成了乙個16位寬的儲存系統。
【說明】:上圖中,由四片8位寬的rom構成了乙個32位寬的儲存系統。
那麼,留乙個小問題供大家思考,如果將arm的a0~a15引腳連線乙個16位寬的sram的a0~a15引腳,會發生什麼現象?
注,本文討論的arm晶元是沒有類似sdram controller這樣的儲存器控制器的arm晶元,
對於有類似sdram controller模組的arm晶元,它會根據暫存器配置的外接ddr晶元資料位寬,在硬體上將arm的位址線引腳進行的左移操作,例如當資料位寬為16位時,硬體上將arm的a1腳的電平移至a0,依次類推。所以,這樣的arm晶元不需要根據本文的方法連線,而直接將arm端的a0~ax 連線到儲存器的 a0~ax 即可。
攻克儲存 SRAM位址線的連線
在嵌入式系統設計過程中,由於主控晶元 如arm ppc mips等 片上的儲存空間不夠大,經常需要外接儲存器晶元 如rom sram sdram ddr2 nand flash等 因此,弄清楚主控晶元與外界儲存晶元的引腳連線原理至關重要,由於nand flash的引腳連線比較簡單,不涉及位址線的連線...
攻克儲存 SRAM位址線的連線
在嵌入式系統設計過程中,由於主控晶元 如arm ppc mips等 片上的儲存空間不夠大,經常需要外接儲存器晶元 如rom sram sdram ddr2 nand flash等 因此,弄清楚主控晶元與外界儲存晶元的引腳連線原理至關重要,由於nand flash的引腳連線比較簡單,不涉及位址線的連線...
IP分析 bram的位址線連線
提要 如果想通過axi匯流排控制bram,呼叫axi bram ctrl模組,那麼後端的bram必須要配置成bram ctrl mode 如果是全部自己寫 控制bram,建議用stand alone mode,位址線的分配跟思維一致 最理想的方式是雙口ram一側是axi的bram ctrl模式,另一...