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