



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、異步FIFO的VHDL設(shè)計(jì) 摘要:給出了一個(gè)利用格雷碼對(duì)地址編碼的羿步FIFO的實(shí)現(xiàn)方法,并給出了VHDL程序,以解決異步讀寫時(shí)鐘引起的問題。 關(guān)鍵詞:FIFO 雙口RAM 格雷碼 VHDLFIFO(先進(jìn)先出隊(duì)列)是一種在電子系統(tǒng)得到廣泛應(yīng)用的器件,通常用于數(shù)據(jù)的緩存和用于容納異步信號(hào)的頻率或相位的差異。FIFO的實(shí)現(xiàn)通常是利用雙口RAM和讀寫地址產(chǎn)生模塊來實(shí)現(xiàn)的。FIFO的接口信號(hào)包括異步的寫時(shí)鐘(wr_clk)和讀時(shí)鐘(rd_clk)、與寫時(shí)鐘同步的寫有效(w
2、ren)和寫數(shù)據(jù)(wr_data)、與讀時(shí)鐘同步的讀有效(rden)和讀數(shù)據(jù)(rd_data)。為了實(shí)現(xiàn)正確的讀寫和避免FIFO的上溢或下溢,通常還應(yīng)該給出與讀時(shí)鐘和寫時(shí)鐘同步的FIFO的空標(biāo)志(empty)和滿標(biāo)志(full)以禁止讀寫操作。1 異步FIFO功能描述圖1給出了FIFO的接口信號(hào)和內(nèi)部模塊圖。由圖1可以看出,寫地址產(chǎn)生模塊根據(jù)寫時(shí)鐘和寫有效信號(hào)產(chǎn)生遞增的寫地睛,讀地址產(chǎn)生模塊根據(jù)讀時(shí)鐘和讀有效信號(hào)產(chǎn)生遞增的讀地址。FIFO的操作如下:在寫時(shí)鐘wr_clk的升沿,當(dāng)wren有效時(shí),將wr_data寫入雙口RAM中寫地址對(duì)應(yīng)的位置中;始終將讀地址對(duì)應(yīng)的雙口RAM中的數(shù)據(jù)輸出到讀數(shù)據(jù)
3、總線上。這樣就實(shí)現(xiàn)了先進(jìn)先出的功能。 寫地址產(chǎn)生模塊還根據(jù)讀地址和寫地址關(guān)系產(chǎn)生FIFO的滿標(biāo)志。當(dāng)wren有效時(shí),若寫地址+2=讀地址時(shí),full為1;當(dāng)wren無效時(shí),若寫地址+1=讀地址時(shí),full為1。讀地址產(chǎn)生模塊還根據(jù)讀地址和寫地址的差產(chǎn)生FIFO的空標(biāo)志。當(dāng)rden有效時(shí),若寫地址-1=讀地址時(shí),empty為1;當(dāng)rden無效時(shí),若寫地址=讀地址時(shí),empty為1。按照以上方式產(chǎn)生標(biāo)志信號(hào)是為了提前一個(gè)時(shí)鐘周期產(chǎn)生對(duì)應(yīng)的標(biāo)志信號(hào)。由于空標(biāo)志和滿標(biāo)志控制了FIFO的操作,因此標(biāo)志錯(cuò)誤會(huì)引起操作的錯(cuò)誤。如上所述,標(biāo)志的產(chǎn)生是通過對(duì)讀寫地址的比較產(chǎn)生
4、的,當(dāng)讀寫時(shí)鐘完全異步時(shí),對(duì)讀寫地址進(jìn)行比較時(shí),可能得出錯(cuò)誤的結(jié)果。例如,在讀地址變化過程中,由于讀地址的各位變化并不同步,計(jì)算讀寫地址的差值,可能產(chǎn)生錯(cuò)誤的差值,導(dǎo)致產(chǎn)生錯(cuò)誤的滿標(biāo)志信號(hào)。若將未滿標(biāo)志置為滿標(biāo)志時(shí),可能降低了應(yīng)用的性能,降低寫數(shù)據(jù)速率;而將滿置標(biāo)志置為未滿時(shí),執(zhí)行一次寫操作,則可能產(chǎn)生溢出錯(cuò)誤,這對(duì)于實(shí)際應(yīng)用來說是絕對(duì)應(yīng)該避免的??諛?biāo)志信號(hào)的產(chǎn)生也可能產(chǎn)生類似的錯(cuò)誤。2 異步FIFO的改進(jìn)設(shè)計(jì)從以上分析中可以看出,異步FIFO之所以會(huì)發(fā)生錯(cuò)誤是國為在地址變化時(shí),由于多位地址各位變化時(shí)間不同,異步時(shí)鐘對(duì)其進(jìn)行采樣時(shí)數(shù)值可能為不同于地址變化喪后數(shù)值的其他值,異步產(chǎn)生錯(cuò)誤的空標(biāo)志和
5、滿標(biāo)志,以致于產(chǎn)生FIFO的操作錯(cuò)誤。格雷碼是一種在相鄰計(jì)數(shù)值之間只有一位發(fā)生變化的編碼方式??梢钥闯?,若讀寫地址采用格雷碼編碼方式,就可以解決上面的問題。為了應(yīng)用的靈活,還增加了兩個(gè)標(biāo)志信號(hào),將滿(almosf_full)標(biāo)志和空(almost_empty)標(biāo)志分別定義如下:當(dāng)寫地址與讀地址的距離小于某個(gè)預(yù)先定義數(shù)值時(shí),almost_full為1;當(dāng)讀地址與寫地址的距離小于這個(gè)預(yù)先定義的數(shù)值時(shí),almost_empty為1。3 異步FIFO的VHDL實(shí)現(xiàn)硬件描述語言VHDL(Very-high speed IC Hardware Description Language)是一種應(yīng)用于電路設(shè)計(jì)
6、的高層次描述語言,具有行為級(jí)、寄存器傳輸級(jí)和門級(jí)等多層次描述,并且具有簡單、易讀、易修改和與工藝無關(guān)等優(yōu)點(diǎn)。目前VHDL語言已經(jīng)得到多種EDA工具的支持,綜合工具得到迅速發(fā)展,VHDL語言的行為級(jí)綜合也已經(jīng)得到支持和實(shí)現(xiàn),因此利用VHDL語言進(jìn)行電路設(shè)計(jì)可以節(jié)約開發(fā)成本和周期。首先給出格雷碼和普通自然碼之間的轉(zhuǎn)換模塊的VHDL程序。程序1:自然碼碼到格雷碼的轉(zhuǎn)換程序entity norm_to_gery isgeneric(width:integer:=8);port(din:in std_logic_vector(width-1 downto 0);dout:out std_logic_ve
7、ctor(width-1 downto 0);end norm_to_grey;architecture norm_to_grey of norm_to_grey is begindout<=din xor('0' & din(width-1 downto 1);end norm_to_grey;程序2:格雷碼到自然碼的轉(zhuǎn)換程序process(din)variable tempd:std_logic;beginfor i in width-1 downto 0 loop tempd:='0'for j in width-1 downto i loo
8、p tempd:=tempd xor din(j);end loop;dout(i)<=tempd;end loop;end process;在給出異步FIFO的VHDL程序之前,先給出一些內(nèi)部信號(hào)的解釋:wadd 自然碼寫地址wadd_grey 格雷碼寫地址wr_radd_grey 寫時(shí)鐘采樣的格雷碼讀地址wr_radd 寫時(shí)鐘采樣的自然碼讀地址almost_length 產(chǎn)生將滿和將空標(biāo)志的予定義讀寫地址差值程序3:寫地址產(chǎn)生模塊,此程序同時(shí)產(chǎn)生寫地址的自然碼和格雷碼waddp<=wadd+1;u1:norm_to_greyport map(waddp,wadd_grey_te
9、mp);wadd_process:process(clr,wr_clk)beginif clr='0'thenwadd<=(others=>'0');wadd_grey<=(others=>'0');elsif wr_clk'event and wr_clk='1'thenif wren='1'thenwadd<=waddp;wadd_grey<=wadd_grey_temp;end if;end if;end process;程序4:滿標(biāo)志和滿標(biāo)志產(chǎn)生模塊,以8位地址為
10、例。u2:grey_to_normport map(wr_radd_grey,wr_radd_temp);process(clr,wr_clkbeginif clr='0'thenwr_radd_grey<=(others=>'0');wr_radd<=(Others=>'0')elsif wr_clk'event and wr_clk='1'thenwr_radd_grey<=radd_grey;wr_radd<=wr_radd_temp;end if;end process;wr_c
11、ompare<=wadd-wr_radd;full_process:process(clr,wr_clk)beginif clr='0'thenfull<='0';elsif wr_clk'event and wr_clk='1'thenif(wren='1')thenif wr_compare="11111110"then full<='1'else full<='0'end if;elseif wr_compare="11111111
12、"then full<='1'else full<='0'end if;end if;end if;end process;almost_full_process:process(clr,wr_clk)beginif clr='0' thenalmost_full<='0'elsif wr_clk'event and wr_clk='1'thenif(wren='1')thenif wr_compare>("11111110"-almost_length)then almost_full<='1'else almost_full<='0'end if;elseif wr_compare>("11111111"-almost_length)then almost_full<='1'else almost_full<='0'end if;end if;end
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物化學(xué)(第4版)課件 第6章 生物氧化
- 現(xiàn)實(shí)題材紀(jì)錄片的人物塑造策略研究-以畢業(yè)作品《追星星的人》為例
- 身體健康素質(zhì)教育體系構(gòu)建與實(shí)施
- 節(jié)約糧食中班健康教案
- 大學(xué)交通安全與法治教育
- 清洗外墻安全培訓(xùn)
- 顱骨說課課件
- 寶寶夜間急救方案護(hù)理
- 預(yù)防殘疾主題班會(huì)課件
- 預(yù)防兒童疾病課件教學(xué)
- 2025年度地質(zhì)勘探監(jiān)理服務(wù)合同范本
- 保山隆陽區(qū)小升初數(shù)學(xué)試卷
- 2025年上半年北京市西城區(qū)教委事業(yè)單位公開招聘考試筆試易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- RoHS知識(shí)培訓(xùn)課件
- 2024-2025學(xué)年北京西城區(qū)高一(上)期末語文試卷(含答案)
- 2025年貴州貴旅集團(tuán)雷山文化旅游產(chǎn)業(yè)發(fā)展有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- 2024年初升高數(shù)學(xué)銜接教材講義
- 血小板減少護(hù)理查房課件
- 人教版(2024)數(shù)學(xué)七年級(jí)上冊(cè)期末測試卷(含答案)
- 辦公用品、易耗品供貨服務(wù)方案
- 火龍罐治療頸椎病個(gè)案
評(píng)論
0/150
提交評(píng)論