資源描述:
《FPGA設(shè)計(jì)秘笈》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、第十章存儲(chǔ)器一、前言如果我們考慮使用同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM),那么針對(duì)這種存儲(chǔ)器我們需考慮的主要方面有:1.這種類型的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)依賴于存儲(chǔ)數(shù)據(jù)關(guān)口的電容三極管;2.DRAM比靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)更加兼容;3.DRAM不能被合成,因此需要一個(gè)單獨(dú)的DRAM芯片;4.SDRAM要求有一個(gè)同步時(shí)鐘,這個(gè)時(shí)鐘需與其余的硬件系統(tǒng)相一致,并且是由微處理器進(jìn)行運(yùn)作5.DRAM數(shù)據(jù)必須被刷新,因?yàn)镈RAM是儲(chǔ)存電荷且在一定時(shí)間后會(huì)衰變;6.DRAM較SRAM更慢些。SRAM可以看作是類似于只讀存儲(chǔ)器(ROM)芯片,它還有其他不同的特征:1.存儲(chǔ)單元格是以標(biāo)準(zhǔn)鎖存
2、器為基準(zhǔn);2.SRAM是快捷的存儲(chǔ)方式。3.SRAM兼容性不如DRAM(或SDRAM);4.SRAM可以合成一個(gè)現(xiàn)場(chǎng)可編程門陣列(FPGA),因此它是小型、快速寄存器或內(nèi)存塊的最佳選擇。SRAM從本質(zhì)上來(lái)說(shuō)是不同步的,但是可以修改為同步運(yùn)轉(zhuǎn)(如SDRAM的同步相當(dāng)于DRAM),這通常被稱為同步RAM。這時(shí)候,F(xiàn)lash存儲(chǔ)器非常有用,盡管它的運(yùn)作不同于其他存儲(chǔ)器那樣久遠(yuǎn),僅僅是因?yàn)樗子谑褂们以贔PGA開發(fā)板上經(jīng)常用得到。Flash存儲(chǔ)器本質(zhì)上是電可擦只讀存儲(chǔ)器(EEPROM)的一種形式,可以用作是一種永久的RAM。只所以說(shuō)是永久性的,是因?yàn)樵贔lash存儲(chǔ)器中,存儲(chǔ)裝置即使在斷電時(shí)仍能
3、保存數(shù)據(jù),因此它經(jīng)常用作一種ROM,因?yàn)樗梢杂糜诖鎯?chǔ)FPGA程序,也可以用作RAM(動(dòng)態(tài))存儲(chǔ)當(dāng)前數(shù)據(jù),因此普遍用于FPGA系統(tǒng)。二、用硬件描述語(yǔ)言(VHDL)對(duì)存儲(chǔ)器進(jìn)行建模當(dāng)用VHDL對(duì)存儲(chǔ)器進(jìn)行建模時(shí)應(yīng)非常小心,因?yàn)槟承┐鎯?chǔ)器不能合成,如果使用模塊,即使是離片時(shí),也必須能體現(xiàn)出正確的實(shí)際裝置物理特征。這尤其適用于訪問(wèn)次數(shù)和時(shí)序擾亂情況。當(dāng)時(shí)序擾亂時(shí),所獲得的數(shù)據(jù)最好的情況也許是可疑的,最壞的情況是完全無(wú)效的。設(shè)計(jì)師可以發(fā)現(xiàn)自己處于一個(gè)令人反感的處境,即仿真模塊運(yùn)行良好,而實(shí)際硬件完全不起作用。在此章節(jié)中,我們所使用的VHDL是在任何模型中都不會(huì)出現(xiàn)任何物理性延時(shí),如果這些模塊用于
4、現(xiàn)實(shí)系統(tǒng)時(shí),則會(huì)增加延時(shí)。三、只讀存儲(chǔ)器ROM本質(zhì)上是一套在存儲(chǔ)寄存器中預(yù)先定義的數(shù)值。這種存儲(chǔ)器有2種定義,第一種是存儲(chǔ)區(qū)數(shù)量,第二種是位元數(shù)量。比如,假如存儲(chǔ)器各自有16個(gè)存儲(chǔ)區(qū)和8個(gè)位元,那么這個(gè)存儲(chǔ)器就可以定義為16×8ROM?;镜腞OM有一個(gè)信息輸入,可以存取地址的定義,還有一個(gè)信息輸出,是一個(gè)存放數(shù)據(jù)的邏輯載體。設(shè)想在VHDL中的一個(gè)簡(jiǎn)單的ROM行為模塊實(shí)體為:ENTITYROM16x8ISPORT(address:ININTEGERRANGE0TO15;dout:OUTstd_logic_vector(7DOWNTO0));ENDENTITYROM16x8;由此可以看到,
5、地址已被定義為一個(gè)整數(shù),但是數(shù)值范圍局限于ROM范圍中。ROM的架構(gòu)定義為一個(gè)可以直接獲取的固定數(shù)組元素。因此,一個(gè)帶有一套樣板數(shù)據(jù)元素的ROM范例可以定義如下:ARCHITECTUREexampleOFrom16x8ISTYPEromdataISARRAY(0TO15)OFstd_logic_vector(7DOWNTO0);CONSTANTromvals:romdata:=(“00000000”,“01010011”,“01110010”,“01101100”,“01110101”,“11010111”,“11011111”,“00111110”,“11101100”,“100001
6、10”,“11111001”,“00111001”,“01010101”,“11110111”,“10111111”,“11101101”);BEGINdata<=romvals(address);ENDARCHITECTUREexample;如果我們采取這個(gè)范例,我們首先需要聲明這個(gè)ROM是在一個(gè)VHDL測(cè)試臺(tái)上的,然后制定地址使用一個(gè)整數(shù)信號(hào)。以下為一個(gè)testbench范例:libraryieee;useieee.std_logic_1164.all;entitytestromisendentitytestrom;architecturetestoftestromissignala
7、ddress:integer:=0;signaldata:std_logic_vector(7downto0);beginrom16x8:entitywork.rom16x8(example)portmap(address,data);endarchitecturetest;需注意的是IEEE庫(kù)中,std_logic_vector型號(hào)要求是std_logic_1164,數(shù)值取決于所選擇的地址。四、隨機(jī)存取存儲(chǔ)器一個(gè)DRAM組件有一個(gè)