80C51 系列單片機模擬器選購指南

admin @ 2014-03-25 , reply:0

概述
第一章  為什麼要使用模擬器?1.1模擬的概念     模擬的概念其實使用非常廣,最終的含義就是使用可控的手段來模模擬實的情況。&……

第一章   為什麼要使用模擬器?
1.1 模擬的概念
      模擬的概念其實使用非常廣,最終的含義就是使用可控的手段來模模擬實的情況。
      在嵌入式系統的設計中,模擬應用的範圍主要集中在對程序的模擬上。例如,在單片機的開發過程中,程序的設計是最為重要的但也是難度最大的。一種最簡單和原始的開發流程是:編寫程序-燒寫晶元-驗證功能,這種方法對於簡單的小系統是可以對付的,但在大系統中使用這種方法則是完全不可能的。

1.2  模擬的種類

  • 軟體模擬:這種方法主要是使用計算機軟體來模擬運行實際的單片機運行,因此模擬與硬體無關的系統具有一定的優點。用戶不需要搭建硬體電路就可以對程序進行驗證,特別適合於偏重演算法的程序。軟體模擬的缺點是無法完全模擬與硬體相關的部分,因此最終還要通過硬體模擬來完成最終的設計。
  • 硬體模擬:使用附加的硬體來替代用戶系統的單片機並完成單片機全部或大部分的功能,使用了附加硬體後用戶就可以對程序的運行進行控制,例如單步,全速,查看資源,斷點等。硬體模擬是開發過程中所必須的。

1.3  為什麼要使用模擬器?
      在與一些有經驗的工程師交談中,我們會發現有相當一部分工程師在開發中不使用或很少模擬器。向他們詢問原因,得到的回答是“模擬器不可靠”。但是他們是如何解決程序開發中遇到的問題呢?通過深入的交流才明他們是照這樣的方法來開發程序的:

     (1)   根據自己的設計建立一個符合要求的硬體平台,如果該平台涉及的程序比較複雜,還要搭建一個人機交流的通道。人機交流通道可能是一個簡單的發光二極體,蜂鳴器,複雜的可能是串口通訊口,LCD顯示屏。

      (2)  寫一個最簡單的程序,例如只是將發光二極體連續的閃爍。程序編譯后燒寫到單片機晶元中,驗證硬體平台是否工作正常。

      (3)  硬體平台正常工作后編寫系統最低層的驅動程序,每次程序更改后都重新燒寫單片機晶元驗證。如果在程序驗證中遇到問題,則可能在程序中加入一些調試手段,例如通過串口發送一些信息到PC 端的超級終端上,用於了解程序的運行情況。

      (4)  系統低層驅動程序完成後再編寫用戶框架程序,由於這部分已經不涉及到硬體部分,所以程序中的問題用戶一般能夠發現。

     但是更多的調查表明,使用以上方法的工程師總的看來所設計的程序不是很龐大或很複雜。因為在做簡單的項目時,我們可以通過一個發光二極體就可以表達出內部的信息;如果程序複雜,可能需要更多的信息來表示內部的狀態,這樣可能就需要串口協助調試;如果程序更複雜,硬體更多,實時性更強,那工程師就要更多的增強調試手段,串口可能就不能滿足了,需要類似於斷點的功能,因為我想知道在某一個時刻單片機內部的狀態究竟是怎樣?

      如果用戶程序的修改非常頻繁,可能一次又一次地的燒寫晶元佔用的時間就很多,這時用戶就會想能下載程序並運行的裝置。到這裡,您會看到,隨著用戶要求的越來越高,調試裝置已經越來越象一個通用的模擬器了。因此我們的建議是:不要迴避使用模擬器,因為使用模擬器能提高您的開發速度。

        但是不能否認的是,用戶迴避使用模擬器也是有原因的。因為模擬器也是一種電子裝置,非常依賴於設計者的水平。如果一個模擬器設計者的水平有欠缺,那將給模擬器的使用者帶來很大的問題,因為模擬器的使用者將分不清楚究竟是程序的問題還是出在那裡。隨著電子設備的複雜化,設計工程師面臨前所未有的壓力。您可以想象,用戶發現了程序中有一個問題,首先懷疑是自己系統中的問題,可能是軟體方面也可能是硬體方面。因為用戶系統處於開發階段,用戶基本上不會懷疑模擬器。在這種情況下,用戶將耗費很大的精力在自己的系統中尋找並不存在的問題。如果用戶最終發現問題來源於模擬器,並通過燒寫晶元驗證確實如此,那這個模擬器用戶以後可能會逐漸放棄使用模擬器。

      用戶放棄使用模擬器,對用戶的影響是巨大的。因為放棄使用一個設計不完善的模擬器,也放棄了 使用其它設計完善的模擬器,關鍵是放棄了合理的開發方法。因此我們的建議是:不要迴避使用模擬器,但要挑選好的模擬器。

