新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的CAN總線通信節(jié)點(diǎn)設(shè)計(jì)

基于FPGA的CAN總線通信節(jié)點(diǎn)設(shè)計(jì)

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

2。2頂層模塊

頂層的模塊如圖5所示。其中clkdiv模塊是將輸入的50MHz時(shí)鐘clock十分頻后作為模塊基準(zhǔn)時(shí)鐘。SJACTROL模塊是控制的主模塊,而RW模塊則是根據(jù)主模塊的信號(hào)生成SJA1000所需要的讀寫時(shí)序信號(hào)。SJACTROL模塊通過(guò)start和iswr兩個(gè)信號(hào)通知RW模塊是否要進(jìn)行讀或?qū)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/總線">總線操作。若是寫操作,則將地址和數(shù)據(jù)通過(guò)Addrout和Dataout傳遞給RW,RW將負(fù)責(zé)把數(shù)據(jù)準(zhǔn)確地送到SJA1000的數(shù)據(jù)地址復(fù)用ADDR,并驅(qū)動(dòng)SJA1000接收數(shù)據(jù),在寫操作完成后發(fā)送writeover信號(hào)通知SJACTROL寫操作完成。讀操作時(shí)RW根據(jù)SJACTOL送來(lái)的地址,從SJA1000的數(shù)據(jù)總線上讀取數(shù)據(jù),并將得到的數(shù)據(jù)通過(guò)Datasave總線返回給SJACTROL。

圖5 頂層模塊設(shè)計(jì)

圖5頂層模塊

SJACTROL的狀態(tài)機(jī)通過(guò)5個(gè)狀態(tài)的轉(zhuǎn)換來(lái)實(shí)現(xiàn)控制:空閑狀態(tài)、初始化狀態(tài)、查詢狀態(tài)、讀狀態(tài)、寫狀態(tài)。RW則是按照SJA1000的芯片數(shù)據(jù)手冊(cè)進(jìn)行時(shí)序邏輯設(shè)計(jì)。在編寫模塊時(shí),需注意雙向總線的編寫技巧。雙向口最好在頂層定義,否則模塊綜合的時(shí)候容易出錯(cuò)。

3仿真結(jié)果

中利用Verilog編程產(chǎn)生SJA1000的片選信號(hào)CS,地址鎖存信號(hào)ALE,讀寫信號(hào)RD、WR。這些控制信號(hào)共同驅(qū)動(dòng)SJA1000進(jìn)行數(shù)據(jù)接收和發(fā)送。設(shè)計(jì)選取的是virtex系列的芯片,邏輯開發(fā)在ISE平臺(tái)上進(jìn)行。在FPGA的調(diào)試階段,使用xilinx的應(yīng)用軟件ChipScopepro(在線邏輯分析儀)來(lái)在線觀察FPGA設(shè)計(jì)內(nèi)部信號(hào)的波形,它比傳統(tǒng)的邏輯分析儀更方便。圖6為在線進(jìn)行數(shù)據(jù)傳送接收時(shí)的實(shí)際波形。

圖6SJA1000接收和發(fā)送數(shù)據(jù)的時(shí)序仿真

圖6SJA1000接收和發(fā)送數(shù)據(jù)的時(shí)序仿真

4結(jié)束語(yǔ)

通過(guò)對(duì)系統(tǒng)的分析,利用FPGA作為的主控制單元,對(duì)的硬件接口電路設(shè)計(jì)方案進(jìn)行了詳細(xì)的說(shuō)明,并編寫了CAN通信流程中的初始化程序、數(shù)據(jù)發(fā)送接收程序。通過(guò)軟硬件的聯(lián)調(diào),實(shí)現(xiàn)了CAN總線的通信功能,系統(tǒng)工作狀態(tài)良好。實(shí)踐證明CAN通信節(jié)點(diǎn)采用FPGA作為核心控制單元,與傳統(tǒng)的單片機(jī)設(shè)計(jì)相比,更加靈活并且擴(kuò)展性更強(qiáng)。


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

評(píng)論


相關(guān)推薦

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

關(guān)閉