《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的CAN總線控制器設(shè)計(jì)
基于FPGA的CAN總線控制器設(shè)計(jì)
電子技術(shù)
張雨光 黃啟俊 常 勝
摘要: 使用VerilogHDL硬件描述語(yǔ)言完成了對(duì)CAN總線控制器的設(shè)計(jì),能夠?qū)崿F(xiàn)符合CAN2.0A協(xié)議的所有功能。本總線控制器的外部接口采用Altera公司開(kāi)發(fā)的Avalon總線接口,增強(qiáng)了控制器的應(yīng)用靈活性。本設(shè)計(jì)使用Modelsim
Abstract:
Key words :

摘要:使用Verilog HDL硬件描述語(yǔ)言完成了對(duì)CAN總線控制器設(shè)計(jì),能夠?qū)崿F(xiàn)符合CAN2.0A協(xié)議的所有功能。本總線控制器的外部接口采用Altera公司開(kāi)發(fā)的Avalon總線接口,增強(qiáng)了控制器的應(yīng)用靈活性。本設(shè)計(jì)使用Modelsim軟件完成了功能仿真和時(shí)序仿真。
關(guān)鍵詞:CAN總線;控制器;現(xiàn)場(chǎng)可編程門(mén)陣列

0 引言
    CAN(控制器局域網(wǎng))是一種先進(jìn)的串行通信協(xié)議,由德國(guó)BOSCH公司開(kāi)發(fā),并最終成為國(guó)際標(biāo)準(zhǔn)(ISO11898),是國(guó)際上使用最廣泛的現(xiàn)場(chǎng)總線之一。目前世界上已有20多家CAN總線控制器生產(chǎn)商,110多種CAN總線控制器芯片和集成CAN總線控制器的微處理器芯片。
    由于定制的CAN總線控制器芯片不能嵌入到SoC(片上系統(tǒng))中,而采用分立元器件實(shí)現(xiàn)CAN總線接口,使得系統(tǒng)中器件數(shù)量增加,同時(shí)也增大了系統(tǒng)面積,本文所介紹的CAN總線控制器正是由Verilog HDL語(yǔ)言描述,既可以作為一個(gè)獨(dú)立的設(shè)備,也可以作為一個(gè)模塊集成到FPGA中。
    雖然目前國(guó)內(nèi)外已有很多人研究或設(shè)計(jì)了CAN總線控制器IP核,但其中大多數(shù)只是對(duì)控制器中的某一個(gè)模塊進(jìn)行了研究和設(shè)計(jì),并沒(méi)有實(shí)現(xiàn)一個(gè)完整的CAN總線控制器的功能,例如文獻(xiàn)只對(duì)CAN控制器的狀態(tài)機(jī)進(jìn)行研究,文獻(xiàn)只對(duì)CAN控制器的位定時(shí)模塊進(jìn)行研究。而完整實(shí)現(xiàn)了CAN總線控制器功能的作品中,最高工作頻率又不是很理想,例如Mentor Graphics公司提供的MCAN2D1 CAN2.0 Network Controller的最高工作頻率只有32.46MHz,文獻(xiàn)中介紹的CAN總線控制器的最高工作頻率也只有50MHz,這些IP核顯然不能適應(yīng)高速環(huán)境的要求,同時(shí)文獻(xiàn)中介紹的控制器對(duì)外接口中出現(xiàn)了寄存器使能位等接口,這種接口不符合Avalon總線規(guī)范,不利于集成到FPGA芯片中,其通用性肯定較差,所以研究并設(shè)計(jì)出一款高速且通用性強(qiáng)的CAN總線控制器的IP核仍然是有其重要意義的。

1 系統(tǒng)實(shí)現(xiàn)
1.1 系統(tǒng)框圖
    本設(shè)計(jì)中將整個(gè)CAN控制器系統(tǒng)分為了11個(gè)模塊,分別是Avalon總線接口模塊、寄存器組模塊、接收緩沖器模塊、發(fā)送緩沖器模塊、接收濾波模塊、CRC校驗(yàn)?zāi)K、狀態(tài)機(jī)模塊、標(biāo)識(shí)符填充模塊、錯(cuò)誤計(jì)數(shù)器模塊、位填充模塊、位定時(shí)模塊。其結(jié)構(gòu)框圖如圖1所示。

b.JPG


