人類社會(huì)已進(jìn)入到高度發(fā)達(dá)的信息化社會(huì),信息社會(huì)的發(fā)展離不開電子產(chǎn)品的進(jìn)步。 現(xiàn)代電子產(chǎn)品在性能提高、復(fù)雜度增大的同時(shí),價(jià)格卻一直呈下降趨勢(shì),而且產(chǎn)品更新?lián)Q代的步伐 也越來(lái)越快,實(shí)現(xiàn)這種進(jìn)步的主要原因就是生產(chǎn)制造技術(shù)和電子設(shè)計(jì)技術(shù)的發(fā)展。前者以微細(xì)加工 技術(shù)為代表,目前已進(jìn)展到深亞微米階段,可以在幾平方厘米的芯片上集成數(shù)千萬(wàn)個(gè)晶體管;后者 的核心就是EDA技術(shù)。EDA是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化 技術(shù)最新成果而研制成的電子CAD通用軟件包,主要能輔助進(jìn)行三方面的設(shè)計(jì)工作:IC設(shè)計(jì),電子 電路設(shè)計(jì)以及PCB設(shè)計(jì)。沒(méi)有EDA技術(shù)的支持,想要完成上述超大規(guī)模集成電路的設(shè)計(jì)制造是不可 想象的,反過(guò)來(lái),生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對(duì)EDA技術(shù)提出新的要求。
1.EDA技術(shù)的當(dāng)今情況
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的不斷發(fā)展,在涉及通信、國(guó)防、航天、工業(yè)自動(dòng)化、儀器儀表等領(lǐng)域工作中,EDA技術(shù)的含量以驚人的速度上升,從而使它成為當(dāng)今電子技術(shù)發(fā)展的前沿之一。
2. EDA技術(shù)的發(fā)展
回顧近30年電子設(shè)計(jì)技術(shù)的發(fā)展歷程,可將EDA技術(shù)分為三個(gè)階段。 (1) 七十年代為CAD階段,這一階段人們開始用計(jì)算機(jī)輔助進(jìn)行IC版圖編輯和PCB布局布 線,取代了手工操作,產(chǎn)生了計(jì)算機(jī)輔助設(shè)計(jì)的概念。 (2)八十年代為CAE階段,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設(shè) 計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過(guò)電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,以實(shí)現(xiàn)工程設(shè)計(jì),這就是計(jì)算機(jī)輔助 工程的概念。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動(dòng)布局布線,PCB后分 析。 (3)九十年代為ESDA階段。盡管CAD/CAE技術(shù)取得了巨大的成功,但并沒(méi)有把人從繁重的 設(shè)計(jì)工作中徹底解放出來(lái)。在整個(gè)設(shè)計(jì)過(guò)程中,自動(dòng)化和智能化程度還不高,各種EDA軟件界面千 差萬(wàn)別,學(xué)習(xí)使用困難,并且互不兼容,直接影響到設(shè)計(jì)環(huán)節(jié)間的銜接?;谝陨喜蛔悖藗冮_始 追求貫徹整個(gè)設(shè)計(jì)過(guò)程的自動(dòng)化,這就是ESDA即電子系統(tǒng)設(shè)計(jì)自動(dòng)化。
從目前的EDA技術(shù)來(lái)看,其發(fā)展趨勢(shì)是政府重視、使用普及、應(yīng)用文泛、工具多樣、軟件功能強(qiáng)大。
中國(guó)EDA市場(chǎng)已漸趨成熟,不過(guò)大部分設(shè)計(jì)工程師面向的是PC主板和小型ASIC領(lǐng)域,僅有小部分(約11%)的設(shè)計(jì)人員工發(fā)復(fù)雜的片上系統(tǒng)器件。為了與***和美國(guó)的設(shè)計(jì)工程師形成更有力的競(jìng)爭(zhēng),中國(guó)的設(shè)計(jì)隊(duì)伍有必要購(gòu)入一些最新的EDA技術(shù)。
在信息通信領(lǐng)域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計(jì)算機(jī)及軟件技術(shù)、第三代移動(dòng)通信技術(shù)、信息管理、信息安全技術(shù),積極開拓以數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)濟(jì)增長(zhǎng)點(diǎn)。要大力推進(jìn)制造業(yè)信息化,積極開展計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助工程(CAE)、計(jì)算機(jī)輔助工藝(CAPP)、計(jì)算機(jī)機(jī)輔助制造(CAM)、產(chǎn)品數(shù)據(jù)管理(PDM)、制造資源計(jì)劃(MRPII)及企業(yè)資源管理(ERP)等。有條件的企業(yè)可開展“網(wǎng)絡(luò)制造”,便于合作設(shè)計(jì)、合作制造,參與國(guó)內(nèi)和國(guó)際競(jìng)爭(zhēng)。開展“數(shù)控化”工程和“數(shù)字化”工程。自動(dòng)化儀表的技術(shù)發(fā)展趨勢(shì)的測(cè)試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測(cè)量、控制、通信與計(jì)算機(jī)(M3C)結(jié)構(gòu)。在ASIC和PLD設(shè)計(jì)方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。
外設(shè)技術(shù)與EDA工程相結(jié)合的市場(chǎng)前景看好,如組合超大屏幕的相關(guān)連接,多屏幕技術(shù)也有所發(fā)展。
中國(guó)自1995年以來(lái)加速開發(fā)半導(dǎo)體產(chǎn)業(yè),先后建立了幾所設(shè)計(jì)中心,推動(dòng)系列設(shè)計(jì)活動(dòng)以應(yīng)對(duì)亞太地區(qū)其它EDA市場(chǎng)的競(jìng)爭(zhēng)。
在EDA軟件開發(fā)方面,目前主要集中在美國(guó)。但各國(guó)也正在努力開發(fā)相應(yīng)的工具。日本、韓國(guó)都有ASIC設(shè)計(jì)工具,但不對(duì)外開放 。中國(guó)華大集成電路設(shè)計(jì)中心,也提供IC設(shè)計(jì)軟件,但性能不是很強(qiáng)。相信在不久的將來(lái)會(huì)有更多更好的設(shè)計(jì)工具有各地開花并結(jié)果。據(jù)最新統(tǒng)計(jì)顯示,中國(guó)和印度正在成為電子設(shè)計(jì)自動(dòng)化領(lǐng)域發(fā)展最快的兩個(gè)市場(chǎng),年復(fù)合增長(zhǎng)率分別達(dá)到了50%和30%。
EDA技術(shù)發(fā)展迅猛,完全可以用日新月異來(lái)描述。EDA技術(shù)的應(yīng)用廣泛,現(xiàn)在已涉及到各行各業(yè)。EDA水平不斷提高,設(shè)計(jì)工具趨于完美的地步。EDA市場(chǎng)日趨成熟,但我國(guó)的研發(fā)水平沿很有限,需迎頭趕上。 (1)
3 ESDA技術(shù)的基本特征
ESDA代表了當(dāng)今電子設(shè)計(jì)技術(shù)的最新發(fā)展方向,它的基本特征是:設(shè)計(jì)人員按照“自頂 向下”的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成 電路(ASIC)實(shí)現(xiàn),然后采用硬件描述語(yǔ)言(HDL)完成系統(tǒng)行為級(jí)設(shè)計(jì),最后通過(guò)綜合器和適配 器生成最終的目標(biāo)器件。這樣的設(shè)計(jì)方法被稱為高層次的電子設(shè)計(jì)方法,具體流程還將在4.2節(jié)中 做深入介紹。下面介紹與ESDA基本特征有關(guān)的幾個(gè)概念。
3.1 “自頂向下”的設(shè)計(jì)方法
10年前,電子設(shè)計(jì)的基本思路還是選擇標(biāo)準(zhǔn)集成電路“自底向上”(Bottom-Up)地構(gòu) 造出一個(gè)新的系統(tǒng),這樣的設(shè)計(jì)方法就如同一磚一瓦地建造金字塔,不僅效率低、成本高而且 還容 易出錯(cuò)。
高層次設(shè)計(jì)給我們提供了一種“自頂向下”(Top-Down)的全新的設(shè)計(jì)方法,這種設(shè)計(jì) 方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。在方框圖一級(jí)進(jìn)行仿真、糾 錯(cuò),并用硬件描述語(yǔ)言對(duì)高層次的系統(tǒng)行為進(jìn)行描述,在系統(tǒng)一級(jí)進(jìn)行驗(yàn)證。然后用綜合優(yōu)化工具 生成具體門電路的網(wǎng)表,其對(duì)應(yīng)的物理實(shí)現(xiàn)級(jí)可以是印刷電路板或?qū)S眉呻娐?。由于設(shè)計(jì)的主要 仿真和調(diào)試過(guò)程是在高層次上完成的,這不僅有利于早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,避免設(shè)計(jì)工作的 浪費(fèi),而且也減少了邏輯功能仿真的工作量,提高了設(shè)計(jì)的一次成功率。 (2)
3.2 ASIC設(shè)計(jì)
現(xiàn)代電子產(chǎn)品的復(fù)雜度日益加深,一個(gè)電子系統(tǒng)可能由數(shù)萬(wàn)個(gè)中小規(guī)模集成電路構(gòu) 成,這就帶來(lái)了體積大、功耗大、可靠性差的問(wèn)題,解決這一問(wèn)題的有效方法就是采用ASIC (Application Specific Integrated Circuits)芯片進(jìn)行設(shè)計(jì)。ASIC按照設(shè)計(jì)方法的不同可分為:全定制ASIC,半定制ASIC,可編程ASIC(也稱為可編程邏輯器件)。
設(shè)計(jì)全定制ASIC芯片時(shí),設(shè)計(jì)師要定義芯片上所有晶體管的幾何圖形和工藝規(guī)則,最 后將設(shè)計(jì)結(jié)果交由IC廠家掩膜制造完成。優(yōu)點(diǎn)是:芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低。缺點(diǎn)是:開發(fā)周期長(zhǎng),費(fèi)用高,只適合大批量產(chǎn)品開發(fā)。
半定制ASIC芯片的版圖設(shè)計(jì)方法有所不同,分為門陣列設(shè)計(jì)法和標(biāo)準(zhǔn)單元設(shè)計(jì)法,這 兩種方法都是約束性的設(shè)計(jì)方法,其主要目的就是簡(jiǎn)化設(shè)計(jì),以犧牲芯片性能為代價(jià)來(lái)縮短開發(fā)時(shí)間。
可編程邏輯芯片與上述掩膜ASIC的不同之處在于:設(shè)計(jì)人員完成版圖設(shè)計(jì)后,在實(shí)驗(yàn) 室內(nèi)就可以燒制出自己的芯片,無(wú)須IC廠家的參與,大大縮短了開發(fā)周期。
可編程邏輯器件自七十年代以來(lái),經(jīng)歷了PAL、GAL、CPLD、FPGA幾個(gè)發(fā)展階段,其中 CPLD/FPGA屬高密度可編程邏輯器件,目前集成度已高達(dá)200萬(wàn)門/片,它將掩膜ASIC集成度高的 優(yōu)點(diǎn)和可編程邏輯器件設(shè)計(jì)生產(chǎn)方便的特點(diǎn)結(jié)合在一起,特別適合于樣品研制或小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當(dāng)市場(chǎng)擴(kuò)大時(shí),它可以很容易的轉(zhuǎn)由掩膜ASIC實(shí)現(xiàn),因此開發(fā)風(fēng) 險(xiǎn)也大為降低。
上述ASIC芯片,尤其是CPLD/FPGA器件,已成為現(xiàn)代高層次電子設(shè)計(jì)方法的實(shí)現(xiàn)載體。
3.3 硬件描述語(yǔ)言
硬件描述語(yǔ)言(HDL-Hardware Description Language)是一種用于設(shè)計(jì)硬件電子 系統(tǒng)的計(jì)算機(jī)語(yǔ)言,它用軟件編程的方式來(lái)描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳 統(tǒng)的門級(jí)描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。例如一個(gè)32位的加法器,利用圖形輸入軟件 需要輸入500至1000個(gè)門,而利用VHDL語(yǔ)言只需要書寫一行A=B+C即可,而且VHDL語(yǔ)言可讀性強(qiáng), 易于修改和發(fā)現(xiàn)錯(cuò)誤。早期的硬件描述語(yǔ)言,如ABEL-HDL、AHDL,是由不同的EDA廠商開發(fā)的,互 相不兼容,而且不支持多層次設(shè)計(jì),層次間翻譯工作要由人工完成。為了克服以上缺陷,1985年 美國(guó)國(guó)防部正式推出了VHDL(Very High Speed IC Hardware Description Language)語(yǔ)言, 1987年IEEE采納VHDL為硬件描述語(yǔ)言標(biāo)準(zhǔn)(IEEE STD-1076)。
VHDL是一種全方位的硬件描述語(yǔ)言,包括系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門級(jí)多個(gè) 設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件 描述語(yǔ)言的功能,整個(gè)自頂向下或自底向上的電路設(shè)計(jì)過(guò)程都可以用VHDL來(lái)完成。另外,VHDL還 具有以下優(yōu)點(diǎn): VHDL的寬范圍描述能力使它成為高層次設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心提高到了系統(tǒng)功 能的實(shí)現(xiàn)與調(diào)試,只需花較少的精力用于物理實(shí)現(xiàn)。 VHDL可以用簡(jiǎn)潔明確的代碼描述來(lái)進(jìn)行復(fù)雜控制邏輯的設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì) 結(jié)果的交流、保存和重用。 VHDL的設(shè)計(jì)不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。 VHDL是一個(gè)標(biāo)準(zhǔn)語(yǔ)言,為眾多的EDA廠商支持,因此移植性好。
3.4 系統(tǒng)框架結(jié)構(gòu)
EDA系統(tǒng)框架結(jié)構(gòu)(Framework)是一套配置和使用EDA軟件包的規(guī)范,目前主要的EDA 系統(tǒng)都建立了框架結(jié)構(gòu),如Cadence公司的Design Framework,Mentor公司的Falcon Framework等,這些框架結(jié)構(gòu)都遵守國(guó)際CFI組織(CAD Framework Initiative)制定的統(tǒng)一技術(shù) 標(biāo)準(zhǔn)。Framework能將來(lái)自不同EDA廠商的工具軟件進(jìn)行優(yōu)化組合,集成在一個(gè)易于管理的統(tǒng)一的 環(huán)境之下,而且還支持任務(wù)之間、設(shè)計(jì)師之間在整個(gè)產(chǎn)品開發(fā)過(guò)程中實(shí)現(xiàn)信息的傳輸與共享,這是 并行工程和Top-Down設(shè)計(jì)方法的實(shí)現(xiàn)基礎(chǔ)。
4 EDA技術(shù)的基本設(shè)計(jì)方法
EDA技術(shù)的每一次進(jìn)步、都引起了設(shè)計(jì)層次上的一個(gè)飛躍,可以用圖1說(shuō)明。
物理級(jí)設(shè)計(jì)主要指IC版圖設(shè)計(jì),一般由半導(dǎo)體廠家完成,對(duì)電手工程師并沒(méi)有太大的意義,因此本文重點(diǎn)介紹電路級(jí)設(shè)計(jì)和系統(tǒng)級(jí)設(shè)計(jì)。
4.1 電路級(jí)設(shè)計(jì)
電路級(jí)設(shè)計(jì)工作流程如圖2所示,電子工程師接受系統(tǒng)設(shè)計(jì)任務(wù)后,首先確定設(shè)計(jì)方案,同時(shí)要選擇能實(shí)現(xiàn)該方案的合適 元器件,然后根據(jù)具體的元器件設(shè)計(jì)電路原理圖。接著進(jìn)行第一次仿真,包括數(shù)字電路的邏輯模擬、故障分析、模擬電路的交直流分析、瞬態(tài)分析。系統(tǒng)在進(jìn)行仿真時(shí),必須要有元件模型庫(kù)的支 持,計(jì)算機(jī)上模擬的輸入輸出波形代替了實(shí)際電路調(diào)試中的信號(hào)源和示波器。這一次仿真主要是檢 驗(yàn)設(shè)計(jì)方案在功能方面的正確性。
仿真通過(guò)后,根據(jù)原理圖產(chǎn)生的電氣連接網(wǎng)絡(luò)表進(jìn)行PCB板的自動(dòng)布局布線。在制作 PCB板之前還可以進(jìn)行后分析,包括熱分析、噪聲及竄擾分析、電磁兼容分析、可靠性分析等,并且可以將分析后的結(jié)果參數(shù)反標(biāo)回電路圖,進(jìn)行第二次仿真,也稱為后仿真,這一次仿真主要是檢 驗(yàn)PCB板在實(shí)際工作環(huán)境中的可行性。
由此可見,電路級(jí)的EDA技術(shù)使電子工程師在實(shí)際的電子系統(tǒng)產(chǎn)生之前,就可以全面地 了解系統(tǒng)的功能特性和物理特性,從而將開發(fā)過(guò)程中出現(xiàn)的缺陷消滅在設(shè)計(jì)階段,不僅縮短了開發(fā)時(shí)間,也降低了開發(fā)成本。 (3)
4.2 系統(tǒng)級(jí)設(shè)計(jì)
進(jìn)入90年代以來(lái),電子信息類產(chǎn)品的開發(fā)出現(xiàn)了兩個(gè)明顯的特點(diǎn):一是產(chǎn)品的復(fù)雜程 度加深,二是產(chǎn)品的上市時(shí)限緊迫。然而電路級(jí)設(shè)計(jì)本質(zhì)上是基于門級(jí)描述的單層次設(shè)計(jì),設(shè)計(jì)的所有工作(包括設(shè)計(jì)輸入,仿真和分析,設(shè)計(jì)修改等)都是在基本邏輯門這一層次上進(jìn)行的,顯然 這種設(shè)計(jì)方法不能適應(yīng)新的形勢(shì),為此引入了一種高層次的電子設(shè)計(jì)方法,也稱為系統(tǒng)級(jí)的設(shè)計(jì)方法。
高層次設(shè)計(jì)是一種“概念驅(qū)動(dòng)式”設(shè)計(jì),設(shè)計(jì)人員無(wú)須通過(guò)門級(jí)原理圖描述電路,而是 針對(duì)設(shè)計(jì)目標(biāo)進(jìn)行功能描述,由于擺脫了電路細(xì)節(jié)的束縛,設(shè)計(jì)人員可以把精力集中于創(chuàng)造性的概念構(gòu)思與方案上,一旦這些概念構(gòu)思以高層次描述的形式輸入計(jì)算機(jī)后,EDA系統(tǒng)就能以規(guī)則驅(qū)動(dòng) 的方式自動(dòng)完成整個(gè)設(shè)計(jì)。這樣,新的概念得以迅速有效的成為產(chǎn)品,大大縮短了產(chǎn)品的研制周 期。不僅如此,高層次設(shè)計(jì)只是定義系統(tǒng)的行為特性,可以不涉及實(shí)現(xiàn)工藝,在廠家綜合庫(kù)的支持 下,利用綜合優(yōu)化工具可以將高層次描述轉(zhuǎn)換成針對(duì)某種工藝優(yōu)化的網(wǎng)表,工藝轉(zhuǎn)化變得輕松容 易。具體的設(shè)計(jì)流程見圖3。
高層次設(shè)計(jì)步驟如下:第一步: 按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。第二步: 輸入VHDL代碼,這是高層次設(shè)計(jì)中最為普遍的輸入方式。此外,還可以采用圖形輸入 方式(框圖,狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點(diǎn)。第三步:將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的VHDL文件。對(duì)于大型設(shè)計(jì),還要進(jìn)行代碼級(jí)的功能仿 真,主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性,因?yàn)閷?duì)于大型設(shè)計(jì),綜合、適配要花費(fèi)數(shù)小時(shí),在綜合前 對(duì)源代碼仿真,就可以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間,一般情況下,可略去這一仿真步驟。第四步:利用綜合器對(duì)VHDL源代碼進(jìn)行綜合優(yōu)化處理,生成門級(jí)描述的網(wǎng)表文件,這是將高層次 描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。 綜合優(yōu)化是針對(duì)ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過(guò)程要在相應(yīng)的 廠家綜合庫(kù)支持下才能完成。綜合后,可利用產(chǎn)生的網(wǎng)表文件進(jìn)行適配前的時(shí)序仿真,仿真過(guò)程不 涉及具體器件的硬件特性,較為粗略。一般設(shè)計(jì),這一仿真步驟也可略去。第五步:利用適配器將綜合后的網(wǎng)表文件針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底 層器件配置、邏輯分割、邏輯優(yōu)化和布局布線。適配完成后,產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果:①適配報(bào)告,包 括芯片內(nèi)部資源利用情況,設(shè)計(jì)的布爾方程描述情況等;②適配后的仿真模型;③器件編程文件。 根據(jù)適配后的仿真模型,可以進(jìn)行適配后的時(shí)序仿真,因?yàn)橐呀?jīng)得到器件的實(shí)際硬件特性(如時(shí)延 特性),所以仿真結(jié)果能比較精確地預(yù)期未來(lái)芯片的實(shí)際性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求,就 需要修改VHDL源代碼或選擇不同速度品質(zhì)的器件,直至滿足設(shè)計(jì)要求。第六步:將適配器產(chǎn)生的器件編程文件通過(guò)編程器或下載電纜載入到目標(biāo)芯片F(xiàn)PGA或CPLD中。 如果是大批量產(chǎn)品開發(fā),通過(guò)更換相應(yīng)的廠家綜合庫(kù),可以很容易轉(zhuǎn)由ASIC形式實(shí)現(xiàn)。 (4)
5乒乓球游戲?qū)嵗?/strong>
一.基本要求:
1.設(shè)計(jì)一個(gè)由甲、乙雙方參賽,有裁判的3人乒乓球游戲機(jī)。
2.用8個(gè)(或更多個(gè))LED排成一條直線,以中點(diǎn)為界,兩邊各代表參賽雙方的位置,其中一只點(diǎn)亮的LED指示球的當(dāng)前位置,點(diǎn)亮的LED依此從左到右,或從右到左,其移動(dòng)的速度應(yīng)能調(diào)節(jié)。調(diào)
3.當(dāng)“球”(點(diǎn)亮的那只LED)運(yùn)動(dòng)到某方的最后一位時(shí),參賽者應(yīng)能果斷地按下位于自己一方的按鈕開關(guān),即表示啟動(dòng)球拍擊球。若擊中,則球向相反方向移動(dòng);若未擊中,則對(duì)方得1分。
4.一方得分時(shí),電路自動(dòng)響鈴3 s,這期間發(fā)球無(wú)效,等鈴聲停止后方能繼續(xù)比賽。
5.設(shè)置自動(dòng)記分電路,甲、乙雙方各用2位數(shù)碼管進(jìn)行記分顯示,每計(jì)滿21分為1局。
6.甲、乙雙方各設(shè)一個(gè)發(fā)光二極管,表示擁有發(fā)球權(quán),每隔5次自動(dòng)交換發(fā)球
摘要:為了實(shí)現(xiàn)模擬乒乓球比賽的過(guò)程和規(guī)則,我們采用了AT89C51單片機(jī)來(lái)控制模擬,采用用8個(gè)(或更多個(gè))LED排成一條直線,以中點(diǎn)為界,兩邊各代表參賽雙方的位置,其中一只點(diǎn)亮的LED指示球的當(dāng)前位置,用蜂鳴器來(lái)實(shí)現(xiàn)響鈴,
比賽雙方用按鈕開關(guān)來(lái)模擬啟動(dòng)球拍擊球,用數(shù)碼管來(lái)顯示比賽分?jǐn)?shù),
關(guān)鍵詞:AT89C51 LED 蜂鳴器。
二. 系統(tǒng)設(shè)計(jì)
2.1 總體設(shè)計(jì)
2.1.1 乒乓球比賽系統(tǒng)方框圖
整個(gè)過(guò)程由AT89C51單片機(jī)控制,控制器產(chǎn)生控制信號(hào)來(lái)控制8個(gè)LED的開關(guān),即可模擬LED依此從左到右,或從右到左,并可完成調(diào)節(jié)速度。對(duì)分?jǐn)?shù)的顯示我們用LED,LED有發(fā)光亮度強(qiáng)的優(yōu)點(diǎn),能夠滿足我們的要求。
2.1.2 單片機(jī)總體設(shè)計(jì)
AT89C51單片機(jī)有價(jià)格低,抗干擾能力強(qiáng)的優(yōu)點(diǎn),所以完成能夠滿足我們的要求,我們用單片機(jī)的P0控制8個(gè)LED的開關(guān),通過(guò)對(duì)P0口的控制就能控制LED,由于P0口內(nèi)部沒(méi)有上拉電阻,不能驅(qū)動(dòng)LED,所以我們?cè)谕獠刻砑恿松侠娮?。用P1口來(lái)控制數(shù)碼管段顯,用P2口的低四位控制數(shù)碼管的位選,P30、P31來(lái)控制開關(guān),PP26、P27來(lái)顯示發(fā)球權(quán)。
2.1.3 LED開關(guān)的設(shè)計(jì)
要求LED按左到右、或右到左的方向移動(dòng),我們只要把P0口的值變化即可。依次對(duì)P0口給值0X01、0X02、0X04、0x08、0x10、0X20、0X40、0X80,即可實(shí)現(xiàn)方向的移動(dòng)。
2.1.4數(shù)碼管設(shè)計(jì)
通過(guò)控制數(shù)碼管的段,就可以控制數(shù)碼管的數(shù)學(xué)的顯示,我們采用了動(dòng)態(tài)方式來(lái)控制數(shù)碼,該方式是通過(guò)讓數(shù)碼管快速切換顯示,人眼分辨不出來(lái),不僅節(jié)約電能,而且還能夠節(jié)約單片機(jī)的端口,從而減少程序的復(fù)雜性。
2.2程序設(shè)計(jì)
本系統(tǒng)的程序如下:
#include《reg51.h》
#include《absacc.h》
#define uchar unsigned char
#define uint unsigned int
#define DB P1
sbit SB1=P3^0; //按鈕1
sbit SB2=P3^1; //按鈕2
sbit deng1=P2^7; //指示燈1
sbit deng2=P2^6; //指示燈2
sbit Mic=P2^5; //蜂鳴器
uchar count=0;
uchar i,j,fengshu1,fengshu2;
bit stall,chose,ret,flag=0;
uchar ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0到9的段碼
uchar dengcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //從左到右移動(dòng)的代碼
/**************延時(shí)x毫秒程序*****************/
void delay(uint x)
{uchar y;
while(x--)
for(y=0;y《125;y++);}
/**************燈移動(dòng)程序******************/
void yidong(uchar fang)
{for(i=0;i《8;i++)
{delay(1000);
if(fang==0)
{P0=dengcode[i];}
else P0=dengcode[8-i];
}
}
/********數(shù)碼管顯示程序****************/
void display(uchar a,uchar b)
{ P2=P2&&0Xe1;
delay(50) ;
P1=ledcode[a/10];
P2=P2&&0Xe0;
P2=P2&&0Xe2;
delay(50) ;
P1=ledcode[a%10];
P2=P2&&0Xe0;
P2=P2&&0Xe4;
delay(50) ;
P1=ledcode[b/10];
P2=P2&&0Xe0;
P2=P2&&0Xe8;
delay(50) ;
P1=ledcode[b%10];
P2=P2&&0Xe0;
}
/****蜂鳴器響應(yīng)程序***/
void mic()
{Mic=1;
delay(3000);//延時(shí)3秒
Mic=0;
}
void main()
{uchar shu=0;
TMOD=0X01;
TH0=0X00;
TL0=0X00;
TR0=1;
ET0=1;
P0=0;
fengshu1=0;fengshu2=0;
P2=0;
P1=0;
SB1=1;
SB2=1;
while(1)
{for(i=0;i《2;i++)
for(j=0;j《5;j++)
{yidong(i);
if(i==0)
{deng1=1;deng2=0;}
ifi==1)
{deng2=1;deng1=0;}
if(SB2==0&&P0=0X80)
{yidong(0); }
if(SB2==1&&P0=0X80)
{fengshu1++;
if(fengshu1==21)
{fengshu1=0;fengshu2=0;}
mic();}
if(SB1==0&&P0=0X01)
{yidong(1); }
if(SB1==1&&P0=0X01)
{fengshu2++;
if(fenshu2==21)
{fengshu1=0;fengshu2=0;}
mic();}
}
}
void display0() interrupt 1
{ TH0=0;
TL0=0;
display(fengshu1,fengshu2);
}
評(píng)論