在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的串口通訊設計與仿真驗證

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2018-12-30 09:14 ? 次閱讀

1 串口通信基本特點

隨著多微機系統的應用和微機網絡的發展,通信功能越來越顯得重要。串行通信是在一根傳輸線上一位一位地傳送信息.這根線既作數據線又作聯絡線。串行通信作為一種主要的通信方式,由于所用的傳輸線少,并且可以借助現存的電話網進行信息傳送,因此特別適合于遠距離傳送。在串行傳輸中,通信雙方都按通信協議進行,所謂通信協議是指通信雙方的一種約定。約定對數據格式、同步方式、傳送速度、傳送步驟、糾錯方式以及控制字符定義等問題做出統一規定,通信雙方必須共同遵守。異步起止式的禎信息格式為:每禎信息由四部分組成:

a.1位起始位。

b.5~8位數據位。傳送順序是低位在前,高位在后.依次傳送。

c.一位校驗位,也可以沒有。

d.最后是1位或是2位停止位。

FPGA(Field Pmgrammable Gate Array)現場可編程門陣列在數字電路的設計中已經被廣泛使用。這種設計方式可以將以前需要多塊集成芯片的電路設計到一塊大模塊可編程邏輯器件中,大大減少了電路板的尺寸,增強了系統的可靠性和設計的靈活性。本文詳細介紹了已在實際項目中應用的基于FPGA的串口通訊設計。

本設計分為硬件電路設計和軟件設計兩部分,最后用仿真驗證了程序設計的正確性。

2 系統的硬件設計

本方案的異步串行通信的硬件接口電路圖如圖1所示,主要由四部分組成:RS-485數據發送模塊、FPGA串口模塊、MAX3223和DB9。各部分功能簡述如下:

RS-485數據發送模塊是將前續電路的數據發送到FPGA,供本電路處理,亦即本電路的輸入。RS485是符合RS-485和RS-4225串口標準的低功耗半雙工收發器件,有3.3V和5V兩種,在本設計中選用了3.3V的器件SP3485。SP3485的內部結構示意圖如圖2所示

在本設計中。485的7腳和8腳與前端信號相連接,用于接收輸入的數據。數據格式是這樣的:一幀數據有25位,報頭是16個高電平和1個低電平,接下來是8位有效的數據。傳輸速率為700k波特率。2腳是使能端,與FPGA的I/O口相連,由FPGA提供邏輯控制信號。1腳和4腳也與FPGA相連,由FPGA對輸入數據進行處理。

基于FPGA的串口通訊設計與仿真驗證

圖1異步串行通信硬件接口功能框圖

基于FPGA的串口通訊設計與仿真驗證

圖2 SP3485的內部結構示意圖

FPGA串口模塊是將由RS-485發送過來的數據進行處理,提取出8位有效數據,并按異步串口通訊的格式要求輸出到MAX3223的12腳。FPGA選用Xilinx公司的Spartan II系列xc2s50。此部分為該設計的主體。如上所述,輸入數據的傳輸速率為700k波特率。為了使FPGA能夠正確地對輸入數據進行采樣,提高分辨率能力和抗干擾能力,采樣時鐘必須選用比波特率更高的時鐘,理論上至少是波特率時鐘的2倍。在本設計中選用4倍于波特率的時鐘,利用這種4倍于波特率的接收時鐘對串行數據流進行檢測和定位采樣,接收器能在一個位周期內采樣4次。如果沒有這種倍頻關系,定位采樣頻率和傳送波特率相同,則在一個位周期中,只能采樣一次,分辨率會差。比如,為了檢測起始位下降沿的出現,在起始位的前夕采樣一次之后,下次采樣要到起始位結束前夕才進行。而假若在這個周期期間,因某種原因恰恰使接收時鐘往后偏移了一點點,就會錯過起始位。造成整個后面位的檢測和識別錯誤。針對本設計,FPGA的軟件共分了三個模塊:

