關(guān) 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于FPGA的CAN總線控制器SJA1000軟核的設(shè)計

        基于FPGA的CAN總線控制器SJA1000軟核的設(shè)計

        作者: 時間:2011-04-15 來源:網(wǎng)絡(luò) 收藏

        摘要:分析了的特點及協(xié)議通信格式。的IP,能為應(yīng)用提供一個性能優(yōu)良的、易于移植的,實現(xiàn)了對步進(jìn)電機(jī)的控制。
        關(guān)鍵詞:;控制器;SJA1000

        控制局域網(wǎng)(CAN)屬于現(xiàn)場的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。與一般的通信相比,CAN的數(shù)據(jù)通信可靠性、實時性和靈活性好,應(yīng)用領(lǐng)域非常廣泛,通?;贏RM或51單片機(jī),實現(xiàn)與CAN控制器的通信聯(lián)絡(luò)。/SOPC技術(shù)是實現(xiàn)嵌入式系統(tǒng)的最高形式,基于IP與應(yīng)用也必將成為替代硬核的一種發(fā)展趨勢。憑借QuartuslI和NiosII工具,基于的VHDL(或Verilog)語言的IP核能夠提供靈活性和性能更好的控制器。
        圖1為一個基于FPGA的控制器的CAN總線節(jié)點。其中PCA82C251是CAN總線接收器,SJA1000是CAN總線通信控制器,PMM8713是驅(qū)動步進(jìn)電機(jī)的脈沖分配器,F(xiàn)PGA模塊在節(jié)點模型中對SJA1000進(jìn)行控制,并將接收到的幀信息進(jìn)行處理,發(fā)送給脈沖分配器,以驅(qū)動步進(jìn)電機(jī)。

        本文引用地址:http://www.104case.com/article/162166.htm

        a.JPG


        在設(shè)計中采用自頂向下的設(shè)計方法。通過分析SJA1000常用的控制芯片51單片機(jī)的功能,將其分為主要的4個模塊:初始化模塊、位查詢模塊、數(shù)據(jù)處理模塊和緩沖區(qū)釋放模塊。
        對SJA1000完成控制功能的過程用狀態(tài)圖描述如圖2所示,這也是系統(tǒng)的主狀態(tài)機(jī)。4個狀態(tài)對應(yīng)上述的4個功能模塊,首先在initial_st-ate完成對sJA1000的初始化,在由init_end信號給出初始化完成標(biāo)志后,進(jìn)入查詢狀態(tài),即query_RBS狀態(tài),由位查詢模塊完成此時對SJA100 0的狀態(tài)查詢。如果查詢到SJA1000緩沖區(qū)有幀信息,將qRBS_end置“1”,進(jìn)入下一個狀態(tài)frame_cope,即幀處理狀態(tài),此時由數(shù)據(jù)處理模塊完成對緩沖區(qū)的數(shù)據(jù)讀取,并作處理。在讀取完一幀數(shù)據(jù)后,需要釋放緩沖區(qū),為下一幀信息的接收做準(zhǔn)備。此時狀態(tài)轉(zhuǎn)入了release_buff-er,對應(yīng)功能模塊中的緩沖區(qū)釋放模塊,此狀態(tài)結(jié)束后又轉(zhuǎn)入位查詢狀態(tài),為下一幀信息接收做準(zhǔn)備。

        b.JPG


        初始化模塊主要在系統(tǒng)上電或重啟后,先對SJA1000進(jìn)行初始化;位查詢模塊是在初始化完成后,對SJA1000狀態(tài)寄存器的接收緩沖區(qū)標(biāo)志位不斷進(jìn)行查詢,如果在緩沖區(qū)收到一幀信息后,則轉(zhuǎn)入數(shù)據(jù)處理模塊,否則繼續(xù)進(jìn)行查詢;數(shù)據(jù)處理模塊則是在查詢到接收緩沖區(qū)有數(shù)據(jù)后,讀入幀數(shù)據(jù),并對幀數(shù)據(jù)進(jìn)行處理;緩沖區(qū)釋放模塊是在一幀信息處理完畢后,釋放緩沖區(qū)空間。
        除了上述4個功能模塊之外,還需要讀寫模塊、雙端口模塊、模塊接口控制邏輯等。


        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 高雄市| 拉孜县| 瑞丽市| 明水县| 蒲江县| 张家港市| 和田市| 色达县| 祁连县| 永福县| 岢岚县| 交口县| 蚌埠市| 桂阳县| 怀化市| 东乡县| 太康县| 上杭县| 安塞县| 远安县| 邵东县| 潜山县| 白河县| 上饶县| 乌苏市| 卫辉市| 宝山区| 闻喜县| 恩施市| 五河县| 平武县| 稷山县| 东阿县| 腾冲县| 大石桥市| 长宁县| 察哈| 襄汾县| 信丰县| 桐庐县| 浦东新区|