1.2 主要模塊介紹
1.2.1 寄存器組模塊
    本模塊由位寬為8bit,深度為256的寄存器組實(shí)現(xiàn)其功能,其中已經(jīng)使用的寄存器為23個(gè),其余的供以后擴(kuò)展。本設(shè)計(jì)采用將各個(gè)獨(dú)立的控制及狀態(tài)寄存器集成在一起的設(shè)計(jì)思想,任何對(duì)控制器的初始化以及數(shù)據(jù)的接收和發(fā)送都是從寫(xiě)寄存器組開(kāi)始的。
1.2.2 CRC校驗(yàn)?zāi)K
    CRC(循環(huán)冗余校驗(yàn)碼)是一種能力非常強(qiáng)的檢錯(cuò)、糾錯(cuò)碼,常用于串行傳送的輔助存儲(chǔ)器與主機(jī)的數(shù)據(jù)通信和計(jì)算機(jī)網(wǎng)絡(luò)中。它的基本原理是:在k位信息碼后再拼接r位的校驗(yàn)碼,整個(gè)編碼長(zhǎng)度為n位,因此,這種編碼又叫(n,k)碼。對(duì)于一個(gè)給定的(n,k)碼,可以證明存在一個(gè)最高次冪位n-k=r的多項(xiàng)式g(x),根據(jù)g(x)可以生成七位信息的校驗(yàn)碼,而g(x)叫做這個(gè)CRC碼的生成多項(xiàng)式。
    CAN總線協(xié)議就是采用的CRC校驗(yàn),并且是16位的C R C-1 6校驗(yàn)碼, 生成多項(xiàng)式為,可轉(zhuǎn)換為二進(jìn)制碼組1100010110011001。生成CRC碼的具體過(guò)程是:由幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)(數(shù)據(jù)幀有數(shù)據(jù)場(chǎng),遠(yuǎn)程幀沒(méi)有數(shù)據(jù)場(chǎng))組成的被除數(shù)右移15位后與生成多項(xiàng)式的二進(jìn)制碼組進(jìn)行模2除,生成的15位余數(shù)就是所需的CRC碼。
    本模塊的主要作用有兩個(gè):1)在控制器處于發(fā)送狀態(tài)時(shí),計(jì)算出CRC碼,同時(shí)將幀起始、仲裁場(chǎng)、控制場(chǎng)、(數(shù)據(jù)場(chǎng))、CRO場(chǎng)按幀格式的要求進(jìn)行打包;2)在控制器處于接收狀態(tài)時(shí),將接收到的由幀起始、仲裁場(chǎng)、控制場(chǎng)、(數(shù)據(jù)場(chǎng))、CRC場(chǎng)組成的被除數(shù)與生成多項(xiàng)式的二進(jìn)制碼組進(jìn)行模2除,結(jié)果為0,則接受數(shù)據(jù),不為0,則丟棄數(shù)據(jù),并產(chǎn)生CRC校驗(yàn)錯(cuò)誤。
1.2.3 立填充模塊
    在CAN總線協(xié)議中,當(dāng)控制器處于發(fā)送或接收狀態(tài)時(shí),若控制器檢測(cè)到總線上出現(xiàn)連續(xù)6個(gè)相同極性的電平時(shí)(幀結(jié)尾除外),控制器將會(huì)檢測(cè)到錯(cuò)誤而停止發(fā)送或接收數(shù)據(jù),此時(shí)控制器將會(huì)由發(fā)送或接收狀態(tài)轉(zhuǎn)換為錯(cuò)誤狀態(tài)。
    本模塊的主要作用是:在發(fā)送狀態(tài)時(shí),連續(xù)發(fā)送5個(gè)相同極性的位時(shí),若第5位與將要發(fā)送的第6位極性不同時(shí),在第5位和第6位之間插入1個(gè)極性與第6位相同的位,若第5位與將要發(fā)送的第6位極性相同,在第5位和第6位之間插入1個(gè)極性與第6位相反的位;在接收狀態(tài)時(shí),連續(xù)接收5個(gè)相同極性的位時(shí),若第6位與之前5位的極性不同,則舍棄第6位,若第6位與之前5位的極性相同,則產(chǎn)生位填充錯(cuò)誤,控制器將停止接收數(shù)據(jù),此時(shí)控制器也將由接收狀態(tài)轉(zhuǎn)換為錯(cuò)誤狀態(tài)。同時(shí),本模塊也具有檢測(cè)位錯(cuò)誤,位填充錯(cuò)誤,形式錯(cuò)誤及應(yīng)答錯(cuò)誤的功能。另外,模塊還具有生成錯(cuò)誤幀、過(guò)載幀、間歇幀的功能。
