《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于FPGA的CAN總線控制器SJA1000軟核的設計
基于FPGA的CAN總線控制器SJA1000軟核的設計
湯書森,劉 棟,李建明 蘭州大學
摘要: 分析了CAN控制器SJA1000的特點及CAN協議通信格式。設計了控制器SJA1000的IP軟核,能為應用提供一個性能優良的、易于移植的控制器SJA1000,實現了對步進電機的控制。
Abstract:
Key words :


    控制局域網(CAN)屬于現場總線的范疇,它是一種有效支持分布式控制或實時控制的串行通信網絡。與一般的通信總線相比,CAN總線的數據通信可靠性、實時性和靈活性好,應用領域非常廣泛,通常基于ARM或51單片機,實現與CAN控制器的通信聯絡。FPGA/SOPC技術是實現嵌入式系統的最高形式,基于IP軟核的設計與應用也必將成為替代硬核的一種發展趨勢。憑借QuartuslI和NiosII工具,基于FPGA的VHDL(或Verilog)語言設計的IP核能夠提供靈活性和性能更好的控制器。
    圖1為一個基于FPGA的控制器的CAN總線節點。其中PCA82C251是CAN總線接收器,SJA1000是CAN總線通信控制器,PMM8713是驅動步進電機的脈沖分配器,FPGA模塊在節點模型中對SJA1000進行控制,并將接收到的幀信息進行處理,發送給脈沖分配器,以驅動步進電機。

a.JPG


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

b.JPG


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

1 讀寫模塊
    由SJA1000的數據手冊可知,SJA1000提供的微處理器接口信號有地址數據復用總線AD0~AD7、地址鎖存信號ALE、片選信號g.jpg、讀寫使能信號h.jpgi.jpg、以及復位信號j.jpg
    SJA1000的數據信號和地址信號是時分復用的,而FPGA中不存在地址的概念,對于FPGA來說,輸出的只有數據。因此設計的關鍵就是把S-JA1000中的寄存器地址當成數據寫入到SJA1000中,配合地址鎖存信號ALE和寫允許信號i.jpg完成對SJA1000特定寄存器的命令字寫入。讀寫使能信號是h.jpgi.jpg以及復位信號j.jpg。設計的關鍵就是把SJA1000中的寄存器地址當成數據寫入到SJA1000中,配合地址鎖存信號ALE和寫允許信號完成對SJA1000特定寄存器的命令字寫入。與寫操作相似,只需嚴格按照時序,將ALE、h.jpgi.jpgg.jpg引腳的電平互相配合置高或置低,即可完成讀操作。讀寫周期時序圖如圖3和圖4所示。

c.JPG


    設計時采用狀態機的形式,由讀寫時序圖可以看到,與SJA1000讀寫相關的控制信號有ALE、h.jpgi.jpgg.jpg。無論讀寫,都必須先輸出地址,由接口控制邏輯模塊輸入地址。AD[7..0]是數據雙向流通的,由雙端口模塊組成,讀寫模塊與之相接口,輸入、輸出設計分開。讀寫模塊在與接口控制邏輯接口模塊相連接時,輸出的數據與輸入的數據也設計分開。同樣讀寫模塊的開啟信號與讀/寫選擇信號也由接口控制邏輯給出。由QuartuslI生成的讀寫模塊如圖5所示。

d.JPG


    在IDLE狀態等待,當4個功能模塊中需要使用讀寫功能時,由接口控制模塊控制使該功能模塊與讀寫模塊連接,相應的功能模塊輸出地址到讀寫模塊,接口控制模塊配合給出讀寫選擇信號,然后進入address狀態,輸出地址到SJA1000,判斷讀寫選擇信號后,進入讀狀態或者寫狀態。在讀寫子狀態只需按照時序圖輸出ale、cs、wr、rd的值即可,標志信號w_ok表示一次讀/寫完成。
    在SJA1000的讀寫過程中,對各個信號的持續時間有著嚴格的要求。以讀操作為例,h.jpg信號的有效持續時間必須最大為50 ns,因此在設計中,h.jpg信號保持低電平的時間可以比這個時間長。

2 接口控制邏輯模塊
    接口控制邏輯是本系統的核心模塊,它與4個功能模塊、讀寫模塊相連接,由一個狀態機組成,即系統的主狀態機。在狀態機的不同狀態中,控制讀寫狀態機與對應的功能模塊相連接,3個模塊互相配合完成一項功能。QuartuslI生成的模塊圖如6所示。

