• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA的串口通信控制器設計

      2016-02-23 03:40:46亮,冀
      關鍵詞:波特率串口沈陽

      賈 亮,冀 源

      (1.沈陽航空航天大學 遼寧省通用航空重點實驗室, 遼寧 沈陽 110136;2.沈陽航空航天大學 電子信息工程學院, 遼寧 沈陽 110136)

      基于FPGA的串口通信控制器設計

      賈 亮1,2,冀 源2

      (1.沈陽航空航天大學 遼寧省通用航空重點實驗室, 遼寧 沈陽 110136;2.沈陽航空航天大學 電子信息工程學院, 遼寧 沈陽 110136)

      UART串行接口是各類芯片中最常用的異步通信接口,UART作為RS232協(xié)議的控制接口得到廣泛應用。介紹了一種基于FPGA的固定波特率串口通信控制器的多模塊設計方法,采用Altera公司的EP4CE10F17C8NFPGA芯片,用VHDL程序語言編程,經(jīng)過ModelSim軟件仿真,最后將程序燒寫到芯片,經(jīng)過串口助手測試驗證。實驗結果表明,數(shù)據(jù)傳輸快速、準確,可用于低速率異步通信。

      UART串口通信;FPGA;VHDL;RS232

      0 引言

      在計算機系統(tǒng)和網(wǎng)絡高速發(fā)展的時代,通信技術發(fā)揮著越來越重要的作用,UART[1-2]串口通信由于其傳輸線少、成本低、配置靈活、適合廣泛傳輸而備受大眾青睞,得到廣泛應用。本控制器采用FPGA作為核心模塊,通過自帶RS232接口及USB轉串口與計算機進行通信,經(jīng)試驗調試,可以實現(xiàn)串口通信。

      現(xiàn)場可編程門陣列(FieldProgrammableGateArray,F(xiàn)PGA)具有集成度高、速度快、可靠性高、開發(fā)周期短、修改方便、可移植性強[3]等優(yōu)點,利用FPGA進行系統(tǒng)功能設計是當今電子設計的一種趨勢。

      1 控制器工作原理

      UART時序如 圖1所示。

      圖1 UART時序圖

      在UART接收時,采集一幀數(shù)據(jù)的中間8位有效位,忽略開始位與停止位;在UART發(fā)送時,將發(fā)送的8位數(shù)據(jù)轉為串行數(shù)據(jù)添加開始位、停止位。

      UART協(xié)議中一幀數(shù)據(jù)共10bit,空閑時均處于高電平,當檢測到低電平時開始采集8bit有效數(shù)據(jù)位并將停止位置為高電平。

      波特率:波特率表示每秒傳輸?shù)亩M制位數(shù),在本實驗中波特率設為9 600b/s。

      2 主要硬件芯片介紹

      電平轉換芯片MAX232:要實現(xiàn)串口通信,需要使用電平轉換芯片MAX232,配置電路如圖2所示。

      MAX232芯片主要有以下特點[4]:

      (1)符合所有RS_232技術標準;

      (2)只需要單一+5V電源供電;

      (3)片載電荷泵具有升壓、電源極性翻轉能力,能夠產(chǎn)生+10V和-10V電壓;

      (4)功耗低,典型供電電流5mA;

      (5)內部集成2個RS_232驅動器;

      圖2 配置電路

      (6)高集成度,片外最低只需4個電容即可工作。

      3 功能設計

      UART控制器設計按照功能劃分可分為3個模塊:波特率發(fā)生模塊,數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊。

      3.1 波特率發(fā)生模塊

      FPGA系統(tǒng)提供50MHz的時鐘頻率,當波特率為9 600b/s時,發(fā)送一位數(shù)據(jù)需5 208個時鐘周期。在第2 604個時鐘周期時發(fā)出數(shù)據(jù)采樣脈沖信號sel,同時采樣數(shù)據(jù)位數(shù)信號num加1,采集完10個數(shù)據(jù)之后,num清零。

      代碼如下:

      entitybps_rxis

      port(

      clk:instd_logic; ——系統(tǒng)時鐘50MHz

      en:instd_logic; ——使能端

      rst_n:instd_logic;——系統(tǒng)復位端

      sel_data:outstd_logic;——數(shù)據(jù)采集脈沖信號

      num:outstd_logic_vector(3downto0) ——采集數(shù)據(jù)位數(shù)計數(shù)

      );

      endbps_rx;

      architecturebehaveofbps_rxis

      signalflag:std_logic; ——開始標志信號

      signalnumber:std_logic_vector(3downto0);

      signalsel:std_logic;

      signalcnt:std_logic_vector(12downto0); ——時鐘計數(shù)信號

      begin

      process(clk,rst_n)

      begin

      else

      if(number="1010")then

      endif;

      endif;

      endif;

      endprocess;

      process(clk,rst_n)

      begin

      cnt<= "0000000000000";

      ifcnt< "1010001011000"then

      cnt<=cnt+ 1 ;

      elsecnt<= "0000000000000";

      endif;

      elsecnt<= "0000000000000";

      endif;

      endif;

      endprocess;

      process(clk,rst_n)

      begin

      if(cnt= "101000101100")then

      else

      endif;

      endif;

      endprocess;

      process(clk,rst_n)

      Begin

      number<= "0000";

      number<=number+1;——采集一位數(shù)計數(shù)信號加1

      elseif(number= "1010")then

      number<= "0000";

      endif;

      endif;

      endif;

      endprocess;

      num<=number;

      sel_data<=sel;

      3.2 數(shù)據(jù)接收模塊

      根據(jù)UART協(xié)議接收時序,采集一幀數(shù)據(jù)的中間8位[5]。數(shù)據(jù)接收端初始電平為高,當檢測到低電平開始位時,使能波特率發(fā)生器,開始數(shù)據(jù)采集,進行串并轉換,轉換完成之后,按照時序進行輸出。

      代碼如下:

      entityuart_rxis

      port(

      clk,rst_n:instd_logic;

      rx_data:instd_logic;——數(shù)據(jù)接收端

      sel_data:instd_logic;——采樣脈沖

      num:instd_logic_vector(3downto0);——數(shù)據(jù)位數(shù)計數(shù)

      en:outstd_logic;——對波特率發(fā)生器使能端

      tx_en:outstd_logic;——數(shù)據(jù)發(fā)送使能

      rx_d:outstd_logic_vector(7downto0)——數(shù)據(jù)發(fā)送端

      );

      enduart_rx;

      architecturebehaveofuart_rxis

      signalin_1,in_2:std_logic; ——數(shù)據(jù)傳輸開始檢測信號

      Signald_in:std_logic_vector(7downto0); ——并行數(shù)據(jù)寄存器

      begin

      process(clk,rst_n)

      begin

      in_1 <=rx_data;——初始狀態(tài)接收端為高電平

      in_2 <=in_1;

      endif;

      endprocess;

      en<=in_2and(notin_1);——當檢測到信號由高變低時啟動使能信號

      process(rst_n,clk)

      begin

      rx_d<="00000000";

      d_in<= "00000000";

      casenumis

      when"0000"=>null;——開始接收數(shù)據(jù)

      when"0001"=>d_in(0)<=rx_data;

      when"0010"=>d_in(1)<=rx_data;

      when"0011"=>d_in(2)<=rx_data;

      when"0100"=>d_in(3)<=rx_data;

      when"0101"=>d_in(4)<=rx_data;

      when"0110"=>d_in(5)<=rx_data;

      when"0111"=>d_in(6)<=rx_data;

      when"1000"=>d_in(7)<=rx_data;

      when"1001"=>rx_d<=d_in;

      whenothers=>null;

      endcase;

      endif;

      endif;

      endprocess;

      process(clk,rst_n)

      begin

      else

      endif;

      endif;

      endprocess;

      3.3 數(shù)據(jù)發(fā)送模塊

      發(fā)送模塊的作用是將8bit并行數(shù)據(jù)轉換為串行數(shù)據(jù)[4],并按照每幀10bit數(shù)據(jù)進行輸出,其工作過程與接收方式相反,此外有起始結束位的添加。

      3.4 系統(tǒng)功能圖

      系統(tǒng)功能圖如圖3所示。

      圖3 系統(tǒng)功能圖

      4 實驗結果

      系統(tǒng)仿真圖如圖4所示。

      圖4 系統(tǒng)仿真圖

      串口測試結果:將經(jīng)過編譯仿真無誤后的VHDl程序下載到FPGA中[6],用串口進行收發(fā)數(shù)據(jù),選用COM7口,9 600b/s波特率,當發(fā)送數(shù)據(jù)145789658742 時,接收端收到與發(fā)送端一致的數(shù)據(jù),如圖5所示。

      圖5 串口測試結果

      5 結論

      用FPGA實現(xiàn)串口通信功能,可以將串口功能與其他系統(tǒng)功能整合進一個FPGA,從而減小系統(tǒng)面積,降低功耗,具有更高的穩(wěn)定性,提高數(shù)據(jù)采集系統(tǒng)的速度,增強系統(tǒng)的抗干擾能力及數(shù)據(jù)傳輸?shù)目煽啃訹7]。這種設計方法已經(jīng)成為當今電子設計領域的一種趨勢,在實際應用中,將文中設計的UART電路作為一個模塊嵌入到一個FPGA實現(xiàn)的數(shù)據(jù)采集與處理系統(tǒng)中,實現(xiàn)串口通信功能,證明該電路設計可靠,工作穩(wěn)定。

      [1] 楊英強.一種基于FPGA的UART電路實現(xiàn)[J].現(xiàn)代電子技術,2005,28(12):82-84.

      [2] 于斌,謝龍漢.ModelSim電子系統(tǒng)分析及仿真這[M].北京:電子工業(yè)出版社,2014.

      [3] 陳忠平,高金定,高見芳.基于QuartusⅡ的FPGA/CPLD設計與實現(xiàn)[M].北京:電子工業(yè)出社,2010.

      [4] 韓德紅,張顯才,李向東.基于FPGA的串口控制器設計與實現(xiàn)[J].空軍雷達學院學報,2008,22(2):113-116.

      [5] 雷伏容.VHDL電路設計[M].北京:清華大學出版社,2006.

      [6] 任愛峰,初秀琴.基于FPGA的嵌入式系統(tǒng)設計[M].西安:西安電子科技大學出版社,2005.

      [7] 吳繼華,王誠.AlteraFPGA/CPLD設計[M].北京:人民郵電出版社,2005.

      Design of serial communication controller based on FPGA

      JiaLiang1,2,JiYuan2

      (1.LiaoningKeyLaboratoryofGeneralAviation,ShenyangAerospaceUniversity(SAU),Shenyang110136,China;2.ElectronicandInformationEngineering,ShenyangAerospaceUniversity,Shenyang110136,China)

      UARTserialinterfaceisthemostcommonlyusedinterfaceinvarioustypesofasynchronouscommunicationinterface,RS232asthecontrolinterfaceUARTprotocolhasbeenwidelyused.Inthispaper,weintroduceamulti-moduledesignmethodbasedonFPGAwithafixedbaudrateserialcommunicationcontrollerusingAltera’sEP4CE10F17C8NFPGAchip,andusingtheVHDLasprogramminglanguage.ItwassimulatedbyModelsimsoftware.Finally,theprogramwasburntandwrittenonchip.Aftertestingandverifingbyserialportassistant,theexperimentalresultsshowthatdatatransmissionisquicklyandaccurately.

      UARTserialcommunication;FPGA;VHDL;RS232

      TN

      ADOI: 10.19358/j.issn.1674- 7720.2016.22.009

      賈亮,冀源. 基于FPGA的串口通信控制器設計[J].微型機與應用,2016,35(22):33-35,39.

      2016-05-19)

      賈亮(1971—),男,在讀博士研究生,副教授,碩士生導師,主要研究方向:信息獲取與處理。

      冀源(1990—),男,在讀碩士研究生,主要研究方向:信息獲取與處理。

      猜你喜歡
      波特率串口沈陽
      淺談AB PLC串口跟RFID傳感器的通訊應用
      CAN 總線波特率自適應程序設計
      智能制造(2020年5期)2020-07-03 06:24:00
      沈陽分店
      藝術品(2019年9期)2019-10-26 06:42:14
      沈陽分店
      藝術品(2019年4期)2019-05-30 04:45:38
      Study on the harmony between human and nature in Walden
      長江叢刊(2018年8期)2018-11-14 23:56:26
      基于FPGA的異步串行通信波特率容錯設計
      電子測試(2018年7期)2018-05-16 06:27:18
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      LiteraryTechniquesEmployedtoDevelop Celie'sCharacterinThe Color Purple
      科技視界(2014年22期)2014-04-17 03:16:18
      基于并行控制的FPGA多串口拓展實現(xiàn)
      青浦区| 河北省| 芜湖市| 荃湾区| 舟曲县| 安徽省| 门头沟区| 嵊泗县| 康乐县| 循化| 丽水市| 河池市| 太仆寺旗| 阜新| 福州市| 炎陵县| 河源市| 泸水县| 克拉玛依市| 沭阳县| 台湾省| 临沧市| 屯昌县| 保亭| 肇源县| 山丹县| 酒泉市| 台东市| 和田县| 陆丰市| 湟中县| 海口市| 剑阁县| 格尔木市| 平凉市| 金湖县| 铅山县| 中阳县| 宁河县| 兴安县| 迁安市|