1.2.4 狀態(tài)機(jī)模塊
    狀態(tài)機(jī)模塊在整個(gè)控制器中扮演著“大腦”的作用,它控制著其它模塊的操作。相比于文獻(xiàn)中未采用狀態(tài)機(jī)的設(shè)計(jì),采用狀態(tài)機(jī)會(huì)使得各個(gè)模塊的功能作用更為明確,系統(tǒng)結(jié)構(gòu)更為清晰合理,同時(shí)也更便于各個(gè)模塊之間的協(xié)調(diào)控制。本狀態(tài)機(jī)模塊的設(shè)計(jì)采用和文獻(xiàn)中相同的設(shè)計(jì),將控制器分為了10種模式:總線脫離、總線啟動(dòng)、總線空閑、模式選擇、發(fā)送模式、接收模式、錯(cuò)誤模式、間歇模式、超載模式及掛起模式。CAN狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖如圖2所示。

c.JPG


    掉電、復(fù)位及總線上過(guò)多的錯(cuò)誤都會(huì)使控制器進(jìn)入總線脫離模式;系統(tǒng)上電、復(fù)位解除或過(guò)多錯(cuò)誤而復(fù)位后的下個(gè)時(shí)鐘會(huì)使控制器進(jìn)入總線啟動(dòng)模式;在總線啟動(dòng)模式下,若之前因掉電、復(fù)位使控制器進(jìn)入總線脫離模式,當(dāng)控制器監(jiān)測(cè)到總線上1次連續(xù)11個(gè)隱性位(邏輯電平1”)時(shí),控制器進(jìn)入總線空閑狀態(tài),若因過(guò)多錯(cuò)誤使控制器進(jìn)入總線脫離模式,則當(dāng)控制器監(jiān)測(cè)到總線上128次連續(xù)11個(gè)隱性位時(shí),控制器進(jìn)入總線空閑模式;當(dāng)控制器沒(méi)有數(shù)據(jù)發(fā)送但監(jiān)測(cè)到總線上有顯性位(邏輯電平“0”)時(shí),控制器進(jìn)入接收模式,而當(dāng)控制器有數(shù)據(jù)發(fā)送同時(shí)監(jiān)測(cè)到總線上有顯性位時(shí),控制器進(jìn)入模式選擇模式;模式選擇其實(shí)就是一個(gè)總線仲裁,此時(shí)標(biāo)識(shí)符將扮演仲裁位的角色,顯性位的優(yōu)先級(jí)更高,若總線仲裁失敗則控制器進(jìn)入接收模式,仲裁成功則進(jìn)入發(fā)送模式;一幀數(shù)據(jù)成功發(fā)送完成后,控制器會(huì)進(jìn)入間歇模式;若間歇幀發(fā)送成功,則控制器會(huì)再次進(jìn)入總線空閑模式。狀態(tài)機(jī)由空閑模式轉(zhuǎn)換為模式選擇模式的仿真圖如圖3所示。

d.JPG


1.2.5 位定時(shí)模塊
    位定時(shí)模塊控制著控制器報(bào)文發(fā)送或接收的節(jié)奏,這個(gè)節(jié)奏就是位時(shí)間,它由四部分組成:同步段、傳播段、相位緩沖段1和相位緩沖段2,這四個(gè)段均由時(shí)間份額構(gòu)成,時(shí)間份額是根據(jù)預(yù)先設(shè)置的分頻值對(duì)輸入時(shí)鐘進(jìn)行分頻得到的。
    位定時(shí)模塊還有一個(gè)重要的功能是將本節(jié)點(diǎn)與總線上的其它節(jié)點(diǎn)進(jìn)行時(shí)鐘同步。由于每個(gè)CAN節(jié)點(diǎn)使用的是獨(dú)立的時(shí)鐘,所以不同節(jié)點(diǎn)之間會(huì)有相位差,這些相位差嚴(yán)重時(shí)會(huì)影響報(bào)文發(fā)送和接收的準(zhǔn)確性,所以有必要對(duì)不同節(jié)點(diǎn)進(jìn)行時(shí)鐘同步。

