新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于EDA技術(shù)的單片機(jī)IP核設(shè)計(jì)

基于EDA技術(shù)的單片機(jī)IP核設(shè)計(jì)

作者: 時(shí)間:2009-03-17 來源:網(wǎng)絡(luò) 收藏


圖 3 8051_tmrctr和8051_siu的符號文件圖

3.3串行接口模塊

MC5―51的串行接口既可以作通用異步接收和發(fā)送器(UART)用,又可以作同步移位寄存器用。圖3中的右圖就是本模塊設(shè)計(jì)完成后形成的符號文件。由于本設(shè)計(jì)不支持I/O口的復(fù)用,所以為串行口工作于模式0下增加了RXD_O和RXDWR兩個(gè)輸出引腳,前者用于輸出,后者為輸出有效控制位。串行口控制寄存器SCON在設(shè)計(jì)中也被分成兩部分,一部分接收來自控制器的輸入(一共6位,SM0、SM1、SM2、REN、TB8和RI),一部分作為輸出送往控制器(一共3位,RB8以及分別指示發(fā)送和接收完畢的兩位,控制器會根據(jù)這兩位來對中斷標(biāo)志置位)。至于發(fā)送中斷標(biāo)志位TI,由于其不會影響串行口的工作過程所以在此并未列出,它將在控制器中得到體現(xiàn)。

串行口有四種工作方式,方式0和方式2是對時(shí)鐘頻率分頻的結(jié)果;方式1和方式3的波特率是對定時(shí)器/計(jì)數(shù)器1的溢出率進(jìn)行分頻。由此可見,首先必須要解決的問題就是設(shè)計(jì)分頻器。由于在方式0下,串行口是作半雙工的同步移位寄存器使用,其發(fā)送和接收的波特率是一樣的,因此對于方式0,串行口內(nèi)部的分頻信號只需要一路即可。但是對于其他方式,串行口均是工作在全雙工的狀態(tài)下,因此,每種方式下均需要兩路分頻信號。分頻器的設(shè)計(jì)在上已經(jīng)述及,在此不加贅述。對于方式1和方式3,其分頻的對象都是定時(shí)器/計(jì)數(shù)器1的溢出率,且分頻的系數(shù)是一樣的。由于串行口只有一個(gè),它不可能同時(shí)工作在方式1和3,因此方式1和方式3可以共用分頻信號。要對定時(shí)器/計(jì)數(shù)器1的溢出率進(jìn)行分頻,首先必須測出其頻率,為此需要一個(gè)上升沿的檢測器來監(jiān)測外部輸入的定時(shí)器/計(jì)數(shù)器1的溢出信號(圖3中的右圖中的TF_I引腳),這樣的檢測器同樣可以用雙穩(wěn)態(tài)觸發(fā)器來實(shí)現(xiàn)。檢測器在監(jiān)測到TF_I引腳的上升沿時(shí)就使其輸出信號保持一個(gè)時(shí)鐘周期的高電平,再來另外設(shè)計(jì)計(jì)數(shù)器對此高電平進(jìn)行計(jì)數(shù),以達(dá)到對其分頻的效果。

除了作為同步移位寄存器的方式0外,其他的三種方式在接收外部輸入的時(shí)候均需要對外部的輸入信號采樣監(jiān)測以確定信號的值。因此一個(gè)位檢測器是必需的。同時(shí),串行口工作在方式1、方式2和方式3時(shí),每一個(gè)接收的數(shù)據(jù)幀都有一個(gè)起始位,這個(gè)起始位被固定為0,也就是說在輸入端RXD_I監(jiān)測到1到0的負(fù)跳變就會啟動接收過程(注:負(fù)跳變檢測器對外部輸入引腳的采樣頻率為波特率的16倍)。位檢測器的設(shè)計(jì)原理是把一個(gè)接收位的時(shí)間分為16等分(以內(nèi)部計(jì)數(shù)器的16個(gè)狀態(tài)來表示),在計(jì)數(shù)器的7、8、9狀態(tài)時(shí),位檢測器對外部輸入端的值進(jìn)行采樣。采用3取2的表決方法來抑制噪聲。如果位檢測器檢測到接收的第一位不是0,那么就說明它不是一幀數(shù)據(jù)的起始位,應(yīng)該擯棄,接收電路復(fù)位。

