袁曉駿,路林吉
當今,在基于單片機的系統設計過程中,各主流 EDA軟件只是停留在提供最基本的繪圖、編輯工具階段,而不涉及包括器件選取和連接的人腦思考環節。針對這一現狀,本文研究的目標是:設計并實現一個計算機軟件,該軟件的潛在用戶是單片機系統設計人員,設計人員通過使用該軟件,只需進行相對簡單的需求錄入,就能得到其所需的單片機系統的原理圖,從而代替設計人員的原理圖設計工作。本軟件從基于51系列單片機的系統設計入手,將來可擴展到支持多種單片機。
單片機系統的設計遵循著一種“模塊化”的設計思想:所有的單片機系統均可分解為兩個部分:一是單片機本身,二是圍繞著單片機的外圍部分。其中,外圍部分按照功能的不同,可劃分為相對獨立的功能模塊,各模塊均通過導線與單片機或其它模塊相連。設計人員按照所需的功能不同,逐個設計單片機的外圍功能模塊,最終形成完整的系統。
基于上述思想,本文所研究之軟件的總體實現方案是:首先構建出由標準、常用電路組成的完成不同的系統功能的通用模塊數據庫;其次設計出人機交互界面,通過預置的規則將用戶的需求與數據庫內的對應模塊建立聯系;然后編制出模擬設計人員思考過程的程序,將系統所需的各功能模塊與單片機進行自動連接;最后將以結構化數據表述的系統原理圖用圖形方式輸出。軟件的架構,如圖1所示:

圖1 軟件架構圖
該軟件各組成部分描述如下:
1) 數據庫:是存放基礎數據的容器,同時也是程序運行中的工作空間。該軟件將完整的單片機系統按照功能的不同,分為不同種類的模塊,數據庫中預存了大量的各類功能模塊。
2) 人機交互界面:是用戶與軟件進行交互的媒介,用戶通過此界面進行系統需求錄入、查看和保存生成的原理圖、維護數據庫等操作。
3) 用戶需求處理程序:接收用戶錄入的原始需求,從數據庫的基礎數據中選取所需的單片機、功能模塊數據,并形成臨時數據表存放在在數據庫中。
4) 自動連接程序:對用戶需求處理程序產生的臨時數據進行進一步的處理,從而形成完整的單片機系統原理圖數據。
5) 原理圖輸出程序:將最終生成的單片機系統原理圖繪制到人機交互界面上,并根據用戶的要求將原理圖以文件形式保存到軟件外部。
6) 數據庫維護程序:根據用戶的要求,對數據庫進行模塊的添加、刪除和修改等相關操作。
數據庫的用途有兩個方面:一是預存設計好的各類單片機外圍功能模塊的數據,包括每個模塊的外部視圖和內部結構。二是作為軟件運行是的程序工作空間,暫存和處理臨時數據。
數據庫表的設計如下:
1) 模塊總表:該表列出了所有設計好的模塊,每個模塊用表中的一條記錄來描述。每個模塊通過編號、名稱、類型等字段來描述。
2) 模塊的外部視圖表:該表屏蔽了模塊內部的結構,僅描述模塊的外部端口,該表用來完成對單片機系統的模塊化構建。模塊的每一個外部端口均用表中的一條記錄來描述,每條記錄由模塊編號、模塊端口編號、模塊端口名稱等字段組成。
3) 模塊的內部結構表:該表列出了每個模塊內部所有的器件及其之間的連線,是進行原理圖繪制的依據,并可保存到軟件外部的文件中。表中,每個模塊內的每一個器件、每一條連線均用表中的一條記錄來描述。
4) 器件表:該表列出了所有預設模塊中用到的所有器件,描述了每個器件的外部管腳。用來在進行原理圖繪制時標明器件的管腳編號。
通過人機交互界面,軟件向用戶提供了需求錄入、原理圖管理和數據庫維護等操作功能。人機交互界面分為:需求錄入頁面,原理圖管理頁面和數據庫維護頁面。
需求錄入頁面是整個人機交互界面中最主要的部分,其布局遵循“模塊化”的思想,將頁面劃分為多個操作區域,每個操作區域對應一類功能模塊;每一類模塊提供多個參數供設置,參數的設置可通過勾選或下拉菜單選擇的方式操作。
由于一個實際的單片機系統不可能同時涵蓋所有類型的功能模塊,而僅僅是其中的數個,因此除了復位、時鐘等幾個必備模塊外,其余的非必選模塊在界面上均有“選中”與“不選中”的控制措施。頁面剛啟動時,所有非必選模塊的操作區域均處于不可編輯的狀態;只有在“選中”該模塊后,其操作區域才變為可編輯狀態,以供用戶繼續進行參數的設置。
用戶需求處理程序根據用戶錄入的需求,從數據庫的基礎數據中自動選取所需的數據,并形成臨時數據暫存在庫中,供后續的自動連接程序使用。為使軟件能夠識別和處理用戶需求,程序將用戶錄入的需求轉化為程序的變量值:每個可選模塊的選中與否各由一個變量控制,初值為0,代表未選中;用戶如果在界面上選中了該模塊,則變量值變為1。
為每個模塊的每個參數各設置一個變量,變量初始值為1,代表默認選項;用戶如果在界面更改了該參數,則變量值相應的改變。
有了以程序變量形式表達的用戶需求后,程序即可以按照一套既定的規則,自動進行模塊的選取。本程序的處理結果是:在數據庫中生成臨時數據性質的“模塊總表”和“模塊外部視圖表”,表中內容為本次工作所需的所有模塊。
在用戶需求處理程序自動生成了所需模塊之后,自動鏈接程序即投入運行,它將生成的模塊與單片機進行自動鏈接,它分為以下幾個順序執行的過程:
(一) 過程1:先期預處理
本過程是自動連接程序執行的必經第一步,其總體思路是:模塊的某些端口必須使用單片機特定P3端口的第二功能,如WR、RD、INT等;某些端口必須利用單片機的P0端口進行并行數據和地址的分時傳輸,并還可能利用P2端口進行高位地址的傳輸。故為了防止單片機的 P3、P0、P2端口被其它普通I/O需求占用,首先應為上述模塊端口分配單片機資源,然后再為其余的模塊端口分配資源。
如果發現單片機所能提供的I/O端口數量不能滿足原始各模塊的需求,則跳出本過程,然后由用戶決定是繼續進入后續的過程2或過程3,還是退出自動連接程序返回用戶需求錄入界面。
過程1的工作步驟,如圖2所示:

