www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]USB2.0主機(jī)控制器IP核的設(shè)計(jì)

摘要 :為了擺脫對(duì)USB2.0 主機(jī)控制器ASIC 芯片的依賴,提高產(chǎn)品集成度,本文設(shè)計(jì)了針對(duì)全速和高速USB 海量存儲(chǔ)設(shè)備的USB2.0 主機(jī)控制器IP 核。首先介紹USB2.0 主機(jī)控制器IP核中主要涉及的USB2.0 通信協(xié)議以及與物理層芯片接口的ULPI 接口規(guī)范協(xié)議,并依據(jù)協(xié)議規(guī)范,利用VHDL 硬件描述語言完成USB2.0 主機(jī)控制器IP 核的ULPI 接口模塊以及USB2.0通信協(xié)議模塊的設(shè)計(jì)。使用Xilinx 公司的ISE Simulator 工具進(jìn)行波形仿真,并在XilinxXUPV2 開發(fā)板上進(jìn)行驗(yàn)證,仿真結(jié)果及FPGA片上實(shí)驗(yàn)表明本文設(shè)計(jì)的USB2.0 主機(jī)控制器能夠完成對(duì)USB 海量存儲(chǔ)設(shè)備的有效管理。

0 引言

在USB 協(xié)議標(biāo)準(zhǔn)發(fā)展的過程中,USB2.0 接口憑借其連接簡單、穩(wěn)定、速度快以及即插即用等優(yōu)點(diǎn),廣泛應(yīng)用于計(jì)算機(jī)、通信和消費(fèi)類電子產(chǎn)品中。然而目前大部分USB 主機(jī)端控制器都是使用國外公司研制的專用ASIC 芯片,USB2.0 主機(jī)控制器IP 核的設(shè)計(jì)可以擺脫對(duì)這些芯片的依賴,使得應(yīng)用靈活方便。本文完成了針對(duì)全速和高速海量存儲(chǔ)設(shè)備USB2.0主機(jī)控制器IP 核中與物理層芯片接口的ULPI[2]模塊以及USB2.0 協(xié)議模塊的設(shè)計(jì)和實(shí)現(xiàn)。

ULPI 模塊介于USB2.0 主機(jī)控制器的協(xié)議模塊和物理層芯片之間,完成對(duì)插入U(xiǎn)SB 設(shè)備的狀態(tài)檢測(cè),判別是何種設(shè)備(全速還是高速),然后將設(shè)備置于相應(yīng)的狀態(tài)再進(jìn)行USB 的各種傳輸事務(wù)。每一個(gè)USB 的傳輸都是由事務(wù)組成的。而每一個(gè)事務(wù)都是由USB 傳輸?shù)淖罨締挝话╬acket)來組成的,USB 的包主要是由令牌包、數(shù)據(jù)包、握手包和特殊包這四種類型組成的。令牌包和數(shù)據(jù)包又包含不同的類型[4],握手包僅由一個(gè)PID 域組成用以傳輸聯(lián)絡(luò)信號(hào)來反映目前數(shù)據(jù)處理的狀態(tài)。USB 協(xié)議包含了四種數(shù)據(jù)傳輸類型,分別為控制傳輸,批量傳輸,中斷傳輸和同步傳輸,其中控制傳輸是所有設(shè)備必須要支持的傳輸方式,對(duì)時(shí)間沒有嚴(yán)格限制的大量的數(shù)據(jù)傳輸要用到批量傳輸;同步傳輸也被稱為實(shí)時(shí)傳輸。

1 系統(tǒng)設(shè)計(jì)

圖1 整體系統(tǒng)圖

圖 1 中FPGA型號(hào)為Xilinx Virtex-II proxc2vp30,標(biāo)識(shí)為ISP1504 的子板通過FPGA擴(kuò)展口接入到FPGA 開發(fā)板,子板以物理層芯片ISP1504 為核心并配以簡單外圍電路構(gòu)成,上面帶有USB 接口用來插入U(xiǎn)SB 設(shè)備。ISP1504 用來完成數(shù)據(jù)的串行化和解串,以及NRZI編碼和比特位填充等功能。FPGA 中內(nèi)嵌microblaze 軟核處理器,USB 主機(jī)控制器IP 核作為用戶IP 核掛接到處理器的PLB 總線上,再加入U(xiǎn)SB 驅(qū)動(dòng),便可以實(shí)現(xiàn)microblaze 處理器對(duì)全速和高速USB 海量存儲(chǔ)設(shè)備的管理。本文主要介紹USB 主機(jī)控制器IP 核設(shè)計(jì)中的兩個(gè)重要模塊--與物理層接口的ULPI 模塊以及USB2.0 協(xié)議層模塊的設(shè)計(jì)實(shí)現(xiàn)。

