《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 用VHDL設(shè)計專用串行通信芯片

用VHDL設(shè)計專用串行通信芯片

2009-05-15
作者:付曉宇 吳詩其

??? 摘? 要: 一種專用串行同步通信芯片(該芯片內(nèi)部結(jié)構(gòu)和操作方式以INS8250為參考)的VHDL設(shè)計及CPLD實現(xiàn),著重介紹了用VHDL及CPLD設(shè)計專用通信芯片的開發(fā)流程、實現(xiàn)難點及應(yīng)注意的問題。?

??? 關(guān)鍵詞: VHDL? FPGA? CPLD? UART? 統(tǒng)計時分復(fù)用器

?

??? 在通信系統(tǒng)中,通信芯片是整個硬件平臺的基礎(chǔ),它不僅完成OSI物理層中的數(shù)據(jù)發(fā)送和接收,還能根據(jù)傳輸方式和協(xié)議的不同實現(xiàn)不同的數(shù)據(jù)校驗方式及數(shù)據(jù)組幀格式。?

??? 目前,許多廠商都提供通用的串行通信芯片,其傳輸方式分為同步方式和異步方式。其中,異步芯片大多與INTEL的8250芯片兼容;而同步方式,由于一般涉及到所支持的傳輸協(xié)議(BSC、HDLC、SDLC等),所以當(dāng)用戶要求應(yīng)用特定的同步傳輸協(xié)議時,往往需要設(shè)計專用的SRT(同步收發(fā)器)。以前,大多采用通用的邏輯元器件進行設(shè)計,這導(dǎo)致了設(shè)計和調(diào)試過程冗長、系統(tǒng)穩(wěn)定性不高,非常不便。如今,隨著以FPGA和CPLD為代表的可編程ASIC技術(shù)的日趨成熟和完善,用戶完全可以根據(jù)自己的需要,以EDA技術(shù)作為開發(fā)手段,用一塊FPGA或CPLD設(shè)計出符合自己需要的芯片。本文以開發(fā)統(tǒng)計時分復(fù)用器中的專用同步收發(fā)芯片為例,介紹整個芯片的開發(fā)流程。?

1 統(tǒng)計時分復(fù)用器系統(tǒng)功能及模塊組成?

??? 統(tǒng)計時分復(fù)用器完成7路異步數(shù)據(jù)和1路同步數(shù)據(jù)的復(fù)接工作,其功能框圖如圖1所示,同步串口傳輸協(xié)議如圖2所示。由于傳輸距離較近且路數(shù)不多,功能相對簡單。出于系統(tǒng)功耗和成本的考慮,將這個專用的SRT和整個接口控制單元集成到一塊CPLD(XC95144)中。?

?

?

?

2 CPLD內(nèi)部功能框圖及設(shè)計?

??? CPLD內(nèi)部結(jié)構(gòu)主要由接口控制單元和SRT組成,這里主要介紹一下SRT的結(jié)構(gòu)和功能模塊(見圖3)。由于選用的UART(通用異步收發(fā)器)與INS8250兼容,為簡化主控單元訪問外部通信芯片的程序的編寫,統(tǒng)一操作流程,在SRT的設(shè)計上盡量模仿INS8250的結(jié)構(gòu)。?

?

?

??? 本設(shè)計采用模塊化設(shè)計。按功能將SRT內(nèi)部結(jié)構(gòu)分為5個模塊,每一個模塊對應(yīng)一個VHDL的設(shè)計文件。這樣設(shè)計的好處是有利于各功能模塊的編寫和調(diào)試,從而降低了整個SRT的調(diào)試難度,提高了軟件的可維護性及可讀性。下面給出各個設(shè)計文件的外功能簡介(對于其中幾個重要的模塊還列出了端口描述和部分實現(xiàn)代碼):?

??? (1)SRTCRTL.VHD?

??? SRTCRTL.VHD作為SRT的控制模塊,負責(zé)地址譯碼,當(dāng)片選信號有效時將數(shù)據(jù)線上的數(shù)據(jù)寫入相應(yīng)的寄存器。SRT芯片內(nèi)部共設(shè)有接收緩存器、發(fā)送保持器、線路控制寄存器、除數(shù)寄存器(高低8位各1個)、自環(huán)控制寄存器等6個控制寄存器,每個寄存器都被分配了1個地址,通過對相應(yīng)地址進行讀寫,CPU可完成數(shù)據(jù)發(fā)送、接收、自環(huán)及芯片參數(shù)設(shè)置等操作。 ?

??? (2)LOOP.VHD?

