新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA和BU-65170的1553B遠程終端設計與實現

        基于FPGA和BU-65170的1553B遠程終端設計與實現

        作者: 時間:2013-10-23 來源:網絡 收藏

        3.1 讀/寫模塊
        根據芯片手冊給出的CPU讀寫時序圖編寫程序,在寄存器和內部RAM進行讀寫的模塊。讀寫模塊的仿真時序圖如圖4和圖5所示。

        本文引用地址:http://www.104case.com/article/189492.htm

        f.JPG


        在讀寫過程中,信號BU_RD_WR為‘1’時表示對進行讀操作,為‘0’時為寫操作;信號BU_MEM_REG為‘1’時表示對內部RAM進行讀/寫,為‘0’時表示對寄存器進行讀/寫。在零等待模式中,信號BU_STRBD和BU_SELECT(可與BU_STRBD綁定,所以沒有給出)控制著讀/寫操作的開始。
        在長STRBD模式下SELECT和STRBD同時為低電平的第2個CLK上升沿,內部鎖存MEM_REG和RD_WR信號;短STRBD模式下STRBD上升沿內部鎖存MEM_REG和RD_WR信號。考慮到容易滿足時序要求,采用長STRBD模式。當鎖存住MEM_REG或RD_WR信號后,BU_READY會出現一個上升沿,緊接著當BU_READY出現下降沿時,表示BU-65170內部傳送周期已經結束。
        在16位零等待模式下,寫一個內部存儲單元或寄存器時,只需執行一次寫操作,使該字的地址和數據呈現在地址總線和數據總線上即可。而讀一個內部存儲單元或寄存器時,需要進行兩次讀操作。第一次讀時,要讀單元的地址和位置出現在A13-A00和MEM_REG上,這個周期獨處的數據應忽略掉;第二次讀時,相應的數據會出現在數據總線上。
        因此,如果要執行一個多字讀操作,地址總是早于對應的讀出數據,在同一個周期上,地址總線上出現下一個字的地址,數據總線上出現前一個字的讀出數據。
        3.2 配置模塊
        BU-65170有17個寄存器,通過配置這些寄存器來選擇工作模式和具體功能。選擇增強模式、增強中斷使能模式,使能RT子地址控制字中斷,服務請求自動清除。初始化流程如圖6所示,寄存器詳細配置如表3所示,具體子地址設置如表4所示。

        g.JPG


        3.3 時鐘模塊
        使用40 MHz的外部晶振作為的時鐘輸入,然后用FPGA自帶DCM模塊分頻得到16 MHz主時鐘,作為其余模塊的全局時鐘,仿真和實際波形測試表明全局時鐘穩定性良好,滿足系統要求。
        3.4 RS 422控制及UART模塊
        RS 422模塊了RS 422通信功能,一方面滿足了工程要求;另一方面也使調試系統變得方便明了,因為發送過來的數據可以立即通過RS 422轉RS 232接口顯示在PC機上,同理,可以通過PC機發送數據到的總線控制器。1553B總線接收數據的過程如下:RS 422端口發送數據到FPGA,將數據緩存在FIFO中,RT接收到發送命令后,FPGA把FIFO中的數據寫入RT相應的發送子地址,最后再由RT發送給BC。類似地,1553B總線發送數據的過程如下:RT接收到接收命令后,FPGA立刻把數據從相應子地址讀出,并傳送給RS 422模塊,再通過UART將數據發出。
        UART采用10位異步通信方式,即1個起始位,8個數據位,1個停止位,如圖7所示,波特率為9 600 b/s。RS 422控制模塊內部包含一個分頻模塊,將產生RS 422接口定義中的收發所需的波特率。通過對于系統時鐘的分頻,產生波特率為9 600 b/s和153 600的信號。

        h.JPG

        i.JPG


        接收狀態機見圖8。當檢測到起始位時,首先檢驗起始位是否正確,如果正確,立即采樣數據位,否則就返回空閑狀態。當采樣計數器計到8后判斷下一位是否為停止位,若不是,則丟棄數據并進入空閑狀態;若是,則把數據存入寄存器后進入空閑狀態,結束一次成功的接收。為了提高正確率,還采用三模冗余算法。UART發送過程與接收類似,在收到發送信號后將需要發送的數據存入緩存,在使能有效和緩存不空的情況下開始傳輸。此時指針開始計數,首先發送起始位‘0’,接著一次發送8 b數據,最后發送停止位‘1’,結束一次發送過程。

        fpga相關文章:fpga是什么




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳原县| 镶黄旗| 黔江区| 沧州市| 万源市| 武鸣县| 红安县| 都兰县| 临城县| 莱阳市| 思南县| 望谟县| 长兴县| 海盐县| 三明市| 云梦县| 会昌县| 田东县| 郁南县| 缙云县| 富阳市| 桦南县| 河北区| 阿勒泰市| 九龙县| 进贤县| 屏边| 内乡县| 山西省| 清水河县| 景泰县| 陈巴尔虎旗| 彭水| 定南县| 陇南市| 连云港市| 卫辉市| 遵义市| 祁连县| 斗六市| 高密市|