




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、河北科技大學(xué)碩士學(xué)位研究生20152016學(xué)年第二學(xué)期FPGA器件原理及應(yīng)用結(jié)課論文學(xué) 院:信息科學(xué)與工程學(xué)院專 業(yè):測(cè)試計(jì)量技術(shù)及儀器姓 名:趙久強(qiáng)學(xué) 號(hào):2201514006FPGA實(shí)驗(yàn) 基于FPGA的串口通信實(shí)驗(yàn)1、 實(shí)驗(yàn)?zāi)康?. 熟悉quartus的VHDL文本設(shè)計(jì)流程全過程,學(xué)習(xí)電路的設(shè)計(jì)、多層次電路設(shè)計(jì)、仿真和硬件測(cè)試。2. 學(xué)習(xí)IP核生成的過程,以及testbench文件的編寫。3. 了解FPGA內(nèi)部豐富的存儲(chǔ)單元,對(duì)fifo核有一個(gè)深刻理解。 4. 熟悉基于FPGA的串口通信的相關(guān)知識(shí),實(shí)現(xiàn)串口通信的仿真驗(yàn)證。2、 實(shí)驗(yàn)內(nèi)容串行接口的應(yīng)用非常廣泛,為了實(shí)現(xiàn)串口通信功能一般使用專
2、用串行接口芯片。對(duì)一個(gè)設(shè)備的處理器來說,要接收和發(fā)送串行通信的數(shù)據(jù),需要一個(gè)器件將串行的數(shù)據(jù)轉(zhuǎn)換成并行的數(shù)據(jù)以便于處理器進(jìn)行處理,這種器件就是UART通用異步收發(fā)器。用VHDL語言設(shè)計(jì)邏輯電路,將各個(gè)模塊的電路封裝成器件,在頂層設(shè)計(jì)中通過連線,完成整個(gè)系統(tǒng)的設(shè)計(jì)。串行通信即串行數(shù)據(jù)傳輸,實(shí)現(xiàn)FPGA與PC的串行通信。在實(shí)際中,特別是在FPGA的調(diào)試中有著很重要的應(yīng)用。調(diào)試過程一般是先進(jìn)行軟件編程仿真,然后將程序下載到芯片中驗(yàn)證設(shè)計(jì)的正確性,目前還沒有更好的工具可以在下載后實(shí)時(shí)地對(duì)FPGA的工作情況和數(shù)據(jù)進(jìn)行分析。通過串行通信,可以向FPGA發(fā)控制命令讓其執(zhí)行相應(yīng)的操作,同時(shí)把需要的數(shù)據(jù)通過串口
3、發(fā)到PC上進(jìn)行相應(yīng)的數(shù)據(jù)處理和分析,以此來判斷FPGA是否按設(shè)計(jì)要求工作。這樣給FPGA的調(diào)試帶來了很大方便,在不需要DSP等其他額外的硬件條件下,只通過串口就可以完成對(duì)FPGA的調(diào)試。本文是基于FPGA的串口通信實(shí)驗(yàn),設(shè)計(jì)實(shí)現(xiàn)了與PC的串行通信的仿真。調(diào)用了一個(gè)FIFO核。總體框圖如圖1所示。圖1 總體框圖3、 實(shí)驗(yàn)步驟(1)首先我們建立一個(gè)FIFO核,然后在調(diào)試主程序中調(diào)用這個(gè)我們建立的這個(gè)核,從而進(jìn)行串口通信的仿真。打開quartus 12.0軟件,如圖2所示。圖2 軟件示意圖(2)打開tools,找到MegaWizard Plug-In Manager,如圖3所示圖3 軟件示意圖(3)
4、接下來,我們可以看到如下界面,看到IP核的設(shè)置界面。我們選擇第一項(xiàng)建立一個(gè)新核。圖4 軟件示意圖(4)接下來有如下界面,我們?cè)谧筮叺乃阉骺虻睦锩嫠阉鱂IFO,然后出現(xiàn)了fifo,我們雙擊它,然后我們這里選擇VHDL,然后在編輯fifo核的名字,例如rx_tx_buffer.如圖5所示 圖5 軟件示意圖(5)然后彈出如下界面,在這里我們選擇Cyclone III,8位和256字,在下面選擇讀時(shí)鐘和寫時(shí)鐘分開。圖6 軟件示意圖(6)我們按照要求選擇第一個(gè),一個(gè)時(shí)鐘沿觸發(fā)。圖7 軟件示意圖(7)按照我們的要求,在下面的設(shè)置界面勾選我們的所需要的控制信號(hào),讀空寫滿信號(hào)。如下圖8所示圖8 軟件示意圖(8
5、)接下來我們選擇fifo的模式,按照下面的設(shè)置。圖9 軟件示意圖(10)最后按照我們需要,選擇生成的文件。如下圖10所示。圖10 軟件示意圖(11)我們的fifo核已經(jīng)創(chuàng)建完成,接下來我們要在quartus12.0創(chuàng)建工程.第一步打開quartus。圖11 軟件示意圖(12)接下來我們創(chuàng)建工程,將串口程序加入,創(chuàng)建一個(gè)工程,如圖11,12所示。圖12 軟件示意圖圖13 軟件示意圖(13)我們將tb文件和主程序文件添加進(jìn)去。圖14 軟件示意圖(14)我們選擇芯片型號(hào),設(shè)置語言VHDL還有仿真設(shè)置。如圖所示。圖15 軟件示意圖(15)接下來我們創(chuàng)建好的工程添加fifo核。如圖所示圖16 軟件示意圖
6、(16)最后我們進(jìn)行仿真,觀察實(shí)驗(yàn)結(jié)果。圖17 軟件示意圖(17)仿真如圖所示。圖18 軟件示意圖四、實(shí)驗(yàn)結(jié)論本實(shí)驗(yàn)主要利用quartus12.0生成fifo核。然后經(jīng)過quartus創(chuàng)建工程,編寫串口程序,調(diào)用fifo核,實(shí)現(xiàn)串口通信的功能,通過編寫tb文件,實(shí)驗(yàn)所要達(dá)到的結(jié)果。五、附錄testbench文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all; - Uncomment the following library declarat
7、ion if using- arithmetic functions with Signed or Unsigned values-USE ieee.numeric_std.ALL; ENTITY tb_UART_An ISEND tb_UART_An; ARCHITECTURE behavior OF tb_UART_An IS - Component Declaration for the Unit Under Test (UUT) COMPONENT UART_An PORT( reset : IN std_logic; mclk : IN std_logic; mode : IN st
8、d_logic_vector(1 downto 0); serial_in : IN std_logic; serial_out : OUT std_logic; fcw : IN std_logic_vector(31 downto 0); send_clk : IN std_logic; send_requst : IN std_logic; send_data : IN std_logic_vector(7 downto 0); tx_fifo_full : OUT std_logic; rd_clk : IN std_logic; rd_data : OUT std_logic_vec
9、tor(7 downto 0); rd_requst : IN std_logic; rd_fifo_empty : OUT std_logic ); END COMPONENT; -Inputs signal reset : std_logic := '0' signal mclk : std_logic := '0' signal mode : std_logic_vector(1 downto 0) := (others => '0'); signal serial_in : std_logic := '0' sign
10、al fcw : std_logic_vector(31 downto 0) := (others => '0'); signal send_clk : std_logic := '0' signal send_requst : std_logic := '0' signal send_data : std_logic_vector(7 downto 0) := (others => '0'); signal rd_clk : std_logic := '0' signal rd_requst : st
11、d_logic := '0' -Outputs signal serial_out : std_logic; signal tx_fifo_full : std_logic; signal rd_data : std_logic_vector(7 downto 0); signal rd_fifo_empty : std_logic; signal cnt :integer; - Clock period definitions constant mclk_period : time := 10 ns; constant send_clk_period : time := 50
12、 ns; constant rd_clk_period : time := 50 ns; BEGIN - Instantiate the Unit Under Test (UUT) uut: UART_An PORT MAP ( reset => reset, mclk => mclk, mode => mode, serial_in => serial_in, serial_out => serial_out, fcw => fcw, send_clk => send_clk, send_requst => send_requst, send_
13、data => send_data, tx_fifo_full => tx_fifo_full, rd_clk => rd_clk, rd_data => rd_data, rd_requst => rd_requst, rd_fifo_empty => rd_fifo_empty ); - Clock process definitions mclk_process :process beginmclk <= '0'wait for mclk_period/2;mclk <= '1'wait for mclk_p
14、eriod/2; end process; send_clk_process :process beginsend_clk <= '0'wait for send_clk_period/2;send_clk <= '1'wait for send_clk_period/2; end process; rd_clk_process :process beginrd_clk <= '0'wait for rd_clk_period/2;rd_clk <= '1'wait for rd_clk_period/2;
15、 end process; SYS_RST_P: processbegin - hold reset state for 100 ns. reset <= '1' wait for 100 ns; reset <= '0' wait;end process;-自環(huán)模式serial_in <= serial_out;-設(shè)定波特率fcw <= X"1FFFFFFF" -conv_std_logic_vector(100000, 32);rd_requst <= '1'- Stimulus proces
16、sstim_proc: process(send_clk)begin -MAC0 stimulusif reset = '1' then mode <= "10"cnt <= 0;elsif send_clk'event and send_clk = '1' then cnt <= cnt + 1;case cnt is when 140 =>-打入配置端口命令send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8);wh
17、en 141 => send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8);when 142 => send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8); when 143 => send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8);when 144 => send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8); when 145 => send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8); when 146 => send_requst <= '1'send_data <= conv_std_logic_vector(cnt,8);when 147 => send_requst
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力檢修合同范本
- 手機(jī) 經(jīng)銷合同范本
- 勞務(wù)塔吊司機(jī)合同范本
- 加工非標(biāo)制作合同范本
- 農(nóng)村產(chǎn)業(yè)外包合同范本
- 入職家政合同范本
- 公路承包轉(zhuǎn)讓合同范本
- 公司加班裝修合同范本
- 產(chǎn)品推廣協(xié)議合同范本
- 冷庫(kù)維修合同范本正規(guī)合同
- GB/T 28253-2012擠壓絲錐
- GB/T 27689-2011無動(dòng)力類游樂設(shè)施兒童滑梯
- 普通話教程教學(xué)課件第八單元詞匯和語法的規(guī)范與辨正
- 康復(fù)治療技術(shù)概論
- 【統(tǒng)編】最新部編版五年級(jí)下冊(cè)道德與法治《我們的公共生活》課件
- 教學(xué)課件:《連鎖門店運(yùn)營(yíng)管理》(第二版)
- 高速綜合檢測(cè)列車軌道檢測(cè)系統(tǒng)課件
- 如何做一名合格的項(xiàng)目經(jīng)理 課件
- 抖音開店品牌授權(quán)模板
- 大學(xué)生必知的自然科學(xué)知識(shí)考試題庫(kù)(300題)
- 人教版七年級(jí)英語下冊(cè)聽力翻譯
評(píng)論
0/150
提交評(píng)論