《電子線路EDA》課程設計8×9先進先出(FIFO)緩沖器_第1頁
《電子線路EDA》課程設計8×9先進先出(FIFO)緩沖器_第2頁
《電子線路EDA》課程設計8×9先進先出(FIFO)緩沖器_第3頁
《電子線路EDA》課程設計8×9先進先出(FIFO)緩沖器_第4頁
《電子線路EDA》課程設計8×9先進先出(FIFO)緩沖器_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、武漢理工大學電子線路eda課程設計課程設計任務書學生姓名: 專業班級: 指導教師: 工作單位: 僅供參考 題 目: 89先進先出(fifo)緩沖器 一、設計目的根據設計要求,完成對89先進先出(fifo)緩沖器的設計。進一步加強對quartus的應用和對vhdl語言的使用。二、設計內容和要求設計一個89先進先出(fifo)緩沖器,8位字深,9位字寬;當讀信號ready有效時,fifo的輸出data_out使能;當ready無效時,fifo的輸出處于高阻態;當寫信號writey有效時,9位款的寄存器進行寫操作,信號rdinc和wrinc被用來作為寄存器讀和寫指針遞增,以指示該位寄存器的讀和寫。信

2、號rdptclr和wrptclr復位讀寫指針指向fifo的第一個寄存器。data_in是將被載入到一個寄存器的數據。掌握quartus的操作和使用方法。利用quartus軟件對所設計的電路進行仿真分析。 3、 初始條件 cpld,按鍵,時鐘信號,撥碼開關等。四、時間安排: 2011.1.11課程設計任務布置、選題、查閱資料。 2011.1.12-2010.1.17 設計,軟件編程、仿真和調試。 2011.1.18-2010.1.20 設計的硬件調試。 2011.1.21 機房檢查設計成果,提交設計說明書及答辯。指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日目錄摘要iiiabs

3、tractiii緒 論31 軟件使用31.1 quartus簡介31.2 quartus基本使用31.2.1 新建工程31.2.2 程序編寫31.2.3 仿真31.2.4 硬件調試32 fifo32.1 fifo的使用32.2 fifo的參數32.3 fifo的分類及設計33 先進先出緩存器設計33.1 設計思想33.2 各部分模塊33.2.1 先入先出緩存器33.2.2 消抖電路33.2.3 分頻電路33.2.4 頂層原理圖34 仿真及硬件調試34.1 緩沖器仿真34.2 緩存器硬件測試35 心得體會36 參考文獻3附錄3摘要本文介紹了先進先出(fifo)緩存器的設計方法,主要闡述如何使用新

4、興的eda器件取代傳統的電子設計方法。利用fpga的可編程性,擁有簡潔而又多變的設計方法。本設計實現了先進先出緩存器的一些基本功能,也把一些新的思路加入到設計中。主要包括采用了fpga芯片,使用quartus中的vhdl語言進行編程。vhdl是一個標準語言,其具有良好的移植性,值得本設計更為靈活,從而更有利于產品升級。關鍵詞:vhdl;fifo;緩存器;quartus; abstract this article describes the design approach of first in first out (fifo) buffer,it focuses primarily on h

5、ow to use the emerging eda electronic design device to replace the traditional methods, there has many simple yet varied design approaches with the use of fpgas programmability. this design achieved a fifo buffer some of the basic functions, but also bring some new ideas into the design. mainly incl

6、ude the use of a fpga chip, using the vhdl language in the quartus ? programming. vhdl is a standard language, which has good portability, it is worth this design is more flexible and thus more conducive to product upgrades. keywords: vhdl;fifo;register;quartus;2121 緒 論當前電子系統的設計正朝著速度快,容量大,體積小,質量輕,用電

7、省的方向發展。推動該潮流迅速發展的決定性因素就是使用了現代化的eda設計工具。eda是電子設計自動化(electronic design automation)的縮寫,是90年代初,從cad(計算機輔助沒計)、cam(算機輔助制造)、cat(計算機輔助測試)和cae(計算機輔助工程)的概念發展而來的。eda技術就是以計算機為工具,在eda軟件平臺上,對以硬件描述語言hdl為系統邏輯描述手段完成的設計文件自動地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優化、邏輯行局布線、邏輯仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作1。設計者的工作僅限于利用軟件的方式,即利用硬件描述語言來