1.4模擬器的附加服務更加重要

      在購買模擬器的同時,還要注意模擬器廠家的服務,這一點很關鍵。這裡說的服務包含模擬器本身 的服務,例如模擬器使用上的指導服務,模擬器的維修服務。這些都是一個產品的最基本的服務,對於模擬器這種特殊產品來將還不是全部的服務。

      使用模擬器來開發產品,會遇到很多問題:產品本身的問題,模擬器的問題,模擬器和用戶系統的問題。如果用戶開發經驗不是很豐富,他並不能排除遇到的問題究竟來源於哪個方面。這時,他可能求助於模擬器生產廠商。如果模擬器的生產廠商只專註於模擬器的設計,而對於其它的單片機應用不熟悉,他可能對用戶提出的問題不能作出正確的判斷而一味的強調自己的模擬器沒有問題。與之相反,一個既熟悉模擬器的使用,又有豐富開發經驗的模擬器支持廠商則能協助用戶快速的找出問題,實踐證明這兩種情況帶來的效果是完全不一樣的。因此我們的建議是:挑選好的模擬器,更要挑選好的技術支持。

第二章 模擬器中使用的技術
      模擬器的生產在國內有十多年的歷史,其中使用的技術根據時間和性能的不同大約分成以下幾種:
      (1) 模擬開發系統
      這種技術主要在模擬器的初級階段使用。由於當時沒有好的模擬技術或模擬晶元,模擬器設計成了一個雙平台的系統並根據用戶的要求在監控系統和用戶系統中切換。這種模擬系統性能完全依賴於設計者的水平,實際的最終性能廠家之間相差很大。不過總的說來需要佔用一定的用戶資源並且設計複雜,現在基本上已經淘汰,只是使用在一些開發學習系統中。

      (2)  Bondout 技術
      一般來說,人們常常說的專用模擬晶元其實就是 Bondout。這種模擬晶元一般也是一種單片機, 但是內部具有特殊的配合模擬的時序。當進入模擬狀態后,可以凍結內部的時序運行,可以查看/修改在靜止時單片機內部的資源。
      使用Bondout 製作的模擬器一般具有時序運行準確(也有例外),設計製作成本低等優點;Bondout晶元一般是由單片機生產廠家提供的,因此它只能模擬該廠商指定的單片機,模擬的品種很少。

      (3)  HOOKS 技術
      HOOKS 是PHILIPS擁有的一項模擬技術,主要解決不同品種單片機的模擬問題。使用該專利技術 就可以模擬所有具有HOOKS 特性的單片機,即使該單片機是不同廠家製造的。使用HOOKS 技術製造的模擬器可以兼容模擬不同廠家的多種單片機,而且模擬的電氣性能非常接近於真實的單片機。但是HOOKS 技術對模擬器的製造廠家的技術要求特別高,不同的模擬器生產廠家同時得到HOOKS 技術的授權,但是設計的模擬器的性能差別很大。
      10 年前國內就已經得到了 PHILIPS  的 HOOKS 技術授權,但是受當時技術水準的限制研製的 HOOKS 模擬器還不能實用。即使到了今天,也不是每個模擬器廠家都能生產HOOKS 模擬器,即使生產出來性能也差異很大,用戶應仔細區別。

      (4)  內嵌模擬功能的晶元
      隨著晶元技術的發展,很多單片機生產廠商在晶元內部增加了模擬功能,一般通過JTAG 介面進行 控制。為了降低成本和增加可靠性,內嵌的模擬部分一般功能比較簡單。
      根據當前的發展趨勢,如果只模擬標準的MCS-51 系列單片機可以選用Bondout 技術的模擬器;如果用戶希望模擬器功能更多更靈活的諸如增強型80C51 系列單片機的話,那麼必須選用HOOKS 技術模擬器。二者比較而言,採用HOOKS 技術的模擬器性價比要高於Bondout 技術。

