版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> VLSI課程設(shè)計(jì)</b></p><p> 同步FIFO設(shè)計(jì)與實(shí)現(xiàn)</p><p> 班 級(jí): </p><p> 學(xué) 號(hào): </p><p> 姓 名: </p><
2、p> 指導(dǎo)教師: </p><p> VLSI課程設(shè)計(jì)報(bào)告——同步FIFO設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> FIFO概述</b></p><p> FIFO是英文First In First Out的縮寫,意為先入先出存儲(chǔ)器,由于微電子技術(shù)的飛速發(fā)展,新一代FIFO芯片容量越來(lái)越大,體積越來(lái)越小,
3、價(jià)格越來(lái)越便宜。作為一種新型大規(guī)模集成電路,F(xiàn)IFO芯片以其靈活、方便、高效的特性,逐漸在高速數(shù)據(jù)采集、高速數(shù)據(jù)處理、高速數(shù)據(jù)傳輸以及多機(jī)處理系統(tǒng)中得到越來(lái)越廣泛的應(yīng)用。</p><p> 它與普通隨機(jī)存儲(chǔ)器的區(qū)別是沒(méi)有外部讀寫地址線,這樣使用起來(lái)非常方便但缺點(diǎn)就是只能順序讀寫數(shù)據(jù),其讀寫數(shù)據(jù)地址依靠?jī)?nèi)部的讀指針和寫指針完成。讀操作與寫操作可以異步進(jìn)行,寫入?yún)^(qū)上寫入的數(shù)據(jù)按照寫入的順序從讀取端的區(qū)中讀出,類似于
4、吸收寫入端與讀出端速度差的一種緩沖器。計(jì)算機(jī)的串口,一般也都具有FIFO緩沖器(不是單一的FIFO存儲(chǔ)器,而是嵌入在設(shè)備內(nèi)部)。</p><p><b> 同步FIFO</b></p><p> 同步FIFO(Synchronous FIFO,下稱SFIFO)的意思是說(shuō)FIFO的讀寫時(shí)鐘是同一個(gè)時(shí)鐘,因此時(shí)鐘頻率是相同的,只是在相位上可能有差別,不同于異步FIFO
5、,異步FIFO的讀寫時(shí)鐘是完全異步的。SFIFO的對(duì)外接口包括時(shí)鐘,清零,讀請(qǐng)求,寫請(qǐng)求,數(shù)據(jù)輸入總線,數(shù)據(jù)輸出總線,空以及滿信號(hào)。查閱資料找到一款成型SFIFO產(chǎn)品的接口描述,如圖1:</p><p> 圖1 一款同步FIFO的接口資料</p><p> 為了更好的理解FIFO的工作方式,我們?cè)O(shè)定SFIFO的深度為8。SFIFO的難點(diǎn)主要是狀態(tài)判斷,如圖2是對(duì)空狀態(tài)和滿狀態(tài)來(lái)進(jìn)行判斷
6、的方式。</p><p> 圖2 FIFO空滿狀態(tài)判斷</p><p> 可以看出,當(dāng)讀指針和寫指針的值一樣的時(shí)候,F(xiàn)IFO的狀態(tài)為空。比較麻煩的是對(duì)FIFO是否已經(jīng)滿的狀態(tài)的判斷,因?yàn)榇嬖趦煞N情況,第一種情況時(shí)寫指針比讀指針大,比如寫指針 = 7而讀指針 = 0,還有一種情況時(shí)寫指針比讀指針小,比如寫指針 = 2而讀指針 = 3。由于讀寫電路在循環(huán)的讀寫RAM,所以在上面的兩種情況下
7、FIFO實(shí)際上都已經(jīng)滿了。</p><p> 第一種情況下,寫指針 – 讀指針 = 7,實(shí)際上就是FIFO深度減一;</p><p> 第二種情況下,(寫指針 + 8) – 讀指針 = 7,也是FIFO深度減一。</p><p> 如此,就可以比較容易的判斷出FIFO的狀態(tài)了。</p><p> 存儲(chǔ)器結(jié)構(gòu)及行為級(jí)描述</p&g
8、t;<p> 知道了SFIFO的接口和狀態(tài)控制邏輯,結(jié)構(gòu)框圖就很顯而易見(jiàn)了。如圖3,本設(shè)計(jì)SFIFO由主RAM陣列,寫控制邏輯,寫指針控制器,狀態(tài)判斷邏輯,讀指針控制器,讀控制邏輯,輸入寄存器,輸出寄存器,復(fù)位及時(shí)鐘邏輯構(gòu)成。</p><p> 圖3 FIFO結(jié)構(gòu)框圖</p><p> 結(jié)構(gòu)框圖為所有的邏輯部件,在行為級(jí)描述中,clk模塊只有簡(jiǎn)單的上升沿判斷,復(fù)位電路、
9、輸入輸出寄存器也非常易于實(shí)現(xiàn),其VHDL代碼見(jiàn)附錄。</p><p><b> 單元電路門級(jí)描述</b></p><p> 根據(jù)上述結(jié)構(gòu)框圖,分別繪制出RAM單元,寫控制邏輯,寫指針控制器,狀態(tài)判斷邏輯,讀指針控制器,讀控制邏輯,輸入寄存器和輸出寄存器。</p><p> 在隨機(jī)存儲(chǔ)器中,存儲(chǔ)單元大多為六管單元,如圖4所示。這種存儲(chǔ)單元的
10、讀寫控制信號(hào)都是通過(guò)同一根字線B傳遞的,數(shù)據(jù)都是由Q和Q讀入或讀出,因此這樣的存儲(chǔ)單元不能同時(shí)進(jìn)行讀和寫的操作。為了使FIFO存儲(chǔ)器能夠進(jìn)行同步讀/寫操作,我們使用八管存儲(chǔ)單元,如圖5所示。讀控制和寫控制分別用兩根字線來(lái)控制,即Rcontrol和Wcontrol,這時(shí)數(shù)據(jù)的讀入通過(guò)inB和inB,而數(shù)據(jù)的讀出通過(guò)outB和outB。與六管單元相比,八管單元增加了兩個(gè)門控管、兩根位線和一根字線。由于FIFO存儲(chǔ)器不用地址線,而是用兩個(gè)地址
11、指針?lè)謩e存放讀地址和寫地址,并且分別有讀地址譯碼器和寫地址譯碼器與之對(duì)應(yīng),這樣存儲(chǔ)器的讀操作和寫操作就可同時(shí)進(jìn)行,實(shí)現(xiàn)讀和寫的同步操作。顯然,這種存儲(chǔ)器也能實(shí)現(xiàn)異步操作。</p><p> 圖4 普通RAM的六管單元 圖5 改進(jìn)的8管單元</p><p> 讀寫控制邏輯比較簡(jiǎn)單,通過(guò)狀態(tài)判斷邏輯發(fā)送出的Full和Empty信號(hào),同時(shí)關(guān)斷讀
12、/寫計(jì)數(shù)器和輸入/輸出鎖存,避免數(shù)據(jù)異常。</p><p> 一種最簡(jiǎn)單的方式,是直接將Full與WR接到一個(gè)與門上,將Empty與RD接到一個(gè)與門上。這樣存儲(chǔ)器在滿狀態(tài)和空狀態(tài)下,WR和RD將分別被屏蔽,讀/寫信號(hào)不再起作用。如圖6,圖7。</p><p><b> 圖6 寫控制邏輯</b></p><p><b> 圖7 讀
13、控制邏輯</b></p><p> 輸入/輸出寄存器的結(jié)構(gòu)非常簡(jiǎn)單,如圖8所示。</p><p> 圖8 輸入/輸出寄存器</p><p> FIFO是以先進(jìn)先出的方式進(jìn)行數(shù)據(jù)存儲(chǔ),所以它沒(méi)有地址線。對(duì)于8×8的FIFO,是采用兩個(gè)3位的計(jì)數(shù)器作為讀指針和寫指針,分別存放著讀地址代碼和寫地址代碼。讀地址譯碼電路和寫地址譯碼電路分別將讀指針
14、和寫指針中的地址代碼譯成相應(yīng)的控制信號(hào),利用這個(gè)控制信號(hào)從存儲(chǔ)矩陣中把指定的單元選出,并把其中的數(shù)據(jù)送到輸出緩沖器中去。當(dāng)寫信號(hào)W為一個(gè)負(fù)脈沖時(shí),將觸發(fā)移位計(jì)數(shù)器使寫指針加1,同時(shí)一組數(shù)據(jù)(一個(gè)字節(jié))便從數(shù)據(jù)線上被輸入到寫指針?biāo)鶎?duì)應(yīng)的存儲(chǔ)單元中。同樣地,在讀信號(hào)R為一個(gè)負(fù)脈沖時(shí),讀指針加1,一組數(shù)據(jù)(一個(gè)字節(jié))便從讀指針?biāo)鶎?duì)應(yīng)的存儲(chǔ)單元中輸出。</p><p> 讀/寫指針控制器部分晶體管級(jí)電路基本相同,都采用
15、計(jì)數(shù)器+地址譯碼電路+循環(huán)移位器的方式實(shí)現(xiàn),因?yàn)镕IFO的指針不可能無(wú)限移動(dòng),所以需要地址碼循環(huán)移位來(lái)保證兩個(gè)指針都處于有效地址。</p><p> 由于完整控制器電路過(guò)于復(fù)雜,不給出完整電路,圖9為當(dāng)中比較重要的地址碼循環(huán)移位器。</p><p> 圖9 用于讀/寫指針控制器的地址碼循環(huán)移位器</p><p> 狀態(tài)判斷邏輯也是非常重要的一個(gè)邏輯,由圖三可知
16、一個(gè)FIFO狀態(tài)判斷邏輯如果失效基本等于是廢了。在這里狀態(tài)判斷邏輯使用如圖10的電路,F(xiàn)IFO使用比較判斷電路防止在滿狀態(tài)和空狀態(tài)狀況下繼續(xù)進(jìn)行讀/寫操作,它是關(guān)于讀指針和寫指針的一個(gè)比較器。比較判斷電路定義了Full(滿信號(hào))、Empty(空信號(hào))。當(dāng)寫指針(代碼)比讀指針(代碼)小1時(shí),比較器的Full輸出端為低電平,表示此時(shí)存儲(chǔ)器為寫滿狀態(tài);當(dāng)讀指針(代碼)等于寫指針(代碼)時(shí),比較器的Empty輸出端為低電平,表示此時(shí)存儲(chǔ)器為空
17、狀態(tài)。讀指針和寫指針在其余狀態(tài)時(shí),F(xiàn)ull和Empty都為高電平。</p><p> 三個(gè)全加器級(jí)聯(lián)和三個(gè)非門形成A-B+1的運(yùn)算器,根據(jù)圖2的推算可得當(dāng)A-B=7或A-B+8=7時(shí),8×8FIFO寫滿,不考慮最高位進(jìn)位信號(hào)時(shí)正好為A-B+1=0的運(yùn)算規(guī)則,按照這個(gè)規(guī)則設(shè)計(jì)組合邏輯電路要比完全采用D觸發(fā)器建立的時(shí)序電路簡(jiǎn)潔很多,總共有11級(jí)反相器延遲,在現(xiàn)在的VLSI技術(shù)中是不大于一個(gè)周期的,也就是說(shuō)
18、,采用如下電路形式的狀態(tài)控制電路,在不增加延遲的基礎(chǔ)上,節(jié)省了芯片空間。</p><p> 圖10 狀態(tài)判斷邏輯</p><p><b> 結(jié)語(yǔ)</b></p><p> FIFO存儲(chǔ)器在眾多數(shù)據(jù)處理領(lǐng)域得到了廣泛的應(yīng)用,提高FIFO芯片傳遞數(shù)據(jù)的速度是設(shè)計(jì)FIFO芯片過(guò)程中的重點(diǎn)。本設(shè)計(jì)詳細(xì)列舉了一個(gè)FIFO存儲(chǔ)器的設(shè)計(jì)步驟和設(shè)計(jì)過(guò)程及
19、其中需要注意的問(wèn)題。本文介紹的FIFO存儲(chǔ)器雖然只是8×8的規(guī)模設(shè)計(jì)方法,但其原理可以應(yīng)用到其它更大容量的同類存儲(chǔ)器的設(shè)計(jì)當(dāng)中去。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]·李東升·高速低功耗先入先出存儲(chǔ)器電路設(shè)計(jì)與版圖實(shí)現(xiàn)·TP333-2008</p><p> [2]
20、·佚名·FIFO存儲(chǔ)器的設(shè)計(jì)·TN432-2008</p><p> [3]·姚建楠 等·基于SRAM高速靈敏放大器分析與設(shè)計(jì)[J]·電子器件·2005,28(3).</p><p> [4]·楊軍 等·基于FPGA的高速異步FIFO存儲(chǔ)器設(shè)計(jì)·云南大學(xué)學(xué)報(bào)(自然科學(xué)版)·20
21、07,29(6)</p><p><b> 附錄:VHDL代碼</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity fifo is</p><p> port( clock
22、 : in std_logic;</p><p> reset : in std_logic;</p><p> wr_req : in std_logic;</p><p> rd_req : in std_logic;</p><p> data_in : in std_logic_vector(7 downto
23、0);</p><p> full : buffer std_logic;</p><p> empty : buffer std_logic;</p><p> data_out : out std_logic_vector(7 downto 0));</p><p> end entity;</p>&
24、lt;p> architecture behav of entity is</p><p> type type_2d_array is array(0 to 7) of std_logic_vector(7 downto 0);</p><p> signal fifo_memory : type_2d_array;</p><p> signal
25、wr_address : integer range 0 to 7;</p><p> signal rd_address : integer range 0 to 7;</p><p> signal offset : integer range 0 to 7;</p><p> signal rd_signal : std_logic;&
26、lt;/p><p> signal wr_signal : std_logic;</p><p> signal data_buffer : std_logic_vector(7 downto 0);</p><p> signal temp : std_logic_vector(4 downto 1);</p><p>
27、<b> begin</b></p><p> process(clock)</p><p><b> begin</b></p><p> if rising_edge(clock) then</p><p> temp(1) <= wr_req;</p><p
28、> temp(2) <= temp(1);</p><p> temp(3) <= rd_req;</p><p> temp(4) <= temp(3);</p><p><b> end if; </b></p><p> end process;</p><p
29、> wr_signal <= temp(2) and not(temp(1));</p><p> rd_signal <= temp(4) and not(temp(3));</p><p> offset <= (wr_address - rd_address)when (wr_address > rd_address)else</p>
30、<p> (8 - (rd_address - wr_address))when (rd_address > wr_address)else 0;</p><p> empty <= '1' when (offset = 0) else '0';</p><p> full <= '1' whe
31、n (offset = 7) else '0';</p><p> process(clock)</p><p><b> begin</b></p><p> if (clock'event and clock='1') then</p><p> if reset =
32、 '1' then</p><p> rd_address <= 0;</p><p> data_buffer <= (others => '0');</p><p> elsif (rd_signal = '1' and empty = '0') then</p>
33、;<p> data_buffer <= fifo_memory(rd_address);</p><p> case rd_address is</p><p> when 7 => rd_address<=0;</p><p> when others => rd_address <= rd_addr
34、ess + 1 ;</p><p><b> end case;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> proc
35、ess(clock)</p><p><b> begin</b></p><p> if (clock'event and clock='1') then</p><p> if reset = '1' then</p><p> wr_address <= 0;&
36、lt;/p><p> elsif (wr_signal = '1' and full = '0') then</p><p> fifo_memory(wr_address) <= data_in;</p><p> case wr_address is</p><p> when 7 =&
37、gt; wr_address<=0;</p><p> when others => wr_address <= wr_address + 1 ;</p><p><b> end case;</b></p><p><b> end if;</b></p><p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 同步解調(diào)器設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)
- 異步FIFO的設(shè)計(jì)與實(shí)現(xiàn).pdf
- vlsi波形發(fā)生器課程設(shè)計(jì)
- 基于fpga的同步fifo的設(shè)計(jì)與仿真【開(kāi)題報(bào)告】
- 基于fpga的同步fifo的設(shè)計(jì)與仿真【文獻(xiàn)綜述】
- 高頻電子線路課程設(shè)計(jì)---同步解調(diào)器的設(shè)計(jì)與實(shí)現(xiàn)
- 樂(lè)曲程序的設(shè)計(jì)與實(shí)現(xiàn)---課程設(shè)計(jì)
- 高效異步FIFO的設(shè)計(jì)實(shí)現(xiàn).pdf
- 精品課程網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)課程設(shè)計(jì)
- 算法課程設(shè)計(jì)---進(jìn)程通信與進(jìn)程同步機(jī)制實(shí)現(xiàn)
- 課程設(shè)計(jì)---同步解調(diào)電路設(shè)計(jì)
- web課程設(shè)計(jì)--個(gè)人博客的設(shè)計(jì)與實(shí)現(xiàn)
- vlsi課程設(shè)計(jì) --8位移位寄存器設(shè)計(jì)
- 課程設(shè)計(jì)---網(wǎng)站管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì)---貿(mào)易管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 【課程設(shè)計(jì)】汽車租賃系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì)rip路由協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì)---網(wǎng)上購(gòu)物系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì)---電子簡(jiǎn)歷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論