2 系統(tǒng)驗(yàn)證
    整個(gè)系統(tǒng)的功能仿真和時(shí)序仿真是借助Modelsim軟件完成的。圖4所示是對(duì)控制器發(fā)送數(shù)據(jù)的驗(yàn)證,測(cè)試用的發(fā)送數(shù)據(jù)為隨意選擇的:00101001,仲裁場(chǎng)和控制場(chǎng)也是任選的,分別為:110100101110、110001,設(shè)置好寄存器組后,控制器計(jì)算出對(duì)應(yīng)的CRC碼為:110111001111 011,之后控制器將數(shù)據(jù)按CAN協(xié)議的幀格式打包逐位發(fā)送出去。

e.JPG


    控制器最初處于總線脫離模式,復(fù)位結(jié)束后進(jìn)入總線啟動(dòng)模式,當(dāng)控制器檢測(cè)到總線上的1次連續(xù)11個(gè)隱性位時(shí),進(jìn)入總線空閑模式,接著當(dāng)控制器檢測(cè)到總線出現(xiàn)第一個(gè)顯性位時(shí),進(jìn)入模式選擇模式,在此模式下,控制器進(jìn)行的操作就是總線仲裁,確定本節(jié)點(diǎn)是否獲得總線控制權(quán),由于本測(cè)試采用的是控制器自測(cè)模式,即輸出線與輸入線連在一起,所以仲裁時(shí)間為12個(gè)位時(shí)間,仲裁成功后,控制器會(huì)進(jìn)入發(fā)送模式,若無(wú)錯(cuò)誤產(chǎn)生,數(shù)據(jù)發(fā)送完成后控制器進(jìn)入間歇模式,最后進(jìn)入總線空閑模式。
    經(jīng)過(guò)一系列的測(cè)試驗(yàn)證后,表明本CAN總線控制器能夠發(fā)送或接收所有符合CAN2.0A協(xié)議的報(bào)文幀。

3 結(jié)束語(yǔ)
    本設(shè)計(jì)實(shí)現(xiàn)了所有符合CAN2.0A協(xié)議的CAN總線控制器功能,最高工作頻率為139.43MHz,這也達(dá)到了最初的設(shè)計(jì)目的。控制器的時(shí)序分析如圖5所示。

