0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):UART協(xié)議驅(qū)動(dòng)設(shè)計(jì)

電子發(fā)燒友論壇 ? 來(lái)源:未知 ? 2023-06-27 08:20 ? 次閱讀

本系列將帶來(lái)FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開(kāi)始,最詳細(xì)操作步驟,最直白的言語(yǔ)描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白及打算進(jìn)階提升的職業(yè)開(kāi)發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會(huì)。


系統(tǒng)性的掌握技術(shù)開(kāi)發(fā)以及相關(guān)要求,對(duì)個(gè)人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對(duì)大家有所幫助。后續(xù)會(huì)陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開(kāi)發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時(shí),實(shí)操結(jié)合各類操作軟件,會(huì)讓你在技術(shù)學(xué)習(xí)道路上無(wú)比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實(shí)戰(zhàn)應(yīng)用。話不多說(shuō),上貨。


UART協(xié)議驅(qū)動(dòng)設(shè)計(jì)


本篇實(shí)現(xiàn)基于叁芯智能科技的SANXIN -B01 FPGA開(kāi)發(fā)板,以下為配套的教程,如有入手開(kāi)發(fā)板,可以登錄官方淘寶店購(gòu)買,還有配套的學(xué)習(xí)視頻。SANXIN-B01 Verilog教程-郝旭帥團(tuán)隊(duì)


通用異步收發(fā)傳輸器(Universal Asynchronous Receiver / Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器。它將要傳輸?shù)?a href="http://srfitnesspt.com/soft/special/" target="_blank">資料在串行通信與并行通信之間加以轉(zhuǎn)換。作為把并行輸入信號(hào)轉(zhuǎn)成串行輸出信號(hào)的芯片,UART通常被集成于其他通訊接口的連接上。


UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用于主機(jī)與輔助設(shè)備通信,如汽車音響與外接AP之間的通信,與PC機(jī)通信包括與監(jiān)控調(diào)試器和其它器件。


并行通信與串行通信

兩個(gè)芯片或者設(shè)備之間傳遞信息稱為通信。對(duì)于信息來(lái)說(shuō)可能會(huì)有很多位,例如:傳輸ASCII碼(8bit)。在設(shè)計(jì)時(shí),我們可以采取在兩個(gè)通信設(shè)備之間設(shè)計(jì)8根數(shù)據(jù)線,將8bit數(shù)據(jù)同時(shí)發(fā)送過(guò)去,對(duì)方同時(shí)接收8位數(shù)據(jù)。這種同時(shí)發(fā)送多位數(shù)據(jù)的傳輸方式,稱為并行通信。



由于某些原因,設(shè)備A和設(shè)備B之間不能設(shè)計(jì)多根數(shù)據(jù)線,只能設(shè)計(jì)一根數(shù)據(jù)線。如果此時(shí)還是需要傳輸ASCII碼,那么應(yīng)該怎么辦呢?


設(shè)備A可以將ASCII碼的8位,按照一定的順序一位一位的發(fā)送到數(shù)據(jù)線上。設(shè)備B按照設(shè)備A發(fā)送的順序進(jìn)行一位一位的接收,然后拼接為一個(gè)8位。這種通信方式成為串行通信。



將8位或者多位數(shù)據(jù)拆分為一位一位的發(fā)送出去的過(guò)程稱為并轉(zhuǎn)串。將一位一位接收的數(shù)據(jù)合并為8位或者多位數(shù)據(jù)的過(guò)程稱為串轉(zhuǎn)并。


對(duì)于串行通信設(shè)備來(lái)說(shuō),發(fā)送方都是在執(zhí)行并轉(zhuǎn)串,接收方都是在執(zhí)行串轉(zhuǎn)并。


UART設(shè)備為串行通信設(shè)備。


全雙工通信、半雙工通信和單工通信

全雙工通信是指在同一時(shí)刻信息可以進(jìn)行雙向傳輸。例如:打電話,說(shuō)的同時(shí)也能聽(tīng)。


半雙工通信是指在同一時(shí)刻信息只能單向傳輸,雙方都可以進(jìn)行發(fā)送和接收,但是不能夠同時(shí)發(fā)送和接收。例如:對(duì)講機(jī)通信。


單工通信是指在通信過(guò)程中,只能夠設(shè)備A發(fā)送,設(shè)備B接收。例如:聽(tīng)收音機(jī)。