e.JPG


    每一個功能模塊都有對應的接口信號,而data_in_infer、addr_out_infer、data_in_infer、w_ok_in、r_ok_in是讀寫模塊的信號接口。
    需要注意的是,本系統中使用了主從狀態機,即狀態機的嵌套。在主狀態進入初始化狀態機后,立即給出一個enable信號,啟動從狀態機,并設置一個從狀態機的完成信號finish(高電平有效),且初始值為低,然后在主狀態機不停的檢測finish信號,如果finish為高,則進入下一個狀態,查詢狀態。而在從狀態機中,則不停地檢測enable信號,如果為高,則開始工作,當完成從狀態機后,將finish信號置高。如此就完成了主從狀態機的互動。接口控制邏輯模塊中的start、end信號即為系統主從狀態機互動信號。

3 初始化模塊
    初始化模塊的功能是完成SJA1000的初始化。CAN2.0B規范允許SJA1000工作在兩種模式,即BasicCAN模式和PeliCAN模式,上電默認為BasicCAN模式。在兩種模式下都需要對SJA1000的模式寄存器CR、驗收碼寄存器ACR、驗收屏蔽寄存器AMR、總線定時寄存器BTR0、BTR1和輸出控制寄存器OCR寫入控制命令。
    在本設計中,借用ROM的思想,將需要讀寫的寄存器地址和數據統一編碼,固化存儲起來,對SJA1000進行讀寫時,只需要按照一定的順序讀出數據和地址,輸出到即可。

4 位查詢模塊
    位查詢模塊主要功能是在SJA1000轉入工作模式后能夠讀取存在接受緩沖區RXFIFO的幀信息,在本設計中讀取幀信息采用了查詢方式,即不停地查詢SJA1000狀態寄存器SR的RBS位,如果查詢到RBS位為“1”,即表明接收緩沖區滿,RXFIFO中有可用信息,此時將轉入數據處理模塊,由數據處理模塊進行數據讀入,并進行處理。在查詢過程中,對SJA1000的狀態寄存器進行了讀操作。

5 數據處理模塊
    數據處理模塊功能是從SJA1000的緩沖區讀入數據,并作處理。在讀入數據時,只需將輸出的地址定位到SJA1000接收緩沖區的數據場依次將數據從緩沖區讀入即可。在CAN總線的通信中,發送的為幀信息,其數據幀結構如圖7所示。

f.JPG


    在對數據進行處理時,前16位為ID,有用的數據是在幀中的數據場(Data Field)中,因此只需略過前16位,對后面最多8個字節的數據進行處理,分配到步進電機的引腳上即可。

6 緩沖區釋放模塊與雙端口模塊
    在緩沖區的數據被讀入后,需要對緩沖區的數據清零,為后續的數據讀入做準備。本質上仍是對SJA1000的命令寄存器(CMR)寫操作。在狀態寄存器與接收緩沖區相關的位為RRB,置1即可釋放緩沖區,這樣就會導致接收緩沖區內的另一條信息立即有效,從而進入下一幀數據的數據查詢、處理過程。
    在本設計中,輸出的數據引腳為雙向引腳,設計成三態輸出,這是因為雙向端口在完成輸入功能時,必須使端口處于高阻態,否則外部數據不能正確讀入。
    其設計關鍵在于,實體部分必須對端口屬性進行申明,端口屬性必須為inout類型,在構造體對輸出信號進行有條件的高阻控制。

結語
    CAN總線接口控制器由VHDL語言描述,易于修改和移植,可以將幾個軟核集成到一個FPGA芯片上去,具有單片機所沒有的優勢,在汽車領域具有良好的應用前景。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: h视频在线看 | 天天干天天射天天操 | 亚洲天堂色视频 | 1024jd基地手机看国产 | 日韩导航| 婷婷激情狠狠综合五月 | 久久精品a一国产成人免费网站 | 日日夜夜狠狠 | 欧美xxxx色视频在线观看免费 | 人喾交性专区免费看 | 久久综合网址 | 成人一级大片 | 欧美精品在线一区二区三区 | 中国一级毛片在线观看 | 色天天综合网色鬼综合 | 久久丝袜精品中文字幕 | 我想看黄色毛片 | 国产综合色香蕉精品五月婷 | 久久精品亚洲精品国产欧美 | 黄色a∨ | www.色com| 日韩艹| 中文字幕第四页 | 国产播放啪视频免费视频 | 久久青草免费91观看 | 极品嫩模众筹福利写真视频 | 亚洲欧洲日产国码 最新 | 国产黄色a三级三级三级 | 特级淫片波多野结衣 | 六月天综合网 | 一本视频在线 | 污视频免费网站 | 中国一级特黄剌激爽毛片 | 国产精品特黄一级国产大片 | 亚洲看片网站 | 新版天堂中文资源官网 | 农村寡妇一级毛片免费播放 | 日本中文字幕一区 | 夜间福利在线观看 | 亚洲欧美精品网站在线观看 | 狠狠夜色午夜久久综合热91 |