基于FPGA和BU-65170的1553B遠(yuǎn)程終端設(shè)計(jì)與實(shí)現(xiàn)
3.1 讀/寫模塊
根據(jù)芯片手冊(cè)給出的CPU讀寫時(shí)序圖編寫程序,在FPGA中實(shí)現(xiàn)對(duì)BU-65170寄存器和內(nèi)部RAM進(jìn)行讀寫的模塊。讀寫模塊的仿真時(shí)序圖如圖4和圖5所示。本文引用地址:http://www.ex-cimer.com/article/189492.htm
在讀寫過程中,信號(hào)BU_RD_WR為‘1’時(shí)表示對(duì)BU-65170進(jìn)行讀操作,為‘0’時(shí)為寫操作;信號(hào)BU_MEM_REG為‘1’時(shí)表示對(duì)內(nèi)部RAM進(jìn)行讀/寫,為‘0’時(shí)表示對(duì)寄存器進(jìn)行讀/寫。在零等待模式中,信號(hào)BU_STRBD和BU_SELECT(可與BU_STRBD綁定,所以沒有給出)控制著讀/寫操作的開始。
在長STRBD模式下SELECT和STRBD同時(shí)為低電平的第2個(gè)CLK上升沿,內(nèi)部鎖存MEM_REG和RD_WR信號(hào);短STRBD模式下STRBD上升沿內(nèi)部鎖存MEM_REG和RD_WR信號(hào)。考慮到容易滿足時(shí)序要求,采用長STRBD模式。當(dāng)BU-65170鎖存住MEM_REG或RD_WR信號(hào)后,BU_READY會(huì)出現(xiàn)一個(gè)上升沿,緊接著當(dāng)BU_READY出現(xiàn)下降沿時(shí),表示BU-65170內(nèi)部傳送周期已經(jīng)結(jié)束。
在16位零等待模式下,寫一個(gè)內(nèi)部存儲(chǔ)單元或寄存器時(shí),只需執(zhí)行一次寫操作,使該字的地址和數(shù)據(jù)呈現(xiàn)在地址總線和數(shù)據(jù)總線上即可。而讀一個(gè)內(nèi)部存儲(chǔ)單元或寄存器時(shí),需要進(jìn)行兩次讀操作。第一次讀時(shí),要讀單元的地址和位置出現(xiàn)在A13-A00和MEM_REG上,這個(gè)周期獨(dú)處的數(shù)據(jù)應(yīng)忽略掉;第二次讀時(shí),相應(yīng)的數(shù)據(jù)會(huì)出現(xiàn)在數(shù)據(jù)總線上。
因此,如果FPGA要執(zhí)行一個(gè)多字讀操作,地址總是早于對(duì)應(yīng)的讀出數(shù)據(jù),在同一個(gè)周期上,地址總線上出現(xiàn)下一個(gè)字的地址,數(shù)據(jù)總線上出現(xiàn)前一個(gè)字的讀出數(shù)據(jù)。
3.2 配置模塊
BU-65170有17個(gè)寄存器,通過配置這些寄存器來選擇工作模式和具體功能。選擇增強(qiáng)模式、增強(qiáng)中斷使能模式,使能RT子地址控制字中斷,服務(wù)請(qǐng)求自動(dòng)清除。初始化流程如圖6所示,寄存器詳細(xì)配置如表3所示,具體子地址設(shè)置如表4所示。
3.3 時(shí)鐘模塊
使用40 MHz的外部晶振作為FPGA的時(shí)鐘輸入,然后用FPGA自帶DCM模塊分頻得到16 MHz主時(shí)鐘,作為其余模塊的全局時(shí)鐘,仿真和實(shí)際波形測(cè)試表明全局時(shí)鐘穩(wěn)定性良好,滿足系統(tǒng)要求。
3.4 RS 422控制及UART模塊
RS 422模塊實(shí)現(xiàn)了RS 422通信功能,一方面滿足了工程要求;另一方面也使調(diào)試1553B系統(tǒng)變得方便明了,因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/1553B">1553B發(fā)送過來的數(shù)據(jù)可以立即通過RS 422轉(zhuǎn)RS 232接口顯示在PC機(jī)上,同理,可以通過PC機(jī)發(fā)送數(shù)據(jù)到1553B的總線控制器。1553B總線接收數(shù)據(jù)的過程如下:RS 422端口發(fā)送數(shù)據(jù)到FPGA,將數(shù)據(jù)緩存在FIFO中,RT接收到發(fā)送命令后,F(xiàn)PGA把FIFO中的數(shù)據(jù)寫入RT相應(yīng)的發(fā)送子地址,最后再由RT發(fā)送給BC。類似地,1553B總線發(fā)送數(shù)據(jù)的過程如下:RT接收到接收命令后,F(xiàn)PGA立刻把數(shù)據(jù)從相應(yīng)子地址讀出,并傳送給RS 422模塊,再通過UART將數(shù)據(jù)發(fā)出。
UART采用10位異步通信方式,即1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)停止位,如圖7所示,波特率為9 600 b/s。RS 422控制模塊內(nèi)部包含一個(gè)分頻模塊,將產(chǎn)生RS 422接口定義中的收發(fā)所需的波特率。通過對(duì)于系統(tǒng)時(shí)鐘的分頻,產(chǎn)生波特率為9 600 b/s和153 600的信號(hào)。
接收狀態(tài)機(jī)見圖8。當(dāng)檢測(cè)到起始位時(shí),首先檢驗(yàn)起始位是否正確,如果正確,立即采樣數(shù)據(jù)位,否則就返回空閑狀態(tài)。當(dāng)采樣計(jì)數(shù)器計(jì)到8后判斷下一位是否為停止位,若不是,則丟棄數(shù)據(jù)并進(jìn)入空閑狀態(tài);若是,則把數(shù)據(jù)存入寄存器后進(jìn)入空閑狀態(tài),結(jié)束一次成功的接收。為了提高正確率,還采用三模冗余算法。UART發(fā)送過程與接收類似,在收到發(fā)送信號(hào)后將需要發(fā)送的數(shù)據(jù)存入緩存,在使能有效和緩存不空的情況下開始傳輸。此時(shí)指針開始計(jì)數(shù),首先發(fā)送起始位‘0’,接著一次發(fā)送8 b數(shù)據(jù),最后發(fā)送停止位‘1’,結(jié)束一次發(fā)送過程。
fpga相關(guān)文章:fpga是什么
評(píng)論