SANXIN – B01的開(kāi)發(fā)板上的UART接口設(shè)備可以做到半雙工通信。


UART的通信電平標(biāo)準(zhǔn)

兩個(gè)設(shè)備之間能夠互相通信的基礎(chǔ)條件為電平標(biāo)準(zhǔn)相同。UART的接口標(biāo)準(zhǔn)有很多,有RS232、RS485等等。


臺(tái)式PC上一般會(huì)有一個(gè)DB9,接口標(biāo)準(zhǔn)為RS232。



此接口在各個(gè)工業(yè)板上也有很多。隨著技術(shù)的發(fā)展,PC上的DB9的接口逐漸被淘汰,換成了USB接口。


我們的開(kāi)發(fā)板上選擇使用USB接口,方便大家學(xué)習(xí),便于和PC進(jìn)行通信。


FPGA芯片是無(wú)法(較為復(fù)雜)發(fā)出對(duì)應(yīng)的電平標(biāo)準(zhǔn),如:RS485、RS232、USB接口電平等。在大多數(shù)板卡設(shè)計(jì)時(shí),都會(huì)在FPGA外圍添加電平轉(zhuǎn)換器,將FPGA的電平標(biāo)準(zhǔn)轉(zhuǎn)換為通信的電平標(biāo)準(zhǔn)。


我們的開(kāi)發(fā)板上采用USB <->UART(LVCOMS/LVTTL)的電平轉(zhuǎn)換芯片CP2102。所以開(kāi)發(fā)板上的供電端口不僅僅可以供電,還可以進(jìn)行通信。



對(duì)于開(kāi)發(fā)者來(lái)說(shuō),不用考慮線路的電平標(biāo)準(zhǔn),只需要考慮如何發(fā)送和接收邏輯即可。


UART通信協(xié)議

雙方進(jìn)行通信時(shí),并不是每時(shí)每刻都在進(jìn)行通信,大多數(shù)的通信都是突發(fā)性的。此時(shí)發(fā)送設(shè)備需要在發(fā)送有效之前需要提前通知接收設(shè)備應(yīng)該要進(jìn)行接收信息。有的人就會(huì)有疑問(wèn),發(fā)送方有信息就發(fā)送,沒(méi)有信息就停止;接收設(shè)備檢測(cè)有信息發(fā)送過(guò)來(lái)就接收,沒(méi)有信息就不接收;這樣的話不就可以了嗎?為什么需要提前通知有信息過(guò)來(lái)?


雙方既然能夠進(jìn)行通信,中間勢(shì)必建立了通信線路。發(fā)送方有信息時(shí),發(fā)送信息;沒(méi)有信息就停止發(fā)送。對(duì)于發(fā)送方來(lái)說(shuō),沒(méi)有任何問(wèn)題。接收方的難度就比較大,在通信線路中,發(fā)送方不發(fā)送信息時(shí),接收方也會(huì)在線路上接收到信息,由于接收方也不知道是不是發(fā)送方發(fā)送的信息,此時(shí)就會(huì)造成接收方無(wú)法判斷是信息還是噪聲。


為了解決上述的問(wèn)題,我們規(guī)定了通信協(xié)議。


在UART通信協(xié)議中,我們規(guī)定:

  1. 在不通信時(shí),發(fā)送高電平。

  2. 發(fā)送信息時(shí),應(yīng)該首先發(fā)送起始位(1bit、低電平)??梢岳斫鉃楦嬖V接收方,應(yīng)該接收信息了。

  3. 發(fā)送數(shù)據(jù)位,由于是串行通信,規(guī)定從低位開(kāi)始發(fā),最后到高位(協(xié)議規(guī)定信息位可以為4、5、6、7、8)。

  4. 校驗(yàn)位(1bit)。可以采用奇校驗(yàn)、偶校驗(yàn)、直接發(fā)1、直接發(fā)0、不發(fā)等5種情況。

  5. 停止位(1bit、1.5bit、2bit。高電平)。

  6. 空閑位(1bit,高電平)



1bit的時(shí)間寬度為多少呢?

在UART協(xié)議中,一般常用的波特率(BAUD)為300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。1秒鐘除以波特率就是1bit的時(shí)間寬度。


校驗(yàn)位有什么作用?如何進(jìn)行校驗(yàn)?

