那曲檬骨新材料有限公司

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>接口技術>實例解析FPGA和單片機的串行通信接口設計

實例解析FPGA和單片機的串行通信接口設計

2017-11-01 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

 現場可編程邏輯器件(FPGA)在高速采集系統中的應用越來越廣,由于FPGA對采集到的數據的處理能力比較差,故需要將其采集到的數據送到其他CPU系統來實現數據的處理功能,這就使FPGA系統與其他CPU系統之間的數據通信提到日程上,得到人們的急切關注。本文介紹利用VHDL語言實現 FPGA與單片機的串口異步通信電路。
  整個設計采用模塊化的設計思想,可分為四個模塊:FPGA數據發送模塊,FPGA波特率發生控制模塊,FPGA總體接口模塊以及單片機數據接收模塊。本文著重對FPGA數據發送模塊實現進行說明。
  2 FPGA數據發送模塊的設計
  根據RS232 異步串行通信來的幀格式,在FPGA發送模塊中采用的每一幀格式為:1位開始位+8位數據位+1位奇校驗位+1位停止位,波特率為2400。本系統設計的是將一個16位的數據封裝成高位幀和低位幀兩個幀進行發送,先發送低位幀,再發送高位幀,在傳輸數據時,加上文件頭和數據長度,文件頭用555555來表示,只有單片機收到555555時,才將下面傳輸的數據長度和數據位進行接收,并進行奇校驗位的檢驗,正確就對收到的數據進行存儲處理功能,數據長度可以根據需要任意改變。由設置的波特率可以算出分頻系數,具體算法為分頻系數X=CLK/(BOUND*2)。可由此式算出所需的任意波特率。下面是實現上述功能的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); --發送的數據
  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”; --發送的文件頭
  elsif cou=3 then
  thr《=“0000000000000010”; --發送的文件長度
  elsif (cou》3 and state=stop2) then thr《=din;--發送的數據
  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); --數據位
  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);--數據位
  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所示。
  實例解析FPGA和單片機的串行通信接口設計
  圖1 FPGA數據發送時序仿真圖
  圖中Din寫入值為3355H,波特率為2400Hz,Start信號始終置邏輯1,即隨時都能發送數據。Reset信號邏輯1時復位,邏輯0時電路開始工作。THR是數據寄存器,文件頭、數據長度以及數據位都先寄存到THR中,Len是數據長度,TSR是低8位數據幀寄存器,TSR1是高8位數據幀寄存器。數據長度Len定為02H,發送時先發送低8位55H,后發送高8位33H,一共發送兩遍。發送的數據格式說明:當發送55H時,其二進制為01010101,則發送的數據的二進制數為00101010111(1位開始位+8位數據位+1位奇校驗位+1位停止位)。
  單片機部分先對FPGA發送過來的文件頭進行確認,正確就接收文件,否則放棄接收的數據。根據FPGA發送模塊的協議,對串口控制寄存器SCON和波特率控制寄存器PCON的設置即可實現。
  3 總結
  目前電子產品的開發中經常要綜合運用EDA技術、計算機控制技術、數字信號處理技術,那么電路各部分經常需要數據交換。本文也是基于此給出這方面應用的實例,供開發者交流。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537794次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費
利博百家乐的玩法技巧和规则| 喜力百家乐的玩法技巧和规则 | 赌百家乐官网澳门| 立即博百家乐官网的玩法技巧和规则 | 川宜百家乐官网破解版| 现金轮盘游戏| 澳门百家乐官网园游戏| 金钻国际| 粤港澳百家乐官网娱乐平台 | 富易堂百家乐娱乐城| 幸运水果机游戏| 淘金百家乐官网现金网| 百家乐官网平预测软件| 玩百家乐怎么能赢呢| 社旗县| 澳门档百家乐官网的玩法技巧和规则| 网上百家乐骗局| 蒙特卡罗代理| 贵宾百家乐官网的玩法技巧和规则 | 博彩e族| 美女百家乐官网的玩法技巧和规则 | 印江| 去澳门百家乐官网的玩法技巧和规则 | 百家乐官网最保险的方法| 百家乐娱乐人物| 六合彩开奖现场| 新加坡百家乐官网的玩法技巧和规则 | 永年县| 百家乐怎么刷反水| 德州扑克荷官培训| 百家乐官网娱乐网真人娱乐网| 新加坡百家乐的玩法技巧和规则| 清苑县| 百家乐开发软件| 网上百家乐官网网址| 百家乐三珠连跳打法| 百家乐真人游戏| 百家乐tt娱乐| 香港六合彩资料| 百家乐官网是真人发牌吗| 六合彩开奖直播|