ep4ce10v1.2核心板實(shí)驗(yàn)例程vhdl基礎(chǔ)教程_第1頁(yè)
ep4ce10v1.2核心板實(shí)驗(yàn)例程vhdl基礎(chǔ)教程_第2頁(yè)
ep4ce10v1.2核心板實(shí)驗(yàn)例程vhdl基礎(chǔ)教程_第3頁(yè)
ep4ce10v1.2核心板實(shí)驗(yàn)例程vhdl基礎(chǔ)教程_第4頁(yè)
ep4ce10v1.2核心板實(shí)驗(yàn)例程vhdl基礎(chǔ)教程_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、華升泰克電子技術(shù)2017 年 10 月 5 日HSEDAEP4CE10 V1.1 VDHL 實(shí)驗(yàn)?zāi)夸浤夸?一、 LED2(一)(二)(三)硬件設(shè)計(jì)2程序4實(shí)驗(yàn)效果5二、 KEY5(一)(二)(三)硬件設(shè)計(jì)6程序7實(shí)驗(yàn)效果8三、 UART8硬件設(shè)計(jì)9程序13實(shí)驗(yàn)效果14(一)(二)(三)第 1 頁(yè)一、LED板搭載有 4 個(gè)用戶可自定義的 LED0、LED1、LED2、LED3。由原理圖可知,LED 直接由 FPGA I/O口驅(qū)動(dòng),低電平點(diǎn)亮板上模塊位置(一)硬件設(shè)計(jì)用 Quartus II 13.0 (64-bit)打開 Verilogs1_led_testProject 路徑下的 s1_led