??? 本模塊的功能是根據(jù)用戶的指令,對芯片本身功能進行測試。用戶首先將芯片設(shè)置為自環(huán)狀態(tài),使芯片內(nèi)部發(fā)送數(shù)據(jù)線與直接接收數(shù)據(jù)線短接;再通過向發(fā)送保持器寫入特定的數(shù)據(jù),與接收緩存器中讀出的數(shù)據(jù)進行比較,看兩者是否相同,用戶即可判斷芯片是否工作正常。?

??? (3) CLKGEN.VHD?

??? CLKGEN.VHD是波特率發(fā)生器模塊,用來產(chǎn)生發(fā)送同步的時鐘信號doclk。它將除數(shù)寄存器高低各8位共16位數(shù)據(jù)作為除數(shù),對外部2MHz的時鐘源進行分頻。用戶可通過修改除數(shù)寄存器的值動態(tài)地改變數(shù)據(jù)傳輸速率,因此操作方便、靈活。 ?

??? (4)RBR.VHD?

??? RBR.VHD作為整個芯片的接收模塊,其中包括接收緩存器、接收數(shù)據(jù)同步、串/并轉(zhuǎn)換。?

??? 端口描述如下:?

entity rbr is?

port (diclk: in STD_LOGIC; --接收數(shù)據(jù)同步時鐘,由發(fā)方提供?

rrbr: in STD_LOGIC;???? ?? --讀接收緩存器信號?

rsrbr: in STD_LOGIC;?????? --接收緩存器清零信號?

dbus: out STD_LOGIC_VECTOR (7 downto 0);?--8位數(shù)據(jù)線,單向,輸出?

dr: out STD_LOGIC;???????? --接收緩存器數(shù)據(jù)有效信號?

ren: out STD_LOGIC;??????? --接收使能信號,通知發(fā)方接收方準備好可發(fā)送數(shù)據(jù)?

di: in STD_LOGIC);???????? --串行接收數(shù)據(jù)線?

end rbr;?

??? 當(dāng)接收緩存器中無數(shù)據(jù)時,ren信號有效,通知發(fā)送方傳數(shù)據(jù)。然后根據(jù)dilck對di信號采樣,一旦緩存器滿,ren無效,dr 有效,通知CPU讀數(shù)。?

??? 仿真波形如圖4所示。部分代碼如下:?

?

?

process (rsrbr,diclk)?? --serial data to parallel data?

variable l,m: integer range 0 to 8 ;?

begin?

??? if rsrbr='1' then?

??????? s_p<=″00000000″;?

??????? m:=0;?

??????? ef<='1';?

??? elsif diclk'event and diclk='1' then?

??????? l:=7-m;?

??????? s_p(l)<=di;?

??????? m:=m+1;?

??????? If m=8 then?

??????????? m:=0;?

??????????? ef<='0';?

??? end if;?

end if;?

if rrbr='1'? then?

??? dbus<=s_p;?

??????? ef<='1';?

??????? else dbus<=″ZZZZZZZZ″;?

??? end if;?

end process;?

??? (5)WTHR.VHD?

??? WTHR.VHD作為整個芯片的發(fā)送模塊,其中包括發(fā)送保持器、并/串轉(zhuǎn)換。?

??? 端口描述如下:?

entity wthr is?

port (sen: in STD_LOGIC; ?? ???--發(fā)送使能信號?

??? wthr: in STD_LOGIC;?? ? ???--寫發(fā)送保持器信號 ?

??? dbus: in STD_LOGIC_VECTOR (7 downto 0);--8位數(shù)據(jù)線,單向?

??? rsthr: in STD_LOGIC;? ? ???--清發(fā)送保持器 ?

??? thre: out STD_LOGIC; ?? ???--發(fā)送保持器數(shù)據(jù)空?

??? dout: out STD_LOGIC;? ? ???--發(fā)送串行數(shù)據(jù)線?

??? clkout: out STD_LOGIC; ??? --發(fā)送數(shù)據(jù)同步時鐘信號?

??? sclk: in STD_LOGIC); ?? ???--波特率發(fā)生器產(chǎn)生的分頻信號?

??? end wthr;?

??? 當(dāng)發(fā)送保持器無數(shù)據(jù)時,thre信號有效,通知CPU可寫。一旦CPU寫入數(shù)據(jù)且sen 有效,便根據(jù)波特率發(fā)生器產(chǎn)生的sclk信號將數(shù)據(jù)并/串轉(zhuǎn)換,并通過dout和clkout將串行數(shù)據(jù)和同步時鐘發(fā)送。?

??? 仿真波形如圖5。部分實現(xiàn)代碼如下:?

?

?

process (rsthr,sclk,sen,sef)? --parallel data to serial data?

variable l:integer range 0 to 7;?

begin?

??? if rsthr='1' then?

??????? m<=0;?

??????? l:=7;?

??????? sef<='1';?

