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