【正文】
wrptclr: in std_logic。5 心得體會通過這次的課設(shè),我認識到了QuartusⅡ軟件的功能非常強大,對于很多關(guān)于數(shù)電方面的元器件都可以用它來實現(xiàn),這使得我們在使用的時候非常方便及多變。D觸發(fā)器的程序見附錄,: 消抖模塊原理圖 分頻電路為了配合消抖電路,取延時為5ms,即使得采樣頻率為5ms,由此根據(jù)f=1/T,算得脈沖頻率為200Hz,而實驗箱上提供的是20M的時鐘頻率,故要對時鐘進行分頻。為了保證數(shù)據(jù)輸入順序與數(shù)據(jù)輸出順序完全相同,要保證每按鍵一次只產(chǎn)生一個脈沖。當(dāng)寫入第一個數(shù)據(jù)時,數(shù)據(jù)存入0寄存器,同時寫指針加1,指向下一個寄存器,準備接受下一個將被寫入的數(shù)據(jù)。 FIFO連接模式3 先進先出緩存器設(shè)計先進先出法是指根據(jù)先入庫先發(fā)出的原則,對于輸出的數(shù)據(jù)以先輸入存儲器的數(shù)據(jù)為依據(jù)。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘。 空標志:FIFO已空或?qū)⒁諘r由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的讀操作繼續(xù)從FIFO中讀出數(shù)據(jù)而造成無效數(shù)據(jù)的讀出(underflow)。另外對于不同寬度的數(shù)據(jù)接口也可以用FIFO,例如單片機位8位數(shù)據(jù)輸出,而DSP可能是16位數(shù)據(jù)輸入,在單片機與DSP連接時就可以使用FIFO來達到數(shù)據(jù)匹配的目的。信號rdptclr和wrptclr復(fù)位讀寫指針指向FIFO的第一個寄存器。盡管目標系統(tǒng)是硬件,但整個設(shè)計和修改過程如同完成軟件設(shè)計一樣方便和高效。本設(shè)計實現(xiàn)了先進先出緩存器的一些基本功能,也把一些新的思路加入到設(shè)計中。③利用QuartusⅡ軟件對所設(shè)計的電路進行仿真分析。②進一步加強對QuartusⅡ的應(yīng)用和對VHDL語言的使用。2016年01月13日,設(shè)計,軟件編程、仿真和調(diào)試。關(guān)鍵詞:VHDL;FIFO;緩存器;QuartusⅡ; II緒 論當(dāng)前電子系統(tǒng)的設(shè)計正朝著速度快,容量大,體積小,質(zhì)量輕,用電省的方向發(fā)展。VHDL是一種全方位的硬件描述語言,包括系統(tǒng)行為級、寄存器傳輸級和邏輯門級多個設(shè)計層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為3種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件描述語言的功能,整個自頂向下或自底向上的電路設(shè)計過程都可以用VHDL來完成。3.利用QuartusⅡ軟件對所設(shè)計的電路進行仿真分析。如一個8位的FIFO,若深度為8,它可以存儲8個8位的數(shù)據(jù),深度為12 ,就可以存儲12個8位的數(shù)據(jù),F(xiàn)IFO的深度可大可小?! ∽x指針:指向下一個讀出地址。FIFO設(shè)計的難點在于怎樣判斷FIFO的空/滿狀態(tài)。當(dāng)輸入通道打開時,每來一個脈沖(由外部按鍵提供),向緩沖期內(nèi)輸入一個9位的數(shù),與此同時內(nèi)部寄存器讀指針加1,準備接受下一個需要暫存的數(shù),下一個脈沖到來,再存一個數(shù),讀指針再加1……當(dāng)輸出通道打開時,每來一個脈沖輸出一個9位數(shù),寫指針加1,準備輸出下一個9位數(shù),同理進行下一個數(shù)的輸出……由于輸入/輸出數(shù)據(jù)是按需進行的,故設(shè)計脈沖由按鍵提供,為更好的進行控制,加一個消抖電路使其每按一次內(nèi)部計數(shù)確定加1。data_in:放置將被輸入的數(shù)據(jù)。為確保電路對按鍵的一次閉合僅作一次處理,必須去除按鍵抖動。: 分頻器元件圖 頂層原理圖以上所描述模塊的程序編寫均在同一工程下,由程序生成的元件也在該工程下。在本次的課程設(shè)計中,由于沒有完全讀懂課設(shè)要求,導(dǎo)致設(shè)計出來的FIFO的功能沒有完全達到要求,使我對自己的學(xué)習(xí)態(tài)度有了反思。end。ponent cpu port( q:std_logic_vector(0 to 4)。 a3:cpu port map(q=q1,data_out=data_out,data_in=data_in)。end。139。 when 7= data_out=data7。 end process。 when 2= data2=data_in。 end if。 clk1: buffer std_logic)。 else num1:=num1+1。entity anjian isport( clk: in std_lo