??? elsif wthr='1' then?

????? ??? sef<='0';?

??? elsif sen='1'and sef='0' then?

??????? if sclk'event and sclk='1' then?

??????????? dout<=w_p(l);?

??????????? m<=m+1;?

??????????? l:=l-1;?

??????????? if m=7 then?

??????????????? m<=0;?

??????????????? l:=7;?

??????????????? sef<='1';?

??????? end if;?

????? end if;?

??? end if;?

end process;?

3 實現(xiàn)難點及使用VHDL應(yīng)注意的一些問題?

??? 由于VHDL語言是描述硬件行為的,相對其它開發(fā)軟件的高級語言而言,在編程過程中有一些特殊性,所以經(jīng)常會出現(xiàn)語法正確但無法綜合的問題。其原因多半因為編程者對硬件內(nèi)部的工作原理了解不夠,寫出的代碼硬件無法實現(xiàn)。通過這塊芯片的設(shè)計,在此總結(jié)出一些應(yīng)注意的問題,供大家參考:?

??? (1)在一個進程中只允許一個信號上升沿作為觸發(fā)條件。?

??? (2)信號值改變后要經(jīng)過一個小的延時才能生效,同個信號不能在多個進程中賦值(因為多個信號源不能同時對同一個信號驅(qū)動)。?

??? (3)時序電路和組合電路最好不要在同一個進程中,以免費資源。?

??? (4)一個功能模塊最好按上升沿信號分多個進程完成,各進程間用信號聯(lián)系。?

??? (5)同一個信號在進程中的值改變后,要注意該值改變前后該進程中其它變量的變化,避免邏輯死鎖。?

??? (6)在順序語句中,注意信號因賦值后需延時改變而與變量的不同。?

??? (7)設(shè)計雙向三態(tài)數(shù)據(jù)線時,內(nèi)部數(shù)據(jù)線最好讀寫分開。與外部結(jié)合時,不同讀數(shù)據(jù)線之間,讀寫數(shù)據(jù)線之間應(yīng)使用三態(tài)門,且由讀信號控制。?

??? 本設(shè)計由于采用了VHDL語言作為輸入方式并結(jié)合可編程邏輯門陣列CPLD,大大縮短了設(shè)計周期,提高了設(shè)計的可靠性、靈活性,使用戶可根據(jù)自己的需求,方便、高效地設(shè)計出合適的串行通信芯片。?

參考文獻?

1 潘名蓮,馬 爭.微計算機原理.北京:電子工業(yè)出版社,1994?

2 候伯亨,顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計.西安:西安電子科技大學(xué)出版社,1999?

3 李廣軍,孟憲元.可編程ASIC設(shè)計及應(yīng)用.成都:電子科技大學(xué)出版社,1999?

