新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 采用片上系統技術來設計FC協議芯片的方案解析

        采用片上系統技術來設計FC協議芯片的方案解析

        作者: 時間:2012-05-09 來源:網絡 收藏

        5.1 功能概述

        FC芯片中有兩路“FC幀收發模塊及其數據緩沖器”,它們實現FC-2層協議中的幀打包、開包。它是整個系統的軟硬件交會點,是整個系統的核心,其關鍵在于制定相關的設計規則。

        5.2 數據緩沖區的使用規則

        根據多路總線并行工作的原則,設置四塊獨立的數據緩沖區,采用雙口RAM,用于在CPU和幀收發器之間交換數據。收發數據緩沖區的使用規則如下:

        (1)發送緩沖區TXBUF。根據圖3所示的FC-2幀格式,該緩沖區用于存放幀頭和有效數據。前24個字節是固定存放幀頭的幀頭區,后面是有效數據區。發送時,模塊TXF-CTL從幀頭區取幀頭信息發送,根據寄存器中發送起始地址(TXOFFSET)和發送個數(TXCOUNT)的值從TXBUF中連續取數據發送。這里,只設置1個幀頭區,是考慮到在“序列”中幀頭具有相關性,同時1個幀頭區不存在多個區域的切換,簡化了硬件實現。

        (2)接收緩沖區 RXBUF。該緩沖區采用循環隊列的方式,由模塊RXF-CTL順序寫入數據,數據的存儲順序如圖3所示的FC-2幀格式。在完成1幀數據接收后,模塊 RXF-CTL要在寄存器中表明當前幀在RXBUF中的接收起始地址(RXOFFSET)和接收到的個數(RXCOUNT)。CPU讀取寄存器 RXCOUNT后,該寄存器自動清零。上述使用規則是整個系統進行SoC設計的要點。

        工作過程

        數據的發送過程發送:

        (1)CMD_RESET。模塊TXF-CTL復位,進入空閑態。

        (2)CMD_TEST:由CPU直接控制數據的發送,模塊TXF-CTL進入空閑態。

        (3)CMD_START_TX1:在空閑態并且CMD_TEST和CMD_START_TX2都無效時,進入按幀發送數據的狀態,模塊TXF-CTL發出SENDING信號。模塊TXF- CTL先向FC發送通道的TX-FIFO發送有序集碼lDLE(K28.5D21.4D21.5D21.5);根據SOF碼型寄存器發送相應的SOF;然后從TXBUF的幀頭區取數據依次發送;以后,如果數據從TXBUF取,則根據寄存器發送起始地址(TXOFFSET)和發送個數(TXCOUNT)從 TXBUF中取出對應的數據發送;發送完有效數據后,再根據EOF碼型寄存器發送相應的EOF;最后再發一個有序集碼 IDLE(K28.5D21.4D21.5D21.5)。一幀數據發完后,將SENDING信號清零,CMD_START_TX1清零,發中斷信號 INTTXi,然后回到空閑態。發送過程只有CMD_RESET可以中斷。

        (4)如果數據來在ULP-FIFO,則讀發送個數(TXCOUNT),從ULP-FIFO中取數發送,若發送個數(TXCOUNT)大于FC-2幀規定的長度,則按2112字節的長度分多幀發送,每幀完畢,自動修改幀頭中的幀記數值,并且自動選擇相應的SOF和EOF定界符;若發送的過程中ULP-FIFO空,則自動結束這一幀的發送,并啟動超時定時器,等待ULP-FIFO中的數據。當發送個數(TXCOUNT)規定的數據發完后,或者超時,則將SENDING信號清零,CMD_START_TX1 清零,發中斷信號INTTXi,然后回到空閑態。發送過程只有CMD_RESET可以中斷。

        (5)CMD_START_TX2:在空閑態當CMD_START_TX2有效時,模塊TXF-CTL按有序

        集碼寄存器和有序集碼參數寄存器的定義發送有序集碼。

        數據的接收過程

        數據的接收有兩種方式:由CPU直接控制;由RXF-CTL按FC-2幀格式接收數據。CPU可通過FC-2幀收發控制器的寄存器向模塊RXF-CTL發命令來控制數據發送:

        (1)CMD_RESET。模塊TXF-CTL復位,進入空閑態。

        (2)CMD_TEST:由CPU直接控制數據的接收。

        (3)CMD_START_RXi:在空閑態并且CMD_TEST無效時,進入按幀接收數據的狀態。模塊RXF-CTL從FCSET-A的RX-FIFO中收到有序集碼SOF后,發出 RECEIVE信號,表示已經開始1幀數據的接收。模塊RXF-CTL將收到的數據依次寫入循環緩沖區RXBUF。再收到任一個有序集碼后,1幀數據接收結束,將RECEIVE信號清零。更新寄存器接收起始地址(RXOFFSET)和接收到的個數(RXCOUNT)。如果接收到的CRC碼無效或者最后一個有序集碼不是EOF,則將接收有錯(RXERR)置‘1’,否則發出INTRXi中斷信號,表示收到1幀正確的數據。繼續下一幀的數據的接收。在1幀數據接收的過程中,只有CMD_RESET可以中斷;如果尚未開始接收1幀數據,則CMD_TEST可使其回到空閑態。CPU讀寄存器RXOFFSET、 RXERR和RXCOUNT可知道接收到的數據存放的地址和個數以及數據幀是否有效。

        另外CMD_START_Rxi還用來控制FC接收通道中的RX-FIFO控制器。CMD_START_Rx1控制FC接收通道按FC-2幀接收數據存入RX-FIFO;CMD_START_Rx2控制 FC接收通道接收所有數據(除了連續的IDLE有序集碼之外)存入RXFIFO。

        內置CPU的配置及ULP的設計

        內置CPU通過嵌入的軟件完成FC-2層的序列和交換的協議,同時實現ULP與上層的通訊。

        CPU外設的配置

        CPU配置的外設和總線接口定義如下:

        (1)兩個RS232串行口。

        (2)看門狗定時器:WATCHDOG-TIMER。

        (3)兩個FC-2層通訊用的定時器:FCTIMER1,FC-TIMER2。

        (4)接收兩路FC-2幀收發控制器中斷的PIO:INTFRAME-PIO。兩個接受來自RX-FIFO的有序集譯碼的PIO:ORDERSET- PIO1,ORDERSETPIO2。兩個內總線接口,用于操作兩路FC-2幀收發控制器。可根據操作功能需要,對FC-2幀收發控制器的各寄存器進行定義。

        (5)四個獨立的連接收發數據緩沖區的內總線接口。

        (6)三條獨立的存儲器總線接口:雙口RAM、程序存儲器和數據存儲器。

        (7)與ULP交換數據的ULP-RXFIFO接口。

        (8)與ULP握手的ULP-PIO接口。

        雙絞線傳輸器相關文章:雙絞線傳輸器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 舞钢市| 济宁市| 乌兰县| 山东省| 西安市| 彰化市| 安泽县| 抚顺市| 博湖县| 玛纳斯县| 六枝特区| 苍南县| 汾阳市| 德保县| 绍兴县| 会理县| 鄂伦春自治旗| 兖州市| 石林| 乐清市| 榕江县| 沽源县| 平原县| 泸州市| 山阳县| 科技| 塘沽区| 巴林左旗| 咸丰县| 南宁市| 定安县| 许昌市| 衡南县| 寻乌县| 浦江县| 广河县| 鹤壁市| 关岭| 谢通门县| 长宁县| 民县|