a.JPG


    本文作者創(chuàng)新點(diǎn)為:首先控制器的外圍接口采用Avalon總線接口,這使得本設(shè)計(jì)的通用性更強(qiáng):其次是本設(shè)計(jì)的最高工作頻率達(dá)到了139.43MHz,能夠適應(yīng)高速通信的要求。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一级二级三级蜜桃| 99日韩精品| 99国内精品| 亚洲日本国产| 亚洲欧洲另类| 亚洲破处大片| 亚洲国产视频一区| 在线日韩av片| 亚洲国产一区二区在线| 亚洲福利专区| 亚洲精品久久视频| 亚洲免费观看高清完整版在线观看熊 | 一本色道久久综合一区| 亚洲精品国产精品国自产在线| 精品电影在线观看| 国产一区二区观看| 国产专区综合网| 国外成人网址| 亚洲成色999久久网站| 亚洲国产二区| 99www免费人成精品| 一区二区三区四区蜜桃| 亚洲一区久久久| 欧美一区二区三区免费视频| 午夜精品久久久久久久99樱桃| 亚洲国产综合在线| 亚洲欧洲日本在线| 中文国产亚洲喷潮| 午夜免费在线观看精品视频| 欧美一区二区高清| 久久精品国产精品| 亚洲免费av电影| 亚洲一区二区在| 欧美一区精品| 麻豆视频一区二区| 欧美精品一区二区三区高清aⅴ| 久久精品在线免费观看| 久久亚洲综合网| 欧美日韩国产成人高清视频| 国产精品视频一| 激情六月婷婷久久| 99re热这里只有精品视频| 亚洲欧美日韩一区二区| 亚洲国产欧美日韩精品| 一区二区三区四区国产精品| 午夜亚洲精品| 女女同性女同一区二区三区91| 欧美中文字幕视频| 蜜臀a∨国产成人精品| 国产精品第2页| 亚洲成人在线| 一区二区三区视频观看| 久久国产精品99久久久久久老狼| 亚洲欧美视频在线观看视频| 亚洲高清一区二区三区| 亚洲午夜精品一区二区三区他趣| 日韩网站免费观看| 亚洲欧美日韩区| 久久久久久综合| 欧美日韩国产精品 | 伊人精品成人久久综合软件| 亚洲欧洲精品一区| 午夜在线a亚洲v天堂网2018| 亚洲免费av电影| 久久精品日韩欧美| 欧美日韩亚洲一区二区三区在线观看| 欧美激情亚洲自拍| 国产精品久久| 亚洲国产成人av| 午夜日韩视频| 这里只有精品丝袜| 狂野欧美性猛交xxxx巴西| 欧美视频在线观看免费| 影音先锋亚洲电影| 亚洲欧美日韩在线综合| 一区二区三区产品免费精品久久75 | 亚洲美女黄网| 久久精品一区| 国产精品成人免费精品自在线观看| 欧美日韩中文字幕在线视频| 国产一区二区三区免费在线观看| 国内揄拍国内精品久久| 亚洲精选91| 亚洲国产日韩在线| 欧美在线黄色| 国产精品久久久久久久久搜平片 | 国产一区二区三区不卡在线观看 | 欧美亚洲综合网| 亚洲视频 欧洲视频| 欧美 日韩 国产 一区| 国产视频亚洲精品| 亚洲手机成人高清视频| 99伊人成综合| 欧美大片免费看| 有坂深雪在线一区| 久久av免费一区| 久久爱www久久做| 国产精品视频1区| 一区二区三区成人| 亚洲免费播放| 欧美激情视频一区二区三区免费| 欧美无乱码久久久免费午夜一区| 国产精品日日摸夜夜摸av| 日韩午夜精品| 一本色道久久综合| 欧美精品一区二区三区在线播放 | av成人免费在线| 另类av一区二区| 狠狠色综合日日| 欧美在线观看一区| 久久av资源网| 国产日韩欧美在线一区| 亚洲欧美日本日韩| 性伦欧美刺激片在线观看| 欧美午夜精品理论片a级按摩| 国产视频一区在线| 亚洲在线成人精品| 欧美一级夜夜爽| 国产伦精品一区二区三区高清版| 国内成+人亚洲+欧美+综合在线| 在线观看亚洲a| 亚洲电影欧美电影有声小说| 久久综合一区二区| 国产在线播放一区二区三区| 午夜精品久久久久99热蜜桃导演| 亚洲九九九在线观看| 美乳少妇欧美精品| 亚洲国产精品精华液网站| 最新高清无码专区| 欧美精品免费视频| 99国产一区| 亚洲男同1069视频| 国产精品资源| 欧美中文字幕| 牛牛国产精品| 亚洲精品一区二区三| 亚洲性av在线| 国产欧美日韩视频| 欧美一区二区在线免费播放| 卡通动漫国产精品| 亚洲国产欧美不卡在线观看| 日韩小视频在线观看专区| 国产精品mm| 欧美与黑人午夜性猛交久久久| 亚洲欧美日韩一区二区| 欧美少妇一区二区| 亚洲一区中文| 国产精品99久久99久久久二8| 久久婷婷丁香| 亚洲国产成人av好男人在线观看| 亚洲在线一区| 久久精品国产免费看久久精品| 国产精品国产三级欧美二区 | 亚洲高清不卡在线观看| 一个人看的www久久| 国产精品日韩欧美| 亚洲高清影视| 欧美色综合天天久久综合精品| 亚洲一区视频在线| 亚洲精品日产精品乱码不卡| 亚洲国产精品999| 日韩亚洲欧美成人| 国产精品私人影院| 亚洲福利专区| 欧美精品在线免费观看| 亚洲一区视频在线| 免费日韩av| 亚洲一区二区三区精品视频| 久久五月激情| 99re6这里只有精品| 久久久久国产一区二区三区| 亚洲精品日本| 久久国产天堂福利天堂| 亚洲日本中文字幕免费在线不卡| 亚洲娇小video精品| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲欧美日本国产有色| 久久久久久伊人| 99re在线精品| 久久精品一区二区三区不卡牛牛| 国产欧美一区二区三区国产幕精品| 韩国福利一区| 一区二区三区四区蜜桃| 国产欧美日韩精品丝袜高跟鞋| 亚洲欧美一区二区精品久久久| 亚洲香蕉伊综合在人在线视看| 欧美激情在线观看| 亚洲在线观看视频| 欧美精品福利在线| 午夜一区二区三区不卡视频| 欧美人与性动交a欧美精品| 欧美一区二区在线播放| 欧美色123| 亚洲国产另类久久精品| 国产精品久久久久久久久免费桃花| 亚洲视频在线看| 欧美a级理论片| 欧美一区二区三区的| 欧美日韩在线观看一区二区| 亚洲激情偷拍|