2、_test.qpf雙擊頂層文件,便可以打開 led_test.vhd,查看程序第 2 頁(yè)library ieee;use ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_ARILL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity led_ PORT(clk_50m : IN STD_LOGIC;程序分析:程序中 QN 為時(shí)間計(jì)數(shù)器。計(jì)數(shù)器最大值為 29999999,時(shí)鐘為 50MHz,達(dá)到最大值時(shí) QN 清零,進(jìn)入循環(huán),同時(shí) Q 值遞增。由于 Q 是 4 位數(shù)據(jù),遞增溢出后,會(huì)繼續(xù)從零開始,所以不用擔(dān)心。相當(dāng)于每 20ns*

3、29999999 這段時(shí)間內(nèi) Q 值遞增。Q 值 0F 循環(huán)。將 Q 值取反后,直接送給外部端口 ledVHDL 文件創(chuàng)建:a.點(diǎn)擊中的“File”-“New.”,或按快捷鍵“Ctrl”+“N”,選擇“VHDL File”,點(diǎn)擊 OK第 3 頁(yè)led : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end;architecture behv of led_SIGNALQN :eger range 0 to 50000000;SIGNALQ:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROS (clk_50m) BEGINIF rising_ed

4、ge(clk_50m) THENIF QN = 29999999 THEN-設(shè)置分頻數(shù) QN = 0;Q = Q + 1; ELSEQN = QN + 1; END IF;END IF;led “Save As.”,輸入你想保存的文件名就可以了,比如“l(fā)ed_test”分析完程序后,可以直接進(jìn)行全局編譯(二)程序 連接 JTAG器到開發(fā)板,確定驅(qū)動(dòng)器安裝成功第 4 頁(yè)開發(fā)板上電點(diǎn)擊中“Tools”-“Programmer”,或按下快捷鍵。sof 文件地址“Projectoutput_files”(三)實(shí)驗(yàn)效果板 LED3LED0 做流水燈顯示二、KEY板搭載有 4 個(gè)用戶可自定義的按鍵 S1、

5、S2、S3、S4。由原理圖可知,當(dāng)按鍵按下,等于直接接地,S1S4 端檢測(cè)到電壓為 0V;彈起時(shí),懸空,S1S4 端檢測(cè)到電壓為 3.3V。第 5 頁(yè)板上模塊位置(一)硬件設(shè)計(jì)用 Quartus II 13.0 (64-bit)打開 VHDLs2_key_testProject 路徑下的 key_test.qpf雙擊頂層文件,便可以打開 key_test.vhd,查看程序第 6 頁(yè)-* LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARILL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-* ENT

6、ITY key_PORT(key : IN std_logic_vector(3 downto 0);程序分析:程序很簡(jiǎn)單,沒(méi)消抖處理,直接將 IO 口的數(shù)據(jù)送出 IO 口程序定義了按鍵端口 key 為 4 位的輸入,led 端口為 led 為 4 位的輸出,直接將 key 的值賦給 led 就可以了 分析完程序后,可以直接進(jìn)行全局編譯(二)程序連接 JTAG開發(fā)板上電器到開發(fā)板,確定驅(qū)動(dòng)器安裝成功點(diǎn)擊中“Tools”-“Programmer”,或按下快捷鍵。sof 文件地址“Projectoutput_files”第 7 頁(yè)led : OUT std_logic_vector(3 downt

7、o 0);END key_test;-* ARCHITECTURE behv OF key_BEGINled = key;-按鍵彈起為,LED 低電平點(diǎn)亮end behv;(三)實(shí)驗(yàn)效果每次按下 S1,LED0 亮;彈起,熄滅每次按下 S2,LED1 亮;彈起,熄滅每次按下 S3,LED2 亮;彈起,熄滅每次按下 S4,LED3 亮;彈起,熄滅三、UART通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作 UART。UART 是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在 FPGA 開發(fā)板設(shè)

8、計(jì)中,UART 用來(lái)與 PC 進(jìn)行通信,包括數(shù)據(jù)通信,命令和控制信息的傳輸。實(shí)驗(yàn)之前通信協(xié)議和傳輸時(shí)序。先來(lái)了解一下 UART 的UART 通信 UART 首先將接收到的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)來(lái)傳輸。消息幀從一個(gè)低位起始位開始,后面是 7 個(gè)或 8 個(gè)數(shù)據(jù)位,一個(gè)可用的奇偶位和一個(gè)或幾個(gè)停止位。發(fā)現(xiàn)開始位時(shí)它就知道數(shù)據(jù)準(zhǔn)備發(fā)送,并嘗試與發(fā)送器時(shí)鐘頻率同步。如果選擇了奇偶校驗(yàn),UART 就在數(shù)據(jù)位后面加上奇偶位。奇偶位可用來(lái)幫助錯(cuò)誤校驗(yàn)。在接收過(guò)程中,UART 從消息幀中去掉起始位和結(jié)束位,對(duì)進(jìn)來(lái)的字節(jié)進(jìn)行奇偶校驗(yàn),并將數(shù)據(jù)字節(jié)從串行轉(zhuǎn)換成并行。UART 傳輸時(shí)序如下圖所示:華升泰克公司的板 E

9、P4CE10 VER1.1 上 RS232 接口既能為開發(fā)板提供電源,又能作為 UART 接口用于開發(fā)板和 PC 之間的串口通信。硬件設(shè)計(jì)采用Prolific 公司生產(chǎn)的 PL2303作為 USB 和 UART 電平轉(zhuǎn)換的橋梁,USB 接口采用 Micro USB 接口,用戶可以用一根開發(fā)板自帶的 USB 線連接開發(fā)板到 PC 上進(jìn)行串口的數(shù)據(jù)通信。USB 轉(zhuǎn) UART以及 UART 模塊接口原理圖如下:第 8 頁(yè)其中 RXD 信號(hào)是 FPGA 數(shù)據(jù) UART 接收, 而對(duì) PL2303來(lái)說(shuō)是數(shù)據(jù)發(fā)送; TXD 信號(hào)是 FPGA 數(shù)據(jù)發(fā)送,而對(duì) PL2303來(lái)說(shuō)是數(shù)據(jù)接收。在板實(shí)物圖如下:(一

10、)硬件設(shè)計(jì)用 Quartus II 13.0 (64-bit)打開 VHDLs3_uart_testProject 路徑下的 uart_test.qpf雙擊頂層文件,便可以打開 uart_test.vhd,查看程序第 9 頁(yè)-串口調(diào)試工具,頻率設(shè)置成 115200,設(shè)置成十六進(jìn)制,在串口調(diào)試工具的發(fā)送區(qū)域中輸入:86,會(huì)在串口調(diào)試工具的接收區(qū)域內(nèi)收到:86-一次發(fā)送一個(gè)字符library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARILL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity uart_ P

11、ort(- 頂層實(shí)體clk50mhz : in STD_LOGIC; - FPGA 的時(shí)鐘reset : in STD_LOGIC; - 總 reset, = 1時(shí)復(fù)位rxd : in STD_LOGIC; - 接受數(shù)據(jù)(Received Data,RXD),通過(guò) RXD 終端接受外來(lái)數(shù)據(jù)txd_out : out STD_LOGIC; - 發(fā)送數(shù)據(jù)(Transmitted DaXD),通過(guò) TXD 串行發(fā)送數(shù)據(jù)txd_done_out : out STD_LOGIC - 數(shù)據(jù)發(fā)送完畢信號(hào),也是標(biāo)志位,沒(méi)有控制作用,在停止位后變化. = 1 表示數(shù)據(jù)發(fā)送完畢);end uart_test;ar

12、chitecture Behavioral of uart_signal iBuffer : STD_LOGIC_VECTOR (7 downto 0); - 測(cè)試信號(hào),無(wú)關(guān)變量,可以忽略signal irdy : std_logic;component receiver - receiver 元件Port (bclkr : in STD_LOGIC; - 分頻后的時(shí)鐘resetr : in STD_LOGIC; - RESET OF RECEIVER,= 1 有效rxdr : in STD_LOGIC; - RXD IN RECEIVER COMPONENTr_ready : out STD

13、_LOGIC; - RECEIVER 接受數(shù)據(jù)后給出的 ready 信號(hào)rbuf : out STD_LOGIC_VECTOR (7 downto 0) - 數(shù)據(jù)接受緩沖區(qū));end component;- END OF RECEIVERcomponent transfer - TRANSFER 元件Port (bclkt : in STD_LOGIC;resett : in STD_LOGIC; - RESET OF COMPONENT,= 1 有效xmit_cmd_p : in STD_LOGIC;- 傳輸命令信號(hào),txdbuf: in STD_LOGIC_VECTOR (7 downto

14、 0); - 發(fā)送數(shù)據(jù)緩沖區(qū)txd : out STD_LOGIC; - TXDRANSFERtxd_done : out STD_LOGIC - 數(shù)據(jù)發(fā)送完畢信號(hào),也是標(biāo)志位,沒(méi)有控制作用,在停止位后變化.= 1 表示數(shù)據(jù)發(fā)送完畢);end component;- END OF TRANSFER第 10 頁(yè)程序分析:uart_test.v 中調(diào)用了三個(gè)子程序,分別為串口發(fā)送程序 transfer.vhd,串口接收程序 receiver.vhd,時(shí)鐘產(chǎn)第 11 頁(yè)component baud- 分頻元件Port (clk :in STD_LOGIC;- 待分頻時(shí)鐘resetb:in STD_L

15、OGIC;- RESET 信號(hào), clk50mhz, resetb = not reset, bclk = b);u2:receivort map (bclkr = b,resetr = not reset, rxdr = rxd, r_ready = irdy, rbuf = ibuffer);u3:transfort map (bclkt = b,resett = not reset, xmit_cmd_p = irdy, txdbuf = ibuffer, txd = txd_out,txd_done = txd_done_out);end Behavioral;生程序 baud.vhd

16、。1)baud.vhd 程序產(chǎn)生時(shí)鐘,產(chǎn)生 uart 接收和發(fā)送波特率為 115200bps 的時(shí)鐘信號(hào)。分頻參數(shù)計(jì)算:假設(shè)數(shù)據(jù)的波特率為 p,則所需時(shí)鐘的頻率為 16*p。以波特率 p 為 115200 為例,系統(tǒng)時(shí)鐘為 50MHz,則分頻系數(shù)為 50000000/(16*115200) = 27.126,取整為272)receiver.vhd 程序?yàn)榇诮邮粘绦颉4型ㄐ诺?通過(guò)狀態(tài)機(jī),分為五個(gè)狀態(tài)輪流執(zhí)行R_START 狀態(tài)(等待起始位):當(dāng) UART復(fù)位后,接收狀態(tài)機(jī)將處于這一個(gè)狀態(tài).在此狀態(tài)下,狀態(tài)機(jī)一直在等待RXD 的電平跳轉(zhuǎn),從邏輯 1 變?yōu)檫壿?,即起始位,這意味著新的一幀UA