第三章  國內模擬器的現狀
      到今天為止國內的模擬器發展大約有20 年的歷史,總的說來生產商的規模都不是很大,在新產品 的研製/開發/服務上都不能投入很大的資金。根據模擬器使用的技術來劃分,國內模擬器的設計大約可以分成以下幾個時期:
      (1)  70 年代末期-80 年代中期 這個時期採用的技術主要是模擬開發系統,現在看來技術含量不高,用戶要求也不高。
      (2)  80 年代末期-90 年代末期 這個時期主要使用華邦一顆帶有模擬功能的晶元製作,採用的技術應該叫做Bondout。採用這顆晶元能大大簡化模擬器的設計,因此國內模擬器的水準有了大的提高,基本上可以不佔用用戶資源。
      正是由於模擬性能的提高,國內的模擬器製作在將近 10 年的時間內沒有進步,一直採用這種製作模式。雖然個別廠商也嘗試過別的技術來提高模擬水準,例如HOOKS 技術,但是由於本身技術的限制沒有成功。相反國外的模擬器較早地使用了HOOKS 技術,在初期由於HOOKS 技術本身的複雜性,仿 真性能和價格不如國內採用Bondout 的模擬器。
      隨著IC 技術的發展,國內製作HOOKS 技術的條件已經成熟,但是國內的幾家主要的生產廠商還 陶醉於Bondout 技術之中。
      (3)  2000 年開始
      2000 年是中國模擬器市場變化最大的時期,其中最引人注目的變化是華邦模擬晶元W78958 的停產
     華邦公司在設計W78958 晶元時,其內部的模擬功能只是為了模擬器廠商能製作模擬器以便更好的推廣W78958。但是經過幾年的變化,W78958 演變成為一顆模擬器上使用的模擬專用晶元而不是用戶使用的標準晶元,使用的範圍也僅限於國內,一年不到20000 只的用量也促使華邦公司在進入2002 年後宣布將停產該晶元。
     W78958 停產以後,國內模擬器廠商處於一個非常尷尬的局面。由於W78958 在國內使用了將近10 年,國內的用戶群非常龐大,這些用戶將無法得到持續的支持特別是維修方面。另外,國內圍繞在W78958 上所做的技術工作也無法得到延續和提高,很多業界人士認為模擬器行業將面臨另起爐灶或重新洗牌的局面。
      HOOKS 技術無疑是模擬器廠商在失去W78958 后的替代品,但是由於沒有長期跟蹤和關注,短期內多數廠家無法將複雜的HOOKS 技術應用於成熟的產品中。專家們認為模擬器廠家的整體轉型可能需要2-3 年的周期,並且有相當的模擬器廠家將會被淘汰,市場擁有量將主要集中在少數幾個模擬器廠家。    
周立功單片機發展有限公司是PHILIPS 在國內最大的代理商,它以獨特的技術銷售引起國內乃至全 球的注目。周立功公司成立時間不到5 年,但是膨脹很快,現在已然成為國內單片機行業的龍頭,一言 一行對整個行業影響很大。
      2001 年12 月,周立功公司試探性地推出第一款模擬器TKS-764,用於支持周立功公司當時的 主打晶元51LPC 系列OTP 單片機。由於TKS-764 內部穩定可靠的設計,並直接直接在Keil 中的調試,所以推出后得到51LPC 用戶的青睞,擁有相當大的用戶群。
      2002 年6 月,周立功旗下的廣州致遠電子有限公司在國內率先推出研製達兩年之久的HOOKS 仿 真器,全面支持PHILIPS 和其它公司的增強型80C51 系列單片機的模擬問題。該系列模擬器徹底解決了國內模擬器在模擬低電壓、內部64K 程序、靜態和動態關閉ALE、靜態和動態切換6/12 Clock、4 個中斷優先順序、串口從地址自動識別和幀錯誤檢測以及P8xC51 獨具定時器2 等增強性能的難題, 短期內使模擬器的用戶群迅速擴大,並在業界得到良好的口碑。
      TKS 系列HOOKS 技術模擬器推出后,在模擬器行業引起了不小的震動。因為周立功公司在公眾前的形象一一直是一個優秀的晶元代理商,在掌握了先進的模擬器技術后將改變整個行業的格局。國內的模擬器生產廠商在華邦的模擬晶元停產後發現自己處於一個尷尬的境地,現有的模擬器不能繼續生產了。而轉向HOOKS 技術還需要一段研發的過程,即使有些廠家匆匆推出了HOOKS 技術模擬器卻明顯比周立功公司的HOOKS 技術模擬器在性能上有明顯的差距,模擬器行業可能會重新洗牌。

