基于AMBA總線的智能卡控制器設計
3.2 數據收發控制模塊
數據收發模塊按照系統對控制寄存器,各時間寄存器和輸出字節控制寄存器的設置來工作。與復位模塊一樣,數據收發模塊也是由狀態機跳變來完成。系統在復位響應完成后進人IDLE狀態,根據協議選擇字節傳輸方式(如圖4所示)或是塊傳輸方式(如圖5所示)。
在字節傳輸方式下,當系統設置了輸出字節控制寄存器后控制器就處于發送狀態。首先進入Prepare狀態,將發送FIFO中的數據放入移位寄存器,并計算出數據的奇偶校驗位,為數據傳輸做好準備。1個ETU之后進入Start狀態,拉低I/O數據線1個ETU來發送數據起始位。接著進入數據發送狀態,將移位寄存器中的數據按1 b/ETU的速率串行發出。然后發送1 b奇偶校驗位。數據發送完畢后按照系統設置的保護時間將I/O線拉高若干個ETU。最后檢測是否已經發出了指定的字節數(Trig_num)。如果數據發送完畢,則跳入IDLE狀態等待新的發送設置或轉入數據接收;否則進入Prepare狀態開始下一個字節的發送。
當系統處于數據接收狀態時,首先進入等待起始位狀態,在此狀態設置超時計數器判斷卡是否有響應。當I/O線拉低后就進入接收起始位狀態,在該狀態的0.5ETU時刻判斷I/O數據線是否仍然拉低。如果I/O線跳高則說明是由于I/O線抖動造成的起始位誤判,狀態跳回等待起始狀態;如果I/O線仍然為低,則起始位接收成功,并在0.5個ETU后進入數據接收狀態。8 b數據按照1 b/ETU的速率接收,完成后轉入接收校驗位狀態。硬件根據接收的8 b數據計算出校驗位并與收到校驗位比較,如果不同則I/O線拉低告知智能卡數據錯誤請求重發,相同則進入IDLE狀態等待接收下一個數據或是進入發送狀態。
評論