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

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

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

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

FPGA和單片機(jī)的串行通信接口設(shè)計

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-08-03 15:45 ? 次閱讀

作者:杜曉斌 陳興文

1 前言

現(xiàn)場可編程邏輯器件(FPGA)在高速采集系統(tǒng)中的應(yīng)用越來越廣,由于FPGA對采集到的數(shù)據(jù)的處理能力比較差,故需要將其采集到的數(shù)據(jù)送到其他CPU系統(tǒng)來實(shí)現(xiàn)數(shù)據(jù)的處理功能,這就使FPGA系統(tǒng)與其他CPU系統(tǒng)之間的數(shù)據(jù)通信提到日程上,得到人們的急切關(guān)注。本文介紹利用VHDL語言實(shí)現(xiàn) FPGA與單片機(jī)的串口異步通信電路。

整個設(shè)計采用模塊化的設(shè)計思想,可分為四個模塊:FPGA數(shù)據(jù)發(fā)送模塊,F(xiàn)PGA波特率發(fā)生控制模塊,F(xiàn)PGA總體接口模塊以及單片機(jī)數(shù)據(jù)接收模塊。本文著重對FPGA數(shù)據(jù)發(fā)送模塊實(shí)現(xiàn)進(jìn)行說明。

2 FPGA數(shù)據(jù)發(fā)送模塊的設(shè)計

根據(jù)RS232 異步串行通信來的幀格式,在FPGA發(fā)送模塊中采用的每一幀格式為:1位開始位+8位數(shù)據(jù)位+1位奇校驗(yàn)位+1位停止位,波特率為2400。本系統(tǒng)設(shè)計的是將一個16位的數(shù)據(jù)封裝成高位幀和低位幀兩個幀進(jìn)行發(fā)送,先發(fā)送低位幀,再發(fā)送高位幀,在傳輸數(shù)據(jù)時,加上文件頭和數(shù)據(jù)長度,文件頭用555555來表示,只有單片機(jī)收到555555時,才將下面?zhèn)鬏數(shù)臄?shù)據(jù)長度和數(shù)據(jù)位進(jìn)行接收,并進(jìn)行奇校驗(yàn)位的檢驗(yàn),正確就對收到的數(shù)據(jù)進(jìn)行存儲處理功能,數(shù)據(jù)長度可以根據(jù)需要任意改變。由設(shè)置的波特率可以算出分頻系數(shù),具體算法為分頻系數(shù)X=CLK/(BOUND*2)。可由此式算出所需的任意波特率。下面是實(shí)現(xiàn)上述功能的VHDL源程序。

Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity atel2_bin is
port( txclk: in std_logic; --2400Hz的波特率時鐘
reset: in std_logic; --復(fù)位信號
din: in std_logic_vector(15 downto 0); --發(fā)送的數(shù)據(jù)
start: in std_logic; --允許傳輸信號
sout: out std_logic --串行輸出端口
);
end atel2_bin;
architecture behav of atel2_bin is
signal thr,len: std_logic_vector(15 downto 0);
signal txcnt_r: std_logic_vector(2 downto 0);
signal sout1: std_logic;
signal cou: integer:=0;
signal oddb:std_logic;
type s is(start1,start2,shift1,shift2,odd1,odd2,stop1,stop2);
signal state:s:=start1;
begin
process(txclk)
begin
if rising_edge(txclk) then
if cou<3 then thr<=“0000000001010101”;?????? --發(fā)送的文件頭
elsif cou=3 then
thr<=“0000000000000010”;??????????????? --發(fā)送的文件長度
elsif (cou>3 and state=stop2) then thr<=din;--發(fā)送的數(shù)據(jù)
end if;
end if;
end process;
process(reset,txclk)
variable tsr,tsr1,oddb1,oddb2: std_logic_vector(7 downto 0);
begin
if reset=‘1’ then
txcnt_r<=(others=>‘0’);
sout1<=‘1’;
state<=start1;????????????????????
cou<=0;
elsif txclk’event and txclk=‘1’ then
case state is
when start1=>
if start=‘1’ then
if cou=3 then
len<=thr;
end if;
tsr:=thr(7 downto 0);
oddb1:=thr(7 downto 0);
sout1<=‘0’; --起始位?
txcnt_r<=(others=>‘0’);
state<=shift1;
else
state<=start1;
end if;
when shift1=>
oddb<=oddb1(7) xor oddb1(6) xor oddb1(5) xor oddb1(4) xor oddb1(3) xor oddb1(2) xor oddb1(1) xor oddb1(0);
sout1<=tsr(0); --數(shù)據(jù)位
tsr(6 downto 0):=tsr(7 downto 1);
tsr(7):=‘0’;
txcnt_r<=txcnt_r+1;
if (txcnt_r=7) then
state<=odd1;cou<=cou+1;
end if;
when odd1=> --奇校驗(yàn)位
if oddb=‘1’ then
sout1<=‘0’;state<=stop1;
else
sout1<=‘1’;state<=stop1;
end if;
when stop1=>
sout1<=‘1’;??? --停止位
if cou<4 then
state<=start1;
else
state<=start2;?????????????????????????????
end if;
when start2=>
tsr1:=thr(15 downto 8);
oddb2:=thr(15 downto 8);
sout1<=‘0’;??? --起始位??
txcnt_r<=(others=>‘0’);
state<=shift2;
when shift2=>
oddb<=oddb2(7) xor oddb2(6) xor oddb2(5) xor oddb2(4) xor oddb2(3) xor oddb2(2) xor oddb2(1) xor oddb2(0);
sout1<=tsr1(0);--數(shù)據(jù)位
tsr1(6 downto 0):=tsr1(7 downto 1);
tsr1(7):=‘0’;
txcnt_r<=txcnt_r+1;?
if (txcnt_r=7) then
state<=odd2;???????????????
end if;
when odd2=> --奇校驗(yàn)位
if oddb=‘1’ then
sout1<=‘0’;state<=stop2;
else
sout1<=‘1’;state<=stop2;
end if;
when stop2=>
sout1<=‘1’;??? --停止位????
if len=“0000000000000000” then
state<=stop2;?????????????????
else
state<=start1;???????????????
len<=len-1;
end if;
end case;
end if;
end process;
sout<=sout1;

