1553B總線(xiàn)遠程端點(diǎn)數據鏈路層協(xié)議的FPGA實(shí)現
命令解析完成后都需要進(jìn)行狀態(tài)反饋或者數據發(fā)送,而完成這個(gè)功能的是發(fā)送模塊,發(fā)送模塊負責把命令解析模塊和接收模塊裝載到發(fā)送緩沖器中的數據發(fā)送到總線(xiàn)上去,如圖3所示,它包括讀取數據,產(chǎn)生反相字,曼徹斯特碼編碼,添加同步頭,2 MHz時(shí)鐘數據發(fā)送等幾個(gè)部分,同時(shí)由于發(fā)送緩沖器中數據有可能多于2個(gè)字節,因此還可能需要循環(huán)進(jìn)行這個(gè)操作。下面就根據發(fā)送的具體流程設計每個(gè)部分。首先是發(fā)送緩沖器部分,當接收到發(fā)送命令后,發(fā)送模塊就第一次讀取發(fā)送緩沖器的前兩個(gè)字節,因為這兩個(gè)字節肯定是狀態(tài)字,然后把這兩個(gè)字節貼上狀態(tài)字標簽,繼續傳給后繼單元,待完成以后就把接收發(fā)送緩沖器的發(fā)送數據長(cháng)度寄存器減1,并把發(fā)送緩沖器中的數據向前移動(dòng)2個(gè)字節。如果發(fā)送數據長(cháng)度寄存器不為零,則繼續等待下一次的發(fā)送。

2.4 上層交互模塊
最后一個(gè)模塊是上層交互模塊,這個(gè)模塊負責與上層微控制器進(jìn)行信息交互,它負責把微控制器寫(xiě)入的數據放入相應的寄存器中,或者按上層微控制器的命令回傳相關(guān)的數據。上層交互模塊主要包括邊沿信號與電平信號轉換、地址解碼和讀寫(xiě)寄存器。因為協(xié)議實(shí)現模塊中采用的是邊沿信號觸發(fā),而上層微控制器給FPGA的信號是電平信號,要順利地完成通信,就需要進(jìn)行轉換,這里通過(guò)鎖存器和計數器來(lái)完成。地址解碼就是把收到的地址解碼成相應寄存器的地址,然后寫(xiě)入收到的數據或者把寄存器中的數據讀出放入到數據總線(xiàn)上。
3 仿真及FPGA實(shí)現
為了確保設計的可行性,必須對設計進(jìn)行時(shí)序仿真。整個(gè)協(xié)議VerilogHDL實(shí)現程序在A(yíng)ltera公司的FPGA開(kāi)發(fā)軟件QuartusⅡ中編寫(xiě)、編譯、綜合。整個(gè)程序的仿真在Modelsim 6.0中進(jìn)行,其仿真過(guò)程如下:
(1)接收數據。總線(xiàn)控制器發(fā)送給實(shí)現程序兩個(gè)數據:0x1234和Ox5678,上層微控制器在實(shí)現程序接收數據后通過(guò)上層交互模塊把數據讀出,其中第一個(gè)數據包含了接收數據長(cháng)度,通過(guò)圖4可以看出整個(gè)過(guò)程順利進(jìn)行,完成了預定目標。
(2)發(fā)送數據??偩€(xiàn)控制器間隔地發(fā)送給實(shí)現程序兩個(gè)發(fā)送數據的命令,讓實(shí)現程序反饋相關(guān)的數據,這些數據是通過(guò)上層交互模塊提前寫(xiě)入到實(shí)現程序中的,其仿真過(guò)程如圖5。通過(guò)圖5也可以看出在實(shí)現程序接收到命令到發(fā)送出數據的延時(shí)時(shí)間大約為4μs,完全符合1553B總線(xiàn)對遠程端點(diǎn)反饋信號延時(shí)的規定。
(3)一般命令??偩€(xiàn)控制器發(fā)送給實(shí)現程序一般的方式代碼命令,代碼分別為:000ll,10010,01111和00001,其仿真過(guò)程如圖6所示??梢?jiàn),實(shí)現程序正確地反饋了相關(guān)信息,符合設計要求。
評論