<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>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA的PC/104-CAN通訊板設計

基于FPGA的PC/104-CAN通訊板設計

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

1.2 設計
QuartusⅡ是Altera公司在21世紀初推出的FP-GA/CPLD開(kāi)發(fā)環(huán)境,是Altera前一代/CPLD集成開(kāi)發(fā)環(huán)境MAx+PlusⅡ的更新?lián)Q代產(chǎn)品,其功能強大,界面友好,使用便捷。QuartusⅡ軟件集成了Al-tera的/CPLD開(kāi)發(fā)流程中所涉及的所有工具和第三方軟件接口。QuartusⅡ軟件的開(kāi)發(fā)流程如圖2所示。

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

采用原理圖輸入和硬件描述語(yǔ)言相結合的方式,進(jìn)行編譯后寫(xiě)人器件中;同時(shí)可在線(xiàn)更改寫(xiě)入內容,修改和調試簡(jiǎn)單易行。FPGA的設計主要由兩部分組成:第一部分實(shí)現時(shí)序邏輯控制信號的轉換,第二部分實(shí)現地址譯碼和地址數據線(xiàn)的復用。QuartusⅡ圖表文件及器件管腳如圖3所示。

由于PC/的地址總線(xiàn)和數據總線(xiàn)是各自獨立的,SJA1000T的地址總線(xiàn)和數據總線(xiàn)是分時(shí)復用的,所以它們之間不能直接相連,必須通過(guò)時(shí)序邏輯控制,再配合軟件來(lái)實(shí)現讀/寫(xiě)操作。對SJA1000T的操作方法是:首先,對地址為首地址+0(A2A1A0=000)的端口進(jìn)行寫(xiě)操作(WR為低,有效),ALE為高,有效,此時(shí)復用的地址、數據總線(xiàn)上的數據被視為地址信號,進(jìn)入SJA1000T內部鎖存器;然后,對地址為cAN首地址+1(A2A1A0=001)的端口進(jìn)行讀或寫(xiě)操作(RD/WR為低,有效),ALE為低,上述中的地址信號已被鎖存,此時(shí)復用的地址、數據總線(xiàn)上的數據被視為數據信號,這樣即可完成對SJA1000T的各個(gè)寄存器和緩沖區的讀或寫(xiě)操作。
1.3 硬件電路測試
主要檢測硬件結構及電路板設計是否正確。建立一個(gè)簡(jiǎn)單的通訊連接,將兩個(gè)連接進(jìn)行測試,用A作為輸出,B作為輸入。編程通過(guò)通訊板A發(fā)送數據,內容為8個(gè)隨機數,檢測通訊板B接收數據,如果不同則作加1計數。反之將通訊板B作為輸出,通訊板A作為輸入,進(jìn)行相同測試。測試200萬(wàn)次循環(huán)未見(jiàn)異常。


2 軟件設計
2.1 軟件流程圖
在該通訊板的設計中,控制部分的核心采用了PC/嵌入式計算機系統。由于PC/嵌入式計算機系統幾乎具有和一般的PC機一樣的強大功能,所以該通訊板的開(kāi)發(fā)是在和系統模塊棧接在一起后,直接在嵌入式計算機上進(jìn)行的。這些工作都是采用C語(yǔ)言進(jìn)行編程設計的。采用C語(yǔ)言的優(yōu)點(diǎn)在于其快速性、高效性。在利用嵌入式計算機強大資源的條件下,C語(yǔ)言能滿(mǎn)足模塊的實(shí)時(shí)性要求。在系統軟件的設計中,采用了結構化、模塊化的設計方法,滿(mǎn)足了儀器功能的要求。本接口系統的軟件任務(wù)基本為在CAN協(xié)議芯片SJA1000T有中斷發(fā)生時(shí),根據SJA1000T的中斷寄存器的內容完成相應的操作(如發(fā)送、接收數據幀等)。其流程圖如圖4所示。

系統設計中要進(jìn)行接口驅動(dòng)程序的設計,為保證操作系統的穩定和安全,驅動(dòng)程序必須按一定的規范來(lái)編寫(xiě)。本系統的驅動(dòng)程序主要考慮以下內容:設置端口和中斷號,設置通訊板通訊默認參數,通訊板內存分配,映射I/O地址,創(chuàng )建通訊板事件和數據接收事件,初始化中斷等。
SJA1000T初始化只有在復位模式下才能進(jìn)行,初始化主要包括:工作方式的設置、接收濾波方式的設置、接收屏蔽寄存器和接收代碼寄存器的設置、波特率設置和中斷允許寄存器的設置等。SJA1000T在完成初始化后就可以回到工作狀態(tài)進(jìn)行正常的通訊任務(wù)了。



關(guān)鍵詞: FPGA 104 CAN 通訊板

評論


相關(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>