在發(fā)送信息時(shí),由于要經(jīng)過(guò)很長(zhǎng)的線路,中間極有可能受到干擾,導(dǎo)致某些信息位發(fā)生反轉(zhuǎn),最終導(dǎo)致通信失敗。校驗(yàn)位的作用為當(dāng)接收到數(shù)據(jù)后,進(jìn)行檢驗(yàn),如果檢驗(yàn)不通過(guò),視為接收數(shù)據(jù)有誤,直接丟棄即可。


在校驗(yàn)時(shí),可以選擇奇校驗(yàn)和偶校驗(yàn)。奇校驗(yàn)是要求發(fā)送的數(shù)據(jù)位和校驗(yàn)位中1的個(gè)數(shù)為奇數(shù)個(gè);偶校驗(yàn)是要求發(fā)送的數(shù)據(jù)位和校驗(yàn)位中1的個(gè)數(shù)為偶數(shù)個(gè)。


發(fā)送器設(shè)計(jì)原理

發(fā)送器中加入緩沖器。即上游模塊把想要發(fā)送的數(shù)據(jù)寫入到發(fā)送器中的FIFO里,發(fā)送器的控制邏輯檢測(cè)到FIFO中有數(shù)據(jù)時(shí),就讀出來(lái)進(jìn)行發(fā)送。因?yàn)榘l(fā)送器發(fā)送的速率比較慢,加入FIFO后,上游模塊不用等待上一個(gè)數(shù)據(jù)發(fā)送完成就可以直接寫入后續(xù)的數(shù)據(jù)。


根據(jù)提前約定好的波特率和校驗(yàn)方式,發(fā)送器的控制邏輯讀出FIFO的數(shù)據(jù)后,按照UART的協(xié)議向外發(fā)送即可。


接收器設(shè)計(jì)原理

接收器中加入緩沖器。即接收器的控制邏輯接收到信息后,發(fā)送到緩沖器中。由于有緩沖器的存在,主控制器可以不必時(shí)時(shí)刻刻檢查接收狀態(tài),只需要一定的時(shí)間檢測(cè)緩沖器中是否有數(shù)據(jù)即可。


在接收時(shí),起始位的低電平持續(xù)時(shí)間要超過(guò)半個(gè)周期才可以認(rèn)為是開(kāi)始,避免線路上干擾,引起錯(cuò)誤接收。


在接收數(shù)據(jù)位、校驗(yàn)位、停止位時(shí),采用倍頻(16倍頻)采樣,使用中間的6、7、8、9、10這五次采樣值作為采樣依據(jù),當(dāng)五次全部為同一個(gè)電平時(shí),即認(rèn)為本位為此電平值;當(dāng)四次相同,一次不同時(shí),即認(rèn)為本位與四次相同的電平值相同;當(dāng)出現(xiàn)其他情況時(shí),認(rèn)為線路干擾太大,不做任何接收。

接收完成后,進(jìn)行幀檢測(cè)和校驗(yàn),滿足設(shè)計(jì)要求時(shí),將其中的數(shù)據(jù)寫入到FIFO中。


架構(gòu)設(shè)計(jì)和信號(hào)說(shuō)明



此模塊命名為uart_drive,共有四個(gè)模塊構(gòu)成。

  • tx_fifo模塊:發(fā)送緩沖區(qū)256深度、寬度為8,該緩沖區(qū)設(shè)計(jì)一個(gè)高電平有效的復(fù)位。負(fù)責(zé)將上游想要發(fā)送的數(shù)據(jù)緩存起來(lái)。

  • tx_ctrl模塊:發(fā)送邏輯控制部分。負(fù)責(zé)將tx_fifo中的數(shù)據(jù)按照UART的協(xié)議規(guī)定發(fā)送出去。

  • rx_ctrl模塊:接收邏輯控制部分。負(fù)責(zé)將外部數(shù)據(jù)線上的數(shù)據(jù)按照UART協(xié)議規(guī)定解析出來(lái),存儲(chǔ)到tx_fifo中。

  • rx_fifo模塊:接收緩沖區(qū)256深度、寬度為8,該緩沖區(qū)設(shè)計(jì)一個(gè)高電平有效的復(fù)位。負(fù)責(zé)將接收邏輯控制部分解析的數(shù)據(jù)緩存起來(lái),等待著控制器件的讀取。



