版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、FPGA串行通用異步收發(fā)器設(shè)計(jì)實(shí)驗(yàn)?zāi)康模?、掌握QuartusII6.0等EDA工具軟件的基本使用; 2、熟悉VHDL硬件描述語言編程及其調(diào)試方法;3、學(xué)習(xí)用FPGA實(shí)現(xiàn)接口電路設(shè)計(jì)。實(shí)驗(yàn)內(nèi)容: 本實(shí)驗(yàn)?zāi)繕?biāo)是利用FPGA邏輯資源,編程設(shè)計(jì)實(shí)現(xiàn)一個(gè)串行通用異步收發(fā)器。實(shí)驗(yàn)環(huán)境為EDA實(shí)驗(yàn)箱。電路設(shè)計(jì)采用VHDL硬件描述語言編程實(shí)現(xiàn),開發(fā)軟件為QuartusII6.0。1、UART簡介 UART(Universal Asynchronous Receiver Transmitter通用異步收發(fā)器)是一種應(yīng)用廣泛的短距離串行傳輸接口。常常用于短距離、低速、低成本的通訊中。8250、8251、NS16
2、450等芯片都是常見的UART器件。基本的UART通信只需要兩條信號線(RXD、TXD)就可以完成數(shù)據(jù)的相互通信,接收與發(fā)送是全雙工形式。TXD是UART發(fā)送端,為輸出;RXD是UART接收端,為輸入。UART的基本特點(diǎn)是:(1)在信號線上共有兩種狀態(tài),可分別用邏輯1(高電平)和邏輯0(低電平)來區(qū)分。在發(fā)送器空閑時(shí),數(shù)據(jù)線應(yīng)該保持在邏輯高電平狀態(tài)。(2)起始位(Start Bit):發(fā)送器是通過發(fā)送起始位而開始一個(gè)字符傳送,起始位使數(shù)據(jù)線處于邏輯0狀態(tài),提示接受器數(shù)據(jù)傳輸即將開始。(3)數(shù)據(jù)位(Data Bits):起始位之后就是傳送數(shù)據(jù)位。數(shù)據(jù)位一般為8位一個(gè)字節(jié)的數(shù)據(jù)(也有6位、7位的情
3、況),低位(LSB)在前,高位(MSB)在后。(4)校驗(yàn)位(parity Bit):可以認(rèn)為是一個(gè)特殊的數(shù)據(jù)位。校驗(yàn)位一般用來判斷接收的數(shù)據(jù)位有無錯(cuò)誤,一般是奇偶校驗(yàn)。在使用中,該位常常取消。(5)停止位:停止位在最后,用以標(biāo)志一個(gè)字符傳送的結(jié)束,它對應(yīng)于邏輯1狀態(tài)。(6)位時(shí)間:即每個(gè)位的時(shí)間寬度。起始位、數(shù)據(jù)位、校驗(yàn)位的位寬度是一致的,停止位有0.5位、1位、1.5位格式,一般為1位。(7)幀:從起始位開始到停止位結(jié)束的時(shí)間間隔稱之為一幀。(8)波特率:UART的傳送速率,用于說明數(shù)據(jù)傳送的快慢。在串行通信中,數(shù)據(jù)是按位進(jìn)行傳送的,因此傳送速率用每秒鐘傳送數(shù)據(jù)位的數(shù)目來表示,稱之為波特率。
4、如波特率9600=9600bps(位/秒)。UART的數(shù)據(jù)幀格式為:STARTD0D1D2D3D4D5D6D7PSTOP起始位數(shù) 據(jù) 位校驗(yàn)位停止位FPGA UART系統(tǒng)組成 :如下圖所示,F(xiàn)PGA UART由三個(gè)子模塊組成:波特率發(fā)生器;接收模塊;發(fā)送模塊;2、模塊設(shè)計(jì):系統(tǒng)由四部部分組成:頂層模塊;波特率發(fā)生器;UART接收器; UART發(fā)送器1)頂層模塊 異步收發(fā)器的頂層模塊由波特率發(fā)生器、UART接收器和UART發(fā)送器構(gòu)成。UART發(fā)送器的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本UART幀格式轉(zhuǎn)為TXD信號串行輸出。UART接收器接收RXD串行信號,并將其轉(zhuǎn)化為并行數(shù)據(jù)。波特率發(fā)生器就是專門
5、產(chǎn)生一個(gè)遠(yuǎn)遠(yuǎn)高于波特率的本地時(shí)鐘信號對輸入RXD不斷采樣,使接收器與發(fā)送器保持同步。2)波特率發(fā)生器 波特率發(fā)生器實(shí)際上就是一個(gè)分頻器??梢愿鶕?jù)給定的系統(tǒng)時(shí)鐘頻率(晶振時(shí)鐘)和要求的波特率算出波特率分頻因子,算出的波特率分頻因子作為分頻器的分頻數(shù)。波特率分頻因子可以根據(jù)不同的應(yīng)用需要更改。3)UART接收器 由于串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,由邏輯1轉(zhuǎn)為邏輯0可以被視為一個(gè)數(shù)據(jù)幀的起始位。然而,為了避免毛刺影響,能夠得到正確的起始位信號,必須要求接收到的起始位在波特率時(shí)鐘采樣的過程中至少有一半都是屬于邏輯0才可認(rèn)定接收到的是起始位。由于內(nèi)部采樣時(shí)鐘bclk周期(由波特率發(fā)生器產(chǎn)生)是發(fā)送或接收
6、波特率時(shí)鐘頻率的16倍,所以起始位需要至少8個(gè)連續(xù)bclk周期的邏輯0被接收到,才認(rèn)為起始位接收到,接著數(shù)據(jù)位和奇偶校驗(yàn)位將每隔16個(gè)bclk周期被采樣一次(即每一個(gè)波特率時(shí)鐘被采樣一次)。如果起始位的確是16個(gè)bclk周期長,那么接下來的數(shù)據(jù)將在每個(gè)位的中點(diǎn)處被采樣。UART接收器的接收狀態(tài)機(jī) 接收狀態(tài)機(jī)一共有5個(gè)狀態(tài): R_START(等待起始位);R_CENTER(求中點(diǎn));R_WAIT(等待采樣);R_SAMPLE(采樣);R_STOP(停止位接收)。 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)檫壿?
7、,即起始位,這意味著新的一幀UART數(shù)據(jù)幀的開始,一旦起始位被確定,狀態(tài)機(jī)將轉(zhuǎn)入R_CENTER狀態(tài)。狀態(tài)圖中的RXD_SYNC信號是RXD的同步信號,因?yàn)樵谶M(jìn)行邏輯1或邏輯0判斷時(shí),不希望檢測的信號是不穩(wěn)定的,所以不直接檢測RXD信號,而是檢測經(jīng)過同步后的RXD_SYNC信號。R_CENTER狀態(tài)對于異步串行信號,為了使每一次都檢測到正確的位信號,而且在較后的數(shù)據(jù)位檢測時(shí)累計(jì)誤差較小,顯然在每位的中點(diǎn)檢測是最為理想的。在本狀態(tài),就是由起始位求出每位的中點(diǎn),通過對bclk的個(gè)數(shù)進(jìn)行計(jì)數(shù)(RCNT16),但計(jì)數(shù)值不是想當(dāng)然的“1000”,要考慮經(jīng)過一個(gè)狀態(tài),也即經(jīng)過了一個(gè)bclk周期,所希望得到
8、的是在采樣時(shí)1/2位。另外,可能在R_START狀態(tài)檢測到的起始位不是真正的起始位,可能是一個(gè)偶然出現(xiàn)的干擾尖脈沖(負(fù)脈沖)。這種干擾脈沖的周期是很短的,所以可以認(rèn)為保持邏輯0超過1/4個(gè)位時(shí)間的信號一定是起始位。R_WAIT狀態(tài)當(dāng)狀態(tài)機(jī)處于這一狀態(tài),等待計(jì)滿15個(gè)bclk,在第16個(gè)bclk是進(jìn)入R_SAMPLE狀態(tài)進(jìn)行數(shù)據(jù)位的采樣檢測,同時(shí)也判斷是否采集的數(shù)據(jù)位長度已達(dá)到數(shù)據(jù)幀的長度(FRAMELEN),如果到來,就說明停止位來臨了。FRAMELEN在設(shè)計(jì)時(shí)是可更改的(使用了Generic),在本設(shè)計(jì)中默認(rèn)為8,即對應(yīng)的UART工作在8位數(shù)據(jù)位、無校驗(yàn)位格式。R_SAMPLE狀態(tài)即數(shù)據(jù)位采
9、樣檢測,完成后無條件狀態(tài)機(jī)轉(zhuǎn)入R_WAIT狀態(tài),等待下次數(shù)據(jù)位的到來。 R_STOP狀態(tài)無論停止位是1還是1.5位,或是2位,狀態(tài)機(jī)在R_STOP不具體檢測RXD,只是輸出幀接收完畢信號(REC_DONE=1),停止位后狀態(tài)機(jī)轉(zhuǎn)回到R_START狀態(tài),等待下一個(gè)幀的起始位。4)UART發(fā)送器 發(fā)送器只要每隔16個(gè)bclk周期輸出1個(gè)數(shù)據(jù)即可,次序遵循第1位是起始位,最后一位是停止位。在本設(shè)計(jì)中沒有校驗(yàn)位,但只要改變Generic參數(shù)FrameLen,也可以加入校驗(yàn)位,停止位是固定的1位格式。 發(fā)送狀態(tài)機(jī)的狀態(tài)圖 發(fā)送狀態(tài)機(jī)一共有5個(gè)狀態(tài):X_IDLE(空閑);X_START(起始位);X_WA
10、IT(移位等待);X_SHIFT(移位);X_STOP(停止位)。X_IDLE狀態(tài):當(dāng)UART被復(fù)位信號復(fù)位后,狀態(tài)機(jī)將立刻進(jìn)入這一狀態(tài)。在這個(gè)狀態(tài)下,UART的發(fā)送器一直在等待一個(gè)數(shù)據(jù)幀發(fā)送命令XMIT_CMD。XMIT_CMD_P信號是對XMIT_CMD的處理,XMIT_CMD_P是一個(gè)短脈沖信號。這時(shí)由于XMIT_CMD是一個(gè)外加信號,在FPGA之外,不可能對XMIT_CMD的脈沖寬度進(jìn)行限制,如果XMIT_CMD有效在UART發(fā)完一個(gè)數(shù)據(jù)幀后仍然有效,那么就會(huì)錯(cuò)誤地被認(rèn)為,一個(gè)新的數(shù)據(jù)發(fā)送命令又到來了,UART發(fā)送器就會(huì)再次啟動(dòng)UART幀的發(fā)送,顯然該幀的發(fā)送是錯(cuò)誤的。在此對XMIT_
11、CMD進(jìn)行了脈沖寬度的限定,XMIT_CMD_P就是一個(gè)處理后的信號。當(dāng)XMIT_CMD_P=1,狀態(tài)機(jī)轉(zhuǎn)入X_START,準(zhǔn)備發(fā)送起始位。X_START狀態(tài):在這個(gè)狀態(tài)下,UART的發(fā)送器一個(gè)位時(shí)間寬度的邏輯0信號至TXD,即起始位。緊接著狀態(tài)機(jī)轉(zhuǎn)入X_WAIT狀態(tài)。XCNT16是bclk的計(jì)數(shù)器X_WAIT狀態(tài)同UART接收狀態(tài)機(jī)中的R_WAIT狀態(tài)類似。 X_SHIFT狀態(tài)當(dāng)狀態(tài)機(jī)處于這一狀態(tài)時(shí),實(shí)現(xiàn)待發(fā)數(shù)據(jù)的并串轉(zhuǎn)換。轉(zhuǎn)換完成立即回到X_WAIT狀態(tài)。X_STOP停止位發(fā)送狀態(tài),當(dāng)數(shù)據(jù)幀發(fā)送完畢,狀態(tài)機(jī)轉(zhuǎn)入該狀態(tài),并發(fā)送16個(gè)bclk周期的邏輯1信號,即1位停止位。狀態(tài)機(jī)送完停止位后回
12、到X_IDLE狀態(tài),并等待另一個(gè)數(shù)據(jù)幀的發(fā)送命令。實(shí)驗(yàn)步驟:1、 創(chuàng)建工程文件按照Quartus軟件新建工程向?qū)Ы⒐こ?,工程名設(shè)為:uart_test(可自行命名)。2、 子模塊電路設(shè)計(jì)(包括各個(gè)模塊的功能仿真)1) 波特率發(fā)生器程序編寫:在“文件”菜單下選擇“New”,在彈出的窗口點(diǎn)擊“VHDL File”點(diǎn)擊“OK”打開vhdl編輯窗口。編輯輸入波特率發(fā)生器程序,編輯完畢后保存,文件名保存為“baud”(注:文件名必須與程序中實(shí)體名一致)選中“Add file to current project”選項(xiàng),添加當(dāng)前文件到項(xiàng)目。-文件名:baud.vhd.-功能:本實(shí)驗(yàn)想要實(shí)現(xiàn)的波特率為:9
13、600,EDA實(shí)驗(yàn)箱上晶振頻率為: 4MHZ,-波特率發(fā)生器的分頻數(shù)計(jì)算如下式:-/(16*9600)=26library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity baud is generic(framlenr:integer:=26); Port (clk,resetb:in std_logic; bclk :out std_logic);end baud;architecture Behavioral of baud is be
14、gin process(clk,resetb) variable cnt:integer; begin if resetb=1 then cnt:=0; bclk=framlenr then cnt:=0; bclk=1;-設(shè)置分頻系數(shù) else cnt:=cnt+1; bclk=0; end if; end if; end process;end Behavioral;文件編譯:保存文件后,選擇“Project”菜單,點(diǎn)擊“Set as Top-Level Entity”項(xiàng),把當(dāng)前文件設(shè)置為頂層實(shí)體。(注:Quartus環(huán)境下所有操作(綜合、編譯、仿真、下載等)都只對頂層實(shí)體進(jìn)行,所以編譯任
15、何程序前,必須先設(shè)置該選項(xiàng),把當(dāng)前要編譯的文件設(shè)置為頂層實(shí)體后,才能對該文件進(jìn)行編譯等操作)打開“Processing”菜單,點(diǎn)擊“Start Compilation”執(zhí)行完全編譯狀態(tài)窗口顯示編譯過程進(jìn)度信息編譯結(jié)束,系統(tǒng)會(huì)彈出編譯結(jié)束窗口,報(bào)告錯(cuò)誤與警告數(shù),點(diǎn)擊“確定”。編譯報(bào)告給出所有編譯結(jié)果信息,包括硬件信息、資源占用率等。錯(cuò)誤修改: 如果程序中有錯(cuò)誤,需要根據(jù)“Messages”消息欄給出的錯(cuò)誤提示修改程序,保存后須再次編譯,直至所有錯(cuò)誤均改正后,方可執(zhí)行下一步操作。警告信息可以忽略。波形仿真:1 建立波形圖文件關(guān)閉編譯報(bào)告窗口,在“文件”菜單下選擇“New”,選中“other fil
16、es”標(biāo)簽頁,在彈出的窗口點(diǎn)擊“Vector Waveform File”點(diǎn)擊“OK” 打開波形編輯窗口。波形圖編輯窗口2 定義仿真觀測的輸入輸出節(jié)點(diǎn)在波形編輯窗口左側(cè)欄內(nèi)單擊鼠標(biāo)右鍵,出現(xiàn)浮動(dòng)菜單,選擇“Insert Note or Bus”出現(xiàn)“Insert Note or Bus”對話框,點(diǎn)擊“Node Finder”按鍵,出現(xiàn)“Node Finder”對話框,如下圖所示。在圖中“Filter:”選項(xiàng)下選擇管腳類型為“Pins:all”,然后單擊List按鈕,可在左下側(cè)區(qū)域看到設(shè)計(jì)項(xiàng)目中的輸入輸出信號,單擊按鈕“= ”,將這些信號選擇到“Selected Nodes”區(qū),表示對這些信號進(jìn)
17、行觀測,單擊OK此時(shí)的波形編輯窗口如下圖所示。保存波形文件,文件名為uart_test.vwf(注:擴(kuò)展名默認(rèn)不填,文件名與項(xiàng)目名同名)3 為輸入信號賦值波形編輯器窗口左側(cè)為信號賦值工具條,根據(jù)實(shí)際要求點(diǎn)選工具按鈕對輸入信號賦值。1)為時(shí)鐘信號clk賦值:單擊clk,使其呈藍(lán)色即選中了clk,單擊為時(shí)鐘信號賦值工具按鈕,彈出Clock對話框,在Period框中輸入合適的時(shí)鐘周期數(shù),其它值按默認(rèn)即可,點(diǎn)擊OK。2)為復(fù)位信號resetb賦值:選中resetb,單擊賦值0工具條按鈕,為期賦值為邏輯0。3)設(shè)置仿真時(shí)間選擇Edit菜單下的End Time選項(xiàng),打開End Time對話框,在time框
18、內(nèi)入輸100單位為us。再次保存波形文件,窗口如下4 時(shí)序仿真選擇Processing菜單下的Begin Simulation選項(xiàng),即開始波形仿真。狀態(tài)窗口會(huì)顯示出仿真進(jìn)程,仿真結(jié)束后可以看到仿真結(jié)果波形,如下圖所示。觀察波形可用工具條上的放大縮小按鈕放大縮小波形圖,下圖即為已經(jīng)縮小了很多倍后的波形圖。結(jié)果分析:圖上可以觀察到輸出端bckl等間隔的有脈沖信號輸出,通過標(biāo)尺可以計(jì)算出它的脈沖輸出頻率及其與clk輸入信號的關(guān)系。該程序?qū)崿F(xiàn)的是波特率發(fā)生器,輸出頻率為時(shí)鐘輸入頻率的1/26。生成符號文件:通過波形仿真可以確定程序功能是否正確后,就可以把該程序生成符號文件,以便在后面的程序中調(diào)用。具體
19、操作是:打開File文件菜單,選擇Creat/Updata菜單項(xiàng),右側(cè)彈出子菜單再選擇Creat Symbol files for Current file把當(dāng)前文件創(chuàng)建成符號文件。狀態(tài)窗口有進(jìn)度信息顯示。生成的符號文件可以通過打開原理圖窗口調(diào)入,進(jìn)行驗(yàn)證。下圖為生成的波特率模塊。按照生成波特率模塊的步驟完成以下其它模塊的程序編寫,并進(jìn)行仿真波形、功能驗(yàn)證,仿真通過后生成各自的符號文件。這里只給出仿真得到的波形圖。 2) UART發(fā)送器UART發(fā)送器程序:-文件名:transfer.vhd-功能:UART發(fā)送器-說明:系統(tǒng)由五個(gè)狀態(tài)(x_idle,x_start,x_wait,x_shift,
20、x_stop)和一個(gè)進(jìn)程構(gòu)成。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity transfer is generic(framlent:integer:=8); -類屬說明 Port (bclkt,resett,xmit_cmd_p:in std_logic; -定義輸入輸出信號 txdbuf :in std_logic_vector(7 downto 0); txd ,txd_done :out std_logic);end
21、 transfer;architecture Behavioral of transfer istype states is (x_idle,x_start,x_wait,x_shift,x_stop); -定義5個(gè)子狀態(tài)signal state:states:=x_idle;signal tcnt:integer:=0; beginprocess(bclkt,resett,xmit_cmd_p,txdbuf) -主控時(shí)序進(jìn)程variable xcnt16:std_logic_vector(4 downto 0):=00000; -定義中間變量variable xbitcnt:integer:
22、=0;variable txds:std_logic; begin if resett=1 then state=x_idle; -復(fù)位,txd輸出保持1 txd_done -狀態(tài)1,等待數(shù)據(jù)幀發(fā)送命令 if xmit_cmd_p=1 then state=x_start;txd_done=0; else state -狀態(tài)2,發(fā)送信號至起始位 if xcnt16=01111 then state=x_shift; xcnt16:=00000; else xcnt16:=xcnt16+1; txds:=0; state -狀態(tài)3,等待狀態(tài) if xcnt16=01110 then if xbi
23、tcnt=framlent then state=x_stop; xbitcnt:=0; xcnt16:=00000; else state=x_shift; end if; xcnt16:=00000; else xcnt16:=xcnt16+1; state -狀態(tài)4,將待發(fā)數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換 txds:=txdbuf(xbitcnt); xbitcnt:=xbitcnt+1; state -狀態(tài)5,停止位發(fā)送狀態(tài) if xcnt16=01111 then if xmit_cmd_p=0 then state=x_idle;-高電平保持時(shí)間應(yīng)低于一個(gè)幀發(fā)送的時(shí)間xcnt16:=00000;
24、else xcnt16:=xcnt16; state=x_stop; end if; txd_done=1; else xcnt16:=xcnt16+1; txds:=1; statestate=x_idle; end case;end if; txd=txds;end process;end Behavioral;生成的模塊如下圖所示:仿真波形:說明:1)resett:為復(fù)位信號,高電平復(fù)位,初始時(shí)刻需要手動(dòng)設(shè)置一段時(shí)間的高電平2)Bclkt為波特率發(fā)生信號,用時(shí)鐘信號定義,周期設(shè)為10ns。3)為了得到完整的仿真結(jié)果,仿真時(shí)間要設(shè)的長一些(100us)4)xmit_cmd_p:為發(fā)送控制信
25、號,開始時(shí)刻設(shè)置一段高電平5)txdbuf:為要發(fā)送的八位數(shù)據(jù),點(diǎn)擊“+”后,可對每一個(gè)位信號分別賦值,本波形設(shè)置為txdbuf7、5、3、1位置“1”,6、4、2、0位置“0” 6)txd:為發(fā)送器發(fā)出的串行信號7)txd_done:為發(fā)送結(jié)束信號,高電平有效3) UART接收器UART接收器程序:-文件名:reciever.vhd.-功能:UART接受器。-系統(tǒng)由五個(gè)狀態(tài)(r_start,r_center,r_wait,r_sample,r_stop)和兩個(gè)進(jìn)程構(gòu)成library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARI
26、TH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity reciever is generic(framlenr:integer:=8); -傳送的數(shù)據(jù)位為8位 Port ( bclkr,resetr,rxdr:in std_logic; -定義輸入輸出信號 r_ready :out std_logic; rbuf :out std_logic_vector(7 downto 0) );end reciever;architecture Behavioral of reciever is type states is (r_start,r_center,r_
27、wait,r_sample,r_stop);-定義各子狀態(tài) signal state:states:=r_start; signal rxd_sync:std_logic; - rxd_sync內(nèi)部信號,接受rxd輸入begin pro1:process(rxdr) begin if rxdr=0 then rxd_sync=0; else rxd_sync=1; end if; end process; pro2:process(bclkr,resetr,rxd_sync) -主控時(shí)序、組合進(jìn)程 variable count:std_logic_vector(3 downto 0); -定義
28、中間變量 variable rcnt:integer:=0; - rcnt為接收的數(shù)據(jù)位數(shù)計(jì)數(shù) variable rbufs:std_logic_vector(7 downto 0); begin if resetr=1 then state -狀態(tài)1,等待起始位 if rxd_sync=0 then state=r_center; r_ready=0; rcnt:=0; else state=r_start; r_ready -狀態(tài)2,求出每位的中點(diǎn) if rxd_sync=0 then -每個(gè)數(shù)據(jù)位被分為16等分,中點(diǎn)為8 if count=0100 then state=r_wait;
29、count:=0000; else count:=count+1; state=r_center; end if; else state -狀態(tài)3,等待狀態(tài) if count=1110 then if rcnt=framlenr then state=r_stop; - rcnt=framlenr表示數(shù)據(jù)接收夠8位 else state=r_sample; end If; count:=0000; else count:=count+1; staterbufs(rcnt):=rxd_sync; -狀態(tài)4,數(shù)據(jù)位采樣檢測 rcnt:=rcnt+1; stater_ready=1; rbuf=rb
30、ufs; -狀態(tài)5,輸出幀接收完畢信號 statestate=r_start; end case; end if; end process;end Behavioral;生成的模塊:仿真波形:說明:1)resett:為復(fù)位信號,高電平復(fù)位,初始時(shí)刻需要手動(dòng)設(shè)置一段時(shí)間的高電平2)Bclkt為波特率發(fā)生信號,用時(shí)鐘信號定義,周期設(shè)為10ns。3)為了得到完整的仿真結(jié)果,仿真時(shí)間要設(shè)的長一些(100us)4)rxdr:為預(yù)接收的串行信號,這里用周期信號模擬,周期設(shè)為50ns5)rbuf:為接收到的八位數(shù)據(jù) 6)rxd_ready:為接收器接收滿8位數(shù)據(jù)后發(fā)出的結(jié)束信號,高電平有效4) 其它功能模塊
31、 為了更直觀的反應(yīng)串口通信的運(yùn)行結(jié)果,本實(shí)驗(yàn)還另外設(shè)計(jì)了兩個(gè)模塊,使得程序在做硬件功能驗(yàn)證時(shí)更加直觀。A、 分頻器模塊實(shí)驗(yàn)箱提供的晶振頻率為:4Mhz,實(shí)驗(yàn)中需要較低的頻率信號驅(qū)動(dòng)計(jì)數(shù)器計(jì)數(shù)和提供給發(fā)送器觸發(fā)信號(xmit_cmd_p),本實(shí)驗(yàn)分頻器設(shè)置分頻數(shù)為,得到4hz脈沖輸出。分頻器程序:-文件名:clock_div.vhd.-功能:實(shí)驗(yàn)開發(fā)板晶振頻率為:4MHZ,經(jīng)過分頻后得到4HZ脈沖頻率-分頻數(shù)計(jì)算:/4 = library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clock_div is generic(framlenr:integer:=); Port (clk,resetb:in std_logic; bclk: inout std_logic);end clock_div;architecture Behavioral of clock_div is begin process(clk,resetb) variable cnt:integer; begin if resetb=1 then cnt:=0; bclk=framlenr then cnt:=0; bclk=framlenr/2 then
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴陽職業(yè)技術(shù)學(xué)院《房地產(chǎn)項(xiàng)目投資與融資》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年天津建筑安全員-C證考試(專職安全員)題庫附答案
- 2025河南省安全員-C證考試(專職安全員)題庫附答案
- 貴陽康養(yǎng)職業(yè)大學(xué)《社會(huì)危機(jī)管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《普通化學(xué)及實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025山西建筑安全員考試題庫
- 廣州醫(yī)科大學(xué)《體育產(chǎn)業(yè)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《汽車拖拉機(jī)構(gòu)造學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025云南省安全員-C證考試題庫
- 2025江西省安全員A證考試題庫
- 2024-2025學(xué)年烏魯木齊市數(shù)學(xué)三上期末檢測試題含解析
- 2025年初級經(jīng)濟(jì)師之初級經(jīng)濟(jì)師基礎(chǔ)知識考試題庫及完整答案【全優(yōu)】
- 2024年度服裝代言合同:明星代言服裝品牌拍攝廣告協(xié)議
- 五年高考真題(2020-2024)分類匯編 政治 專題19 世界多極化 含解析
- GB 30254-2024高壓三相籠型異步電動(dòng)機(jī)能效限定值及能效等級
- 非物質(zhì)文化遺產(chǎn)拓印 課件
- 2022年杭州市建設(shè)行業(yè)職業(yè)技能競賽裝配式建筑施工員賽項(xiàng)技術(shù)文件
- 2022年部編版四年級道德與法治上冊全冊教案
- 管束干燥機(jī)使用說明書
- 三軸試驗(yàn)報(bào)告(共12頁)
- 監(jiān)控系統(tǒng)自檢報(bào)告
評論
0/150
提交評論