<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 用VHDL設計專(zhuān)用串行通信芯片

用VHDL設計專(zhuān)用串行通信芯片

作者: 時(shí)間:2009-07-17 來(lái)源:網(wǎng)絡(luò ) 收藏

系統中,是整個(gè)硬件平臺的基礎,它不僅完成OSI物理層中的數據發(fā)送和接收,還能根據傳輸方式和協(xié)議的不同實(shí)現不同的數據校驗方式及數據組幀格式。

本文引用地址:http://dyxdggzs.com/article/157976.htm

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

1 統計時(shí)分復用器系統功能及模塊組成

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

2 CPLD內部功能框圖及設計

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

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

(1)SRTCRTL.VHD

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

(2)LOOP.VHD

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

(3)CLKGEN.VHD

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

(4)RBR.VHD

RR.VHD作為整個(gè)芯片的接收模塊,其中包括接收緩存器、接收數據同步、串/并轉換。

端口描述如下:

entity rbr is

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

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

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

dbus:out STD_LOGIC_VECTOR (7 downto 0);

--8位數據線(xiàn),單向,輸出

dr:out STD_LOGIC; --接收緩存器數據有效信號

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

di:in STD_LOGIC); --接收數據線(xiàn)

end rbr;

當接收緩存器中無(wú)數據時(shí),ren信號有效,通知發(fā)送方傳數據。然后根據dilck對di信號采樣,一旦緩存器滿(mǎn),ren無(wú)效,dr有效,通知CPU讀數。

仿真波形如圖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(1)=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;


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>