在上述表格中,所有的為端口但是不分配管腳的信號(hào)都是由上游邏輯控制給出。本次下板實(shí)驗(yàn)時(shí),也會(huì)給出上游控制模塊。


調(diào)用tx_fifo

調(diào)用tx_fifo和7.4節(jié)中方法類似,其他有幾個(gè)步驟不太一樣,下面給出具體說(shuō)明。


對(duì)于很多的標(biāo)志信號(hào)在設(shè)計(jì)中用不到,就不再引出。

引出清除信號(hào)(高電平有效),并使清除信號(hào)同步于讀時(shí)鐘。



調(diào)用rx_fifo

調(diào)用rx_fifo和7.4節(jié)中方法類似,其他有幾個(gè)步驟不太一樣,下面給出具體說(shuō)明。


對(duì)于很多的標(biāo)志信號(hào)在設(shè)計(jì)中用不到,就不再引出。


引出清除信號(hào)(高電平有效),并使清除信號(hào)同步于寫時(shí)鐘。



tx_ctrl設(shè)計(jì)實(shí)現(xiàn)

參數(shù)PARITY為選擇的校驗(yàn)方式,1表示為奇校驗(yàn),0表示為偶校驗(yàn)。


參數(shù)BAUD為選擇的波特率。


參數(shù)F_clk為參考的時(shí)鐘頻率。


參數(shù)T為需要計(jì)數(shù)多個(gè)參考時(shí)鐘周期才可以到波特率規(guī)定的時(shí)間。


設(shè)計(jì)代碼為:


tx_en為發(fā)送標(biāo)志信號(hào),當(dāng)發(fā)送邏輯處于不發(fā)送狀態(tài)時(shí),并且tx_fifo中不空,就將tx_en拉高,啟動(dòng)發(fā)送邏輯。當(dāng)發(fā)送完成后,拉高tx_done,將tx_en拉低。其他時(shí)間tx_en保持不變。


tx_fifo_rden為tx_fifo的讀使能信號(hào),拉高一拍,讀出一個(gè)數(shù)據(jù),所以每次只能拉高一拍。在tx_en為低器件,且外部tx_fifo中有數(shù)據(jù)時(shí),拉高tx_fifo_rden。tx_fifo_rden和tx_en拉高的條件相同,故而會(huì)同步拉高,下一拍時(shí),tx_en會(huì)變?yōu)楦唠娖?,所以此時(shí)tx_fifo_rden只會(huì)拉高一拍。


baud_cnt是為了記錄每發(fā)送1bit時(shí)間寬度的計(jì)數(shù)器。在發(fā)送使能tx_en拉高后,baud_cnt就開(kāi)始不斷的計(jì)數(shù)即可。


bit_cnt為此時(shí)應(yīng)該發(fā)送UART協(xié)議中哪一位的計(jì)數(shù)器,此計(jì)數(shù)器在發(fā)送使能拉高后,baud_cnt每次計(jì)數(shù)到1時(shí),bit_cnt進(jìn)行加1。由于baud_cnt為循環(huán)計(jì)數(shù),無(wú)論在什么時(shí)刻bit_cnt加1,后續(xù)加1的時(shí)間間隔都是一個(gè)bit時(shí)間寬度。為了能夠使tx_en一旦拉高,發(fā)送邏輯能夠快速發(fā)送起始位,所以本設(shè)計(jì)中選擇1。


tx_done信號(hào)為發(fā)送完成信號(hào),當(dāng)bit_cnt等于13(起始位1bit、數(shù)據(jù)位8bit、校驗(yàn)位1bit,停止位1bit和空閑位1bit,共計(jì)12bit。本設(shè)計(jì)中bit_cnt為1時(shí),發(fā)送起始位;bit_cnt為12時(shí),發(fā)送空閑位)時(shí),證明所有的bit位都已經(jīng)發(fā)送完成,將tx_done拉高。


