《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應用 > FPGA和單片機的串行通信接口設(shè)計
FPGA和單片機的串行通信接口設(shè)計
來源:與非網(wǎng)
摘要: 現(xiàn)場可編程邏輯器件(FPGA)在高速采集系統(tǒng)中的應用越來越廣,由于FPGA對采集到的數(shù)據(jù)的處理能力比較差,故需要將其采集到的數(shù)據(jù)送到其他CPU系統(tǒng)來實現(xiàn)數(shù)據(jù)的處理功能,這就使FPGA系統(tǒng)與其他CPU系統(tǒng)之間的數(shù)據(jù)通信提到日程上,得到人們的急切關(guān)注。本文介紹利用VHDL語言實現(xiàn)FPGA與單片機的串口異步通信電路。
關(guān)鍵詞: FPGA 單片機 通信 接口
Abstract:
Key words :

1 前言
現(xiàn)場可編程邏輯器件(FPGA)在高速采集系統(tǒng)中的應用越來越廣,由于FPGA對采集到的數(shù)據(jù)的處理能力比較差,故需要將其采集到的數(shù)據(jù)送到其他CPU系統(tǒng)來實現(xiàn)數(shù)據(jù)的處理功能,這就使FPGA系統(tǒng)與其他CPU系統(tǒng)之間的數(shù)據(jù)通信提到日程上,得到人們的急切關(guān)注。本文介紹利用VHDL語言實現(xiàn)FPGA與單片機的串口異步通信電路。
整個設(shè)計采用模塊化的設(shè)計思想,可分為四個模塊:FPGA數(shù)據(jù)發(fā)送模塊,F(xiàn)PGA波特率發(fā)生控制模塊,F(xiàn)PGA總體接口模塊以及單片機數(shù)據(jù)接收模塊。本文著重對FPGA數(shù)據(jù)發(fā)送模塊實現(xiàn)進行說明。
2 FPGA數(shù)據(jù)發(fā)送模塊的設(shè)計
根據(jù)RS232異步串行通信來的幀格式,在FPGA發(fā)送模塊中采用的每一幀格式為:1位開始位+8位數(shù)據(jù)位+1位奇校驗位+1位停止位,波特率為2400。本系統(tǒng)設(shè)計的是將一個16位的數(shù)據(jù)封裝成高位幀和低位幀兩個幀進行發(fā)送,先發(fā)送低位幀,再發(fā)送高位幀,在傳輸數(shù)據(jù)時,加上文件頭和數(shù)據(jù)長度,文件頭用555555來表示,只有單片機收到555555時,才將下面?zhèn)鬏數(shù)臄?shù)據(jù)長度和數(shù)據(jù)位進行接收,并進行奇校驗位的檢驗,正確就對收到的數(shù)據(jù)進行存儲處理功能,數(shù)據(jù)長度可以根據(jù)需要任意改變。由設(shè)置的波特率可以算出分頻系數(shù),具體算法為分頻系數(shù)X=CLK/(BOUND*2)。可由此式算出所需的任意波特率。下面是實現(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; --復位信號
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=> --奇校驗位
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=> --奇校驗位
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; 其中各信號的說明已在程序中標明了。波形仿真圖如圖1所示。

圖1 FPGA數(shù)據(jù)發(fā)送時序仿真圖
圖中Din寫入值為3355H,波特率為2400Hz,Start信號始終置邏輯1,即隨時都能發(fā)送數(shù)據(jù)。Reset信號邏輯1時復位,邏輯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ù)格式說明:當發(fā)送55H時,其二進制為01010101,則發(fā)送的數(shù)據(jù)的二進制數(shù)為00101010111(1位開始位+8位數(shù)據(jù)位+1位奇校驗位+1位停止位)。
單片機部分先對FPGA發(fā)送過來的文件頭進行確認,正確就接收文件,否則放棄接收的數(shù)據(jù)。根據(jù)FPGA發(fā)送模塊的協(xié)議,對串口控制寄存器SCON和波特率控制寄存器PCON的設(shè)置即可實現(xiàn)。
3 總結(jié)
目前電子產(chǎn)品的開發(fā)中經(jīng)常要綜合運用EDA技術(shù)、計算機控制技術(shù)、數(shù)字信號處理技術(shù),那么電路各部分經(jīng)常需要數(shù)據(jù)交換。本文也是基于此給出這方面應用的實例,供開發(fā)者交流。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美夫妇交换俱乐部在线观看| 国产精品日韩精品| 亚洲欧美在线播放| 一区二区三区欧美| 一区二区日韩精品| 99国产欧美久久久精品| 亚洲乱码一区二区| 亚洲精品一区二区三| 亚洲国产精品一区| 亚洲大片免费看| 亚洲成色www8888| 亚洲国产精品va| 亚洲激情不卡| 亚洲精品免费一二三区| 亚洲精品一区在线观看| 亚洲片在线观看| 99视频国产精品免费观看| 99精品国产福利在线观看免费| 亚洲欧洲一区| 99re国产精品| 亚洲无线观看| 亚洲欧美在线磁力| 久久se精品一区二区| 久久久精品日韩| 免费精品视频| 欧美欧美天天天天操| 欧美私人网站| 国产精品亚洲精品| 国内一区二区在线视频观看| 一区在线视频| 亚洲片国产一区一级在线观看| 亚洲日本欧美| 亚洲私人影院| 久久成人羞羞网站| 亚洲国产日韩综合一区| av不卡在线| 午夜在线视频一区二区区别 | 亚洲图片在线| 性欧美1819性猛交| 久久久久久久一区| 欧美大片在线观看一区| 欧美午夜电影完整版| 国产精品一区视频网站| 国自产拍偷拍福利精品免费一| 在线成人av网站| 亚洲精品麻豆| 欧美亚洲视频一区二区| 亚洲国产精品成人一区二区 | 亚洲日本欧美| 亚洲小视频在线观看| 久久国产一区二区| 夜夜嗨av色一区二区不卡| 香蕉尹人综合在线观看| 久久资源在线| 欧美日韩亚洲精品内裤| 国产日韩欧美| 亚洲看片网站| 亚洲欧美日韩国产中文在线| 亚洲国产精品久久久久婷婷老年| 亚洲一二三四区| 久久伊人免费视频| 国产精品av免费在线观看| 黄色日韩在线| 一区二区三区国产在线| 久久精品99久久香蕉国产色戒| 中文日韩在线视频| 久久亚洲免费| 国产精品久久久久久久久| 黑人一区二区三区四区五区| 99视频在线精品国自产拍免费观看| 欧美在线观看天堂一区二区三区| 99国产精品国产精品久久| 久久精品亚洲精品| 欧美日韩视频第一区| 国产综合婷婷| 亚洲一区激情| 日韩午夜精品| 久久午夜电影网| 国产伦精品一区二区| 亚洲免费电影在线| 亚洲成色777777女色窝| 小黄鸭精品aⅴ导航网站入口| 欧美成人一区二区在线| 国产亚洲精品久久久久动| 一本色道久久综合亚洲精品高清| 亚洲高清视频中文字幕| 欧美一区国产二区| 欧美日韩一区二区视频在线观看 | 亚洲承认在线| 欧美一区二区三区免费视频| 亚洲视频综合| 欧美国内亚洲| 伊人久久大香线| 亚洲欧美日韩在线综合| 亚洲愉拍自拍另类高清精品| 欧美交受高潮1| 亚洲成色www8888| 亚洲国产99精品国自产| 久久福利影视| 国产精品免费在线| 99热精品在线| 99亚洲精品| 欧美激情国产高清| 亚洲电影免费观看高清完整版在线观看 | 在线观看欧美精品| 欧美一区二区三区视频免费播放| 亚洲欧美www| 国产精品激情偷乱一区二区∴| 亚洲免费观看在线观看| 日韩视频免费| 欧美精品在线观看| 亚洲国产日韩欧美在线动漫| 亚洲黄色在线| 欧美国产精品一区| 最新国产成人在线观看| 日韩视频一区二区三区在线播放免费观看 | 欧美午夜精品电影| 亚洲免费大片| 中文亚洲视频在线| 欧美三级第一页| 一本色道久久综合狠狠躁篇的优点 | 在线播放视频一区| 亚洲第一主播视频| 麻豆久久婷婷| 1024成人网色www| 亚洲国产精品va在线看黑人| 狼狼综合久久久久综合网| 永久免费视频成人| 亚洲欧洲精品一区| 欧美18av| 日韩午夜在线观看视频| 亚洲一区二区日本| 国产精品视频精品视频| 小黄鸭精品密入口导航| 久久久精品国产免大香伊| 一区二区三区亚洲| 亚洲精品色婷婷福利天堂| 欧美精品日本| 一本色道综合亚洲| 欧美在线日韩| 精品99一区二区三区| 亚洲日本中文字幕区| 欧美精品久久久久久久久老牛影院| 亚洲日韩中文字幕在线播放| 亚洲图片激情小说| 国产偷久久久精品专区| 亚洲激情电影中文字幕| 欧美日韩国内自拍| 亚洲在线成人精品| 久久综合九色欧美综合狠狠| 91久久国产精品91久久性色| 亚洲一区二区影院| 国产亚洲精品bv在线观看| 亚洲欧洲日本国产| 欧美午夜寂寞影院| 香蕉久久夜色| 欧美黑人在线播放| 亚洲一级二级在线| 另类欧美日韩国产在线| 亚洲日本激情| 久久成人18免费观看| 在线观看欧美视频| 亚洲自拍偷拍一区| 激情五月综合色婷婷一区二区| 99re6这里只有精品| 国产精品一区一区三区| 久久精品一区蜜桃臀影院| 欧美精品日韩www.p站| 亚洲一区二区三区在线播放| 美女福利精品视频| 亚洲私拍自拍| 免费国产一区二区| 亚洲一区二区在线免费观看视频 | 国产久一道中文一区| 亚洲激情在线观看| 国产精品毛片va一区二区三区| 亚洲成色www久久网站| 欧美色欧美亚洲另类二区| 久久国产视频网站| 欧美三级乱人伦电影| 亚洲成人在线视频网站| 国产精品久久久久久久久免费| 久久精品欧美| 国产精品va在线| 最新中文字幕一区二区三区| 国产精品亚洲激情| 一区二区免费在线观看| 狠狠色狠色综合曰曰| 亚洲一区在线播放| 在线观看日韩www视频免费 | 亚洲网址在线| 1024精品一区二区三区| 欧美在线播放一区| aa国产精品| 欧美韩日视频| 亚洲高清精品中出| 国产欧美日韩激情| 亚洲视频专区在线| 亚洲激情国产| 久久久久久久久伊人|