至于接收和發(fā)送,這里采用有限狀態(tài)機(jī)的方式來實(shí)現(xiàn)。由于要工作在全雙工模式下,所以接收和發(fā)送要采用兩個(gè)有限狀態(tài)機(jī),有限狀態(tài)機(jī)的每一個(gè)狀態(tài)用來發(fā)送/接收移位數(shù)據(jù),發(fā)送和接收的具體實(shí)現(xiàn)方式是移位【3】。移位的時(shí)鐘來自上面所述的分頻器,也就是根據(jù)各自的波特率進(jìn)行。限于篇幅,在此不再詳述。

3.4控制器模塊

控制器的設(shè)計(jì)是MCS-51設(shè)計(jì)中最復(fù)雜的部分,也是設(shè)計(jì)中最重要的組成模塊??刂破鞯膶⒎譃閮蓚€(gè)模塊來實(shí)現(xiàn)。一個(gè)模塊(在此命名為control_mem)主要用于與存儲器(包括內(nèi)部RAM,特殊功能寄存器SFR,外部RAM以及程序存儲器)的控制。另一個(gè)模塊(在此命名為control_fsm)主要用來實(shí)現(xiàn)指令系統(tǒng)。control_mem以時(shí)序電路的方式來實(shí)現(xiàn),它的作用是根據(jù)狀態(tài)機(jī)傳來的各種控制指令來對相應(yīng)的存儲器進(jìn)行操作。本狀態(tài)機(jī)的主控時(shí)序進(jìn)程是control_mem模塊中的一個(gè)以時(shí)序邏輯電路現(xiàn)實(shí)的進(jìn)程。它的啟動由control_mem模塊的相應(yīng)輸出信號來實(shí)現(xiàn),啟動后每經(jīng)過已過狀態(tài),其輸出的信號就會部分改變,這些改變就會指示control_mem下一步的動作,如此周而復(fù)始。下面簡要介紹一下二者的實(shí)現(xiàn)原理。

control_mem模塊的主要任務(wù)是根據(jù)狀態(tài)機(jī)的相應(yīng)指令,實(shí)現(xiàn)對存儲器的相應(yīng)操作。其總共要完成7個(gè)任務(wù)(7個(gè)任務(wù)分別以7個(gè)進(jìn)程來實(shí)現(xiàn),除前3個(gè)以時(shí)序邏輯電路的方式來實(shí)現(xiàn)外,后面的4個(gè)進(jìn)程全部是以組合邏輯電路的方式來實(shí)現(xiàn)的。),分別是:

1.監(jiān)測各個(gè)中斷源的變化。使指示中斷源有變化的相應(yīng)信號位置位。監(jiān)測外部引腳的變化的方法,一個(gè)簡單的雙穩(wěn)態(tài)觸發(fā)器就可以實(shí)現(xiàn)。

2.根據(jù)狀態(tài)機(jī)的指令寫一些用戶沒有直接地址的芯片內(nèi)部輔助寄存器。它主要的作用是作為狀態(tài)機(jī)的主控進(jìn)程,同時(shí)它也會根據(jù)狀態(tài)機(jī)的狀態(tài)置位相應(yīng)的內(nèi)部輔助寄存器(例如:指示高、低優(yōu)先級的中斷是否正在運(yùn)行的寄存器等)。同時(shí),取指令也是在本進(jìn)程中實(shí)現(xiàn)的。

3.寫內(nèi)部RAM和SFR,包括寫“字節(jié)”和寫“位”。它由時(shí)序邏輯電路來實(shí)現(xiàn),寫“位”和寫“字節(jié)”的控制信號由狀態(tài)機(jī)給出,每次寫操作均由時(shí)鐘上升沿觸發(fā)。

4.根據(jù)檢測中斷源的變化的結(jié)果,在必要時(shí)向狀態(tài)機(jī)發(fā)送中斷請求類別指示信號。它是一個(gè)純組合邏輯電路,進(jìn)程1中一旦監(jiān)測到中斷源有變化,它的輸出信號(與狀態(tài)機(jī)相連接)就會改變,從而指示狀態(tài)機(jī)進(jìn)入中斷。



關(guān)鍵詞: EDA 單片機(jī) IP核

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