亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        CAN總線控制器IP設(shè)計(jì)

        2018-11-10 01:55:14汪曉翔
        電子科技 2018年10期

        汪曉翔,馬 琪

        (杭州電子科技大學(xué) 微電子CAD研究所,浙江 杭州 310018)

        隨著應(yīng)用需求的提高,一些設(shè)備在進(jìn)行實(shí)時(shí)數(shù)據(jù)通信時(shí)需要保證數(shù)據(jù)傳輸?shù)姆€(wěn)定可靠性。CAN(Controller Area Network)總線被廣泛應(yīng)用于工業(yè)控制、汽車(chē)電子等設(shè)備之間的通信。隨著嵌入式設(shè)備的廣泛應(yīng)用,越來(lái)越多的設(shè)備之間需要使用CAN總線進(jìn)行通信。為了減少片上系統(tǒng)(System on Chip,SOC)芯片的面積和功耗,需要在SOC芯片上集成CAN總線控制器。

        CAN總線可以在節(jié)點(diǎn)之間實(shí)現(xiàn)自由通信,每個(gè)節(jié)點(diǎn)可以在任意時(shí)間向總線上發(fā)送數(shù)據(jù)。節(jié)點(diǎn)采用標(biāo)識(shí)符代替?zhèn)鹘y(tǒng)的地址編碼,每個(gè)節(jié)點(diǎn)的標(biāo)識(shí)符由11位或29位組成。發(fā)送節(jié)點(diǎn)向總線發(fā)送的數(shù)據(jù)幀包含標(biāo)識(shí)符,接收節(jié)點(diǎn)可以根據(jù)標(biāo)識(shí)符接收相應(yīng)的數(shù)據(jù)幀。數(shù)據(jù)幀的數(shù)據(jù)位最高有8位,可以滿足工業(yè)控制的應(yīng)用需求。針對(duì)工業(yè)應(yīng)用的需求,本文提出了一種實(shí)時(shí)高速率的CAN總線控制器IP設(shè)計(jì)方法。

        1 CAN協(xié)議和特點(diǎn)

        CAN總線控制器需要完成數(shù)據(jù)從物理層、傳輸層到對(duì)象層的傳輸[1-2]。其中,物理層是數(shù)據(jù)傳輸?shù)闹匾浇?;傳輸層,即?shù)據(jù)鏈路層是CAN總線的核心部分,負(fù)責(zé)把從物理層接收到的數(shù)據(jù)提供給對(duì)象層,以及把從對(duì)象層需要發(fā)送的數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)幀提供給物理層。CAN總線控制器需要完成CAN2.0協(xié)議的全部?jī)?nèi)容。

        CAN2.0協(xié)議的報(bào)文幀類型分為:數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀和過(guò)載幀[3-4]。數(shù)據(jù)幀從發(fā)送端傳遞數(shù)據(jù)到接收端,一個(gè)數(shù)據(jù)幀由7個(gè)不同域組成:幀起始域、仲裁域、控制域、數(shù)據(jù)域、CRC域、應(yīng)答域和幀結(jié)尾域;遠(yuǎn)程幀作為數(shù)據(jù)接收端的站通過(guò)其資源節(jié)點(diǎn)對(duì)不同的數(shù)據(jù)傳送進(jìn)行初始化設(shè)置;錯(cuò)誤幀由兩個(gè)不同的域組成,第一個(gè)域是不同站提供的錯(cuò)誤標(biāo)志的疊加,第二個(gè)域是錯(cuò)誤界定符[5-6]。

        CAN總線信息以不同格式的固定報(bào)文發(fā)送,報(bào)文長(zhǎng)度可以自由配置。當(dāng)總線空閑時(shí),任何連接的節(jié)點(diǎn)都可以開(kāi)始發(fā)送新的報(bào)文。CAN節(jié)點(diǎn)可以靈活添加到CAN網(wǎng)絡(luò)中,不需要改變其他信息。CAN節(jié)點(diǎn)報(bào)文具有優(yōu)先級(jí),當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)向總線發(fā)送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)會(huì)主動(dòng)退出,高優(yōu)先級(jí)的節(jié)點(diǎn)不受影響,繼續(xù)發(fā)送信息。CAN總線允許在報(bào)文濾波中將識(shí)別符設(shè)置為可屏蔽的內(nèi)容,從而不接收這組報(bào)文。CAN總線具有嚴(yán)格的錯(cuò)誤檢測(cè)功能,包含位錯(cuò)誤、填充錯(cuò)誤、形式錯(cuò)誤、應(yīng)答錯(cuò)誤和CRC校驗(yàn)[7-8]。

        2 CAN總線控制器的整體結(jié)構(gòu)

        CAN總線控制器主要由狀態(tài)控制寄存器模塊、比特流處理模塊、位時(shí)序模塊、接收濾波模塊、錯(cuò)誤管理模塊、接收發(fā)送FIFO模塊組成。如圖1所示,狀態(tài)控制寄存器模塊包含狀態(tài)控制寄存器和數(shù)據(jù)寄存器;比特流處理模塊主要完成發(fā)送和接收狀態(tài)機(jī)的數(shù)據(jù)傳輸,完成數(shù)據(jù)流的處理;接收濾波模塊屏蔽不想被接收的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)選擇;錯(cuò)誤管理模塊用于檢測(cè)發(fā)送和接收的比特流是否會(huì)出現(xiàn)錯(cuò)誤;接收和發(fā)送FIFO模塊將需要發(fā)送和接收的數(shù)據(jù)緩存在FIFO中,使數(shù)據(jù)傳輸高效進(jìn)行。

        圖1 CAN總線控制器的設(shè)計(jì)結(jié)構(gòu)

        3 CAN總線控制器的模塊設(shè)計(jì)

        3.1 狀態(tài)控制寄存器模塊

        CAN總線控制器是一個(gè)低速模塊單元,掛載在AMBA總線的APB總線上,其接口與APB總線接口相互連接。狀態(tài)控制寄存器模塊定義了CAN總線控制器的狀態(tài)位、控制位、數(shù)據(jù)寄存器位和其他信號(hào)位。軟件和硬件的交互通過(guò)查詢、等待狀態(tài)寄存器的狀態(tài)位進(jìn)行;發(fā)送和接收的數(shù)據(jù)通過(guò)訪問(wèn)數(shù)據(jù)寄存器進(jìn)行。

        3.2 比特流處理模塊

        CAN總線控制器發(fā)送和接收數(shù)據(jù)(比特流)通過(guò)發(fā)送和接收狀態(tài)機(jī)進(jìn)行,如圖2所示。

        圖2 比特流處理狀態(tài)機(jī)

        發(fā)送數(shù)據(jù)由發(fā)送狀態(tài)機(jī)控制。每幀數(shù)據(jù)的標(biāo)識(shí)符和優(yōu)先權(quán)信息決定著每幀數(shù)據(jù)發(fā)送的先后順序。CAN總線控制器的發(fā)送緩沖區(qū)使能后,發(fā)送狀態(tài)機(jī)把緩沖區(qū)的數(shù)據(jù),根據(jù)發(fā)送控制邏輯和移位控制邏輯,按照CAN2.0協(xié)議的數(shù)據(jù)幀格式,將發(fā)送數(shù)據(jù)轉(zhuǎn)換成電平信號(hào),最后由發(fā)送端發(fā)送出數(shù)據(jù)。

        接收數(shù)據(jù)由接收狀態(tài)機(jī)控制。接收起始位之后,進(jìn)入接收起始狀態(tài),根據(jù)幀的標(biāo)識(shí)符信息,判斷是標(biāo)準(zhǔn)幀還是擴(kuò)展幀。控制域信息控制接收數(shù)據(jù)的長(zhǎng)度,把接收域的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)寄存器中,將接收到的數(shù)據(jù)進(jìn)行CRC校驗(yàn),檢查接收的數(shù)據(jù)是否正確。數(shù)據(jù)被正確接收后,發(fā)送接收應(yīng)答信息,接收結(jié)束之后,發(fā)送結(jié)束標(biāo)志,一個(gè)完整的數(shù)據(jù)幀被接收。

        3.3 位時(shí)序邏輯模塊

        同步分為硬同步和重同步。硬同步方式是在起始信號(hào)沿時(shí)刻,將同步段平移至該信號(hào)沿的同步方式。硬同步方式只能作用于幀的起始信號(hào)時(shí)刻。重同步方式是通過(guò)比較總線時(shí)序與節(jié)點(diǎn)時(shí)序相位誤差大小,調(diào)整節(jié)點(diǎn)相位緩沖段的大小,使得節(jié)點(diǎn)時(shí)序與總線時(shí)序同步[9-10]。

        CAN協(xié)議把一個(gè)CAN數(shù)據(jù)的長(zhǎng)度分解成SS段(同步段)、PTS段(傳播時(shí)間段)、PBS1段(相位緩沖段1)、PBS2段(相位緩沖段2)。一個(gè)最小的時(shí)間單位Tq,它是系統(tǒng)時(shí)鐘的整數(shù)倍。

        圖3 位時(shí)序

        3.4 錯(cuò)誤管理模塊和接收發(fā)送FIFO

        CAN總線控制器會(huì)檢測(cè)5種錯(cuò)誤類型:位錯(cuò)誤、填充錯(cuò)誤、CRC錯(cuò)誤、形式錯(cuò)誤和應(yīng)答錯(cuò)誤。位錯(cuò)誤:發(fā)送單元在發(fā)送位的同時(shí),也會(huì)對(duì)發(fā)送的位進(jìn)行檢測(cè)。如果檢測(cè)到的位和發(fā)送的位不相同,則發(fā)送一個(gè)位錯(cuò)誤。

        填充錯(cuò)誤:如果使用位填充法的編碼信息中,檢測(cè)到6個(gè)連續(xù)相同的電平,則發(fā)送填充錯(cuò)誤。CRC錯(cuò)誤:在數(shù)據(jù)接收端接收到的CRC校驗(yàn)碼和發(fā)送的CRC校驗(yàn)碼不相同時(shí),檢測(cè)到CRC錯(cuò)誤,發(fā)送CRC錯(cuò)誤標(biāo)志[11-12]。

        為了提高數(shù)據(jù)發(fā)送和接收速率,控制器在發(fā)送端和接收端均采用8位深度的FIFO設(shè)計(jì)。構(gòu)造FIFO的深度為N(N=3),F(xiàn)IFO指針地址為N+1位。讀指針和寫(xiě)指針采用二進(jìn)制格雷碼表示,當(dāng)讀指針的最高位和寫(xiě)指針的最高位相反,其余位相等的時(shí)候,此時(shí)FIFO為滿,F(xiàn)IFO滿標(biāo)志置1;當(dāng)讀指針和寫(xiě)指針的N+1位全相等的時(shí)候,F(xiàn)IFO為空,F(xiàn)IFO為空標(biāo)志置1。

        3.5 接收濾波模塊

        報(bào)文濾波取決于整個(gè)識(shí)別符。允許在報(bào)文濾波中將任何的識(shí)別符位設(shè)置成屏蔽的內(nèi)容,可以選擇多組識(shí)別符,使之被映射到對(duì)應(yīng)的接收緩沖器中。如果使用屏蔽寄存器,它的每一個(gè)位必須是可編程的,即它們能夠被允許或禁止報(bào)文濾波。屏蔽寄存器的長(zhǎng)度可以包含整個(gè)識(shí)別符,也可以僅包含部分的識(shí)別符[13-15]。

        4 CAN總線控制器的FPGA原型驗(yàn)證

        4.1 FPGA驗(yàn)證平臺(tái)搭建

        為驗(yàn)證CAN總線控制器,通過(guò)搭建集成CAN總線控制器的MCU的FPGA原型驗(yàn)證平臺(tái),采用CAN仿真器來(lái)驗(yàn)證CAN控制器的正確性。如圖4所示, CAN總線控制器集成在Cotex-M0內(nèi)核的MCU上,MCU包含CPU、DMA、SRAM、Flash、AMBA總線、通用串行接口、CAN總線等模塊。 CPU是整個(gè)模塊的核心部件,指令通過(guò)CPU發(fā)出,控制AMBA總線上的各個(gè)模塊有序的工作。SRAM和Flash是MCU的存儲(chǔ)模塊,用以存儲(chǔ)數(shù)據(jù)和程序。通用串行接口、CAN控制器作為MCU外設(shè)掛載到AMBA總線上。

        圖4 集成CAN總線控制器的MCU驗(yàn)證平臺(tái)

        將集成了CAN總線控制器、M0內(nèi)核的MCU的RTL代碼經(jīng)過(guò)FPGA綜合工具綜合、約束、布局布線,生成bit文件,隨后將bit文件下載到FPGA驗(yàn)證平臺(tái),CAN仿真器連接電腦和FPGA。CAN仿真器作為CAN總線上的一個(gè)節(jié)點(diǎn),既可以接收控制器發(fā)送的數(shù)據(jù),又可以向控制器發(fā)送數(shù)據(jù)。CAN仿真器的調(diào)試軟件CANTest作為上位機(jī),可以顯示CAN仿真器發(fā)送和接收的數(shù)據(jù),圖形化接口可以方便調(diào)試。

        圖5 仿真波形圖

        4.2 實(shí)驗(yàn)結(jié)果

        CAN總線控制器的端口上是發(fā)送和接收數(shù)據(jù)的電平信號(hào),通過(guò)VCS仿真工具,觀察端口上的波形,如圖5所示。

        CANTest是致遠(yuǎn)電子開(kāi)發(fā)的一款與CAN仿真器配套的軟件,可以直接采集CAN總線上接收和發(fā)送的數(shù)據(jù),并在終端上顯示采集到的數(shù)據(jù)。連接FPGA與CAN仿真器,將驅(qū)動(dòng)程序下載到FPGA上,進(jìn)行復(fù)位運(yùn)行,記錄端口上發(fā)送和接收的實(shí)驗(yàn)數(shù)據(jù),如表1所示。

        表1 數(shù)據(jù)發(fā)送和接收傳輸結(jié)果

        數(shù)據(jù)傳輸距離受到通信速率的影響,如表2所示:在通信速率1 Mbit·s-1下,在規(guī)定的距離內(nèi),數(shù)據(jù)可以正常的收發(fā);120 m距離傳輸?shù)臈l件下,采用100 kbit·s-1速率可以實(shí)現(xiàn)正常的數(shù)據(jù)傳輸。FPGA驗(yàn)證結(jié)果表明,CAN總線控制器的設(shè)計(jì)滿足設(shè)計(jì)的需求,可以兼容通用的CAN總線控制器,正常完成通信的功能。對(duì)多次實(shí)驗(yàn)中報(bào)文丟失數(shù)量進(jìn)行統(tǒng)計(jì)后發(fā)現(xiàn),CAN總線控制器報(bào)文丟失率低,可以滿足應(yīng)用需求。

        表2 傳輸數(shù)據(jù)結(jié)果

        5 結(jié)束語(yǔ)

        本文對(duì)設(shè)計(jì)的CAN總線控制器進(jìn)行了充分驗(yàn)證,結(jié)果表明其功能滿足設(shè)計(jì)需求,能夠在1 Mbit·s-1速率下進(jìn)行可靠傳輸,遠(yuǎn)距離傳輸報(bào)文丟失率低。CAN總線控制器接口掛載在AMBA總線上,可以方便地移植到其他SOC系統(tǒng)中。

        精品久久精品久久精品| 永久黄网站色视频免费| 亚洲色成人WWW永久在线观看| 亚洲一区二区三区偷拍自拍| 亚洲一区二区三区精品| 亚洲精品无码永久在线观看你懂的| 污污污污污污污网站污| 亚洲嫩模一区二区三区视频| 亚洲天堂av一区二区| 正在播放国产多p交换视频| 久久国产成人精品国产成人亚洲 | 一本一道AⅤ无码中文字幕| 中文字幕乱码一区在线观看| 国产色欲av一区二区三区| 人妻激情偷乱一区二区三区| 国产美女a做受大片免费| 一区二区三区四区亚洲免费| 欧美四房播播| 久草视频福利| 东京道一本热码加勒比小泽| 一本色道久久婷婷日韩| 人妻暴雨中被强制侵犯在线| 性做久久久久久久| 亚洲不卡av二区三区四区| 国产综合色在线精品| 成人免费ā片在线观看| 青青手机在线视频观看| 国产av精品一区二区三区久久| 国产精品久久久久影院| 国产精品青草久久久久婷婷| 国产精品一品二区三区| 中文字幕在线日亚州9| 久久天天躁夜夜躁狠狠躁2022| 午夜视频免费观看一区二区| 日韩亚洲一区二区三区四区| 无码一区二区三区在线| 神马不卡一区二区三级| av高潮一区二区三区| 三年片免费观看大全有| 制服丝袜视频国产一区| 中文字幕亚洲高清精品一区在线|