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

        ?

        基于FPGA的CAN總線控制器設(shè)計(jì)

        2019-09-13 01:02:40紀(jì)振平
        關(guān)鍵詞:狀態(tài)機(jī)寄存器時(shí)序

        紀(jì)振平,王 航

        (沈陽理工大學(xué) 自動化與電氣工程學(xué)院,沈陽 110159)

        現(xiàn)場總線是由電氣及自動化領(lǐng)域發(fā)展而來的一種數(shù)據(jù)總線,其主要目的是為了解決工業(yè)領(lǐng)域的儀器儀表、控制器、執(zhí)行部件等設(shè)備間的數(shù)字通信以及這些控制器和控制系統(tǒng)之間的信息傳遞的問題。在眾多現(xiàn)場總線中德國 Bosch 公司推出的CAN(Controller Area Network)總線以其實(shí)時(shí)性強(qiáng)、可靠性高、功能完善、成本合理等突出優(yōu)點(diǎn),被越來越廣泛地應(yīng)用于自動化領(lǐng)域中[1]。

        FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物,是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)[2]。在電子計(jì)算機(jī)斷層掃描的成像過程中,由于系統(tǒng)中有大量的模擬、數(shù)字信號需要處理,傳統(tǒng)單片機(jī)的引腳數(shù)量遠(yuǎn)遠(yuǎn)不夠,能處理的電平信號種類單一且片上外設(shè)部分功能冗余。所以通常采用FPGA作為電子計(jì)算機(jī)斷層掃描設(shè)備的硬件功能控制器。

        傳統(tǒng)FPGA_CAN總線通信節(jié)點(diǎn)模式為 FPGA+SJA1000+PCA82C250。在該模式下的CAN通信節(jié)點(diǎn)中,F(xiàn)PGA輸出的信號經(jīng)電平轉(zhuǎn)化為5V標(biāo)準(zhǔn)驅(qū)動SJA1000,SJA1000則根據(jù)輸入信號的時(shí)序關(guān)系從總線AD獲取或發(fā)送數(shù)據(jù)。從FPGA獲取的數(shù)據(jù)經(jīng)過處理后,組成標(biāo)準(zhǔn)格式的數(shù)據(jù)幀通過驅(qū)動器PCA82C250發(fā)送到傳輸線CANH和CANL上的CAN總線通信模式[3]。本文所設(shè)計(jì)的CAN總線控制器是基于FPGA設(shè)計(jì)一個(gè)集成在其內(nèi)部的CAN總線控制器,相較于傳統(tǒng)的FPGA-CAN通信節(jié)點(diǎn),具有減少了硬件電路設(shè)計(jì),節(jié)約成本,使用更加靈活,專用性與集成度更高等特點(diǎn)。

        1 CAN總線協(xié)議層簡介

        1.1 CAN通信協(xié)議幀格式

        CAN總線協(xié)議的報(bào)文種類分為五種,分別是數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過載幀、幀間隔,其中最為核心的是數(shù)據(jù)幀。數(shù)據(jù)幀由 7 個(gè)位場構(gòu)成,包括幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC 場、應(yīng)答場、幀結(jié)尾[4]。

        1.2 CAN總線位時(shí)序

        CAN總線協(xié)議的報(bào)文由各個(gè)數(shù)據(jù)位組成,CAN總線協(xié)議把每一個(gè)數(shù)據(jù)位的時(shí)序拆解成四部分。每個(gè)數(shù)據(jù)位均包括同步段(SS段),傳播時(shí)間段(PTS段),相位緩沖1段(PBS1段),相位緩沖2段(PBS2段)。CAN協(xié)議中定義了時(shí)間份額Tq,其長度是系統(tǒng)工作時(shí)鐘tSCL的倍數(shù)[4]。在1個(gè)數(shù)據(jù)位中,同步段為1個(gè)時(shí)間份額,傳播段可設(shè)置為1~8個(gè)時(shí)間份額,相位緩沖段1可設(shè)為1~8個(gè)時(shí)間份額,信息處理時(shí)間小于或等于2個(gè)時(shí)間份額,相位緩沖段2為相位緩沖段1和信息處理時(shí)間的最大值。1個(gè)位時(shí)間總的可以包括 8~25個(gè)時(shí)間份額[5]。

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

        為增強(qiáng)CAN總線節(jié)點(diǎn)的通信性能,并減少對FPGA片上資源的占用。本文從優(yōu)化控制器結(jié)構(gòu)和采用時(shí)序邏輯進(jìn)行功能模塊設(shè)計(jì)兩方面入手,建立了性能優(yōu)于以往的CAN總線控制器模塊。

        在設(shè)計(jì)過程中,采用EDA設(shè)計(jì)的經(jīng)典設(shè)計(jì)思路,即自頂向底設(shè)計(jì),自底向頂實(shí)現(xiàn)。其設(shè)計(jì)過程如圖1所示。

        圖1 CAN控制器的設(shè)計(jì)過程

        2.1 控制器的新型結(jié)構(gòu)設(shè)計(jì)

        在傳統(tǒng)CAN總線控制器的設(shè)計(jì)中,各個(gè)功能模塊間不存在例化關(guān)系,而是共同例化于頂層模塊。在這種結(jié)構(gòu)下,寄存器處理模塊(REG)對位流處理器模塊(BSP)和位時(shí)序控制模塊(BTL)的配置參數(shù)需要先傳遞到頂層模塊,再由頂層模塊傳遞至子模塊;而由位流處理器模塊接收到的信息也由相反的順序送回到寄存器處理模塊。因此,對于片上資源的占用和時(shí)序的延遲都有一定的影響。

        本文采用了新型的控制器結(jié)構(gòu),用于取代傳統(tǒng)設(shè)計(jì)結(jié)構(gòu)。在該結(jié)構(gòu)下,寄存器處理模塊(REG)可直接對位流處理器模塊(BSP)和位時(shí)序控制模塊(BTL)進(jìn)行參數(shù)配置和收發(fā)信息的交互,減少片上資源的占用和時(shí)序的延遲。兩種結(jié)構(gòu)的對比如圖2所示。

        2.2 采用時(shí)序邏輯的功能模塊設(shè)計(jì)

        時(shí)序邏輯電路是數(shù)字邏輯電路的重要組成部分,主要由存儲電路和組合邏輯電路兩部分組成。

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

        時(shí)序邏輯電路在任何一個(gè)時(shí)刻的輸出狀態(tài)由當(dāng)時(shí)的輸入信號和電路原來的狀態(tài)共同決定,而其的狀態(tài)主要是由存儲電路來記憶和表示的。同時(shí)時(shí)序邏輯電路在結(jié)構(gòu)以及功能上的特殊性,相較其他種類的數(shù)字邏輯電路而言,往往具有難度大、電路復(fù)雜并且應(yīng)用范圍廣的特點(diǎn)[6]。

        在傳統(tǒng)的CAN總線控制器設(shè)計(jì)中,大量的位時(shí)序切換信號設(shè)計(jì)使用了組合邏輯設(shè)計(jì)。在新型的CAN總線控制器設(shè)計(jì)中,則改為使用時(shí)序邏輯設(shè)計(jì)。將傳統(tǒng)CAN總線控制器位時(shí)序切換信號所采用的組合邏輯放入寄存器內(nèi),并添加時(shí)鐘信號變?yōu)闀r(shí)序邏輯。使得整個(gè)控制器都在同一時(shí)鐘的控制下,降低了組合邏輯中存在競爭冒險(xiǎn)的可能性,提高了CAN總線節(jié)點(diǎn)的穩(wěn)定性。信號采用組合邏輯設(shè)計(jì)的程序如下。

        assing hard_sync=(rx_idle | rx_inter)&(~rx)& sampled_bit &(~hard_sync_blocked)

        信號采用時(shí)序邏輯設(shè)計(jì)的程序如下所示。

        assign @(posedge sys_clk_i,negedge rst_n_i)begin

        if(!rst_n_i)

        hard_sync <=1’b0;

        else if((rx_idle | rx_inter)&(~rx)& sampled_bit &(~hard_sync_blocked)

        hard_sync <=1’b1;

        else

        hard_sync <=1’b0;

        end

        2.2.1 REG模塊設(shè)計(jì)

        REG模塊作為寄存器處理模塊,負(fù)責(zé)對CAN_controller寄存器的配置信息進(jìn)行存儲,包括各個(gè)待接收發(fā)送數(shù)據(jù)的寄存器,驗(yàn)收代碼寄存器,驗(yàn)收屏蔽寄存器,總線定時(shí)器。

        REG模塊在對一個(gè)寄存器賦值的過程中,通過8位輸入端口write_in,寫入16位二進(jìn)制數(shù),分別代表8位地址與8位數(shù)據(jù)。在地址輸入時(shí),將ale信號拉高,完成后拉低ale信號,從而對地址鎖存。而后拉低wr信號輸入數(shù)據(jù),既可對地址所對應(yīng)的寄存器賦值。

        REG模塊在讀取一個(gè)寄存器的過程中,通過8位輸入端口write_in,輸入表示地址的8位二進(jìn)制數(shù)。在地址輸入時(shí),將ale信號拉高,完成后拉低ale信號,從而對地址鎖存。而后拉低rd信號,即可通過8位輸出端口readback得到寄存器內(nèi)數(shù)據(jù)。

        2.2.2 BTL模塊設(shè)計(jì)

        BTL模塊作為CAN總線控制器的位時(shí)序控制模塊,負(fù)責(zé)檢測CAN總線狀態(tài)和處理與總線有關(guān)的位時(shí)序,并根據(jù)波特率寄存器中的設(shè)置值向位流處理器(BSP)提供采樣點(diǎn)與采樣值,提供發(fā)送標(biāo)志位。該模塊在總線上進(jìn)行檢測,當(dāng)出現(xiàn)幀起始信號進(jìn)行硬同步,并在接收數(shù)據(jù)的過程中,每一個(gè)下降沿都進(jìn)行重同步檢測,以REG模塊提供的可編程時(shí)間段PBS1段和PBS2段補(bǔ)償傳播延遲時(shí)間,以保證節(jié)點(diǎn)的數(shù)據(jù)連續(xù)性。

        BTL模塊包含基于位時(shí)序邏輯設(shè)計(jì)的狀態(tài)機(jī),在CAN時(shí)序邏輯中,同步段SS,傳播時(shí)間段PTS、第一相位相位緩沖段PBS1、第二相位緩沖段PBS2等四段共同構(gòu)成一個(gè)數(shù)據(jù)位。

        位時(shí)序狀態(tài)機(jī)是有限狀態(tài)機(jī)(FSM),共包含三個(gè)狀態(tài),分別是:包含SS段的SYNC狀態(tài);包含PTS段與PBS1段的SEG1狀態(tài);包含PBS2段的SEG2狀態(tài)。

        當(dāng)發(fā)生接收時(shí),輸入信號rx應(yīng)在狀態(tài)機(jī)中的完整經(jīng)過一整個(gè)狀態(tài),才能被判定為接收到一個(gè)完整數(shù)據(jù)位。

        三個(gè)狀態(tài)間轉(zhuǎn)換的關(guān)系如圖3所示。

        圖3 BTL模塊內(nèi)位時(shí)序狀態(tài)機(jī)

        在接收過程中,采樣點(diǎn)位于發(fā)生在SEG1狀態(tài)與SEG2狀態(tài)之間;在發(fā)送過程中,發(fā)送點(diǎn)位于SEG2狀態(tài)與SYNC狀態(tài)之間。

        2.2.3 BSP模塊設(shè)計(jì)

        BSP模塊作為CAN總線控制器的位流處理器模塊,主要負(fù)責(zé)CAN總線節(jié)點(diǎn)的數(shù)據(jù)流發(fā)送接收,它還在CAN總線上執(zhí)行錯(cuò)誤檢測、總線應(yīng)答、位填充、CRC校驗(yàn)和驗(yàn)收濾波等功能。

        BSP模塊包含基于CAN總線數(shù)據(jù)流邏輯設(shè)計(jì)的接收狀態(tài)機(jī)和發(fā)送狀態(tài)機(jī),二者皆為有限狀態(tài)機(jī)(FSM)。通過對總線狀態(tài)的判斷和上層命令的識別,分別執(zhí)行對CAN總線數(shù)據(jù)流的接收與發(fā)送。接收與發(fā)送期間的狀態(tài)機(jī)流程如圖4所示。

        圖4 接收與發(fā)送期間的狀態(tài)機(jī)流程

        在接收狀態(tài)中,共包含rx_inte(幀間隔)、rx_idle(總線空閑)、rx_id(幀ID段)、rx_rtr(幀rtr位)、rx_ide(幀IDE位)、rx_r0(幀r0位)、rx_dlc(幀DLC段)、rx_data(幀數(shù)據(jù)場)、rx_crc(幀CRC段)、rx_crc_lim(幀CRC界定符)、rx_ack(幀應(yīng)答)、rx_ack_lim(幀應(yīng)答界定符)、rx_eof(幀結(jié)尾)等13個(gè)狀態(tài)。

        在發(fā)送狀態(tài)中,共包含tx_idle(發(fā)送總線空閑)、tx_arb_control(發(fā)送幀控制場)、tx_data(發(fā)送幀數(shù)據(jù))、tx_crc(發(fā)送幀CRC)、tx_end(發(fā)送幀結(jié)尾)等5個(gè)狀態(tài)。

        BSP模塊中包含作為篩選器的ACR,AMR模塊。在CAN總線控制器處于接收狀態(tài)時(shí),會將接收到的數(shù)據(jù)流中仲裁段(ID號)的高8位,與CAN總線控制器中驗(yàn)收代碼寄存器(ACR),驗(yàn)收屏蔽寄存器(AMR)的設(shè)定值進(jìn)行計(jì)算。若ACR[7∶0]與ID號的高八位進(jìn)行“與”運(yùn)算的結(jié)果,再和AMR[7∶0]進(jìn)行”或”運(yùn)算的最終值為8’b1111_1111,則該條信息可以被節(jié)點(diǎn)所接收。

        BSP模塊中還包括用于檢查CAN總線發(fā)生位錯(cuò)誤,填充錯(cuò)誤,格式錯(cuò)誤,CRC錯(cuò)誤與應(yīng)答錯(cuò)誤等五種錯(cuò)誤的錯(cuò)誤處理模塊(ERR),若出現(xiàn)錯(cuò)誤數(shù)量大于127個(gè)時(shí),CAN總線將斷開與總線的連接,并將標(biāo)志位置為“1”提示使用人員。

        3 測試結(jié)果與比較

        3.1 CAN總線控制器的功能驗(yàn)證

        選取ID號為0x250的CAN標(biāo)準(zhǔn)幀做發(fā)送測試,該段信息長度為8byte,波特率為1M。當(dāng)控制器通過TX引腳向總線發(fā)送信息時(shí),同在總線上的RX引腳能捕捉到每一個(gè)由TX引腳發(fā)出的信號,在CRC界定符發(fā)送完畢時(shí),RX引腳捕捉到一個(gè)不由TX引腳發(fā)出的顯性電平,表示總線上已有節(jié)點(diǎn)對該段信息進(jìn)行了接收。

        選取ID號為0x110的CAN標(biāo)準(zhǔn)幀做接收測試,該測試段的信息長度和波特率均與發(fā)送測試信息段相同。當(dāng)控制器通過RX引腳接收到總線數(shù)據(jù)時(shí),在CRC界定符接收完畢時(shí),若驗(yàn)證CRC無誤,且接收過程中未發(fā)生錯(cuò)誤,則TX引腳將向總線發(fā)送一個(gè)顯性電平,表示本節(jié)點(diǎn)已正確接收。利用邏輯分析儀對CAN總線邏輯電平的監(jiān)測結(jié)果如圖5所示。

        圖5 CAN總線控制器處于接收與發(fā)送的狀態(tài)

        3.2 性能比較

        3.2.1 FPGA的占用資源比較

        在生成供FPGA使用的比特流文件后,對比傳統(tǒng)CAN總線控制器與新型CAN總線控制器對FPGA的資源占用情況如圖6所示。

        圖6 FPGA內(nèi)部資源占用的比較

        由圖6可見,即使采用時(shí)序邏輯設(shè)計(jì)增加了部分寄存器資源的占用,但新型CAN總線控制器的總體資源占用仍要小于傳統(tǒng)的CAN總線控制器。

        3.2.2 CAN總線節(jié)點(diǎn)的通信性能比較

        本文通過將兩個(gè)燒入了CAN總線控制器比特流文件的FPGA與CAN總線分析儀掛載于同一波特率為1M的閉環(huán)CAN總線進(jìn)行測試。在實(shí)驗(yàn)過程中A機(jī)向總線發(fā)送由隨機(jī)數(shù)據(jù)構(gòu)成的數(shù)據(jù)包,B機(jī)接收數(shù)據(jù)包并解包校驗(yàn),待通過校驗(yàn)后,B機(jī)重新將數(shù)據(jù)包發(fā)回CAN總線。并通過上位機(jī)軟件與CAN總線分析儀對當(dāng)前CAN總線上的數(shù)據(jù)包進(jìn)行監(jiān)控。

        雙機(jī)通信測試結(jié)果如圖7所示,在測試過程中分別對傳統(tǒng)CAN總線控制器與新型CAN總線控制器傳輸了10000個(gè)CAN數(shù)據(jù)包,其中傳統(tǒng)CAN總線控制器正確傳輸9993個(gè)數(shù)據(jù)包,錯(cuò)誤傳輸7個(gè)數(shù)據(jù)包;新型CAN總線控制器正確傳輸9997個(gè)數(shù)據(jù)包,錯(cuò)誤傳輸3個(gè)數(shù)據(jù)包。由測試結(jié)果可見,新型CAN總線控制器的穩(wěn)定性要優(yōu)于傳統(tǒng)CAN總線控制器。

        圖7 CAN總線控制器雙機(jī)通信傳輸測試

        4 結(jié) 論

        本文對基于FPGA的CAN總線控制器,通過采用時(shí)序邏輯設(shè)計(jì)與新型結(jié)構(gòu)進(jìn)行優(yōu)化。經(jīng)過測試結(jié)果表明,該設(shè)計(jì)可以實(shí)現(xiàn)CAN總線節(jié)點(diǎn)的通信功能,并降低了FPGA內(nèi)部資源的占用。綜合通信效果,占用資源和使用成本等多方面進(jìn)行比較,使用本設(shè)計(jì)進(jìn)行數(shù)字電路的設(shè)計(jì)要優(yōu)于使用CAN總線控制器的集成電路進(jìn)行的設(shè)計(jì)。

        猜你喜歡
        狀態(tài)機(jī)寄存器時(shí)序
        時(shí)序坐標(biāo)
        基于Sentinel-2時(shí)序NDVI的麥冬識別研究
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
        電子制作(2016年15期)2017-01-15 13:39:08
        DPBUS時(shí)序及其設(shè)定方法
        河南科技(2014年15期)2014-02-27 14:12:36
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        毛片在线播放a| 少妇熟女天堂网av| 久久综合精品国产一区二区三区无码| 国产亚洲欧美在线| 精品少妇后入一区二区三区| 国产丝袜长腿美臀在线观看| 日本最新免费二区三区| 成在人线av无码免费| 玖玖资源站无码专区| av在线天堂国产一区| 插我一区二区在线观看| 一本色综合亚洲精品蜜桃冫| 亚洲αv在线精品糸列| 高清不卡av一区二区| 午夜男女很黄的视频| 亚洲精品无码久久毛片| 国产高清黄色在线观看91| 久久本道久久综合伊人| 亚洲成av人影院| 国产99re在线观看只有精品| 东京热加勒比无码少妇| 精品国产一区二区三区三| 亚洲精品国产主播一区二区| 亚洲精品国产av成拍色拍| 人人妻人人澡人人爽人人dvd| 国产欧美一区二区精品仙草咪| 日韩国产精品一区二区Hd| 久久人与动人物a级毛片| 成熟人妻换xxxx| 人妻丰满精品一区二区| 久久道精品一区二区三区| 婷婷成人亚洲| 18禁国产美女白浆在线| 国产白浆一区二区在线| 天天爽天天爽夜夜爽毛片| 中日韩欧美在线观看| 久久99久久久精品人妻一区二区| 欧美男生射精高潮视频网站| 玩50岁四川熟女大白屁股直播| 人妻少妇久久久久久97人妻| 成人影院在线观看视频免费 |