基于FPGA的CAN總線控制器SJA1000軟核的設(shè)計(jì)
1 讀寫(xiě)模塊
由SJA1000的數(shù)據(jù)手冊(cè)可知,SJA1000提供的微處理器接口信號(hào)有地址數(shù)據(jù)復(fù)用總線AD0~AD7、地址鎖存信號(hào)ALE、片選信號(hào)完成對(duì)SJA1000特定寄存器的命令字寫(xiě)入。與寫(xiě)操作相似,只需嚴(yán)格按照時(shí)序,將ALE、、、引腳的電平互相配合置高或置低,即可完成讀操作。讀寫(xiě)周期時(shí)序圖如圖3和圖4所示。本文引用地址:http://butianyuan.cn/article/162166.htm
設(shè)計(jì)時(shí)采用狀態(tài)機(jī)的形式,由讀寫(xiě)時(shí)序圖可以看到,與SJA1000讀寫(xiě)相關(guān)的控制信號(hào)有ALE、、、。無(wú)論讀寫(xiě),都必須先輸出地址,由接口控制邏輯模塊輸入地址。AD[7..0]是數(shù)據(jù)雙向流通的,由雙端口模塊組成,讀寫(xiě)模塊與之相接口,輸入、輸出設(shè)計(jì)分開(kāi)。讀寫(xiě)模塊在與接口控制邏輯接口模塊相連接時(shí),輸出的數(shù)據(jù)與輸入的數(shù)據(jù)也設(shè)計(jì)分開(kāi)。同樣讀寫(xiě)模塊的開(kāi)啟信號(hào)與讀/寫(xiě)選擇信號(hào)也由接口控制邏輯給出。由QuartuslI生成的讀寫(xiě)模塊如圖5所示。
在IDLE狀態(tài)等待,當(dāng)4個(gè)功能模塊中需要使用讀寫(xiě)功能時(shí),由接口控制模塊控制使該功能模塊與讀寫(xiě)模塊連接,相應(yīng)的功能模塊輸出地址到讀寫(xiě)模塊,接口控制模塊配合給出讀寫(xiě)選擇信號(hào),然后進(jìn)入address狀態(tài),輸出地址到SJA1000,判斷讀寫(xiě)選擇信號(hào)后,進(jìn)入讀狀態(tài)或者寫(xiě)狀態(tài)。在讀寫(xiě)子狀態(tài)只需按照時(shí)序圖輸出ale、cs、wr、rd的值即可,標(biāo)志信號(hào)w_ok表示一次讀/寫(xiě)完成。
在SJA1000的讀寫(xiě)過(guò)程中,對(duì)各個(gè)信號(hào)的持續(xù)時(shí)間有著嚴(yán)格的要求。以讀操作為例,信號(hào)的有效持續(xù)時(shí)間必須最大為50 ns,因此在設(shè)計(jì)中,信號(hào)保持低電平的時(shí)間可以比這個(gè)時(shí)間長(zhǎng)。
評(píng)論