2 ULPI 接口模塊的設(shè)計(jì)及實(shí)現(xiàn)

ULPI(UTMI+低引腳數(shù))接口規(guī)范是應(yīng)用于高速通用串行總線(USB)和便攜式USB(USBOTG)收發(fā)器芯片的行業(yè)規(guī)范。ULPI 模塊提供USB 主機(jī)控制器與UTM 正常通信的物理層通道,是主機(jī)控制器實(shí)現(xiàn)正常通信的重要接口之一。該模塊依據(jù)ULPI規(guī)范實(shí)現(xiàn)了總線事件檢測(cè)的功能,完成了上電,正常操作,掛起和復(fù)位狀態(tài)之間的轉(zhuǎn)換等。

此模塊采用狀態(tài)機(jī)來實(shí)現(xiàn),主要通過對(duì) ISP1504 的功能控制寄存器寫入一定的數(shù)據(jù),使得物理層芯片的收發(fā)器進(jìn)入相應(yīng)的狀態(tài)(全速、高速以及高速掛起),對(duì)狀態(tài)機(jī)中時(shí)間控制采用計(jì)數(shù)器實(shí)現(xiàn),主機(jī)端發(fā)送kj 序列對(duì)首先通過寫ISP1504 的功能控制寄存器使之進(jìn)入高速chirp 檢測(cè)狀態(tài),然后在數(shù)據(jù)線上發(fā)送全0 和全1 來完成的。本設(shè)計(jì)USB2.0 主機(jī)控制主要針對(duì)全速和高速海量存儲(chǔ)設(shè)備設(shè)備,全速和高速的狀態(tài)轉(zhuǎn)移圖如圖2 所示:

圖 2 ULPI 模塊狀態(tài)轉(zhuǎn)移圖

芯片上電之后,通過寫ISP1504 的功能控制寄存器的reset 位來復(fù)位芯片,之后通過差分?jǐn)?shù)據(jù)線的狀態(tài)來檢測(cè)是否有設(shè)備插入,并根據(jù)狀態(tài)判斷是低速設(shè)備還是全速設(shè)備(D-為高電平,即連接的設(shè)備為低速設(shè)備。若D+為高電平,即連接的設(shè)備為全速設(shè)備。)需特別說明的是,主機(jī)端對(duì)高速設(shè)備的檢測(cè)并不是一下完成的,是首先置為全速設(shè)備,然后主機(jī)端通過設(shè)置控制功能寄存器驅(qū)動(dòng)出SE0 信號(hào),如果收到設(shè)備發(fā)回的chirp k信號(hào),主機(jī)端就會(huì)發(fā)送線性調(diào)頻的kj 序列對(duì),每個(gè)k 或者j 持續(xù)時(shí)間在40-60us,如果設(shè)備是高速設(shè)備,在檢測(cè)到主機(jī)發(fā)過來的3 個(gè)kj 序列對(duì)之后設(shè)備的控制器會(huì)使其自身進(jìn)入高速模式,即高速收發(fā)正常的操作狀態(tài)。如果沒有收到設(shè)備返回的chirp k 信號(hào)則認(rèn)為是全速設(shè)備回到全速狀態(tài)下進(jìn)行傳輸。當(dāng)總線上沒有數(shù)據(jù)傳輸(空閑狀態(tài))超過3ms,則會(huì)進(jìn)入FS 掛起狀態(tài),當(dāng)收到主機(jī)端發(fā)送的resume信號(hào)時(shí)恢復(fù)到FS狀態(tài),同理如果在高速狀態(tài)下空閑超過3ms,會(huì)先進(jìn)入FS掛起狀態(tài)。