1.時鐘分頻模塊。模塊的功能是用來產生所需要的數據采集時鐘和數據傳輸時鐘。系統主頻是40M的。數據采集時鐘是2.8M的,發送時鐘是11.2k。

2.提取數據模塊。由RS485發送過來的數據共有25位,其中只有8位是有效數據。為了發送這8位有效數據。必須先將其提取出來。提取的辦法是這樣的:通過連續檢測到的16個高電平和一個低電平。判斷8位有效數據的到來。然后按照串行數據傳輸的格式,在加上起始位和停止位后,將其存儲于輸出緩沖寄存器中。在這里,我們的串行數據輸出格式是這樣規定的,一位起始位,八位數據位,一位停止位,無校驗位。

3.串行數據輸出模塊。這一模塊相對比較簡單,波特率選為11.2k,模塊的功能是在移位輸出脈沖的作用下,將輸出緩沖寄存器中的數據移位輸出。

MAX3223是實現電平轉換的芯片。由于RS-232c是用正負電壓來表示邏輯狀態。與TTL以高低電平表示邏輯狀態的規定不同。因此,為了能夠同計算機接口或終端的TTL器件連接,必須在RS-232與TTL電路之間進行電平和邏輯關系的變換。實現這種變換的方法可用分立元件,也可用集成電路芯片。MAXIM公司的MAX3223是為滿足RS-232c的標準而設計的具有功耗低、波特率高、價格低等優點,外接電容僅為0.1uF或1uF,為雙組RS232收發器。由MAX3223的12腳輸入的數據,經過電平轉換后由8腳輸出,再經過DB9的TxD端輸出,由PC機接收并做后續處理。

3 系統軟件設計

FPGA模塊是本設計的主體,使用Verilog硬件描述語言進行編寫,本段代碼共有兩個子模塊,分別實現提取八位數據和串行數據發送的功能。

下面是verilog源代碼

module SIMO(din,clk,rst,dout_ser);

input din; //串行輸入數據

input clk; //時鐘信號

input vat; 復位信號

reg[7:0] indata_buf; //輸入緩沖寄存器,存提取的有效位

reg[9:0] dout_buf; //輸出緩沖寄存器,加了起停位

output reg dout_ser; //串行數據輸出

reg nclk; //提取八位有效數據的采樣時鐘.是4倍于波特率的時鐘

reg txclk; //發送數據時鐘。發數據取11.2k的波特率

integer bitpos=7; //當前位

parameter s0=0,s1=1,s2=2,s3=3;

reg[2:0]state;

reg[4:0]counter; //用來計算報頭報尾中1的個數

reg tag,tag1;

reg[2:0]cnt3;

reg txdone=1'b1;//一個字節數據傳輸完畢標志

*********提取有效數據位并按串行通訊格式裝載數據********

always@ (posedge nclk or posedge rst) begin

if(rst)

begin

state<=0;

counter<=0;

tag1=0;

tag=0;

indata_buf<=8'bz;

dout_buf<=10'bz;

bitpos=7;

cnt3<=0;

end

else case(state)

s0:begin

tag=0;//表示數據沒有裝好

if(din)

begin

counter<=counter+1;

state<=s0;

if(counter==15)//如果檢測到16個1則轉入s1狀態檢測接下來的是不是0

begin

state<=s1;

counter<=0;

end

end

else begin

counter<=0;

state<=s0;

end

end

s1:if(!din)//如果是0的話,轉入s2狀態,提取八位有效數據

state<=s2;

else //否則轉到s0狀態重新檢測

state<=s0;

s2:if(cnt3==3)//是否采集四次數據

begin

cnt2<=0;

indata_buf[bitpos]<=din; //先進來的是高位數據

bitpos=bitpos-1;

if(bitpos==-1)

begin

bitpos=7;state<=s3;end

end

else cnt3<=cnt3+1;

s3:begin

