機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
MCS-51單片機(jī)串行口IP核的實(shí)現(xiàn)
MCS-51單片機(jī)串行口IP核的實(shí)現(xiàn)
 更新時(shí)間:2008-8-19 13:17:54  點(diǎn)擊數(shù):62
【字體: 字體顏色
摘 要: 本文介紹了利用EDA技術(shù)設(shè)計(jì)出一種功能和通信協(xié)議與MCS-51系列單片機(jī)的串行口相兼容,性能有大幅提高的串行口控制器的IP核,并經(jīng)過(guò)驗(yàn)證獲得了滿(mǎn)意的效果。

關(guān)鍵字: 串行口 知識(shí)產(chǎn)權(quán)核 設(shè)計(jì)

1 引言

  隨著集成電路的深亞微米制造技術(shù)和eda技術(shù)的迅猛發(fā)展,芯片的密度和復(fù)雜度不斷提高,復(fù)用以前的設(shè)計(jì)模塊用于asic芯片和在一塊芯片上實(shí)現(xiàn)嵌入式系統(tǒng)的功能形成所謂的片上可編程系統(tǒng)( system on programmable chip,sopc) 已成為一種發(fā)展的新趨勢(shì)。ip core(知識(shí)產(chǎn)權(quán)核) 設(shè)計(jì)的重用性以及sopc 技術(shù)的出現(xiàn),以其設(shè)計(jì)的靈活性大大縮短了產(chǎn)品的設(shè)計(jì)周期,減少了設(shè)計(jì)成本,降低了設(shè)計(jì)風(fēng)險(xiǎn), 加快了產(chǎn)品的上市速度。本文中介紹的串行口控制器是一種功能和通信協(xié)議與mcs-51系列單片機(jī)的串行口相兼容,性能有大幅提高的數(shù)據(jù)通信部件,其往往于低速低成本的微機(jī)與下位機(jī)的通訊中,并允許在串行鏈路上進(jìn)行全雙工的通信。通過(guò)ip核重用技術(shù),可廣泛應(yīng)用在各種soc、嵌入式微處理芯片的設(shè)計(jì)以及工業(yè)應(yīng)用中。

2 系統(tǒng)簡(jiǎn)介

  本課題采用altera公司的max+plusⅱ10.0設(shè)計(jì)平臺(tái),以超高速集成電路硬件描述語(yǔ)言vhdl為系統(tǒng)邏輯描述的唯一表達(dá)方式,采用自頂向下的設(shè)計(jì)原則,對(duì)mcs-51單片機(jī)的串行接口進(jìn)行反相設(shè)計(jì)。同時(shí)選用altera公司的acex系列器件來(lái)實(shí)現(xiàn)最終的ip核。由于篇幅的關(guān)系,筆者不打算對(duì)開(kāi)發(fā)平臺(tái)、開(kāi)發(fā)工具以及最終實(shí)現(xiàn)硬件電路的fpga芯片進(jìn)行介紹,而是著重介紹整體的設(shè)計(jì)思想。根據(jù)對(duì)mcs-51單片機(jī)的串行接口塊功能的剖析[1]和模塊化的設(shè)計(jì)思想,在設(shè)計(jì)時(shí)進(jìn)行模塊劃分,可劃分為4個(gè)子模塊,它們分別是:(1)串口時(shí)鐘發(fā)生器模塊;(2)數(shù)據(jù)檢測(cè)器模塊;(3)發(fā)送器模塊;(4)接收器模塊。由于同步電路較容易使用寄存器的異步復(fù)位/置位端,可以使整個(gè)電路有一個(gè)確定的初始狀態(tài);使用同步電路易于消除電路的毛刺,使設(shè)計(jì)更可靠;同步電路可以很好地利用先進(jìn)的設(shè)計(jì)工具,如靜態(tài)時(shí)序分析工具等,為設(shè)計(jì)者提供最大便利條件,便于電路錯(cuò)誤分析,加快設(shè)計(jì)進(jìn)度。所以我們采用嚴(yán)格的同步設(shè)計(jì)電路來(lái)設(shè)計(jì)串行口ip核,即本設(shè)計(jì)中只有一個(gè)clk上升沿,從而保證了每一個(gè)觸發(fā)器同步動(dòng)作,消除了時(shí)鐘不同步帶來(lái)的誤動(dòng)作。

3 系統(tǒng)現(xiàn)實(shí)

  設(shè)計(jì)一個(gè)軟核,首先要確定本核與外部的信息交換通路,即本模塊與外部電路的接口,友好的接口模型可以大大提高ip核的使用范圍。圖1是串行口ip核的接口模型圖,圖中左邊的引腳是輸入引腳,右邊是輸出引腳,圖中引腳的寬度均有標(biāo)明(未寫(xiě)出寬度表明寬度為“1”)。由于本設(shè)計(jì)不支持i/o口的復(fù)用,所以為串行口工作于模式0下增加了rxd_o和rxdwr兩個(gè)輸出引腳,前者用于輸出,后者為輸出有效控制位(rxdwr為高電平時(shí),指示輸出)。串行口控制寄存器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)。