第五章 如何挑選通用模擬器
      模擬器是一種很特殊的電子工具,模擬器的性能跟設計者的水平密切相關。同樣使用一種模擬器技 術,但是最終產品的性能差別很大。根據用戶的不同用途,可以照如下標準挑選模擬器:
        如果主要用途是商業產品開發,使用專用模擬器比較理想因為專用模擬器只是模擬某一種或一類晶元,可以做得性能比較高,性能也比較穩定,不用兼顧其它晶元的特殊要求。專用模擬器可能價格高一點,但是對商業開發來講良好的性能是第一位的。
        盡量採用技術含量高的模擬技術
      例如,HOOKS 技術由於其良好的兼容性以及接近實際晶元的性能,應該成為通用和專用模擬器的首選。
        慎重選擇模擬晶元裝在外置模擬頭上的結構
      有些模擬器的模擬晶元放置在外置模擬頭的上方,這種方式的優點是可以通過更換模擬頭來更換模擬器的模擬性能,通用性比較強,可以模擬不同類型的單片機。一些宣傳中說模擬晶元貼近用戶板,性能是最可靠的,但實際不是這樣的。模擬晶元除了輸出用戶信號外,還要通過複雜的匯流排由監控電路控制,這種控制時序是最重要的。由於控制時序頻率比較高,因此不應該通過較長的模擬電纜輸出到外部模擬頭上,這很容易受到外部的干擾或干擾外部。一旦控制時序出現問題,模擬晶元離用戶板再近也沒有用途。

        注意模擬器的一些細節問題。例如:
           (1)  否支持外部複位信號?
           (2)   是否支持用戶板晶振?
           (3)   能否在真正模擬內部64K 程序 (P0/P2 口仍做I/O 口)?
           (4)   P0/P2 口是否可以同時用作I/O 口和匯流排?
           (5)  模擬器的輸出/輸入口是否有可靠的保護?
           (6)   是否支持低電壓的模擬?
           (7)  是否支持增強型80C51性能?例如內部的附加XRAM,雙DPTR,ALE 關閉,6CLK 時鐘等。
           (8)   是否支持靜態關閉和動態關閉ALE?
           (9)   是否靜態切換和動態切換6/12 Clock?
           (10)是否支持更高的模擬頻率?

       模擬器廠家後續的技術支持
     由於模擬器在應用中的特殊性,用戶在選購時盡量選擇有強大技術支持的生產廠家。好的技術支持不但能給您帶來模擬器使用上的支持,也能給您在應用項目上的各個方面提出良好的建議和指導,使您能快速準確的完成您目前的項目。但如前所述,國內多數廠商規模很小,不能給用戶提供全面的技術支持。周立功公司在進入工具行業后,提出了單片機的一攬子解決方,提供包括工具在內的全方位的用戶支持,開闢了一種全新的銷售服務模式。