8、完成對系統硬件功能的描述,在eda工具的幫助下就可以得到最后的設計結果。盡管目標系統是硬件,但整個設計和修改過程如同完成軟件設計一樣方便和高效。高速發展的cpld/fpga器件又為eda技術的不斷進步奠定可堅實的物質基礎。cpld/fpga器件更廣泛的應用及廠商間的競爭,使得普通的設計人員獲得廉價的器件和eda軟件成為可能。vhdl是一種全方位的硬件描述語言,包括系統行為級、寄存器傳輸級和邏輯門級多個設計層次,支持結構、數據流和行為3種描述形式的混合描述,因此vhdl幾乎覆蓋了以往各種硬件描述語言的功能,整個自頂向下或自底向上的電路設計過程都可以用vhdl來完成。另外,vhdl還有以下優點:v

9、hdl的寬范圍描述能力使它成為高層次設計的核心,將設計人員的工作重心轉移到了系統功能的實現和調試上,只需要花較少的精力用于物理實現;vhdl可以用簡潔明確的代碼描述來進行復雜控制邏輯的設計,靈活且方便,而且也便于設計結果的交流、保存和重用;vhdl的設計不依賴于特定的器件,方便了工藝的轉換。1 軟件使用1.1 quartus簡介 quartus ii 是altera公司的綜合性pld開發軟件,支持原理圖、vhdl、veriloghdl以及ahdl(altera hardware description language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配

10、置的完整pld設計流程2。 quartus包括模塊化的編譯器。它的編譯器支持的硬件描述語言有vhdl、verilog hdl及ahdl。quartus支持層次化設計,可以在一個新的編輯輸入環境中對環境中使用不同輸入設計方式完成的模塊進行調用。在設計輸入之后,quartus的編譯器將給出設計輸入的錯誤報告,這給編程和修改提供了很好的幫助。 1.2 quartus基本使用1.2.1 新建工程雙擊桌面quartus ii圖標進入主界面,如下圖所示: 圖1-1 quartus ii主界面單擊軟件主界面中file ? new project wizard.開始新建一個工工程,根據提示選擇存儲路徑,輸入工

11、程名,軟件會默認頂層實體名與工程名相同并顯示。往下選擇芯片,在此時選擇cyclone下的ep2c8q208c8,最后會顯示所有選擇結果,以供最后確認。確認圖如圖1.2:圖1.2 new project wizard1.2.2 程序編寫單擊file?new.,在彈出的窗口中選擇新建vhdl file,然后在其中編寫程序。一般用三段式vhdl語言編寫程序代碼3。 庫或程序包調用的說明部分; 實體說明部分; 結構體描述模塊功能;編寫完成程序代碼后,將其以實體名保存,編譯程序,若編譯成功則繼續向下進行。將多個程序連起來成為創建頂層文件,可以由程序編寫或者用畫圖來實現。1.2.3 仿真 單擊file?n

12、ew.,在彈出的窗口中選擇新建vector waveform file。左鍵雙擊圖左邊的空白處,在彈出的insert node or bus窗口下單擊node finder,在彈出的窗口中單擊list,并將nodes found全部導到selected nodes,單擊ok,仿真圖上會顯示所有的輸入輸出端口。選定某一輸入端口,在左邊的工具條中選擇適當的圖標設置輸入波形。將所有的輸入端口設置完畢后保存,單擊processing?simulator tool,simulation tool設置為functional,單擊generate functional simulation netlist。

13、待其完成后選擇simulator tool窗口下方的的start,完成后,單擊open,仿真結果會覆蓋在仿真圖上。根據波形檢查是否實現要達到的功能4。1.2.4 硬件調試單擊主界面assignments?device.在彈出的setting窗口下單擊device&pin option,在彈出的窗口中設置不是用的管腳為高阻態。單擊assignments?pins,對應實驗箱上的管腳名進行設置,設置完畢后進行編譯,軟件會檢測管腳設置有無錯誤。設置無誤單擊programmer,在實驗箱與微機主機連接好并通電打開電源的前提下,即可以向實驗箱中導入程序,進行硬件調試5。 2 fifo fifo( fir

14、st in first out)簡單說就是指先進先出。由于微電子技術的飛速發展,新一代fifo芯片容量越來越大,體積越來越小,價格越來越便宜。作為一種新型大規模集成電路,fifo芯片以其靈活、方便、高效的特性,逐漸在高速數據采集、高速數據處理、高速數據傳輸以及多機處理系統中得到越來越廣泛的應用。2.1 fifo的使用fifo一般用于不同時鐘域之間的數據傳輸,比如fifo的一端時ad數據采集,另一端時計算機的pci總線,假設其ad采集的速率為16位100k sps,那么每秒的數據量為100k16bit=1.6mbps,而pci總線的速度為33mhz,總線寬度32bit,其最大傳輸速率為1056m

15、bps,在兩個不同的時鐘域間就可以采用fifo來作為數據緩沖。另外對于不同寬度的數據接口也可以用fifo,例如單片機位8位數據輸出,而dsp可能是16位數據輸入,在單片機與dsp連接時就可以使用fifo來達到數據匹配的目的。2.2 fifo的參數fifo的寬度:也就是英文資料里常看到的the width,它只的是fifo一次讀寫操作的數據位,就像mcu有8位和16位,arm 32位等等,fifo的寬度在單片成品ic中是固定的,也有可選擇的,如果用fpga自己實現一個fifo,其數據位,也就是寬度是可以自己定義的。fifo的深度:the deepth,它指的是fifo可以存儲多少個n位的數據(如

16、果寬度為n)。如一個8位的fifo,若深度為8,它可以存儲8個8位的數據,深度為12 ,就可以存儲12個8位的數據,fifo的深度可大可小。一般來說根據電路的具體情況,在兼顧系統性能和fifo成本的情況下估算一個大概的寬度和深度就可以了。而對于寫速度慢于讀速度的應用,fifo的深度要根據讀出的數據結構和讀出數據的由那些具體的要求來確定。在fifo實際工作中,其數據的滿/空標志可以控制數據的繼續寫入或讀出。滿標志:fifo已滿或將要滿時由fifo的狀態電路送出的一個信號,以阻止fifo的寫操作繼續向fifo中寫數據而造成溢出(overflow)。空標志:fifo已空或將要空時由fifo的狀態電路

17、送出的一個信號,以阻止fifo的讀操作繼續從fifo中讀出數據而造成無效數據的讀出(underflow)。讀時鐘:讀操作所遵循的時鐘,在每個時鐘沿來臨時讀數據。寫時鐘:寫操作所遵循的時鐘,在每個時鐘沿來臨時寫數據。讀指針:指向下一個讀出地址。讀完后自動加1。寫指針:指向下一個要寫入的地址的,寫完自動加1。讀寫指針其實就是讀寫的地址,只不過這個地址不能任意選擇,而是連續的。2.3 fifo的分類及設計根均fifo工作的時鐘域,可以將fifo分為同步fifo和異步fifo。同步fifo是指讀時鐘和寫時鐘為同一個時鐘。在時鐘沿來臨時同時發生讀寫操作。異步fifo是指讀寫時鐘不一致,讀寫時鐘是互相獨立

18、的。其連接模式如圖2.1fifo設計的難點在于怎樣判斷fifo的空/滿狀態。為了保證數據正確的寫入或讀出,而不發生益處或讀空的狀態出現,必須保證fifo在滿的情況下,不能進行寫操作。在空的狀態下不能進行讀操作。怎樣判斷fifo的滿/空就成了fifo設計的核心問題。一般是異步fifo有空/滿標志所產生問題,但是在本次設計中暫不討論這個問題。圖2.1 fifo連接模式3 先進先出緩存器設計先進先出法是指根據先入庫先發出的原則,對于輸出的數據以先輸入存儲器的數據為依據。3.1 設計思想 在緩沖器內部定義一個89的存儲空間用于暫存數據。初始狀態讀寫指針都指向0號數寄存器(共8個)。當輸入通道打開時,每

19、來一個脈沖(由外部按鍵提供),向緩沖期內輸入一個9位的數,與此同時內部寄存器讀指針加1,準備接受下一個需要暫存的數,下一個脈沖到來,再存一個數,讀指針再加1當輸出通道打開時,每來一個脈沖輸出一個9位數,寫指針加1,準備輸出下一個9位數,同理進行下一個數的輸出由于輸入/輸出數據是按需進行的,故設計脈沖由按鍵提供,為更好的進行控制,加一個消抖電路使其每按一次內部計數確定加1。3.2 各部分模塊本設計共由三個部分組成:先入先出緩存器、消抖模塊、分頻器。3.2.1 先入先出緩存器這是整個設計的核心模塊,其輸入輸出端口設置如下:ready:控制輸出通道,當其為1時,輸出通道打開,可以進行讀操作。writ

20、ey:控制輸入通道,當其為1時,輸入通道打開,可以進行寫操作。rdptclr,wrptclr:緩沖器內部讀寫指針,用于規范內部寄存器(編號07)的使用,兩指針初始狀態都指向0寄存器。當寫入第一個數據時,數據存入0寄存器,同時寫指針加1,指向下一個寄存器,準備接受下一個將被寫入的數據。在需要讀出數據時,打開輸出通道,同時由脈沖控制輸出數據,每輸出一個數據,讀指針加1,準備輸出下一個數據,同時輸出數據以輸入數據的個數為頂限。clk:脈沖控制輸入,控制數據的寫入和讀出。data_in:放置將被輸入的數據。data_out:用于輸出數據的通道。readit:控制讀取輸入數據。編寫的程序見附錄。生成元件

21、后如圖3.1所示: 圖3.1 fifo元件圖3.2.2 消抖電路本設計用外部按鍵產生脈沖來控制輸入輸出數據的個數,每一個脈沖對應一個數據,同時對應內部寄存器的移位。為了保證數據輸入順序與數據輸出順序完全相同,要保證每按鍵一次只產生一個脈沖。通常的按鍵在閉合及斷開的瞬間均伴隨有一連串的抖動。抖動時間的長短由按鍵的機械特性決定,一般為5ms10ms。為確保電路對按鍵的一次閉合僅作一次處理,必須去除按鍵抖動。軟件消抖的方法為:在檢測出鍵閉合保持后執行一個延時程序,產生5ms10ms的延時,讓前延抖動消失后再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認真正有鍵按下。當檢測到按鍵釋放后,也要給5ms

22、10ms的延時,待后沿抖動消失才能轉入該鍵的處理程序。本課題中用2個d觸發器和一個2輸入與門聯合實現。用程序分別編寫d觸發器和2輸入與門,生成元件,供最后頂層原理圖使用。d觸發器的程序見附錄,消抖模塊的電路如圖3.2所示: 圖3.2 消抖模塊原理圖3.2.3 分頻電路為了配合消抖電路,取延時為5ms,即使得采樣頻率為5ms,由此根據f=1/t,算得脈沖頻率為200hz,而實驗箱上提供的是20m的時鐘頻率,故要對時鐘進行分頻。程序中用內部計數器計算到來的脈沖數,脈沖數小于50000時輸出為0,否則輸出為1,同時計到100000時計數器清零。同理,將分頻器生成元件,供頂層原理圖使用。生成元件如圖3

23、.3所示: 圖3.3 分頻器元件圖3.2.4 頂層原理圖以上所描述模塊的程序編寫均在同一工程下,由程序生成的元件也在該工程下。用前面所介紹的方法,在該工程下再建一原理圖作為頂層,將所需的元件按照要求進行連線,加入輸入輸出處端口并改名。保存原理圖,并將原理圖置為頂層文件。本設計的整體原理圖如圖3.4所示: 圖3.4 整體原理圖4 仿真及硬件調試4.1 緩沖器仿真用前面所描述的方法進入仿真界面,得到某個激勵條件下的仿真圖如圖4.1: 圖4.1 仿真圖4.2 緩存器硬件測試 按照軟件用法中的步驟將程序導入實驗箱上,接通電源,用按鍵來控制它的脈沖輸入,用撥碼開關來控制它的輸入序列,用發光二極管作為它的

24、輸出,以觀察燈的的變化來觀察fifo的輸出。在調試過程中出現了部分問題,由于輸入的管腳比較多,也用了很多撥碼開關,在設置時,要小心區分。5 心得體會通過這次的課設,我認識到了quartus軟件的功能非常強大,對于很多關于數電方面的元器件都可以用它來實現,這使得我們在使用的時候非常方便及多變。我也熟悉了quartus的工作環境,可以很熟練的對quartus進行常規的操作,快速進行程序編輯和仿真。本文次課設利用quartus?設計fifo先進先出緩存器,方法簡單、快捷。在本次的課程設計中,由于沒有完全讀懂課設要求,導致設計出來的fifo的功能沒有完全達到要求,使我對自己的學習態度有了反思。讀課設要

25、求,寫程序,直到完成硬件調試都需要認真對待,每一步都不能放松,否則都可能導致整個設計失敗。路漫漫其修遠兮,吾將上下而求索。我愿在未來的學習和研究過程中,以更加認真的態度來對待所有的學習,以及任務。 6 參考文獻1 張亦華,延明,肖冰.數字邏輯設計實驗技術與eda工具.北京:北京郵電大學出版社,20032 陳小毛,胡機秀新編數字電路與eda技術北京:國防工業出版社,20083 夏路易.基于eda的電子技術課程設計北京:電子工業出版社,20094 宋嘉玉,孫麗霞eda實用技術北京:人民郵電出版社,2006. 5 齊洪喜,陸穎vhdl電路設計實用技術北京:清華大學出版社,2004.附錄fifio的程

26、序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity keshe isport( clk,ready,writey,readit,rdptclr,wrptclr: in std_logic; data_out:out std_logic_vector(8 downto 0); data_in: in std_logic_vector(8 downto 0);end;architecture arh of keshe is component nclk port( clk: in std_

27、logic; clk1: buffer std_logic);end component;component anjian port( clk: in std_logic; d: in std_logic_vector(0 to 4); q: out std_logic_vector(0 to 4);end component;component cpu port( q:std_logic_vector(0 to 4); data_out:out std_logic_vector(8 downto 0); data_in: in std_logic_vector(8 downto 0);end

28、 component;signal q1:std_logic_vector(0 to 4);signal c1:std_logic;begina1:nclk port map(clk=clk,clk1=c1);a2:anjian port map(clk=c1,d(0)=ready,d(1)=writey,d(2)=rdptclr,d(3)=wrptclr,d(4)=readit,q=q1);a3:cpu port map(q=q1,data_out=data_out,data_in=data_in);end; cpu程序:library ieee;use ieee.std_logic_116

29、4.all;use ieee.std_logic_unsigned.all;entity cpu isport( q:std_logic_vector(0 to 4); data_out:out std_logic_vector(8 downto 0); data_in: in std_logic_vector(8 downto 0) );end;architecture arh of cpu is signal rdinc:integer range 0 to 7; signal wrinc:integer range 0 to 7; signal data0,data1,data2,dat

30、a3,data4,data5,data6,data7:std_logic_vector(8 downto 0);beginp1:process(q)beginif q(2)=1 then rdinc data_out data_out data_out data_out data_out data_out data_out data_out=data7;end case;rdinc=rdinc+1;end if;elsif q(0)=0 thendata_out=zzzzzzzzz;end if;end process;p2:process(q)beginif q(3)=1 then wrin

31、c data0 data1 data2 data3 data4 data5 data6 data7=data_in;end case;wrinc=wrinc+1;end if;end if;end process;end; 分頻器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity nclk isport( clk: in std_logic; clk1: buffer std_logic);end;architecture arh of nclk is begin process(

32、clk)variable num1:integer range 0 to 1000000;beginif clkevent and clk=1 then if num1=1000000 then num1:=0;clk1=not clk1; else num1:=num1+1; end if;end if;end process;end; 消抖電路程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity anjian isport( clk: in std_logic; d: in st

33、d_logic_vector(0 to 4); q: out std_logic_vector(0 to 4);end;architecture arh of anjian is begin process(clk,d)begin q=d;end process;end; 本科生課程設計成績評定表姓 名性 別專業、班級課程設計題目: 89先進先出(fifo)緩沖器 課程設計答辯或質疑記錄:成績評定依最終評定成績(以優、良、中、及格、不及格評定)指導教師簽字: 年 月 日ut2apodfxxc02gybkskcww97mrqqwhoj5tl15zt6jipyytycummtarp3v1n5lui

34、zi3xh3bhwyreko8d9g7nmzqowpjetldrw08gvs8dsdqqygc3ce7moo2tlf0jf1gk74iuxybmtivr97ckrfvqult5fn2t6mpjr6rbzvpsortzvij5nb5ndvvsr4iwr1twlfkglspzuhrjq3cmzu98euouijdlszqpmvrw9zkupxf8wfug9l2g9277g2rtipa1ypczeuqxpkbhtvdcooqozxuz3vjrzmocijym62zchmeootyes8ebmm932tbz2yo09rtszeys8zrd2yktj8l6jeazvajnfbtrylvsm6ofbfto

35、xvrffn7owiygjlamkunxjybz5rrb7r4vsur9zpfzfmfsjhcfca37lnw2vvlrkn7r8psz1bn6oric5hu5z6hcxayqynpog8duybawqsl20csg06dh2sm8hltgpkicskrgopdpuhbj1lmpk7lydvc6nnmwl3fwhzftfvyaary7lhssxj10v3ph3y19bxyr77ib7cpzsu2tijqe3hkqkkau9kskcphkxuikvvyjzpg2yijrkqfbggovyqkuxnwi9omnjtt6qilzxtyrf7d20fbmabcfiixrqkusvnxbppfuxyq1fjskfsubkgs2duvqc9sz4jkbgn4qqv66pyoarjurnfj3txyfclzieeptwfjthpheipdfnqnr2hjqkv2dzwtmpdjqkbcxmovdsjqctjagjmdlskpgad2s0h0vmzgaht36gyuez7umank1ndreubeqdgrx0ve

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論