<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/162166.htm

          e.JPG


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

          3 初始化模塊
          初始化模塊的功能是完成的初始化。2.0B規(guī)范允許工作在兩種模式,即Basic模式和Peli模式,上電默認(rèn)為BasicCAN模式。在兩種模式下都需要對的模式寄存器CR、驗收碼寄存器ACR、驗收屏蔽寄存器AMR、定時寄存器BTR0、BTR1和輸出控制寄存器OCR寫入控制命令。
          在本中,借用ROM的思想,將需要讀寫的寄存器地址和數(shù)據(jù)統(tǒng)一編碼,固化存儲起來,對SJA1000進(jìn)行讀寫時,只需要按照一定的順序讀出數(shù)據(jù)和地址,輸出到即可。

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

          5 數(shù)據(jù)處理模塊
          數(shù)據(jù)處理模塊功能是從SJA1000的緩沖區(qū)讀入數(shù)據(jù),并作處理。在讀入數(shù)據(jù)時,只需將輸出的地址定位到SJA1000接收緩沖區(qū)的數(shù)據(jù)場依次將數(shù)據(jù)從緩沖區(qū)讀入即可。在CAN的通信中,發(fā)送的為幀信息,其數(shù)據(jù)幀結(jié)構(gòu)如圖7所示。

          f.JPG


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

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

          結(jié)語
          CAN接口由VHDL語言描述,易于修改和移植,可以將幾個集成到一個芯片上去,具有單片機(jī)所沒有的優(yōu)勢,在汽車領(lǐng)域具有良好的應(yīng)用前景。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();