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