第六章 如何測試通用模擬器
     在選擇了模擬器生產廠商后,用戶還需要對模擬器的性能做仔細的測試,保證您選擇的模擬器能夠 達到該模擬器保證的性能以及作為模擬器應該達到的性能。
     在選擇一種模擬器前,通過該模擬器的廣告和銷售人員的介紹,用戶能基本上了解該模擬器的突出性能。這些突出性能應該是該模擬器確實存在的功能,雖然可能有被誇大但一般都不會有欺騙的成分。這些性能好不好需要有針對性的一一驗證,這裡只能建議用戶將目光注意在實際模擬性能上,而不要過分注意一些與模擬器無關或關係不大的功能。
     很多的模擬器雖然具備一些附加的功能,但是用戶必須要注意到這些模擬器可能在一些最基本的模擬功能卻做不好,這種現象在國產的模擬器中非常普遍!由於用戶並不專業於模擬器的測試,因此在購買中不知道對這些模擬器的死點進行驗證。等以後在學習特別是在開發設計中,這些設計中的死點可能給您帶來莫名其妙的問題。您可能要花幾倍的時間來尋找其中的原因,因為您首先懷疑是您系統的問題而不懷疑是模擬器的問題。所以選擇一個性能可靠的模擬器是十分重要的,這需要非常專業化的測試程序來實現。
      以下的測試程序由廣州致遠電子有限公司提供,經過長時間的使用證明能基本上反映出一個模擬器設計水平的高低。廣州致遠電子有限公司在提供這些測試程序時聲明:這些測試程序只是指出模擬器設 計中容易出現的問題,但並不有意攻擊任何含有上述問題的模擬器廠家。

1.單步性能的測試
     測試說明:單步是模擬器設計中比較難實現的功能。照通常的理解,用戶每執行一個單步應該準確實現理想運行的單步性能。例如,運行一個機器周期的指令,內部的所有時序應該都動作一個機器周 期而不能出現不動作或動作過度的現象。不過很遺憾的看到國內的模擬器多數不能達到這個指標。

     測試程序:

                ORG        0000H
                SETB       TR0                        /*  打開定時器0 */
     TestStart:
                NOP                                   /* 定時器0 運行1個機器周期, TL0 加1 */
                MOV        A,#0FFH                    /* 定時器0 運行1個機器周期, TL0 加1 */
                MUL        AB                         /* 定時器0 運行4 個機器周期, TL0 加4 */
                LJMP       TestStart                  /* 定時器0 運行2 個機器周期, TL0 加2 */
                END

     測試步驟
      (1)  照您當前使用的模擬器要求測試上面的程序;
      (2)  在運行前打開TL0 的顯示,以便單步運行后能觀察TL0 的變化;
      (3)  使用當前模擬器環境提供的單步功能開始單步運行;
      (4)  單步運行后檢查TL0 變化的數值是否與指令的周期數相同。

     測試結論:模擬器如果沒有照嚴格正規的設計,程序的單步運行性能將不準確,一般會出現實際運行時間變長的現象,這在時間要求較高的單步運行將不能模擬程序的真正運行。

2.中斷性能的測試
     測試說明:中斷是一種非正常的程序跳轉,單步模擬有一定的難度,尤其在低檔模擬器中。在當前 採用Bondout 技術製作的模擬器中一般可以做到正確模擬,但是仍有一些模擬器不能正確單步模擬中斷。
     測試程序:
                ORG       0000H
                LJMP      TestStart
                ORG        000BH                     /*  定時器0 的中斷服務程序 */
                RETI
    TestStart:
                SETB      EA                         /* 開放全局中斷允許 */
                SETB      ET0                        /* 開放T0 中斷允許 */
    TestLoop:
                SETB      TF0                        /*  設置T0 的中斷標誌 */
                INC       A                          /* A 數值加一,以便觀察程序持續運行 */
                LJMP      TestLoop                   /* 連續運行 */
                END

     測試步驟
     (1)  照您當前使用的模擬器要求測試上面的程序。
     (2)  每次SETB TF0 后程序將進入T0 的中斷服務程序,執行完畢后返回主程序繼續運行。
     (3)   主程序能在TestLoop 中連續運行,因此A 能連續加一,但是每循環一次就進入一次中斷。
     測試結論:模擬器如果沒有照嚴格正規設計,程序的中斷性能將不準確。可能出現程序不能跳轉到中斷服務程序,或沒有返回到正確的主程序,或A 不能每次循環連續的加1。