tag1=tag;

tag=1'b1; //標志輸入寄存器滿。表明已把有用數據裝入寄存器

if(tag&&~tag1)&&txdone) //檢測到tag的上升沿以及txdone為高才把輸入緩沖數據放到輸出緩沖去

dout_buf<={1'b1,indata_buf[7:0],1'b0};//停止位,高位,低位,起始位

state<=s0;

end

endcase

end

//***********發送數據模塊

reg[3:0] state_tx=0;

always@(posedge txclk or posedge rst)

begin

if(rst)

begin

dout_ser<=1'bz;

state_tx<=0;

txdone=1;

end

else

case(state_tx)

0:begin

dout_ser<=dout_buf[0];state_tx<=state_tx+1;txdone=1'b0;end

1:begin

dout_ser<=dout_buf[1];state_tx<=state_tx+1;end

2:begin

dout_ser<=dout_buf[2];state_tx<=state_tx+1;end

3:begin

dout_ser<=dout_buf[3];state_tx<=state_tx+1;end

4:begin

dout_ser<=dout_buf[4];state_tx<=state_tx+1;end

5:begin

dout_ser<=dout_buf[5];state_tx<=state_tx+1;end

6:begin

dout_ser<=dout_buf[6];state_tx<=state_tx+1;end

7:begin

dout_ser<=dout_buf[7];state_tx<=state_tx+1;end

8:begin

dout_ser<=dout_buf[8];state_tx<=state_tx+1;end

9:begin

dout_ser<=dout_buf[9];state_tx<=state_tx+1;end

endcase

end

endmodule

注:兩個頻率信號nclk、txclk由相應的分頻程序產生。由于篇幅所限未在文中列出。

FPGA模塊接收從RS-485發送過來的串行數據。25位為一個字符。數據的傳輸速率是700kbps,用四倍于波特率的速率進行采樣,這樣可以大大降低系統的噪聲。數據的串行輸出波特率選為11200bps。

由輸入輸出波形圖可以看出:本段程序實現了對輸入數據的有效數據位的提取,并按照一定的波特率進行串行輸出。程序中,波特率可以根據需要通過分頻程序進行改動。硬件電路搭建簡單,程序代碼書寫容易。數據傳輸穩定可靠,可以滿足串口通信的要求。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1642

    文章

    21920

    瀏覽量

    612116
  • 串口通信
    +關注

    關注

    34

    文章

    1633

    瀏覽量

    56375
  • 可編程邏輯器件

    關注

    5

    文章

    145

    瀏覽量

    30522