用 VHDL 硬件描述語言完全按照上述狀態(tài)機(jī)轉(zhuǎn)移完成此模塊,在Xilinx ISE 開發(fā)環(huán)境下使用ISE simulator 仿真工具進(jìn)行仿真,仿真波形如圖3 所示:

圖3 ULPI模塊的仿真波形

由于狀態(tài)轉(zhuǎn)移對(duì)時(shí)間的限制,故只截取了部分狀態(tài)作分析。由圖所示,currentST[4:0]反映的是狀態(tài)機(jī)的狀態(tài),linestate[1:0]表示線上狀態(tài)(直接反映D+ D-狀態(tài)),在狀態(tài)1 通過向ISP1504 的84H 地址(控制功能寄存器的地址)寫入61H(置位rst 位)復(fù)位物理層芯片。

在狀態(tài)1 寫完寄存器后置位stp,轉(zhuǎn)到狀態(tài)2 檢測(cè)設(shè)備連接狀態(tài)。在狀態(tài)2,當(dāng)檢測(cè)到linestate變?yōu)?0(D+為高),所以先識(shí)別為全速設(shè)備,轉(zhuǎn)到全速狀態(tài)4。在下一個(gè)時(shí)鐘周期進(jìn)入狀態(tài)6 驅(qū)動(dòng)se0 對(duì)設(shè)備進(jìn)行復(fù)位,然后按照狀態(tài)轉(zhuǎn)移圖最后進(jìn)入高速操作階段。

3 USB2.0 協(xié)議模塊的設(shè)計(jì)和實(shí)現(xiàn)

在 ULPI模塊完成了設(shè)備的狀態(tài)監(jiān)測(cè)和轉(zhuǎn)移之后,等進(jìn)入正常的全速或者是高速模式,就可以按照USB2.0 協(xié)議完成數(shù)據(jù)的傳輸,USB2.0 協(xié)議實(shí)現(xiàn)模塊是主機(jī)控制器實(shí)現(xiàn)的核心模塊,完成USB 數(shù)據(jù)的讀寫和傳輸方式的控制。根據(jù)協(xié)議層的功能主要把協(xié)議層分成三個(gè)子模塊來實(shí)現(xiàn),分別是封包模塊(PA)、拆包模塊(PD)以及控制傳輸?shù)膮f(xié)議引擎模塊( PE )。

3.1 PA PD 模塊的設(shè)計(jì)實(shí)現(xiàn)

封包模塊(PA)需要對(duì)令牌包、數(shù)據(jù)包和握手包三種包按照其對(duì)應(yīng)格式分別進(jìn)行封裝并發(fā)送到ULPI 模塊。開始空閑狀態(tài),接到發(fā)包指令后,判斷發(fā)包類型然后進(jìn)入相應(yīng)的狀態(tài)。例如令牌包需將其PID 域、ADDR 域、ENDP 域以及CRC5 校驗(yàn)域按照順序封裝完成后發(fā)送。

狀態(tài)轉(zhuǎn)移圖如下所示:

圖4 PA模塊狀態(tài)轉(zhuǎn)移圖

拆包模塊(PD)剛好是封包模塊的逆過程,該模塊是把從ULPI 模塊接收到的數(shù)據(jù)包和握手包進(jìn)行拆包。對(duì)數(shù)據(jù)包拆包首先就是要判斷PID 域以確定數(shù)據(jù)包的類型,并且還需對(duì)數(shù)據(jù)進(jìn)行CRC 校驗(yàn)然后根據(jù)該數(shù)據(jù)包的功能將數(shù)據(jù)域內(nèi)容送給要保存數(shù)據(jù)的模塊,圖5 是拆包模塊的狀態(tài)轉(zhuǎn)移圖:

圖 5 PD 模塊狀態(tài)轉(zhuǎn)移圖

仿真結(jié)果如圖6 所示:

圖 6 拆包的仿真波形

在圖6 中,完成一個(gè)包含三個(gè)數(shù)據(jù)域的拆包過程。信號(hào)rx_valid 和rx_active 同時(shí)有效時(shí)rx_data[7:0]代表從ULPI 模塊接收到的數(shù)據(jù),首先根據(jù)接收PID 域值為C3,判斷出該數(shù)據(jù)包的類型為DATA0,pid_data0 信號(hào)為高。Rx_data_st 保存拆包完成后的數(shù)據(jù)域,數(shù)據(jù)是在rx_data_valid 信號(hào)為高電平期間存入rx_data_st 寄存器的,所以接收數(shù)據(jù)為0x00、0x01、0x02、0x03。最后對(duì)接收的CRC 部分進(jìn)行了驗(yàn)證,由于0xef、0x7a 是此包數(shù)據(jù)域正確的CRC 生成碼,所以傳輸無誤情況下crc16_err 一直為0。