3.連續中斷性能的測試
    測試說明:在80C51 的中斷系統中,串口中斷比較特殊。進入串口中斷服務程序后中斷標誌TI 或RI不會自動清除,如果用戶程序不對TI 或RI進行清除操作則可能會出現連續進入中斷服務程序的情況。根據80C51 的中斷處理,在退出中斷後必須執行完一條指令后才能重新進入中斷服務程序,因此即使連續中斷的情況下主程序也能得到連續執行。

    測試程序:
                ORG       0000H
                LJMP      TestStart
                ORG        0023H                     /*  定時器0 的中斷服務程序 */
                RETI
    TestStart:
                SETB      EA                         /* 開放全局中斷允許 */
                SETB      ES                         /* 開放串口中斷允許 */
                SETB      TI
TestLoop:
                NOP
                NOP
                INC        A                         /* A 數值加一,以便觀察程序持續運行 */
                LJMP      TestLoop                   /* 連續運行 */
                END

     測試步驟

     (1)   照您當前使用的模擬器要求測試上面的程序。
     (2)   進入TestLoop 后,每次單步運行完一條程序都會進入串口中斷,退出後繼續運行一條下面的程序,然後又進入中斷服務程序,A 的數值可以得到遞增。
     (3)   主程序能在TestLoop 中連續運行,因此A 能連續加一,但是每循環一次就進入一次中斷。

     測試結論:模擬器如果沒有照嚴格正規設計,程序連續運行中斷程序性能將不準確。可能出現程序不能跳轉到中斷服務程序,或沒有返回到正確的主程序,或A 不能每次循環連續的加1。

     測試小結
     上述的幾個測試程序對模擬器的性能要求很高,如果模擬器通過測試說明被測試的模擬器模擬性能指標較高;如果模擬器沒有通過測試只能判斷模擬器性能不是最好,具體的綜合性能要有待其它檢驗。

第七章 如何挑選測試HOOKS 技術模擬器

      HOOKS 技術是國外普遍採用的一種模擬技術,同Bondout 技術相比較,模擬器的適用範圍可以更廣。HOOKS 技術在10年前已經被國內引進,並被當時的模擬器廠家試圖採用。但是由於HOOKS 技術本身的複雜性,當時國內眾模擬器廠家竟無法設計出可以使用的模擬器,致使國內的模擬技術遠遠落後於國外。

      2002 年,周立功旗下的廣州致遠電子有限公司推出了研製多年的TKS 系列HOOKS 模擬器,並在性能上全面超過國外同類型的HOOKS 模擬器,國內的用戶能以低廉的價格購買到技術先進的HOOKS技術模擬器。在TKS 系列HOOKS 模擬器面市以後,國內的模擬器廠商紛紛加強研發力量研製HOOKS技術,經過了一段時間后也宣布供應採用HOOKS 技術的模擬器。用戶需要注意的是:HOOKS 技術只是一個基本的模擬技術,要最終作成模擬器還必須依靠設計工程師精心的設計,因此市場上HOOKS 技術的模擬器性能指標可能有很大的差別,有的不佔用用戶資源,有的就做不到;有的模擬頻率可以到很高,但是有的不行。因此用戶應仔細加以挑選和鑒別。

     根據HOOKS 技術本身的特點,用戶應該對以下的幾個方面加以注意和測試。

        能否運行外部用戶目標板上的程序

      由於HOOKS 技術中P0/P2 口是重新構造的,因此P0/P2 口上的時序處理是整個設計中的難點。P0/P2 的I/O 特性和數據匯流排特性相對容易實現一點,但是程序匯流排很難正確實現,這是由於HOOKS的技術結構決定的。一般HOOKS 模擬器在實現模擬內部64K 代碼空間比較容易,但是模擬內部4K (類似89C51)/8K (類似89C54)/16K (類似89C54)/32K (類似89C58)等能外擴ROM 空間的MCU類型則無法實現。在國內外所有的HOOKS 技術的模擬器中,只有廣州致遠公司的TKS 模擬器B 系列能真正做到穩定運行外部用戶目標板上的程序。運行外部用戶目標板上的程序是非常必要的,因為用戶可能在外部擴充了一般的用戶程序,需要實際模擬一下來驗證整個系統的正確性;也可能在外部放置了大容量的(可能超過64K 的物理地址限制)分組字型檔,而這種特性是模擬器內部無法實現的;也可能是外部有分組的BANK 方式的運行代碼,這種方式要求模擬器必須有運行外部程序代碼的能力。

        P0/P2 口能否同時用作匯流排和I/O

     這種特性是晶元本來的性能,但是由於HOOKS 技術的難度,有很多HOOKS 模擬器不能做到這一點,導致用戶在使用時無法全面滿足要求。該性能一般不需要測試,可以直接閱讀模擬器的性能說明或向生產廠商或代理商詢問。作者檢測過國內外知名模擬器廠家的多種HOOKS 模擬器,幾乎都沒有完美做到P0/P2 口的準確模擬。

        P0/P2 口的直流參數

     如果需要檢測的模擬器根本做不到同時模擬I/O 和匯流排方式,則沒有必要檢測P0/P2 的直流參數。如果要檢測的模擬器宣稱能夠同時模擬I/O 和匯流排方式,用戶還必須分別在I/O 和匯流排兩種方式下對直流參數進行測試。根據作者的HOOKS 模擬器測試經驗,有的模擬器雖然宣稱能夠同時模擬I/O 和匯流排方式,但是根本不區分這兩種方式驅動能力,採用的是一種平均方式,這樣在作為I/O 時高電平驅動能力過大,而作為匯流排時驅動能力過小。用戶在使用這類模擬器作為輸入時,必須加大外部信號的驅動能力,這跟實際晶元的驅動能力相差太遠;在作為匯流排使用時,如果外部的匯流排(包括地址匯流排和數據匯流排)個數稍多,匯流排電平將嚴重下降而無法工作。用戶可以使用下面的測試程序配合示波器檢查。

     測試程序:

                ORG         0000H