收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 #FPGA Zedboard教程-43 串口通訊相關知識點和原理分析-1

    fpga通訊串口通訊原理
    水管工
    發布于 :2022年11月04日 03:33:33

    #硬聲創作季 #FPGA Zedboard教程-43 串口通訊相關知識點和原理分析-2

    fpga通訊串口通訊原理
    水管工
    發布于 :2022年11月04日 03:33:58

    #硬聲創作季 #FPGA Zedboard教程-43 串口通訊相關知識點和原理分析-3

    fpga通訊串口通訊原理
    水管工
    發布于 :2022年11月04日 03:34:17

    FPGA設計的仿真驗證概述

    仿真驗證概述本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 仿真測試是
    發表于 04-10 06:35

    FPGA串口通訊失敗

    `背景:一、使用A-7系列FPGA編寫串口發送模塊,用micro USB轉RS232串口線,分別連接FPGA的UART端口和儀器(斯坦福SG396)的
    發表于 03-07 11:08

    FPGA論壇精華帖(驗證仿真版)

    FPGA論壇精華帖摘選,主要是講述驗證仿真方面的技術。
    發表于 11-30 17:41 ?0次下載

    單片機與PC機虛擬串口通訊工程文件+protues仿真源文件

    虛擬串口工具 單片機與PC機虛擬串口通訊工程文件 protues仿真源文件 虛擬串口工具
    發表于 06-08 15:30 ?13次下載

    基于8051的Proteus仿真-單片機與PC機串口通訊仿真

    基于8051的Proteus仿真-單片機與PC機串口通訊仿真
    發表于 09-01 23:33 ?41次下載

    proteus仿真51單片機串口通訊

    proteus仿真51單片機串口通訊,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-17 14:50 ?71次下載

    國微思爾芯發布FPGA驗證仿真云系統,滿足新一代FPGA原型驗證需求

    國微思爾芯(“S2C”), 全球領先的前端電子設計自動化 (EDA) 供應商, 發布全球首款FPGA驗證仿真云系統 Prodigy Cloud System。這是為下一代 SoC 設計驗證
    發表于 07-13 09:18 ?854次閱讀

    51單片機串口通訊實驗2+Proteus仿真

    51單片機串口通訊實驗2+Proteus仿真
    發表于 11-23 16:36 ?11次下載
    51單片機<b class='flag-5'>串口</b><b class='flag-5'>通訊</b>實驗2+Proteus<b class='flag-5'>仿真</b>

    51單片機串口通訊 +Proteus仿真實驗

    51單片機串口通訊 +Proteus仿真實驗
    發表于 11-23 16:36 ?58次下載
    51單片機<b class='flag-5'>串口</b><b class='flag-5'>通訊</b> +Proteus<b class='flag-5'>仿真</b>實驗

    基于AT89C51單片機與PC機串口通訊仿真及代碼

    基于AT89C51單片機單片機與PC機串口通訊仿真仿真及代碼
    發表于 05-05 10:30 ?5次下載

    測試與驗證復雜的FPGA設計(2)——如何在虹科的IP核中執行面向全局的仿真

    仿真驗證是開發任何高質量的基于FPGA的RTL編碼過程的基礎。在上一篇文章中,我們介紹了面向實體/塊的仿真,即通過在每個輸入信號上生成激勵并驗證
    的頭像 發表于 06-15 17:31 ?878次閱讀
    測試與<b class='flag-5'>驗證</b>復雜的<b class='flag-5'>FPGA</b>設計(2)——如何在虹科的IP核中執行面向全局的<b class='flag-5'>仿真</b>

    fpga原型驗證平臺與硬件仿真器的區別

    FPGA原型驗證平臺與硬件仿真器在芯片設計和驗證過程中各自發揮著獨特的作用,它們之間存在明顯的區別。
    的頭像 發表于 03-15 15:07 ?1570次閱讀
    主站蜘蛛池模板: 色香视频在线 | 天堂网资源 | 国产三级在线免费观看 | 久久夜色精品国产尤物 | 色倩网站 | 日韩欧美亚洲综合久久影院d3 | 综合激情在线 | 91视频毛片| 国产色婷婷精品综合在线手机播放 | 我把美女日出白浆 | 爱情社保片鲁丝片一区 | 国产69精品久久久久9999 | 天天添天天干 | 美女视频黄视大全视频免费网址 | 日本黄视频在线播放 | 视频在线免费 | 一区二区三区网站 | 免费大片黄国产在线观看 | 国产一级爱c片免费播放 | 日日夜夜天天干 | 狠狠狠狠狠操 | 8050午夜一级二级全黄 | 婷婷第四色 | 日日摸人人拍人人澡 | 一级毛片成人免费看a | 三级成人网| 亚洲色图88| 永久视频免费 | 狠狠色噜噜狠狠狠狠97影音先锋 | 999久久久国产精品 999久久久免费精品国产牛牛 | 国产18到20岁美女毛片 | 国产成人精品曰本亚洲78 | 亚洲人成网站999久久久综合 | 五月综合色啪 | 欧美成人生活片 | 久久久免费视频播放 | 亚洲男人的天堂在线观看 | 美女黄页免费 | 激情深爱 | 午夜插| 一 级 黄 中国色 片 |