曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>接口技術(shù)>實(shí)例解析FPGA和單片機(jī)的串行通信接口設(shè)計(jì)

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

2017-11-01 | rar | 0.6 MB | 次下載 | 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ī)的串口異步通信電路。
  整個(gè)設(shè)計(jì)采用模塊化的設(shè)計(jì)思想,可分為四個(gè)模塊: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ì)
  根據(jù)RS232 異步串行通信來的幀格式,在FPGA發(fā)送模塊中采用的每一幀格式為:1位開始位+8位數(shù)據(jù)位+1位奇校驗(yàn)位+1位停止位,波特率為2400。本系統(tǒng)設(shè)計(jì)的是將一個(gè)16位的數(shù)據(jù)封裝成高位幀和低位幀兩個(gè)幀進(jìn)行發(fā)送,先發(fā)送低位幀,再發(fā)送高位幀,在傳輸數(shù)據(jù)時(shí),加上文件頭和數(shù)據(jù)長度,文件頭用555555來表示,只有單片機(jī)收到555555時(shí),才將下面?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)??捎纱耸剿愠鏊璧娜我獠ㄌ芈省O旅媸菍?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的波特率時(shí)鐘
  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所示。
  實(shí)例解析FPGA和單片機(jī)的串行通信接口設(shè)計(jì)
  圖1 FPGA數(shù)據(jù)發(fā)送時(shí)序仿真圖
  圖中Din寫入值為3355H,波特率為2400Hz,Start信號始終置邏輯1,即隨時(shí)都能發(fā)送數(shù)據(jù)。Reset信號邏輯1時(shí)復(fù)位,邏輯0時(shí)電路開始工作。THR是數(shù)據(jù)寄存器,文件頭、數(shù)據(jù)長度以及數(shù)據(jù)位都先寄存到THR中,Len是數(shù)據(jù)長度,TSR是低8位數(shù)據(jù)幀寄存器,TSR1是高8位數(shù)據(jù)幀寄存器。數(shù)據(jù)長度Len定為02H,發(fā)送時(shí)先發(fā)送低8位55H,后發(fā)送高8位33H,一共發(fā)送兩遍。發(fā)送的數(shù)據(jù)格式說明:當(dāng)發(fā)送55H時(shí),其二進(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ì)算機(jī)控制技術(shù)、數(shù)字信號處理技術(shù),那么電路各部分經(jīng)常需要數(shù)據(jù)交換。本文也是基于此給出這方面應(yīng)用的實(shí)例,供開發(fā)者交流。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費(fèi)下載
  2. 0.00 MB  |  1497次下載  |  免費(fèi)
  3. 2TC358743XBG評估板參考手冊
  4. 1.36 MB  |  330次下載  |  免費(fèi)
  5. 3單片機(jī)典型實(shí)例介紹
  6. 18.19 MB  |  99次下載  |  1 積分
  7. 4S7-200PLC編程實(shí)例詳細(xì)資料
  8. 1.17 MB  |  28次下載  |  1 積分
  9. 5筆記本電腦主板的元件識別和講解說明
  10. 4.28 MB  |  18次下載  |  4 積分
  11. 6開關(guān)電源原理及各功能電路詳解
  12. 0.38 MB  |  14次下載  |  免費(fèi)
  13. 79天練會電子電路識圖
  14. 5.91 MB  |  6次下載  |  免費(fèi)
  15. 8100W短波放大電路圖
  16. 0.05 MB  |  4次下載  |  3 積分

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費(fèi)
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費(fèi)
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費(fèi)
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費(fèi)
  9. 5555集成電路應(yīng)用800例(新編版)
  10. 0.00 MB  |  33564次下載  |  免費(fèi)
  11. 6接口電路圖大全
  12. 未知  |  30321次下載  |  免費(fèi)
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費(fèi)
  15. 8開關(guān)電源設(shè)計(jì)實(shí)例指南
  16. 未知  |  21540次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537794次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191183次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138039次下載  |  免費(fèi)