<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的UART 16倍頻采樣的VHDL設(shè)計

          基于FPGA的UART 16倍頻采樣的VHDL設(shè)計

          作者: 時間:2013-04-18 來源:網(wǎng)絡(luò) 收藏

          起始位檢測8個連續(xù)脈沖的另一個更重要的原因是,采用16采樣的時鐘,第8個采樣脈沖所對應(yīng)的數(shù)據(jù)波形正好是該位數(shù)據(jù)位波形的正中點(以時鐘上升沿采樣),在該處讀寫數(shù)據(jù)應(yīng)該是最安全點。

          在設(shè)計時,充分抓住異步數(shù)據(jù)的特征進行設(shè)計:起始位為低電平、停止位為高電平、每幀數(shù)據(jù)幀結(jié)構(gòu)相同。根據(jù)異步數(shù)據(jù)這些特征就可設(shè)計出以下相應(yīng)程序:

          process(clk16x,start) --產(chǎn)生clk1x時鐘進程
          begin
          if start=’0’ then
          q=0001;
          elsif clk16x’event and clk16x=’1’
          then
          q=q+1;
          end if;
          end procESS ;
          clk1x=q(3);
          process(clk16x,i,serialin,rst) --起始位檢測進程
          begin
          if rst=’1’ then
          start=’0’;
          elsif rising_edge(clk16x) then    if serialin=’0’ then
          start=’1’ ;
          elsif over=’0’ then
          start=’1’;
          else start=’0’;
          end if;
          end if;
          end process;
          process(clk1x,serialin,i,rst) --讀數(shù)據(jù)進程
          begin
          if rst=’1’ then
          buff= (others => ’1’);
          Dout_P= (others => ’1’);
          i=0;
          over=’1’;
          elsif rising_edge(clk1x) then
          if i>
          buff21=serialin;
          i=i+1;
          over=’0’;    else
          i=0;
          over=’1’;
          Dout_P=buff;
          end if;
          end if;
          end process ;

          本設(shè)計采用硬件描述語言來進行描述。clk16x為16采樣時鐘,clk1x是檢測到真正起始位后由clk16x時鐘分頻產(chǎn)生的采樣時鐘,start為開始接收數(shù)據(jù)信號(接收數(shù)據(jù)期間為高電平)、serialin為異步數(shù)據(jù)輸入端口。平常,接收器按clk16x時鐘上升采樣serialin。當采樣時鐘檢測到低電平時輸出一個高電平給start信號,clk1x分頻計數(shù)器啟動。如果連續(xù)采集8個脈沖都為低電平(起始位之半),即確定該低電平為起始位,輸出一個低電平給接收數(shù)據(jù)完信號over(接收數(shù)據(jù)期間為低電平,接收完數(shù)據(jù)為高電平),over信號在低電平檢測共同作用下保持start為高電平。start長時間保持高電平(8個clk16周期T)產(chǎn)生clk1x時鐘。反之判別為假起始位,over仍然為高電平,start卻變?yōu)榈碗娖剑琧lk1x分頻計數(shù)器復位,一直等到下次檢測serialin為低電平才重新啟動。可見,只有確定了起始位,clk1x時鐘才會產(chǎn)生,否則不產(chǎn)生。而clk16x時鐘始終存在,保證不會錯過每次接收線上的數(shù)據(jù)采樣。

          結(jié)語

          按常規(guī)的16采樣方法接收異步數(shù)據(jù),其抗干擾性、移植性等都優(yōu)于3倍頻采樣方法。實際應(yīng)用表明,提高采樣倍數(shù),接收準確性相應(yīng)提高;在一定范圍內(nèi),提高數(shù)據(jù)波特率不會影響接收準確性。

          fpga相關(guān)文章:fpga是什么



          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA UART VHDL 倍頻

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();