4 DATABOOK.XILINX 公司,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美华人在线视频| 国产精品色午夜在线观看| 在线观看成人一级片| 国产精品久久久久国产精品日日| 欧美精品三级在线观看| 久久综合九色九九| 久久久久久久尹人综合网亚洲| 欧美亚洲一区三区| 午夜精品福利一区二区蜜股av| 亚洲一级二级在线| 亚洲视频免费看| 亚洲午夜视频在线| 亚洲一区在线观看免费观看电影高清| 在线亚洲欧美| 中国av一区| 亚洲欧美日本另类| 亚洲女人天堂成人av在线| 亚洲综合好骚| 欧美一区二区三区日韩| 欧美一区二区三区日韩| 久久av一区二区三区亚洲| 久久精品国产亚洲精品| 久久久久久网站| 久久综合色影院| 欧美va亚洲va日韩∨a综合色| 蜜桃久久精品一区二区| 免费亚洲视频| 欧美猛交免费看| 欧美午夜精品理论片a级按摩| 国产精品久久久久久久久久妞妞| 国产伦精品一区二区| 国产日韩欧美自拍| 黄色成人在线| 亚洲国内自拍| 一本色道久久88综合日韩精品| 国产精品99久久99久久久二8| 亚洲免费在线观看视频| 欧美一区二区大片| 久久精品国产精品亚洲| 亚洲国产你懂的| 亚洲另类自拍| 亚洲网站在线观看| 欧美在线网站| 麻豆成人精品| 亚洲欧洲午夜| 99伊人成综合| 亚洲一区二区伦理| 欧美伊人久久久久久午夜久久久久| 久久精品国产一区二区三区免费看| 久久精品一区蜜桃臀影院| 亚洲国产精品va在线观看黑人| 亚洲精品乱码久久久久久久久| 91久久极品少妇xxxxⅹ软件| 一区二区三区国产精华| 亚洲欧美日韩精品久久奇米色影视| 午夜精品视频在线观看| 亚洲欧美日本视频在线观看| 久久精品一区二区三区中文字幕| 亚洲日本中文字幕| 夜夜爽夜夜爽精品视频| 亚洲欧美国产77777| 亚洲第一福利视频| 一区二区三区四区五区在线| 欧美一区二区私人影院日本 | 亚洲欧美国产视频| 久久精品视频导航| 欧美精品福利在线| 国产欧美日韩亚洲精品| 亚洲高清视频的网址| 中文av字幕一区| 亚洲国产精品热久久| 亚洲一二三级电影| 美日韩精品视频免费看| 欧美性一区二区| 欧美日韩免费观看一区| 国产亚洲一区精品| 9l视频自拍蝌蚪9l视频成人| 欧美在线免费一级片| 亚洲视频日本| 久久亚洲图片| 国产精品国内视频| 亚洲第一区在线| 亚洲欧美日韩另类| 日韩视频在线观看| 久久五月婷婷丁香社区| 国产精品日韩欧美一区| 亚洲欧洲另类| 久久精品123| 香蕉久久夜色精品国产使用方法| 欧美成人精品一区二区三区| 国产性色一区二区| 一区二区日韩免费看| 亚洲精品日韩激情在线电影| 久久精品国产91精品亚洲| 欧美体内she精视频在线观看| 在线看视频不卡| 欧美一区二区大片| 亚洲一区二区综合| 久久久噜噜噜久久久| 国产精品极品美女粉嫩高清在线| 亚洲欧洲在线看| 亚洲第一在线视频| 欧美在线观看一区二区| 国产精品爱啪在线线免费观看| 亚洲激情av在线| 久久精品国产亚洲aⅴ| 欧美一区二区精美| 国产精品久久久99| 好吊色欧美一区二区三区四区| 欧美亚洲一区二区在线观看| 亚洲午夜av| 国产精品久久久久久久久久ktv| 久久视频国产精品免费视频在线| 国产精品久久久久久一区二区三区| 亚洲国产精品欧美一二99| 久久精品一区二区| 久久久久久久综合狠狠综合| 国产日韩精品在线| 亚洲资源在线观看| 午夜国产精品视频| 欧美色图五月天| 亚洲乱码日产精品bd| 99re在线精品| 欧美精品自拍| 亚洲国产日韩在线| 亚洲清纯自拍| 欧美福利视频网站| 亚洲电影自拍| 亚洲精品视频在线播放| 欧美成人午夜| 亚洲日本中文字幕| 一本久道久久综合中文字幕 | 国产精品狠色婷| 中文精品一区二区三区 | 午夜精品福利一区二区三区av| 国产精品成人播放| 亚洲图片欧美午夜| 欧美亚洲视频在线观看| 国产精品一级久久久| 午夜国产一区| 久久久久一区二区三区| 精品1区2区| 亚洲区中文字幕| 欧美精品一区二区三| 亚洲美女毛片| 亚洲一区二区成人在线观看| 欧美视频免费看| 亚洲一区二区三区激情| 新狼窝色av性久久久久久| 国产日本欧美一区二区三区在线 | 亚洲品质自拍| 一区二区三区国产在线| 国产精品久久毛片a| 午夜久久福利| 男人的天堂亚洲在线| 亚洲精品一区二区三区四区高清| 亚洲图片在线| 国产模特精品视频久久久久| 久久精品二区亚洲w码| 亚洲国产婷婷香蕉久久久久久| 久久久久久久久久看片| 狠狠色综合色区| 一本色道精品久久一区二区三区| 亚洲欧美日韩精品综合在线观看| 国产日韩亚洲欧美综合| 欧美专区18| 欧美刺激午夜性久久久久久久| 国产一区二区看久久| 亚洲精品网址在线观看| 欧美视频中文一区二区三区在线观看 | 亚洲午夜影视影院在线观看| 国产农村妇女毛片精品久久莱园子| 久久精品一二三区| 欧美伦理在线观看| 午夜在线观看免费一区| 欧美大胆成人| 亚洲一区观看| 欧美成人中文| 亚洲欧美在线高清| 欧美成人精品激情在线观看| 亚洲第一伊人| 91久久综合| 国产区精品在线观看| 亚洲精品在线免费| 国产区在线观看成人精品| 亚洲乱码国产乱码精品精98午夜| 国产精品欧美经典| 91久久国产精品91久久性色| 国产精品久久久久9999高清| 亚洲国产精品成人| 国产精品久久久久9999吃药| 亚洲黄网站黄| 国产欧美一区二区三区沐欲| 亚洲三级电影全部在线观看高清| 国产麻豆综合| 亚洲无毛电影| 亚洲国产三级| 久久女同互慰一区二区三区| 亚洲视频高清| 欧美日韩高清免费|