【正文】
路,輸入的異步時(shí)鐘和數(shù)據(jù)隊(duì)列一般工作于ns級(jí)而且具有很強(qiáng)的通用性,大部分的異步FIFO電路的相關(guān)資料都只對(duì)設(shè)計(jì)電路的硬件邏輯功能進(jìn)行了時(shí)序仿真,而沒有設(shè)計(jì)實(shí)物電路進(jìn)行硬件仿真測試。(2) 由于調(diào)試電路裝載在另外一塊核心板上,這就增加了電路設(shè)計(jì)的成本和硬件測試時(shí)的復(fù)雜程度,可以考慮將調(diào)試電路模塊整合到異步FIFO電路開發(fā)板中,通過外部使能來控制調(diào)試電路模塊工作。在畢業(yè)設(shè)計(jì)過程中,秦老師刻苦勤奮的鉆研精神、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度以及對(duì)科學(xué)的執(zhí)著追求無不讓我產(chǎn)生深深的敬意,并對(duì)我以后的人生影響頗深,時(shí)刻激勵(lì)我在以后學(xué)習(xí)工作中奮勇前進(jìn)。參 考 文 獻(xiàn)[1]韓進(jìn),程勇,[J].山東科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2003.[2]孟慶海,[M].西安交通大學(xué)出版社,2008.[3]潘松,(第四版)[M].北京科學(xué)出版社,2010.[4]潘松,(修訂版)[M].成都電子科技大學(xué)出版社,2001.[5]任愛鋒,[M].西安電子科技大學(xué)出版社,2004.[6][D].西安電子科技大學(xué),2007.[7]張永安,李樹華,[J].內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué)版),2004.[8]張維旭,[D].西安微電子技術(shù)研究所,2006.[9]赫曉莉,劉洪波,[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007.[10]雷海衛(wèi),[J].中山大學(xué),2007.[11]Clifford . Simulation and Synthesis Techniques for Asynchronous FIFO Design[C]. SNUG 2002(Synopsys Users Group Conference,San Jose,CA,2002) User Papers. March 2002.[12]Kanoopoulos N,Hallenbeck J J. A First In,F(xiàn)irst out Memory for Signal Processing Applications[J]. IEE Transactions on Circuits and System,1986,CAS33(5):556558.附 錄1. 5 bit格雷碼計(jì)數(shù)器模塊的VHDL設(shè)計(jì)程序library ieee。entity gray is port( clk : in std_logic。architecture bhv of gray issignal reg_g : std_logic_vector(4 downto 0)。 then null。 end process。 begin temp_g := new_g。 for i in 0 to 4 loop if (normal(i) = 39。 end if。end。entity sync is port( clk : in std_logic。architecture bhv of sync issignal temp : std_logic_vector(4 downto 0)。 end process。use 。architecture bhv of G2B isbegin process(gray) variable temp_g : std_logic_vector(4 downto 0)。 for i in 3 downto 0 loop temp_n(i) := temp_g(i) xor temp_n(i+1)。end。entity empty_cmp is port( wr_addr : in std_logic_vector(4 downto 0)。architecture bhv of empty_cmp isbegin empty = 39。end。entity full_cmp is port( wr_addr : in std_logic_vector(4 downto 0)。architecture bhv of full_cmp isbegin full = 39。end。entity shuiji is port( clk : in std_logic。signal c1 : std_logic。 end if。 end if。 43 。 data = temp。 process(c1) begin if rising_edge(c1) then temp = temp(6 downto 0) amp。begin t = temp(7) xnor temp(0)。end。use 。 when (wr_addr(4) /= rd_addr(4)) and (wr_addr(3 downto 0) = rd_addr(3 downto 0)) else 39。 full : out std_logic )。use 。 when (wr_addr(4 downto 0) = rd_addr(4 downto 0)) else 39。 empty : out std_logic )。use 。 normbit = temp_n。 begin temp_g := gray。 normbit : out std_logic_vector(4 downto 0) )。3. 格雷碼∕自然碼轉(zhuǎn)換模塊的VHDL設(shè)計(jì)程序library ieee。 temp = addr_in。 addr_out : out std_logic_vector(4 downto 0) )。use 。 reg_g = temp_g。 or i=4)then temp_g(i) := not(temp_g(i))。 for i in 3 downto 0 loop normal(i) := temp_g(i) xor normal(i+1)。 process(new_g) variable normal : std_logic_vector(4 downto 0)。 end if。begin process(clk,en) begin if rising_edge(clk) then if en = 39。 addr_gray : out std_logic_vector(4 downto 0) )。use 。如果不是他們的幫助,這次畢業(yè)設(shè)計(jì)我將困難重重,能否順利完成設(shè)計(jì)任務(wù)還是一個(gè)未知數(shù)。首先,我要由衷的感謝我的畢業(yè)設(shè)計(jì)指導(dǎo)教師秦懷宇老師,感謝秦老師在本次畢業(yè)設(shè)計(jì)過程中對(duì)我們的悉心教導(dǎo)和幫助。就本次設(shè)計(jì)而言,本人認(rèn)為對(duì)以下幾個(gè)方面還有待改善和進(jìn)行進(jìn)一步的研究:(1) 雖然設(shè)計(jì)增加了調(diào)試電路,但由于程序設(shè)計(jì)的原因,每次進(jìn)行硬件測試時(shí)只能輸入固定的異步時(shí)鐘信號(hào),雖然這已能滿足設(shè)計(jì)要求,若想改變時(shí)鐘頻率和相位,則必須修改程序設(shè)置參數(shù)重新下載程序,這就帶來不便。本課題基于FPGA技術(shù)對(duì)異步FIFO電路進(jìn)行了研究,通過使用Quartus II軟件在Cyclone II系列的EP2C5T144C8N芯片的基礎(chǔ)上,設(shè)計(jì)制作了一個(gè)RAM深度為128 bit,數(shù)據(jù)寬度為8 bit的異步FIFO電路,并根據(jù)異步FIFO電路的基本原理對(duì)設(shè)計(jì)電路進(jìn)行了時(shí)序仿真和硬件仿真測試,測試結(jié)果令人滿意。綜合時(shí)序仿真和硬件仿真結(jié)果可以證實(shí)本課題所設(shè)計(jì)的異步FIFO電路能滿足設(shè)計(jì)要求,達(dá)到實(shí)驗(yàn)?zāi)康?。輸出?shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,同樣說明該異步FIFO硬件電路實(shí)現(xiàn)了先入先出的功能,隊(duì)列之間的延時(shí)依然是由同步電路和程序的運(yùn)行時(shí)間造成的。另外,輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,也表明該異步FIFO硬件電路實(shí)現(xiàn)了先入先出的功能,輸入輸出隊(duì)列之間的延時(shí)是由同步電路和程序的運(yùn)行時(shí)間造成的。圖513 讀操作功能硬件仿真測試波形 異步FIFO硬件電路整體功能軟硬件仿真與測試對(duì)于異步FIFO硬件電路整體功能的硬件仿真測試波形如圖514和圖515所示,其中圖514的輸入的讀時(shí)鐘頻率為25 MHz, MHz,圖515的輸入的寫時(shí)鐘頻率為25 MHz, MHz。該仿真波形表明寫使能端控制系統(tǒng)只進(jìn)行寫操作寫入數(shù)據(jù),由于不進(jìn)行讀操作,一段時(shí)間后雙端口RAM存儲(chǔ)器存儲(chǔ)單元會(huì)始終處于寫滿狀態(tài),這表明所設(shè)計(jì)的異步FIFO硬件電路的寫操作功能達(dá)到了預(yù)期的設(shè)計(jì)要求。從圖中可以看出,當(dāng)復(fù)位鍵按下后,復(fù)位端顯示為0,系統(tǒng)復(fù)位,即使此時(shí)讀寫使能處于有效狀態(tài),數(shù)據(jù)輸出始終不變,異步FIFO處于讀空狀態(tài)。圖59 調(diào)試電路硬件仿真波形 異步FIFO電路硬件仿真由上一小節(jié)設(shè)計(jì)的調(diào)試電路的時(shí)序仿真和硬件仿真結(jié)果可以看出,調(diào)試電路能產(chǎn)生兩個(gè)異步時(shí)鐘信號(hào)和深度為8 bit的數(shù)據(jù)隊(duì)列,完全達(dá)到了設(shè)計(jì)要求,能對(duì)該異步FIFO硬件電路的功能進(jìn)行測試。編譯成功后,將用于裝載調(diào)試電路的核心板通電,并通過USBBlaster編程器連接電腦,然后利用SignalTap II編輯窗口下載電路程序。圖58 SignalTap II編輯窗口點(diǎn)擊Instance欄里面的auto_signaltap_0,將其更名為check2,此名與所建工程名相同。引腳分配完成后使用同樣的方法將未用引腳設(shè)置為高阻態(tài),將nCEO設(shè)置為I∕O口,完成這些設(shè)置后點(diǎn)擊Start Compilation進(jìn)行編譯,編譯成功后電路圖中各端口處顯示相應(yīng)的引腳編號(hào)如圖57所示。圖55 調(diào)試電路利用Quartus II軟件的波形編輯器對(duì)該調(diào)試電路進(jìn)行時(shí)序仿真,其仿真波形如圖56所示。PLL鎖相環(huán)使用Altera的Mega Wizard PlugIn Manager工具定制。該異步FIFO電路能實(shí)現(xiàn)任意兩個(gè)異步讀寫時(shí)鐘輸入,并在讀寫使能開關(guān)的控制下,能實(shí)現(xiàn)寬度為8 bit的輸入數(shù)據(jù)隊(duì)列在兩個(gè)異步時(shí)鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。完成這些設(shè)置后點(diǎn)擊Start Compilation進(jìn)行編譯,編譯成功后電路圖中各端口處顯示相應(yīng)的引腳編號(hào)如圖53所示。但在此之前,仍需對(duì)設(shè)計(jì)的異步FIFO電路進(jìn)行相應(yīng)的引腳分配,使系統(tǒng)下載入核心板后能按照設(shè)計(jì)要求正常工作,外設(shè)電路板也需根據(jù)引腳分配情況,將相應(yīng)功能區(qū)域引腳接入核心板。另外,在外設(shè)板上還需要焊接一定數(shù)量的引腳來作為相應(yīng)的讀寫時(shí)鐘輸入端和數(shù)據(jù)輸入輸出端,焊接完成的外設(shè)電路板如圖52所示。圖45和圖46的仿真波形表明所設(shè)計(jì)的異步FIFO電路的整體功能達(dá)到了預(yù)期的設(shè)計(jì)要求。另外,輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,也表明該電路實(shí)現(xiàn)了先入先出的功能,輸入輸出隊(duì)列之間的延時(shí)是由同步電路和程序的運(yùn)行時(shí)間造成的。該仿真波形表明讀使能端控制系統(tǒng)只進(jìn)行讀操作讀取數(shù)據(jù),由于不進(jìn)行寫操作,雙端口RAM存儲(chǔ)器存儲(chǔ)單元會(huì)始終處于讀空狀態(tài),這表明所設(shè)計(jì)的異步FIFO電路的讀操作功能達(dá)到了預(yù)期的設(shè)計(jì)要求。從圖中