LJMP      TestStart

TestStart:       MOV      P0,#0FFH

TestLoop:       MOV       P0,#00H

                NOP

                MOV       A,#0FFH

                MOV       DPTR,#0FFFFH

                MOVX      @DPTR,A

                NOP

                MOV       P0,#00H

                SJMP      TestLoop

                END

     測試步驟

     (1)  照您當前使用的模擬器要求測試上面的程序,模擬器不接任何用戶設備。

     (2)  單步運行完TestStart 的程序行,P0 的數值設置為0FFH。這時使用電壓表測量一下P0的任意一個管腳(例如P0.0)的電壓,記錄為V1,V1 的數值一般小於當前的電源電壓。然後使用一個2K 電阻,一端接模擬器提供的地,另一端接P0.0,使用電壓表測量一下P0.0 的電壓,記錄為V2,V2的電壓越接近與0 說明該模擬器P0 在I/O 口方式下的特性越好(接近於開漏)。如果V2 大於1伏說明P0 口的輸入電阻在10K 以下,該模擬器P0 口在I/O 下性能較差。

     (3)  在TestLoop 中連續全速運行,仍保持2K 電阻接在P0.0。使用示波器觀察P0.0 引腳,可以看到占空比較小的正電平脈衝,該正電平脈衝是有P0 輸出的低8 位地址和數據輸出引起的,因為處於匯流排方式,P0 口的驅動能力應該較強。保持示波器的正常顯示,然後將2K 電阻不斷的接觸/脫離P0.0 引腳,觀察P0.0 腳脈衝信號幅度的變化。如果該信號在2K 電阻接入后幅度降低很大,例如1V 以上,說明該模擬器P0 口驅動能力不足,無法滿足用戶的正常的需要。

     測試結論:HOOKS 模擬器要同時模擬I/O 口和匯流排模式而且保持良好的驅動特性是比較困難的,但是可以作到的。一般的HOOKS 模擬器一般不敢宣稱同時模擬I/O 口和匯流排方式,但是用戶需要注意即使宣稱可以同時模擬I/O 和匯流排,用戶也需要照上述的方法進行測試,防止廠家採取驅動折中的方法掩蓋。根據作者的測試結果,國內所有的HOOKS 模擬器只有TKS 系列可以作到真正同時模擬I/O 口和匯流排方式,重要的是仍保持了良好的驅動特性。

       是否佔用用戶資源

     設計優良的HOOKS 模擬器不會佔用任何用戶資源,但是由於設計技術的差別,有一些採用HOOKS技術的模擬器不能達到這樣的性能,一般會佔用部分資源。佔用資源將在使用中限制用戶的使用,用戶可能無法通過該模擬器實現正常程序的功能。該性能一般不需要測試,可以直接閱讀模擬器的性能說明或向生產廠商或代理商詢問。

       ALE 信號的關閉/開啟

     HOOKS 技術的一個突出優點是能支持增強性能的模擬,而ALE 信號的關閉/開啟是增強性能的一個典型範例。由於在HOOKS 技術中,依賴ALE 信號能大大簡化信號的處理,因此一般採用HOOKS 技術的模擬器都不能關閉ALE 信號,否則會引起模擬時序的全面紊亂。該性能一般在模擬器的性能說明中沒有詳細說明,因此需要用戶自己進行測試。

     下面的測試程序以PHILIPS 的P89C52X2 模擬晶元為例。

