新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的CAN總線通信節點設計

        基于FPGA的CAN總線通信節點設計

        作者: 時間:2012-04-19 來源:網絡 收藏

        2。2頂層模塊

        頂層的模塊如圖5所示。其中clkdiv模塊是將輸入的50MHz時鐘clock十分頻后作為模塊基準時鐘。SJACTROL模塊是控制的主模塊,而RW模塊則是根據主模塊的信號生成SJA1000所需要的讀寫時序信號。SJACTROL模塊通過start和iswr兩個信號通知RW模塊是否要進行讀或寫操作。若是寫操作,則將地址和數據通過Addrout和Dataout傳遞給RW,RW將負責把數據準確地送到SJA1000的數據地址復用ADDR,并驅動SJA1000接收數據,在寫操作完成后發送writeover信號通知SJACTROL寫操作完成。讀操作時RW根據SJACTOL送來的地址,從SJA1000的數據總線上讀取數據,并將得到的數據通過Datasave總線返回給SJACTROL。

        圖5 頂層模塊設計

        圖5頂層模塊

        SJACTROL的狀態機通過5個狀態的轉換來實現控制:空閑狀態、初始化狀態、查詢狀態、讀狀態、寫狀態。RW則是按照SJA1000的芯片數據手冊進行時序邏輯設計。在編寫模塊時,需注意雙向總線的編寫技巧。雙向口最好在頂層定義,否則模塊綜合的時候容易出錯。

        3仿真結果

        中利用Verilog編程產生SJA1000的片選信號CS,地址鎖存信號ALE,讀寫信號RD、WR。這些控制信號共同驅動SJA1000進行數據接收和發送。設計選取的是virtex系列的芯片,邏輯開發在ISE平臺上進行。在FPGA的調試階段,使用xilinx的應用軟件ChipScopepro(在線邏輯分析儀)來在線觀察FPGA設計內部信號的波形,它比傳統的邏輯分析儀更方便。圖6為在線進行數據傳送接收時的實際波形。

        圖6SJA1000接收和發送數據的時序仿真

        圖6SJA1000接收和發送數據的時序仿真

        4結束語

        通過對系統的分析,利用FPGA作為的主控制單元,對的硬件接口電路設計方案進行了詳細的說明,并編寫了CAN通信流程中的初始化程序、數據發送接收程序。通過軟硬件的聯調,實現了CAN總線的通信功能,系統工作狀態良好。實踐證明CAN通信節點采用FPGA作為核心控制單元,與傳統的單片機設計相比,更加靈活并且擴展性更強。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 开平市| 济阳县| 依安县| 阿克苏市| 清远市| 丹寨县| 定陶县| 石嘴山市| 大竹县| 革吉县| 辉县市| 民乐县| 汾阳市| 阳泉市| 凤台县| 濮阳县| 溆浦县| 乐平市| 太仆寺旗| 玛沁县| 云林县| 宜章县| 内江市| 苍南县| 马边| 巫山县| 仙游县| 廊坊市| 汽车| 永川市| 武强县| 璧山县| 贵南县| 新郑市| 徐汇区| 辉县市| 固原市| 闽侯县| 诏安县| 封丘县| 贵阳市|