国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

零基礎學FPGA(九)牛刀小試——串行口通信電路設計

發布時間:2016-2-24 09:55    發布者:designapp
關鍵詞: FPGA , 狀態機
  以前在學單片機的時候,覺得串口通信其實很簡單,只要一個指令數據就能輕易的接收或者發送。前幾天試著用FPGA實現,發現里面的學問還不少,并沒有想象的那么簡單。當然代碼肯定是參考別人的,不過我還是認真研究了整段代碼的,下面的程序就是我在看懂了別人代碼后自己敲的,花了也不少時間,理解的也差不多,下面我就在這里給那些和我一樣的初學者介紹一下吧,解釋的不對的地方還望各位大神指正,大家好一起學習~
  1、頂層模塊
  寫程序都一樣,不能多有的程序都寫在一個模塊里,那樣看起來很麻煩,出了錯誤也不好維護,對于一些小的程序我們可以寫在一個模塊里,但程序一旦復雜起來還是要懂得模塊化編程的,對于頂層模塊,最好是只寫接口就好了,例如:
  


  這段代碼中,rx_232是我們的底層模塊名,后面跟著的那個rx呢是我們自己取的名字,是任意的。后面的一大串呢就是接口,為了直觀呢,建議大家采用我的這種寫法,看上去比較清楚明白,括號里面的接口是我們頂層文件的接口,括號外面的是我們調用底層模塊的接口,這些接口要一一對應正確才能保證數據之間的傳輸。
  在頂層模塊中,我們只定義了數據輸入接口,用來接收數據,數據輸出接口,用于發送數據,時鐘接口,和復位接口。這四個接口是有輸入輸出關系的,對于其他的接口,是屬于我們整個模塊內部的接口,是模塊與模塊之間的接口,既非輸入,也非輸出,相當于一根導線一樣,所以我們把他們定義成wire型變量
  


  2、波特率選擇模塊
  單片機或者計算機在串口通信時的傳輸速率用波特率表示,9600bps表示的就是每秒鐘傳送9600位的數據
  這里之所以計數到5027,在這里算一下。
  1秒傳送9600位,那么傳送一位的時間就可以算出,即1s=1000_000_000ns,所以傳送一位數據需要1000_000_000/9600=
  104166ns,而我們的時鐘周期為20ns,因此需要計數到104166/20=5028個時鐘周期
  下面是串口通信時序圖
  


  我再來解釋一下這個圖吧,我當時學單片機的時候還真是沒怎么重視這張圖,只知道只要一個指令就可以發送,沒有真正搞清楚是怎么發送和接受的,那就在這里復習一下吧
  計算機和單片機之間進行通信,這里用的是rs232通信方式,即通信之前,計算機和單片機之前要設定好相同的波特率,只有波特率相同了才能進行通信。
  其次,計算機發送數據時要先發送一個起始位,一般是低電平,后面跟著的是8位數據位,奇偶校驗位,停止位等,當起始位低電平信號傳送到我們的接收端口時,在接收模塊中會發送一個命令給波特率時鐘計數器,開始計時,計時到一半的時候會產生一個采樣高脈沖信號,當接收模塊檢測到這個高脈沖之后就會將數據存到寄存器中,當檢測到第11個脈沖信號時,也就是代表一幀的數據接收完畢,發送模塊就給波特率選擇模塊發送一個停止信號告訴它停止計時。同時,當數據接收完畢之后也會產生一個信號告訴發送模塊,信號已經接收完畢,準備發送,這個時候發送模塊再給波特率計時模塊發送一個信號開始計時,計數到某一位的中間時產生一個采樣信號,當發送模塊檢測到采樣信號之后就將寄存器里的數據送到發送端,每次只送一位,這樣就實現了數據的接收與發送。
  下面是波特率計時模塊的主要程序部分
  


  3、數據接收模塊
  在接收模塊中,為了準確的檢測計算機發送來的數據起始位的那個低電平信號,用到了邊沿脈沖檢測法,可以有效的避免毛刺現象帶來的問題
  


  下面是發送部分的主要程序段
  


  4、數據發送模塊
  發送模塊原理上和接受模塊是一樣的,不同點就是接收模塊通過邊沿檢測法檢測起始位低電平信號來啟動接收數據,而發送模塊是通過檢測數據發送完畢后,我們認為的置一個低電平信號,發送模塊通過檢測這個低電平信號來啟動發送。見下圖
  


  下面是生成的RTL視圖
  


  下面是測試結果
  

                               
               
本文地址:http://m.qingdxww.cn/thread-161110-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節省時間和空間
  • Dev Tool Bits——使用DVRT協議查看項目中的數據
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監視
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线亚洲欧美 | 毛片基地看看成人免费 | 一级毛片在线不卡直接观看 | 韩国毛片免费 | 成人性生交大片免费看中文 | 99久久国产综合精麻豆 | 在线看片日本 | 我不卡在线 | 青青青免费网站在线观看 | 欧美精品va在线观看 | 日韩亚洲欧美视频 | 日韩日日日 | 日韩国产有码在线观看视频 | 久久精品视频观看 | 亚洲福利在线播放 | 国产日韩精品一区二区在线观看 | 国产免费观看网站黄页 | 亚洲女人18毛片水真多 | 精品91麻豆免费免费国产在线 | 五月综合色婷婷影院在线观看 | 亚洲黄色免费网站 | 久久三级视频 | 日韩天堂在线观看 | 日本欧美中文字幕人在线 | 手机国产精品一区二区 | 男人的天堂在线观看视频不卡 | 欧美大胆一级视频 | 在线播放黄色片 | 家庭教师免费观看 | 手机看片一区 | 免费毛片儿 | 免费九九视频 | 国产成人+综合亚洲+天堂 | 日本在线观看高清不卡免v 日本在线观看的免费 | 天天干天天摸天天操 | 久久免费视频播放 | 羞羞网站在线播放 | 国产入口在线观看 | 亚洲精品一级毛片 | 国产伦精品一区二区三区免费下载 | 黄色网址视频在线播放 |