<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

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

基于FPGA的CAN總線(xiàn)控制器SJA1000軟核的設計

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

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

本文引用地址:http://dyxdggzs.com/article/162166.htm

e.JPG


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

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

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

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

f.JPG


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

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

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


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>