當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]一種專用串行同步通信芯片(該芯片內(nèi)部結(jié)構(gòu)和操作方式以INS8250為參考)的VHDL設(shè)計(jì)及CPLD實(shí)現(xiàn),著重介紹了用VHDL及CPLD設(shè)計(jì)專用通信芯片的開發(fā)流程、實(shí)現(xiàn)難點(diǎn)及應(yīng)注意的問(wèn)題。

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

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

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

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

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

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

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

(1)SRTCRTL.VHD

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

(2)LOOP.VHD

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

    (3)CLKGEN.VHD

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

(4)RBR.VHD

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

端口描述如下:

entity rbr is

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

rrbr:在STD_LOGIC; --讀接收緩存器信號(hào)

rsrbr:in STD_LOGIC; --接收緩存器清零信號(hào)

dbus:out STD_LOGIC_VECTOR (7 downto 0);

--8位數(shù)據(jù)線,單向,輸出

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

ren:out STD_LOGIC; --妝收使能信號(hào),通知發(fā)方接收方準(zhǔn)備好可發(fā)送數(shù)據(jù)

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

end rbr;

當(dāng)接收緩存器中無(wú)數(shù)據(jù)時(shí),ren信號(hào)有效,通知發(fā)送方傳數(shù)據(jù)。然后根據(jù)dilck對(duì)di信號(hào)采樣,一旦緩存器滿,ren無(wú)效,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(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;

(5)WTHR.VHD

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

端口描述如下:

entity wthr is

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

whtr: in STD_LOGIC; --寫發(fā)送保持器信號(hào)

dbus: in STD_LOGIC_VECTOR (7 downto 0;

--8位數(shù)據(jù)線,單向

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

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

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

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

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

end wthr;

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

    仿真波形如圖5。部分實(shí)現(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;

1:=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(1);

m<=m+1;

l:=1-1;

if m=7 then

m<=0;

1:=7;

esf=<='1';

end if;

end if;

end if;

end process;

3 實(shí)現(xiàn)難點(diǎn)及使用VHDL應(yīng)注意的一些問(wèn)題

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

(1)在一個(gè)進(jìn)程中只允許一個(gè)信號(hào)上升沿作為觸發(fā)條件。

(2)信號(hào)值改變后要經(jīng)過(guò)一個(gè)小的延時(shí)才能生效,同個(gè)信號(hào)不能在多個(gè)進(jìn)程中賦值(因?yàn)槎鄠€(gè)信號(hào)源不能同時(shí)對(duì)同一個(gè)信號(hào)驅(qū)動(dòng))。

(3)時(shí)序電路和組合電路最好不要在同一個(gè)進(jìn)程中,以免費(fèi)資源。

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

(5)同一個(gè)信號(hào)在進(jìn)程中的值改變后,要注意該值改變前后該進(jìn)程中其它變量的變化,避免邏輯死鎖。

(6)在順序語(yǔ)句中,注意信號(hào)因賦值后需延時(shí)改變而與變量的不同。

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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