關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用VHDL語言在CPLD上實現串行通信

        用VHDL語言在CPLD上實現串行通信

        ——
        作者:張鑫 時間:2006-11-13 來源:今日電子 收藏
        引言

        隨著EDA技術得發展,已經在許多方面得到了廣泛應用,而是實現遠程測控的重要手段。本文利用語言在上實現了,完全可以脫離使用,克服了的許多缺點。

        串口結構及內容

        本設計所采用的是異步通信方式,可以規定傳輸的一個數據是10位,其中最低位為啟動位(邏輯0低電平),最高位為停止位(邏輯1高電平),中間8位是數據位。為了方便對數據進行正確控制,選取發送(接受)每位數據用4個時鐘周期。為了能夠達到的波特率,例如4800B/s,則需把時鐘頻率設為 19.2kHz。系統結構如圖1所示:

        系統結構圖

        圖1

        系統原理

        首先介紹串行通信發送器的工作原理。6位計數器用于判斷發送的數據是否發送完畢及在發送完畢后裝入新的數據,其語言程序如下:

           

        由于本設計中選取一位數據4個時鐘周期,因此當計數到“100111”時,表示10位數據發送完畢;此時將加載信號“load”置1,則向移位寄存器加載10位數據。此計數器的時鐘信號由3位計數器的進位信號提供,3位計數器程序為如下:

           

        當計數脈沖為3時,計數器清零并發出進位信號“carry”,“carry”既是6位計數器的時鐘信號,又是移位寄存器的移位脈沖,移位寄存器實際上在發送器中是一個并串轉換器,其程序為如下:

         

        當加載信號高有效時,10位數據從外部寄存器中并行載入REG10,載入后在“carry”有效時,即每4個CLK周期右移一位進入鎖存器,進而從TXD發出。發送器的仿真波形如圖2所示。

        發送器的仿真波形

        圖2

        接收器的結構與模塊的功能與發送器相似。通過判斷接收鎖存器中的起始位是否為零,來確定接收與否。若有效時,3位計數器開始計數,將鎖存器中的數據逐位右移到移位寄存器中,6位計數器同樣計數到“100111”,此時表示已接收10位數據,發出信號把移位寄存器中的數據并行讀出。接收器中的移位寄存器其實是一個串并轉換器。

        結論

        以上就是串行通信的基本結構和原理,在工程中可能對波特率的要求不同。可以利用的在線可編程功能,通過修改發送(接收)每一位的時間來控制波特率,比如把一位數據每4個CLK改為2個CLK,則在時鐘頻率19.2kHz時,波特率為9600bps。除此之外,還可以通過增加時鐘頻率來增大波特率。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江西省| 神木县| 齐齐哈尔市| 石台县| 汤原县| 台东市| 海南省| 东阳市| 封开县| 西和县| 庆城县| 抚远县| 肇州县| 巴里| 永嘉县| 鹰潭市| 杭州市| 天台县| 卢湾区| 伊吾县| 安顺市| 南京市| 兴国县| 成安县| 图片| 玉山县| 英超| 临朐县| 岳普湖县| 柘城县| 澳门| 临猗县| 青海省| 饶平县| 阿荣旗| 郧西县| 永丰县| 忻城县| 南和县| 达拉特旗| 霍邱县|