在算術(shù)運(yùn)算中,假設(shè)data的位寬為3,^data=data[1] ^ data[1] ^ data[0],這種運(yùn)算規(guī)則稱為縮減運(yùn)算符。縮減運(yùn)算符還有“&”和“|”。如果data中1的個(gè)數(shù)為奇數(shù)個(gè),那么縮減異或之后的記過(guò)為1,否則為0。當(dāng)采用奇校驗(yàn)時(shí),數(shù)據(jù)位和校驗(yàn)位的1個(gè)數(shù)為奇數(shù),所以校驗(yàn)位應(yīng)該是~(^tx_fifo_rdata)。當(dāng)采用偶校驗(yàn)時(shí),數(shù)據(jù)位和校驗(yàn)位的1個(gè)數(shù)為偶數(shù),所以校驗(yàn)位應(yīng)該是^tx_fifo_rdata。


rx_ctrl設(shè)計(jì)實(shí)現(xiàn)

參數(shù)PARITY為選擇的校驗(yàn)方式,1表示為奇校驗(yàn),0表示為偶校驗(yàn)。


參數(shù)BAUD為選擇的波特率。


參數(shù)F_clk為參考的時(shí)鐘頻率。


參數(shù)T為需要計(jì)數(shù)多個(gè)參考時(shí)鐘周期才可以到16倍波特率規(guī)定的時(shí)間。


由于外部uart_rxd的信號(hào)為異步信號(hào),首先需要打兩拍。


設(shè)計(jì)代碼為:


start_cnt為記錄在沒(méi)有啟動(dòng)接收時(shí),低電平的持續(xù)時(shí)間。


當(dāng)start_cnt的低電平持續(xù)時(shí)間等于8個(gè)T時(shí)(16個(gè)T為一個(gè)bit的時(shí)間寬度),認(rèn)為此起始位有效,拉高rx_en。當(dāng)接收完成后,rx_en拉低,其他時(shí)間,rx_en保持不變。


當(dāng)rx_en拉高后,baudx16_cnt不斷開(kāi)始計(jì)數(shù),最大值為16倍頻的寬度值。


當(dāng)rx_en拉高后,且baudx16_cnt為最大值時(shí),就開(kāi)始進(jìn)行移位采樣。由于起始位只判斷一半,所以半個(gè)起始位、8個(gè)數(shù)據(jù)位、1個(gè)奇偶校驗(yàn)位,在16倍頻采樣的情況下,一共會(huì)采樣152次。


cap_cnt為采樣的計(jì)數(shù),當(dāng)采樣到152時(shí),且baudx16_cnt等于2時(shí),認(rèn)為采樣結(jié)束。利用baudx16_cnt等于2只是為了產(chǎn)生的tx_done為一個(gè)脈沖。


采樣結(jié)束后,利用函數(shù)的特性,得出8個(gè)數(shù)據(jù)位、1個(gè)校驗(yàn)位,并且得出9個(gè)線路是不是出現(xiàn)干擾的標(biāo)志rx_error。


得到最終結(jié)果后,將數(shù)據(jù)進(jìn)行輸出。


產(chǎn)生rx_fifo_wren時(shí),進(jìn)行了線路干擾檢測(cè)判斷,停止位判斷,以及奇偶校驗(yàn)判斷,當(dāng)都符合預(yù)期后,輸出為1。其他情況輸出為0。


頂層設(shè)計(jì)

頂層設(shè)計(jì)只負(fù)責(zé)將上述四個(gè)模塊按照架構(gòu)圖的方式進(jìn)行連接。


設(shè)計(jì)代碼為:


parameter所定義的參數(shù),在例化時(shí),可以對(duì)它進(jìn)行重新賦值,方便我們參數(shù)化設(shè)計(jì)。


綜合出來(lái)的RTL視圖如下:



RTL仿真

在仿真中,將uart_rxd和uart_txd相連接,實(shí)現(xiàn)自發(fā)自收。

對(duì)于tx_clk和rx_clk都采用clk連接。


仿真代碼如下:


復(fù)位結(jié)束后,采用寫入隨機(jī)數(shù)的方式,寫入了五個(gè)數(shù)據(jù)。從RTL仿真圖中可以看到這個(gè)五個(gè)數(shù)據(jù)為24、81、09、63、0d。


接收端口時(shí)刻監(jiān)測(cè)rx_empty是不是為假值,一旦為假值,就證明有接收到數(shù)據(jù),立刻拉高一拍rx_en,進(jìn)行讀出。大概經(jīng)過(guò)十幾毫秒后,仿真會(huì)自動(dòng)停止。



從RTL仿真圖中可以看到,讀出的數(shù)據(jù)為24、81、09、63、0d這五個(gè)數(shù)據(jù),和我們寫入的相同。