17、RT 數(shù)據(jù)幀的開始,一旦起始位被確定,狀態(tài)機(jī)將轉(zhuǎn)入 R_CENTER 狀態(tài)R_CENTER 狀態(tài)(起始位確認(rèn)狀態(tài)): 當(dāng)確認(rèn)是起始位,并且穩(wěn)定,轉(zhuǎn)入R_WAIT?刺?本程序認(rèn)為保持超過(guò) 1/4 個(gè)位時(shí)間的信號(hào)認(rèn)為是起始信號(hào)R_WAIT 狀態(tài) : 當(dāng)狀態(tài)機(jī)處于這一個(gè)狀態(tài)時(shí),等待計(jì)滿 15 個(gè) bclk 周期,在第 16 個(gè) bclk 進(jìn)入R_SLE 狀態(tài)進(jìn)行數(shù)據(jù)位的采樣檢測(cè),同時(shí)也判斷的數(shù)據(jù)位長(zhǎng)度是否已經(jīng)達(dá)到數(shù)據(jù)幀的長(zhǎng)度,如果 = framlenr,就說(shuō)明停止位來(lái)臨R_SLE 狀態(tài): 即數(shù)據(jù)位采樣檢測(cè),完成后無(wú)條件狀態(tài)機(jī)轉(zhuǎn)入 R_WAIT 等待,等待下次數(shù)據(jù)位的到來(lái)R_STOP 狀態(tài): 輸出 r