圖2 先期預處理流程圖
(二) 過程2:數據端口復用預處理
由于單片機所能提供的I/O端口數量不能滿足原始各模塊的需求,本過程嘗試采用數據端口復用的方法。對于同時存在的多個輸出/輸入類模塊,可為其各配置一個數據鎖存器或三態緩沖器,再將它們的并行數據端口全部復接到單片機P0.0~P0.7端口,從而節省了對單片機I/O端口的占耗。相應的,應采取片選控制的方法來對上述模塊進行選通。過程2的工作步驟,如圖3所示:

圖3 數據端口復用預處理流程圖
(三) 過程3:模塊并行改串行預處理
由于單片機所能提供的I/O端口數量不能滿足原始各模塊的需求,同時數據端口復用預處理也失敗,本過程嘗試采用并行改串行的方法。首先找到可以將并行數據端口改為串行數據端口的模塊,然后逐一將其替換為相應的串行模塊。每替換完一個模塊后,就重新核算單片機端口數是否夠用。若夠用則不再繼續更改,若仍不夠用就繼續更改下一個可改模塊。如果所有可改的模塊均改完,而單片機的I/O端口數仍不滿足需求,則意味著并行改串行預處理失敗,同時也意味著自動連接程序無法完成模塊與單片機的連接,則中斷退出,返回用戶需求錄入界面,重新進行需求錄入。過程 3的工作步驟,如圖4所示:

圖4 并行改串行預處理流程圖
為驗證軟件可用性,特選取已經設計完成的實際系統,以系統需求提出者的角色通過人機交互界面錄入需求,然后將自動生成的原理圖與實際系統原理圖進行比較。測試用例包括:基于單片機溫度采集系統、基于單片機的數字鬧鐘系統等。測試結果表明,該軟件自動生成的系統原理圖與實例設計者繪制的原理圖大體一致,具備正確性和可用性;而在元器件選擇上,可能存在各自選取的型號不同但功能相同的情況;此外,在保證單片機端口使用正確的前提下,在被占用的端口編號、順序上軟件生成結果與人工設計結果有所不同。
[1]楊居義,馬寧,靳光明,王益斌,單片機原理與工程應用[M],清華大學出版社,2009。
[2]趙廣林,看圖快速學Protel 99se電路設計與制版[M],電子工業出版社,2009。
[3]吳永,基于網絡的單片機多點溫度采集系統的設計[J],計算機測量與控制,2010,18(4):959~964。
[4]鄧秉林,單片機在閥門控制系統中的應用[J],真空,2009,46(5):74~76。
[5]馮榮彪,王國良,駱明兒,基于單片機的激光測速系統設計[J],激光技術,2010,34(5):679~681。