測試程序:

               ORG        0000H

               LJMP      TestStart

TestStart:  MOV         P2,#55H                     /* 先對P1 進行設置 */

TestLoop:  ORL          AUXR,#01H                   /*  關閉ALE 信號 */

               NOP

               MOV       P2,#55H

               NOP

               ANL       AUXR,#0FEH                 /* 開啟ALE 信號 */

               NOP

               MOV       P2,#0AAH

               NOP

               LJMP      TestLoop                     /* 連續運行 */

               END

     測試步驟

     (1)  照您當前使用的模擬器要求測試上面的程序。

     (2)  進入TestLoop 后,連續單步運行,程序應該能照正確的程序流程運行,而且對P2 的操作

能正確在P2 口反映出來。

     (3)  在TestLoop 中連續全速運行,然後停止程序運行,觀察當前程序位置是否是在TestLoop 內

的有效位置,P2 是否是前一個對P2 操作的數值。

     測試結論:模擬器如果不能支持ALE 的關閉將無法通過上面的測試程序。

       雙倍速時鐘的動態/靜態切換

     PHILIPS、SST 等一些MCU 廠商在自己的增強型51 產品中增加了雙倍速時鐘的功能,使51 內核的速度提高了兩倍。而且在有的型號中同時具有6/12Clock 時鐘切換的功能,用戶在使用中有了更多的靈活性。因此,這種變化要求HOOKS 模擬器必須同時滿足6/12Clock 兩種方式之一的模擬(靜態切換),更高的要求則是能在用戶程序運行中變換6/12Clock 模式(動態切換)。能同時滿足動態/靜態切換的模擬器難度很大,在國內除TKS 宣布掌握這一技術外,沒有見到其它廠家有類似的報道。時鐘的靜態切換功能可以直接查閱模擬器的性能說明或向生產廠商/代理商詢問,也可以用下面的程序進行測試:

    下面的測試程序以PHILIPS 的P89C52X2 模擬晶元為例。

    測試程序:

               ORG       0000H

               LJMP      TestStart

TestStart:  MOV         P2,#55H                          /* 先對P2 進行設置 */

TestLoop:  ORL          CKCON,#01H                       /*  切換為6Clock 模式 */

               NOP

               MOV       P2,#55H

               NOP

               ANL       CKCON,#0FEH                      /* 切換為6Clock 模式*/

               NOP

               MOV        P2,#0AAH

NOP

                LJMP      TestLoop                             /* 連續運行 */

                END

     測試步驟

     (1)   照您當前使用的模擬器要求測試上面的程序。

     (2)  進入TestLoop 后,連續單步運行,程序應該能照正確的程序流程運行,而且對P2 的操作

能正確在P2 口反映出來。

     (3) 在TestLoop 中連續全速運行,然後停止程序運行,觀察當前程序位置是否是在TestLoop 內的有效位置,P2 是否是前一個對P2 操作的數值。

     測試結論:模擬器如果不能支持6/12Clock 的切換將無法通過上面的測試程序。




[admin via 研發互助社區 ] 80C51 系列單片機模擬器選購指南已經有2518次圍觀

http://cocdig.com/docs/show-post-42947.html