圖1 串行口輸入輸出引腳圖

  串行口有四種工作方式,方式0的波特率固定的(為1/12倍的輸入時(shí)鐘頻率);方式1和方式3的波特率是定時(shí)器/計(jì)數(shù)器1的溢出率的1/16或1/32倍;而方式2的波特率則是輸入時(shí)鐘頻率的1/32或1/64倍。由此可見(jiàn),首先必須要解決的問(wèn)題就是設(shè)計(jì)分頻器。由于在方式0下,串行口是作半雙工的同步移位寄存器使用,其發(fā)送和接收的波特率是一樣的,因此對(duì)于方式0,串行口內(nèi)部的分頻信號(hào)只需要一路即可。但是對(duì)于其他方式,串行口均是工作在全雙工的狀態(tài)下,因此,每種方式下均需要兩路分頻信號(hào),一個(gè)用于發(fā)送,一個(gè)用于接收。

  對(duì)于方式0和方式2,其分頻的對(duì)象是輸入時(shí)鐘,實(shí)現(xiàn)這種分頻器的主要vhdl代碼的如下:(信號(hào)s_count_enable的頻率為輸入時(shí)鐘頻率的1/12,其高電平維持時(shí)間與一個(gè)輸入時(shí)鐘的周期相等。)

s_count_enable<=`1`when s_pre_count=conv_unsigned(11,4) else `0`;

p_divide_clk: process (clk, reset)

begin

if reset = `1` then

s_pre_count <= conv_unsigned(0,4);

else

if clk`event and clk=`1` then

if s_pre_count = conv_unsigned(11,4) then

s_pre_count <= conv_unsigned(0,4);

else

s_pre_count <= s_pre_count + conv_unsigned(1,1);

end if;

end if;

end if;

end process p_divide_clk;

  對(duì)于方式1和方式3,其分頻的對(duì)象都是定時(shí)器/計(jì)數(shù)器1的溢出率,且分頻的系數(shù)是一樣的。由于串行口只有一個(gè),它不可能調(diào)試工作在方式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)(圖1中的tf_i引腳),這樣的檢測(cè)器可以雙穩(wěn)態(tài)觸發(fā)器來(lái)實(shí)現(xiàn),限于篇幅,雙穩(wěn)態(tài)觸發(fā)器的vhdl實(shí)現(xiàn)請(qǐng)參考文獻(xiàn)[2],這里就不加詳述。檢測(cè)器在監(jiān)測(cè)到tf_i引腳的上升沿時(shí)就使其輸出信號(hào)保持一個(gè)時(shí)鐘周期的高電平,再另外設(shè)計(jì)計(jì)數(shù)器對(duì)此高電平進(jìn)行計(jì)數(shù),以達(dá)到對(duì)其分頻的效果。

  除了作為同步移位寄存器的方式0外,其他作uart(通用異步接收和發(fā)送器)用的三種方式在接收外部輸入的時(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的跳變就會(huì)啟動(dòng)接收過(guò)程(注:負(fù)跳變檢測(cè)器對(duì)外部輸入引腳的采樣頻率為波特率的16倍)。負(fù)跳變檢測(cè)器和上述上升沿檢測(cè)器的設(shè)計(jì)思路是一樣的。位檢測(cè)器的設(shè)計(jì)原理是把一個(gè)接收位的時(shí)間分為16等分(以?xún)?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)方式是移位。移位的時(shí)鐘來(lái)自上面所述的分頻器的,也就是根據(jù)各自的波特率進(jìn)行。雖然此部分很繁瑣,但是實(shí)現(xiàn)并不困難,請(qǐng)讀者參閱文獻(xiàn)[3]、[4]和[5]。

4 模塊功能仿真

  圖2是串行口工作在方式0下發(fā)送數(shù)據(jù)的仿真圖。輸入信號(hào)trans_i是發(fā)送的啟動(dòng)信號(hào)(高電平有效)。它的出現(xiàn)使內(nèi)部用于發(fā)送的狀態(tài)機(jī)啟動(dòng),同時(shí)使內(nèi)部計(jì)數(shù)器復(fù)位,以便使每位的發(fā)送過(guò)程與計(jì)數(shù)器同步。計(jì)數(shù)器滿(mǎn)刻度偏轉(zhuǎn)一次,狀態(tài)機(jī)的狀態(tài)就會(huì)增加1。如圖所示,在狀態(tài)0向狀態(tài)1轉(zhuǎn)換時(shí),將要發(fā)送的8位數(shù)據(jù)的最低為輸出到rxd_o,這一數(shù)據(jù)的電平一直維持到狀態(tài)1向狀態(tài)2轉(zhuǎn)換,這時(shí)開(kāi)始輸出第二位數(shù)據(jù)。依此類(lèi)推,在狀態(tài)8的末尾,8位數(shù)據(jù)完全輸出完畢后,指示是否有數(shù)據(jù)輸出的信號(hào)rxdwr_o變?yōu)榈碗娖,表示?shù)據(jù)已經(jīng)發(fā)送完畢。同時(shí),發(fā)送完成的指示信號(hào)(scon_o[0…2]中的相應(yīng)位)也會(huì)置位。

  • 上一篇: 微處理器電源監(jiān)控芯片SGM803及其應(yīng)用
  • 下一篇: 801251上電復(fù)位和復(fù)位延時(shí)的時(shí)序分析
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話(huà):0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1