基于FPGA的CAN總線控制器設(shè)計(jì)
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ā)送都是從寫寄存器組開始的。
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碼的具體過程是:由幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)(數(shù)據(jù)幀有數(shù)據(jù)場(chǎng),遠(yuǎn)程幀沒有數(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ò)誤幀、過載幀、間歇幀的功能。
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所示。本文引用地址:http://butianyuan.cn/article/191153.htm
評(píng)論