下板驗(yàn)證

由于此設(shè)計(jì)外設(shè)接口眾多,并且在使用時(shí),都是由上游控制器進(jìn)行控制。本小節(jié)編寫上游控制器,實(shí)現(xiàn)回環(huán)測(cè)試(將接收到的數(shù)據(jù),全部在發(fā)送出去)。


在測(cè)試時(shí),rx_clk和tx_clk都采用系統(tǒng)時(shí)鐘。


本模塊命名為uart_drive_example。



test_ctrl模塊負(fù)責(zé)監(jiān)控rx_empty是否為假值,一旦有數(shù)據(jù)接收到就可以讀出,發(fā)送到發(fā)送緩沖區(qū)中。


此模塊采用狀態(tài)實(shí)現(xiàn)。共分為WAIT_RX(等待UART接收數(shù)據(jù)),WAIT_RD(等待讀數(shù)據(jù)),SEND(發(fā)送數(shù)據(jù))。


將rx_en置高后,rx_data需要等待一拍才會(huì)有效。


狀態(tài)轉(zhuǎn)移圖如下:



設(shè)計(jì)代碼如下:


uart_drive_example負(fù)責(zé)將test_ctrl和uart_drive聯(lián)系起來(lái)。


設(shè)計(jì)代碼如下:


將uart_drive_example設(shè)置為頂層。


在file界面,右擊uart_drive_example文件,選擇set as top level……。



進(jìn)行綜合分析后,分配管腳,形成配置文件。


安裝驅(qū)動(dòng)

將開(kāi)發(fā)板與電腦相連接,打開(kāi)設(shè)備管理器。可以看到在其他設(shè)備中出現(xiàn)了CP2102 USB to UART Bridge Controller,并且前面有一個(gè)黃色的感嘆號(hào),標(biāo)志著此端口還不能使用。


在我們的開(kāi)發(fā)板上,使用的USB <->UART的芯片就是CP2102,所以在此需要安裝驅(qū)動(dòng)。


打開(kāi)04_串口驅(qū)動(dòng),安裝CP210x_windows_drivers。


文件中有兩個(gè)安裝程序。一個(gè)是CP210xVCPInstaller_x64,另外一個(gè)是CP210xVCPInstaller_x86。此時(shí)我們需要查看自己電腦的系統(tǒng)是多少位的,打開(kāi)控制面板中的系統(tǒng)就可以看自己的電腦是多少位的操作系統(tǒng)


64位的操作系統(tǒng),安裝CP210xVCPInstaller_x64,32位的操作系統(tǒng)安裝CP210xVCPInstaller_x86。



雙擊對(duì)應(yīng)的安裝程序后,點(diǎn)擊下一步。



點(diǎn)擊“我接受”,點(diǎn)擊下一步。



等待一段時(shí)間后,選擇完成即可。



此時(shí)對(duì)開(kāi)發(fā)板進(jìn)行斷電再上電的處理,就可以在設(shè)備管理的端口(COM和LPT)中看到安裝好的程序,并且記住后面的COM口的編號(hào),一會(huì)兒需要使用。在此,筆者的PC上的COM口為COM3。



安裝串口助手軟件

如果電腦上有其他串口助手軟件的,也可以使用。


電腦上沒(méi)有串口助手的軟件的,可以安裝我們提供的軟件。


打開(kāi)09_工具,安裝串口獵人。



雙擊串口獵人安裝程序,點(diǎn)擊下一步。



選擇安裝位置。點(diǎn)擊下一步。



點(diǎn)擊下一步,開(kāi)始安裝。



等待一段時(shí)間后,安裝成功。點(diǎn)擊完成。



此軟件安裝好,并不會(huì)在桌面上形成快捷方式??梢栽诔绦蛄斜碇姓业竭@個(gè)軟件。



打開(kāi)后,可以看到串口獵人的界面。



串口助手調(diào)試

利用quartus將生成的配置文件下載到開(kāi)發(fā)板中。


將串口助手配置為,端口號(hào):com3(每個(gè)人會(huì)有不同,請(qǐng)去設(shè)備管理器中查找),波特率:9600,校驗(yàn)位:Odd(奇校驗(yàn))。



點(diǎn)擊啟動(dòng)串行端口。



把所有的信息全部清除一下。