3.2 PE 模塊的設(shè)計(jì)實(shí)現(xiàn)

協(xié)議引擎(PE)模塊主要負(fù)責(zé)協(xié)調(diào)PA 和PD 模塊實(shí)現(xiàn)USB 傳輸方式,本設(shè)計(jì)主要實(shí)現(xiàn)兩種傳輸方式即控制傳輸方式和批量傳輸方式。該模塊設(shè)計(jì)的主狀態(tài)轉(zhuǎn)移圖如圖7 所示,狀態(tài)機(jī)在空閑狀態(tài)收到請(qǐng)求傳輸有效信號(hào)transreq后,就會(huì)對(duì)請(qǐng)求類型transtype進(jìn)行判斷。不同的transtype 值代表著不同的傳輸事務(wù)要求。按照不同的要求,主狀態(tài)機(jī)就會(huì)轉(zhuǎn)到相應(yīng)的傳輸事務(wù)狀態(tài)中進(jìn)行處理。

圖 7 PE 模塊主狀態(tài)轉(zhuǎn)移圖

每個(gè)傳輸事務(wù)由不同的狀態(tài)轉(zhuǎn)移過程來實(shí)現(xiàn),以其中的setup 傳輸事務(wù)為例。首先,狀態(tài)機(jī)向PA 模塊發(fā)送發(fā)包使能標(biāo)志,同時(shí)將表示setup 令牌包的值"1101"送給PA 模塊。PA模塊接到發(fā)setup 包指令,就會(huì)按照要求完成封包發(fā)送的工作,最后反饋給PE 模塊一個(gè)發(fā)包結(jié)束的信號(hào)sendpacketen。setup狀態(tài)機(jī)接收到發(fā)包結(jié)束信號(hào)sendpacketen為‘1‘后,就會(huì)轉(zhuǎn)到下一個(gè)狀態(tài)發(fā)data0 數(shù)據(jù)包。在此狀態(tài)下如果收到發(fā)包結(jié)束有效信號(hào),也會(huì)轉(zhuǎn)到下一狀態(tài)接收握手包。在這個(gè)狀態(tài)中,主要是和PD 模塊進(jìn)行通信。PD 模塊通過對(duì)接收的握手包進(jìn)行拆包,來分析包的PID 域是否出錯(cuò)。如果沒有錯(cuò)就會(huì)反饋給PE 模塊包的類型,出錯(cuò)就通過信號(hào)來通知PE 模塊。狀態(tài)機(jī)本狀態(tài)除了要判斷接收包是否出錯(cuò),還要判斷接收包是否超時(shí)。各個(gè)事務(wù)分別完成之后,至此協(xié)議層完成。

圖 8 Setup 事務(wù)狀態(tài)轉(zhuǎn)移圖

4 結(jié)論

本文完成了 USB2.0 主機(jī)控制器中ULPI 模塊與USB2.0 協(xié)議層模塊設(shè)計(jì),此USB2.0 主機(jī)控制器 IP 核主要針對(duì)全速和高速海量存儲(chǔ)設(shè)備。設(shè)計(jì)采用VHDL 語言進(jìn)行RTL 級(jí)描述,使用Xilinx 公司的ISE simulator 工具進(jìn)行波形仿真,仿真結(jié)果驗(yàn)證了設(shè)計(jì)的正確性,并且在Xilinx XUPV2 FPGA 開發(fā)板[8]和帶有USB接口并以物理層芯片ISP1504為核心的子板上進(jìn)行了驗(yàn)證。本文設(shè)計(jì)的USB2.0 主機(jī)控制器可作為獨(dú)立的IP 核移植到其他數(shù)字系統(tǒng)中,擺脫對(duì)USB2.0 主機(jī)控制器ASIC 的依賴,提高產(chǎn)品集成度。

本站聲明: 本文章由作者或相關(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)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