end behav; 其中各信號的說明已在程序中標(biāo)明了。波形仿真圖如圖1所示。

poYBAGD60z6ALp3DAABDI-RyV0w296.jpg?

圖1 FPGA數(shù)據(jù)發(fā)送時序仿真圖

圖中Din寫入值為3355H,波特率為2400Hz,Start信號始終置邏輯1,即隨時都能發(fā)送數(shù)據(jù)。Reset信號邏輯1時復(fù)位,邏輯0時電路開始工作。THR是數(shù)據(jù)寄存器,文件頭、數(shù)據(jù)長度以及數(shù)據(jù)位都先寄存到THR中,Len是數(shù)據(jù)長度,TSR是低8位數(shù)據(jù)幀寄存器,TSR1是高8位數(shù)據(jù)幀寄存器。數(shù)據(jù)長度Len定為02H,發(fā)送時先發(fā)送低8位55H,后發(fā)送高8位33H,一共發(fā)送兩遍。發(fā)送的數(shù)據(jù)格式說明:當(dāng)發(fā)送55H時,其二進(jìn)制為01010101,則發(fā)送的數(shù)據(jù)的二進(jìn)制數(shù)為00101010111(1位開始位+8位數(shù)據(jù)位+1位奇校驗(yàn)位+1位停止位)。

單片機(jī)部分先對FPGA發(fā)送過來的文件頭進(jìn)行確認(rèn),正確就接收文件,否則放棄接收的數(shù)據(jù)。根據(jù)FPGA發(fā)送模塊的協(xié)議,對串口控制寄存器SCON和波特率控制寄存器PCON的設(shè)置即可實(shí)現(xiàn)。

3 總結(jié)