清除后,再發(fā)碼區(qū),隨便兩個(gè)十六進(jìn)制的數(shù),點(diǎn)擊發(fā)送。



開(kāi)發(fā)板中配置的是回環(huán)測(cè)試的代碼,所以發(fā)送的數(shù)據(jù)會(huì)在收嗎區(qū)顯示出來(lái)。


開(kāi)發(fā)板上還有兩個(gè)LED用來(lái)指示發(fā)送接收數(shù)據(jù)。當(dāng)發(fā)送或者接收數(shù)據(jù)時(shí),對(duì)應(yīng)的LED會(huì)點(diǎn)亮。


將發(fā)碼區(qū)和收碼區(qū)清除一下,然后都改為字符串。然后發(fā)送任意一串字符,進(jìn)行測(cè)試。



我們可以設(shè)置其他的波特率或者校驗(yàn)方式,進(jìn)行其他測(cè)試。在此就不再敘述。


在應(yīng)用時(shí),只需要將uart_drive例化使用即可。






聲明本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來(lái)源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


更多熱點(diǎn)文章閱讀

  • 基于Cortex-M3內(nèi)核的32位微控制器,STM32項(xiàng)目實(shí)戰(zhàn)分享!

  • 基于32位RISC-V設(shè)計(jì)的互聯(lián)型微控制器,沁恒微CH32V307開(kāi)發(fā)樣例

  • RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實(shí)戰(zhàn)樣例

  • 尺寸僅有21mm*51mm,板邊采用郵票孔設(shè)計(jì),合宙 Air105 核心板開(kāi)發(fā)總結(jié)

  • 嵌入式Linux開(kāi)發(fā)秘籍!工程師大佬親歷分享項(xiàng)目樣例


原文標(biāo)題:【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):UART協(xié)議驅(qū)動(dòng)設(shè)計(jì)

文章出處:【微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):UART協(xié)議驅(qū)動(dòng)設(shè)計(jì)

