基于EDA技術的單片機IP核設計
圖 3 8051_tmrctr和8051_siu的符號文件圖
3.3串行接口模塊
MC5―51單片機的串行接口既可以作通用異步接收和發送器(UART)用,又可以作同步移位寄存器用。圖3中的右圖就是本模塊設計完成后形成的符號文件。由于本設計不支持I/O口的復用,所以為串行口工作于模式0下增加了RXD_O和RXDWR兩個輸出引腳,前者用于輸出,后者為輸出有效控制位。串行口控制寄存器SCON在設計中也被分成兩部分,一部分接收來自控制器的輸入(一共6位,SM0、SM1、SM2、REN、TB8和RI),一部分作為輸出送往控制器(一共3位,RB8以及分別指示發送和接收完畢的兩位,控制器會根據這兩位來對中斷標志置位)。至于發送中斷標志位TI,由于其不會影響串行口的工作過程所以在此并未列出,它將在控制器中得到體現。
串行口有四種工作方式,方式0和方式2是對時鐘頻率分頻的結果;方式1和方式3的波特率是對定時器/計數器1的溢出率進行分頻。由此可見,首先必須要解決的問題就是設計分頻器。由于在方式0下,串行口是作半雙工的同步移位寄存器使用,其發送和接收的波特率是一樣的,因此對于方式0,串行口內部的分頻信號只需要一路即可。但是對于其他方式,串行口均是工作在全雙工的狀態下,因此,每種方式下均需要兩路分頻信號。分頻器的設計在上已經述及,在此不加贅述。對于方式1和方式3,其分頻的對象都是定時器/計數器1的溢出率,且分頻的系數是一樣的。由于串行口只有一個,它不可能同時工作在方式1和3,因此方式1和方式3可以共用分頻信號。要對定時器/計數器1的溢出率進行分頻,首先必須測出其頻率,為此需要一個上升沿的檢測器來監測外部輸入的定時器/計數器1的溢出信號(圖3中的右圖中的TF_I引腳),這樣的檢測器同樣可以用雙穩態觸發器來實現。檢測器在監測到TF_I引腳的上升沿時就使其輸出信號保持一個時鐘周期的高電平,再來另外設計計數器對此高電平進行計數,以達到對其分頻的效果。
除了作為同步移位寄存器的方式0外,其他的三種方式在接收外部輸入的時候均需要對外部的輸入信號采樣監測以確定信號的值。因此一個位檢測器是必需的。同時,串行口工作在方式1、方式2和方式3時,每一個接收的數據幀都有一個起始位,這個起始位被固定為0,也就是說在輸入端RXD_I監測到1到0的負跳變就會啟動接收過程(注:負跳變檢測器對外部輸入引腳的采樣頻率為波特率的16倍)。位檢測器的設計原理是把一個接收位的時間分為16等分(以內部計數器的16個狀態來表示),在計數器的7、8、9狀態時,位檢測器對外部輸入端的值進行采樣。采用3取2的表決方法來抑制噪聲。如果位檢測器檢測到接收的第一位不是0,那么就說明它不是一幀數據的起始位,應該擯棄,接收電路復位。
至于接收和發送,這里采用有限狀態機的方式來實現。由于要工作在全雙工模式下,所以接收和發送要采用兩個有限狀態機,有限狀態機的每一個狀態用來發送/接收移位數據,發送和接收的具體實現方式是移位【3】。移位的時鐘來自上面所述的分頻器,也就是根據各自的波特率進行。限于篇幅,在此不再詳述。
3.4控制器模塊
控制器的設計是MCS-51單片機IP核設計中最復雜的部分,也是設計中最重要的組成模塊。控制器的將分為兩個模塊來實現。一個模塊(在此命名為control_mem)主要用于與存儲器(包括內部RAM,特殊功能寄存器SFR,外部RAM以及程序存儲器)的控制。另一個模塊(在此命名為control_fsm)主要用來實現指令系統。control_mem以時序電路的方式來實現,它的作用是根據狀態機傳來的各種控制指令來對相應的存儲器進行操作。本狀態機的主控時序進程是control_mem模塊中的一個以時序邏輯電路現實的進程。它的啟動由control_mem模塊的相應輸出信號來實現,啟動后每經過已過狀態,其輸出的信號就會部分改變,這些改變就會指示control_mem下一步的動作,如此周而復始。下面簡要介紹一下二者的實現原理。
control_mem模塊的主要任務是根據狀態機的相應指令,實現對存儲器的相應操作。其總共要完成7個任務(7個任務分別以7個進程來實現,除前3個以時序邏輯電路的方式來實現外,后面的4個進程全部是以組合邏輯電路的方式來實現的。),分別是:
1.監測各個中斷源的變化。使指示中斷源有變化的相應信號位置位。監測外部引腳的變化的方法,一個簡單的雙穩態觸發器就可以實現。
2.根據狀態機的指令寫一些用戶沒有直接地址的芯片內部輔助寄存器。它主要的作用是作為狀態機的主控進程,同時它也會根據狀態機的狀態置位相應的內部輔助寄存器(例如:指示高、低優先級的中斷是否正在運行的寄存器等)。同時,取指令也是在本進程中實現的。
3.寫內部RAM和SFR,包括寫“字節”和寫“位”。它由時序邏輯電路來實現,寫“位”和寫“字節”的控制信號由狀態機給出,每次寫操作均由時鐘上升沿觸發。
4.根據檢測中斷源的變化的結果,在必要時向狀態機發送中斷請求類別指示信號。它是一個純組合邏輯電路,進程1中一旦監測到中斷源有變化,它的輸出信號(與狀態機相連接)就會改變,從而指示狀態機進入中斷。
評論