目前電子產(chǎn)品的開發(fā)中經(jīng)常要綜合運(yùn)用EDA技術(shù)、計算機(jī)控制技術(shù)、數(shù)字信號處理技術(shù),那么電路各部分經(jīng)常需要數(shù)據(jù)交換。本文也是基于此給出這方面應(yīng)用的實(shí)例,供開發(fā)者交流。

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

    關(guān)注

    1630

    文章

    21802

    瀏覽量

    606412
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6044

    文章

    44628

    瀏覽量

    639007
  • 波特率
    +關(guān)注

    關(guān)注

    2

    文章

    309

    瀏覽量

    34293
  • 可編程邏輯器件
    +關(guān)注

    關(guān)注

    5

    文章

    144

    瀏覽量

    30363
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA單片機(jī)串行通信接口設(shè)計

    數(shù)據(jù)發(fā)送模塊,FPGA波特率發(fā)生控制模塊,FPGA總體接口模塊以及單片機(jī)數(shù)據(jù)接收模塊。本文著重對FPGA數(shù)據(jù)發(fā)送模塊實(shí)現(xiàn)進(jìn)行說明。2
    發(fā)表于 12-10 10:16

    FPGA單片機(jī)串行通信接口的實(shí)現(xiàn)

    本文針對由FPGA構(gòu)成的高速數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)處理能力弱的問題,提出FPGA單片機(jī)實(shí)現(xiàn)數(shù)據(jù)串行通信的解決方案。在
    發(fā)表于 07-21 16:48 ?0次下載

    單片機(jī)入門教程第21課-串行接口

    單片機(jī)入門教程第21課-串行接口 概述  串行接口的一般概念  單片機(jī)與外界進(jìn)行信息交換稱之為
    發(fā)表于 01-07 15:47 ?1741次閱讀
    <b class='flag-5'>單片機(jī)</b>入門教程第21課-<b class='flag-5'>串行</b><b class='flag-5'>接口</b>

    FPGA單片機(jī)串行通信接口設(shè)計

    摘要:本文針對由FPGA構(gòu)成的高速數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)處理能力弱的問題,提出FPGA單片機(jī)實(shí)現(xiàn)數(shù)據(jù)串行通信的解決方案。在
    發(fā)表于 06-05 12:06 ?2680次閱讀
    <b class='flag-5'>FPGA</b>和<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>串行</b><b class='flag-5'>通信</b><b class='flag-5'>接口</b>設(shè)計

    AVR單片機(jī)串行AD的SPI接口設(shè)計

    為了解決信號采集系統(tǒng)的同步串行通訊問題,在理解AVR 單片機(jī)SPI接口的通訊原 理和方法的基礎(chǔ)上,分析了AVR 單片機(jī)SPI接口的工作過程
    發(fā)表于 02-18 16:07 ?211次下載
    AVR<b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>串行</b>AD的SPI<b class='flag-5'>接口</b>設(shè)計

    fpga單片機(jī)接口講解

    電子專業(yè)單片機(jī)相關(guān)知識學(xué)習(xí)教材資料——fpga單片機(jī)接口講解
    發(fā)表于 08-23 15:55 ?0次下載

    FPGA單片機(jī)實(shí)現(xiàn)數(shù)據(jù)串行通信的解決方案

    本文針對由FPGA構(gòu)成的高速數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)處理能力弱的問題,提出FPGA單片機(jī)實(shí)現(xiàn)數(shù)據(jù)串行通信的解決方案。
    發(fā)表于 02-11 14:30 ?1.2w次閱讀

    基于AVR單片機(jī)的SPI串行通信的應(yīng)用

    基于AVR單片機(jī)的SPI串行通信的應(yīng)用
    發(fā)表于 09-01 11:23 ?16次下載
    基于AVR<b class='flag-5'>單片機(jī)</b>的SPI<b class='flag-5'>串行</b><b class='flag-5'>通信</b>的應(yīng)用

    單片機(jī)串行通信發(fā)射機(jī)單片機(jī)串行通信發(fā)射機(jī)

    單片機(jī)串行通信發(fā)射機(jī)單片機(jī)串行通信發(fā)射
    發(fā)表于 09-04 11:17 ?16次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>串行</b><b class='flag-5'>通信</b>發(fā)射<b class='flag-5'>機(jī)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串行</b><b class='flag-5'>通信</b>發(fā)射<b class='flag-5'>機(jī)</b>

    實(shí)例解析FPGA單片機(jī)串行通信接口設(shè)計

    系統(tǒng)之間的數(shù)據(jù)通信提到日程上,得到人們的急切關(guān)注。本文介紹利用VHDL語言實(shí)現(xiàn) FPGA單片機(jī)的串口異步通信電路。 整個設(shè)計采用模塊化的設(shè)計思想,可分為四個模塊:
    發(fā)表于 11-01 16:27 ?5次下載
    實(shí)例解析<b class='flag-5'>FPGA</b>和<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>串行</b><b class='flag-5'>通信</b><b class='flag-5'>接口</b>設(shè)計

    單片機(jī)串行通信及SPI通信教程

    單片機(jī)串行通信及SPI通信
    發(fā)表于 12-20 12:18 ?11次下載

    單片機(jī)FPGA異步串行通信的實(shí)現(xiàn)方法

    介紹了單片機(jī)FPGA 異步串行通信的實(shí)現(xiàn)方法,給出了系統(tǒng)結(jié)構(gòu)原理框圖及其部分VHDL 程序,并定義了發(fā)送器和接收器的端口信號。
    發(fā)表于 09-29 16:20 ?8次下載
    <b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>FPGA</b>異步<b class='flag-5'>串行</b><b class='flag-5'>通信</b>的實(shí)現(xiàn)方法

    80C51單片機(jī)串行通信講解

    80C51單片機(jī)串行通信講解(通信網(wǎng)絡(luò)與信息技術(shù)2009)-為80C51單片機(jī)串行
    發(fā)表于 09-30 11:44 ?31次下載
    80C51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>串行</b><b class='flag-5'>通信</b>講解

    51單片機(jī)串行接口介紹

    51單片機(jī)串行接口介紹串行口結(jié)構(gòu)設(shè)置工作方式(串行口控制寄存器SCON)設(shè)置波特率 51單片機(jī)
    發(fā)表于 11-11 20:06 ?55次下載
    51<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>串行</b><b class='flag-5'>接口</b>介紹

    如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)串行通信

    51單片機(jī)與PC機(jī)串行通信是一種常見的通信方式,它允許單片機(jī)通過
    的頭像 發(fā)表于 10-21 11:35 ?1318次閱讀
    主站蜘蛛池模板: 久久性妇女精品免费 | 丁香婷婷激情五月 | 亚洲一区二区免费视频 | 视频在线一区 | 国产亚洲第一 | 亚洲欧美日韩另类精品一区二区三区 | 欧美一级高清黄图片 | 久久成人免费网站 | 日日做夜夜爽夜夜爽 | 天堂网中文在线 | 一区二区三区四区在线 | 亚洲一区二区视频 | 一区二区在线看 | 永久黄网站色视频免费观看 | 国产成人精品日本亚洲语言 | 午夜剧场一级片 | 亚洲视频在线免费看 | 男人j进女人j的视频一进一出 | 色女仆影院| 一级国产特黄aa大片 | 美女把尿口扒开让男人桶出水 | 国产卡1卡2卡三卡网站免费 | 精品在线视频一区 | 亚洲三级毛片 | 成人亚洲电影 | 亚洲黄色激情网 | 国产美女一级片 | 欧美性久久 | 天天射天天射天天干 | 午夜精品aaa国产福利 | 五月综合激情视频在线观看 | 激情五月开心网 | 色黄污在线看黄污免费看黄污 | 日本黄色大片网站 | 久久久久久久国产 | 亚洲天堂最新地址 | 成人精品一级毛片 | а中文在线天堂 | 日韩亚洲人成网站在线播放 | 在线天堂中文 | 久久青青成人亚洲精品 |