18、eady 信號(hào),表明該幀傳輸完畢,之后轉(zhuǎn)入 R_START 狀態(tài)3)transfer.vhd 程序?yàn)榇诎l(fā)送。串行通信的發(fā)送器,通過(guò)狀態(tài)機(jī),分為五個(gè)狀態(tài)輪流執(zhí)行X_IDLE(空閑)狀態(tài) : 當(dāng) UART 被復(fù)位后,狀態(tài)機(jī)將立刻進(jìn)入這一狀態(tài),在這個(gè)狀態(tài)下,狀態(tài)機(jī)一直等待發(fā)送命令 XMIT_CMD,當(dāng)接收到發(fā)送命令后,狀態(tài)機(jī)進(jìn)入 X_START 狀態(tài),準(zhǔn)備發(fā)送起始位信號(hào)X_START 狀態(tài) : 在這個(gè)狀態(tài)下,UART 發(fā)送一個(gè)位時(shí)間寬度的邏輯0,信號(hào)至 TXD,即起始位,緊接著狀態(tài)機(jī)進(jìn)入 X_SHIFT 狀態(tài),發(fā)一位數(shù)據(jù)X_WAIT 狀態(tài) : 當(dāng)狀態(tài)機(jī)處于這一個(gè)狀態(tài)時(shí),等待計(jì)滿 15 個(gè)bclk 周期,在第 16 個(gè)bclk 進(jìn)入X_SHIFT狀態(tài)進(jìn)行數(shù)據(jù)位的發(fā)送,同時(shí)也判斷發(fā)送的數(shù)據(jù)位長(zhǎng)度是否已經(jīng)達(dá)到數(shù)據(jù)幀的長(zhǎng)度,如果 = framlent,就說(shuō)明停止位發(fā)送進(jìn)入停止?fàn)顟B(tài).X_SHIFT 狀態(tài) : 實(shí)現(xiàn)待發(fā)數(shù)據(jù)的并串轉(zhuǎn)換,轉(zhuǎn)換完成立即進(jìn)入 X_WAIT 狀態(tài),進(jìn)行下一次發(fā)送X_STO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論