文章出處:【微信號(hào):gh_9b9470648b3c,微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    UART串口通訊協(xié)議解析

    - 數(shù)據(jù)接受接口 GND - 保證兩設(shè)備共地,有統(tǒng)一的參考平面 通信協(xié)議 UART串口傳輸?shù)臄?shù)據(jù)被組織成數(shù)據(jù)包。每個(gè)數(shù)據(jù)包包含1個(gè)起始位,5至9個(gè)數(shù)據(jù)位,可選的奇偶校驗(yàn)位和1或1.5或2個(gè)停止位
    發(fā)表于 09-12 16:01

    UART協(xié)議的工作原理和應(yīng)用場(chǎng)景

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)協(xié)議是一種廣泛使用的串行通信協(xié)議,它允許計(jì)算機(jī)與外部設(shè)備之間通過(guò)串行接口進(jìn)行數(shù)據(jù)傳輸。以下是對(duì)
    的頭像 發(fā)表于 08-25 17:15 ?1906次閱讀

    簡(jiǎn)單認(rèn)識(shí)UART通信協(xié)議

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)通信協(xié)議是一種常見(jiàn)的串行通信協(xié)議,廣泛應(yīng)用于計(jì)算機(jī)、嵌入式系統(tǒng)、傳感器、無(wú)線通信
    的頭像 發(fā)表于 07-25 18:07 ?1134次閱讀

    簡(jiǎn)單認(rèn)識(shí)UART串行通信協(xié)議

    在電子通信領(lǐng)域,UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)是一種非常常見(jiàn)的串行通信協(xié)議。它被廣泛應(yīng)用于各種設(shè)備之間
    的頭像 發(fā)表于 05-27 16:09 ?1733次閱讀

    FPGA零基礎(chǔ)學(xué)習(xí)系列精選:半導(dǎo)體存儲(chǔ)器和可編程邏輯器件簡(jiǎn)介

    大俠好,歡迎來(lái)到FPGA技術(shù)江湖。本系列將帶來(lái)FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開(kāi)始,最詳細(xì)操作步驟,最直白的言語(yǔ)描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白
    發(fā)表于 03-28 17:41

    UART串口通信協(xié)議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一種通信接口協(xié)議,用于實(shí)現(xiàn)串口通信。它是一種簡(jiǎn)單的、可靠的、廣泛應(yīng)用的串口通信協(xié)議。它是由美國(guó)
    的頭像 發(fā)表于 03-19 17:26 ?1100次閱讀

    fpga學(xué)習(xí)需要具備哪些課程

    FPGA(Field Programmable Gate Array)學(xué)習(xí)需要具備一系列的課程知識(shí)和實(shí)踐技能
    的頭像 發(fā)表于 03-14 15:51 ?1034次閱讀

    從入門到放棄……為什么你會(huì)覺(jué)得FPGA難學(xué)?如何學(xué)習(xí)FPGA

    問(wèn):本人零基礎(chǔ),想學(xué)FPGA,求有經(jīng)驗(yàn)的人說(shuō)說(shuō),我應(yīng)該從哪入手,應(yīng)該看什么教程,應(yīng)該用什么學(xué)習(xí)板和開(kāi)發(fā)板,看什么書等,希望有經(jīng)驗(yàn)的好心人能夠給我一些引導(dǎo)。 如果想速成,那就上網(wǎng)看視頻吧,這樣主要
    的頭像 發(fā)表于 02-02 17:04 ?693次閱讀
    從入門到放棄……為什么你會(huì)覺(jué)得<b class='flag-5'>FPGA</b>難學(xué)?如何<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>FPGA</b>?

    最詳細(xì)的UART通訊協(xié)議分析在這里

    下載本篇文章的pdf版本:UART協(xié)議分析.pdf1.協(xié)議基礎(chǔ)1.1.協(xié)議簡(jiǎn)介UART是“UniversalAsynchronousRece
    的頭像 發(fā)表于 01-12 14:15 ?1.5w次閱讀
    最詳細(xì)的<b class='flag-5'>UART</b>通訊<b class='flag-5'>協(xié)議</b>分析在這里

    零基礎(chǔ)入門 Hyperlynx 仿真教程

    電子發(fā)燒友網(wǎng)站提供《零基礎(chǔ)入門 Hyperlynx 仿真教程.pdf》資料免費(fèi)下載
    發(fā)表于 12-22 10:49 ?28次下載

    linux的uart驅(qū)動(dòng)示例剖析

    底層串行硬件的驅(qū)動(dòng)程序負(fù)責(zé)向serial核心驅(qū)動(dòng)程序提供由struct uart_port定義的端口信息和一組由struct uart_ops定義的控制方法,底層
    的頭像 發(fā)表于 11-09 14:27 ?1391次閱讀
    linux的<b class='flag-5'>uart</b><b class='flag-5'>驅(qū)動(dòng)</b>示例剖析

    UART協(xié)議是干啥的

    UART協(xié)議是電子傳輸中一種常見(jiàn)的信號(hào)協(xié)議,通常只需要三根信號(hào)線就可以完成數(shù)據(jù)的收發(fā),分別是TX,RX,GND。 UART(universal asynchronous receive
    的頭像 發(fā)表于 11-06 10:08 ?1699次閱讀
    <b class='flag-5'>UART</b><b class='flag-5'>協(xié)議</b>是干啥的

    FPGA零基礎(chǔ)學(xué)習(xí)之Vivado-VGA驅(qū)動(dòng)設(shè)計(jì)

    大俠好,歡迎來(lái)到FPGA技術(shù)江湖。本系列將帶來(lái)FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開(kāi)始,最詳細(xì)操作步驟,最直白的言語(yǔ)描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白
    發(fā)表于 11-02 19:54

    什么通信協(xié)議UART自定義通信協(xié)議代碼實(shí)現(xiàn)方法

    我們學(xué)習(xí)單片機(jī),首先接觸的可能是點(diǎn)燈(GPIO),再次就是串口(UART)。
    的頭像 發(fā)表于 11-02 09:03 ?1190次閱讀
    什么通信<b class='flag-5'>協(xié)議</b>?<b class='flag-5'>UART</b>自定義通信<b class='flag-5'>協(xié)議</b>代碼實(shí)現(xiàn)方法

    FPGA零基礎(chǔ)學(xué)習(xí)之Vivado-超聲波驅(qū)動(dòng)設(shè)計(jì)

    大俠好,歡迎來(lái)到FPGA技術(shù)江湖。本系列將帶來(lái)FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開(kāi)始,最詳細(xì)操作步驟,最直白的言語(yǔ)描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白
    發(fā)表于 11-01 17:48