已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章 緒論1.1概述 自從但單片機(jī)誕生以來,就在工業(yè)自動(dòng)控制等諸多領(lǐng)域里發(fā)揮著巨大的作用,在傳統(tǒng)的應(yīng)用領(lǐng)域里,一般是用單片機(jī)配合市場上所能買到的邏輯器件完成系統(tǒng)的硬件設(shè)計(jì),盡管單片機(jī)功能強(qiáng)大,能將許多功能的實(shí)現(xiàn)放在軟件里,從而在較大程度上簡化了系統(tǒng)硬件電路的設(shè)計(jì),但是這種選擇通用元件來構(gòu)成硬件電路的方法并未改變。cpld器件和eda技術(shù)的出現(xiàn)改變了傳統(tǒng)的設(shè)計(jì)思路,使人們可以通過設(shè)計(jì)芯片來實(shí)現(xiàn)不同的邏輯功能。新的設(shè)計(jì)方法能夠由設(shè)計(jì)者自己定義器件的內(nèi)部邏輯和管腳,將原來由電路板設(shè)計(jì)完成的大部分工作放在芯片的設(shè)計(jì)中進(jìn)行。這樣不僅可以通過芯片設(shè)計(jì)實(shí)現(xiàn)多種邏輯功能,而且由于管腳定義的靈活性,減輕了原理圖和印制板設(shè)計(jì)的工作量。這一思想給電路設(shè)計(jì)帶來了一次革命。 本課題就是用vhdl語言對邏輯可編程器件進(jìn)行編程,實(shí)現(xiàn)將單片機(jī)串口輸出的串行數(shù)據(jù)到8位并行數(shù)據(jù)的轉(zhuǎn)換。這是一個(gè)比較新型的擴(kuò)展單片機(jī)串口的方法,該在工業(yè)控制等領(lǐng)域都具有非常廣泛的應(yīng)用。1.2論文主要研究內(nèi)容及方案論證現(xiàn)實(shí)中就有很多可以直接用來做串并轉(zhuǎn)換的器件,但這些都是完成固定格式數(shù)據(jù)的轉(zhuǎn)換的,這種固定格式的器件在應(yīng)用時(shí)有很大局限性,cpld的引入就很好的克服了這個(gè)不足。在傳統(tǒng)的應(yīng)用時(shí),我們經(jīng)常應(yīng)用移位寄存器來擴(kuò)展i/o口,在傳統(tǒng)的應(yīng)用時(shí),一般是用單片機(jī)配合市場上所能買到的邏輯器件完成系統(tǒng)的硬件設(shè)計(jì),盡管單片機(jī)功能強(qiáng)大,能將許多功能的實(shí)現(xiàn)放在軟件里,從而在較大程度上簡化了系統(tǒng)硬件電路的設(shè)計(jì),但是這種選擇通用元件來構(gòu)成硬件電路的方法并未改變。cpld器件和eda技術(shù)的出現(xiàn)改變了傳統(tǒng)的設(shè)計(jì)思路,使人們可以通過設(shè)計(jì)芯片來實(shí)現(xiàn)不同的邏輯功能。新的設(shè)計(jì)方法能夠由設(shè)計(jì)者自己定義器件的內(nèi)部邏輯和管腳,將原來由電路板設(shè)計(jì)完成的大部分工作放在芯片的設(shè)計(jì)中進(jìn)行。這樣不僅可以通過芯片設(shè)計(jì)實(shí)現(xiàn)多種邏輯功能,而且由于管腳定義的靈活性,減輕了原理圖和印制板設(shè)計(jì)的工作量。這一思想給電路設(shè)計(jì)帶來了一次革命。 在單片機(jī)的使用過程中經(jīng)常需要用到對i/o的擴(kuò)展,單片機(jī)與外部世界的信息交換是通過i0接口電路來實(shí)現(xiàn)的,在傳統(tǒng)的應(yīng)用時(shí),我們經(jīng)常應(yīng)用移位寄存器來擴(kuò)展i/o口,但是這樣有很多不方便,如果應(yīng)用邏輯可編程器件來實(shí)現(xiàn)就會(huì)避免這些問題。 1.2.1 方案選擇 單片機(jī)有兩種數(shù)據(jù)傳輸方式,一:異步輸入輸出方式;二:同步輸入輸出方式。因此本設(shè)計(jì)有兩種思路。兩種方式都是可行的,而異步方式的實(shí)現(xiàn)可以通過降低數(shù)據(jù)的傳送速率或者需要一個(gè)時(shí)鐘來保持?jǐn)?shù)據(jù)的同步。但這兩種方法都有很大的不足,降低速率會(huì)很大的影響器件的使用領(lǐng)域且會(huì)增加單片機(jī)程序的復(fù)雜程度,而同步時(shí)鐘的采用極大的增加器件的成本且會(huì)使器件變的更加復(fù)雜。固采用同步的傳輸方式,這種方式下器件不需要外界提供時(shí)鐘且數(shù)據(jù)的傳送速度最佳。 1.2.1 系統(tǒng)描述 本設(shè)計(jì)分為兩個(gè)部分:硬件電路部分、系統(tǒng)軟件部分。硬件部分主要由cpld,單片機(jī)組成。當(dāng)系統(tǒng)運(yùn)行正確時(shí),由單片機(jī)直接控制的數(shù)碼管和經(jīng)由cpld轉(zhuǎn)換后控制的數(shù)碼管輸出相同的數(shù)字。第二章 系統(tǒng)硬件設(shè)計(jì)2.1系統(tǒng)硬件子總體設(shè)計(jì)2.1.1 系統(tǒng)總體設(shè)計(jì)本設(shè)計(jì)分為兩個(gè)部分:(1)單片機(jī)部分,用來發(fā)出固定格式的串行數(shù)據(jù)提供給epm7128slc84-15,同時(shí)將此數(shù)據(jù)送數(shù)碼管顯示;(2)epm7128slc84-15 部分,該部分用vhdl對epm7128slc84-15編程實(shí)現(xiàn)對單片機(jī)輸出的串行數(shù)據(jù)轉(zhuǎn)換位并行數(shù)據(jù)輸出提供給另一個(gè)數(shù)碼管顯示輸出。2.1.2系統(tǒng)框圖圖2.1 系統(tǒng)總框圖2.1.3 系統(tǒng)總原理圖 圖2.2 系統(tǒng)總原理圖2.2 模塊電路介紹2.2.1晶振電路 在內(nèi)部振蕩電路中,為石英晶體時(shí):c1,c2的取值范圍為20pf40pf;為陶瓷濾波器:c1,c2的取值范圍為30pf50pf。利用芯片內(nèi)部的振蕩器,在xtal1和xtal2兩端跨接石英晶體以及兩個(gè)電容,就構(gòu)成了穩(wěn)定的自激振蕩器,它發(fā)出的脈沖直接送入內(nèi)部時(shí)鐘電路。因?yàn)閤tal1和xtal2之間外接的是石英晶體,所以兩個(gè)電容c1和c2的值均選擇為30pf。c1和c2對振蕩頻率有微調(diào)作用,石英晶體的頻率范圍可以在1.224mhz之間選擇。我選擇了12mhz的石英晶體。 圖2.3 內(nèi)部振蕩電路和外部時(shí)鐘驅(qū)動(dòng)電路2.2.2復(fù)位電路 (1)復(fù)位復(fù)位是單片機(jī)的初始化操作;單片機(jī)在啟動(dòng)運(yùn)行時(shí),都需要先復(fù)位,其主要功能是把pc初始化為0000h,使單片機(jī)從0000h單元開始執(zhí)行程序,除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或者操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為了脫離困境,也需要按下復(fù)位鍵來重新啟動(dòng)。除pc之外,復(fù)位操作還對其他一些寄存器有影響,他們的復(fù)位狀態(tài)如表2.1所示 (2)復(fù)位電路復(fù)位操作有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種。上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。上電瞬間,rc電路充電,rst引腳端出現(xiàn)正脈沖。這樣,只要電源vcc的上升時(shí)間不超過1ms,就可實(shí)現(xiàn)上電自動(dòng)復(fù)位,即接通電源就完成了系統(tǒng)的復(fù)位操作。這種復(fù)位方式表2.1 一些寄存器的復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)pc 0000htcon00hacc 00htl000hpsw00hth000hsp07htl100hdptr0000hth100hp0p3ffhscon00htmod00hsbuf不定雖然很簡便,但是有它的缺點(diǎn),即:當(dāng)由于程序運(yùn)行出錯(cuò)或者操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),我們沒有復(fù)位按鍵,所以就無法重新啟動(dòng),而只有再次接通電源。按鍵手動(dòng)復(fù)位又分為按鍵電平復(fù)位和按鍵脈沖復(fù)位兩種。其中按鍵電平復(fù)位是通過使復(fù)位端經(jīng)過電阻與vcc電源接通而實(shí)現(xiàn)的;而按鍵脈沖復(fù)位則是利用rc微分電路產(chǎn)生的正脈沖來實(shí)現(xiàn)的。設(shè)計(jì)這部分電路的時(shí)候,考慮課題的要求,我就選擇了按鍵復(fù)位,復(fù)位電路如圖2.4:圖2.4 按鍵復(fù)位電路2.2.3 顯示電路 我采用的是共陰的數(shù)碼管,動(dòng)態(tài)掃描顯示的方式。如圖2.5 圖2.5 數(shù)碼管電路2.2.4 cpld下載電路 本實(shí)驗(yàn)對cpld采用jtag下載方式,采用altera公司的byteblasretmv電路,將altera的byteblasretmv電纜的10pin端插入下載口即可,另一端連到電腦的并口。就可以在線編程了。注意電路一定要連接正確。pm7128s器件是通過4個(gè)引腳的jtag接口進(jìn)行在線編程(isp)的。isp允許快速、有效地在設(shè)計(jì)開發(fā)過程中重復(fù)編程。jtag(joint test action group)是歐洲的jetag組織提出的邊界掃描標(biāo)準(zhǔn),即ieee1149. 1標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)提供了板級和芯片級的測試,所有jtag測試功能僅需一條四線或五線的接口及相應(yīng)的軟件即能完成,利用jtag能測試電路板的連接情況以及電路板的正確性。其接口電路如圖2.6:圖2.6 cpld下載電路jtag的接口信號為:1. tck(test clock):用于控制狀態(tài)機(jī)及傳遞數(shù)據(jù)。接epm7128slc84-15的62腳。2. tms (test mode select):選擇邊界掃描模式,控制狀態(tài)機(jī)測試操作接epm7128slc84-15 的23腳。3. tdi (test data input):在tck的上升沿,接受串行數(shù)據(jù)接epm7128slc84-15的14腳4. tdo(test data output):在tck的下降沿,輸出串行數(shù)據(jù)接epm7128slc84-15 的71腳2.3 cpld及max+plus 2 介紹2.2.數(shù)字集成電路(微處理器、存貯器以及標(biāo)準(zhǔn)邏輯電路等)在近幾十年得到了廣泛應(yīng)用。數(shù)字集成電路的設(shè)計(jì)研究得到了迅猛的發(fā)展,不斷地進(jìn)行更新?lián)Q代。隨著微電子技術(shù)的發(fā)展,設(shè)計(jì)與制造集成電路的任務(wù)已不完全由半導(dǎo)體廠商來獨(dú)立承擔(dān)。系統(tǒng)設(shè)計(jì)師們更愿意自己設(shè)計(jì)專用集成電路(asic)芯片,而且希望asic的設(shè)計(jì)周期盡可能短,最好是在實(shí)驗(yàn)室里就能設(shè)計(jì)出合適的asic芯片,并且立即投入實(shí)際應(yīng)用之中,因而出現(xiàn)了現(xiàn)場可編程邏輯器件(fpld),其中應(yīng)用最廣泛的當(dāng)屬現(xiàn)場可編程門陣列(fpga)和復(fù)雜可編程邏輯器件(cpld)。 fpga與cpld是在pal(可編程門陣列)、gal(通用門陣列)等邏輯器件的基礎(chǔ)之上發(fā)展起來的。pal和gal一般都是基于prom、eprom或eeprom結(jié)構(gòu)的,cpld也是基于eeprom結(jié)構(gòu)的,但是fpga一般是基于ram結(jié)構(gòu)的。同以往的pal和gal等相比較,fpgacpld的規(guī)模比較大,適合于時(shí)序、組合等邏輯電路應(yīng)用場合,它可以替代幾十甚至上百塊通用ic芯片。這樣的fpgacpld實(shí)際上就是一個(gè)子系統(tǒng)部件。這種芯片具有可編程性和實(shí)現(xiàn)方案容易改動(dòng)的特點(diǎn)。對于fpga來說,由于芯片內(nèi)部硬件連接關(guān)系的描述可以存放在磁盤、rom、prom或eprom中,因而在可編程門陣列芯片及外圍電路保持不動(dòng)的情況下,換一塊eprom芯片,就能實(shí)現(xiàn)一種新的功能。大規(guī)??删幊踢壿嬓酒梢钥醋鞒质獾腶sic芯片,它們除了具有asic的特點(diǎn)之外,還具有以下幾個(gè)優(yōu)點(diǎn):(1)隨著vlsi (very large scale ic,超大規(guī)模集成電路)工藝的不斷提高,單一芯片內(nèi)部可以容納上百萬個(gè)晶體管,fpga/cpld的規(guī)模也越來越大,其單片邏輯門數(shù)已達(dá)到數(shù)十萬門,它所能實(shí)現(xiàn)的功能也越來越強(qiáng),同時(shí)也可以實(shí)現(xiàn)系統(tǒng)集成。(2)fpgacpld芯片在出廠之前都做過百分之百的測試,不需要設(shè)計(jì)人員承擔(dān)風(fēng)險(xiǎn)和費(fèi)用,設(shè)計(jì)人員只需在自己的實(shí)驗(yàn)室里就可以通過相關(guān)的軟硬件環(huán)境來完成芯片的最終功能指定。所以,fpgacpld的資金投入少,不用對廠商做任何訂單數(shù)量上的承諾,節(jié)省了許多潛在的花費(fèi),而且fpgacpld的研制開發(fā)費(fèi)用相對較低。(3)用戶可以反復(fù)地編程和擦除,而且外圍電路不需要改變就可實(shí)現(xiàn)不同的功能。尤其是如果構(gòu)造出該fpgacpld芯片的實(shí)驗(yàn)板,則可更加靈活地實(shí)現(xiàn)不同電路的功能。所以,用fpgacpld試制樣片,能以最快的速度占領(lǐng)市場。當(dāng)樣品得到用戶認(rèn)可后再投入批量生產(chǎn)是電子產(chǎn)品研制和開發(fā)應(yīng)用中的一種優(yōu)選方法。(4)采用可編程邏輯芯片的電路設(shè)計(jì)周期很短。fpgacpld軟件包中不但有各種輸入工具和仿真工具,而且還有版圖設(shè)計(jì)工具和編程器等全線產(chǎn)品,電路設(shè)計(jì)人員在很短的時(shí)間內(nèi)就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作(物理版圖映射)。當(dāng)電路有少量改動(dòng)時(shí),更能顯示出可編程邏輯芯片的優(yōu)勢。它大大加快了新產(chǎn)品的試制速度,減少了庫存風(fēng)險(xiǎn)與設(shè)計(jì)錯(cuò)誤所帶來的危險(xiǎn)、從而提高了企業(yè)在市場上的競爭能力和應(yīng)變能力。(5) 電路設(shè)計(jì)人員使用fpga/cpld進(jìn)行電路設(shè)計(jì)時(shí),不需要具備專門的ic(集成電路)深層次的知識,fpga/cpld軟件易學(xué)易用,可以使設(shè)計(jì)人員更能集中精力進(jìn)行電路設(shè)計(jì)。fpga/cpld適合于正向設(shè)計(jì)(從電路原理圖到芯片級的設(shè)計(jì)),對知識產(chǎn)權(quán)的保護(hù)也非常有利。2.2.2 可編程邏輯芯片的設(shè)計(jì)方法 可編程邏輯芯片的設(shè)計(jì)一般可分為設(shè)計(jì)輸人、設(shè)計(jì)實(shí)現(xiàn)和編程三個(gè)設(shè)計(jì)步驟及相應(yīng)的功能仿真、時(shí)序仿真和器件測試三個(gè)設(shè)計(jì)驗(yàn)證過程。(1)設(shè)計(jì)輸入。在傳統(tǒng)設(shè)計(jì)中,設(shè)計(jì)人員是應(yīng)用傳統(tǒng)的原理圖輸入方法來開始設(shè)計(jì)的。自90年代初,verilog、vhdl、ahdl等硬件描述語言的輸入方法得到了廣大工程設(shè)計(jì)人員的認(rèn)可。(2) 設(shè)計(jì)實(shí)現(xiàn)。設(shè)計(jì)輸入之后就有一個(gè)從高層次系統(tǒng)行為設(shè)計(jì)向低層次門級邏輯電路的轉(zhuǎn)化翻譯過程,即把設(shè)計(jì)輸入的某種或某幾種數(shù)據(jù)格式(網(wǎng)表)轉(zhuǎn)化為底層軟件能夠識別的某種數(shù)據(jù)格式(網(wǎng)表),以求達(dá)到與其工藝無關(guān)。在該過程中,編譯軟件自動(dòng)地對設(shè)計(jì)文件進(jìn)行綜合、優(yōu)化,并針對所選中的器件進(jìn)行映射、布局、布線,產(chǎn)生相應(yīng)的熔絲圖或位流數(shù)據(jù)文件。(3) 器件編程:器件編程就是將熔絲圖文件或位流數(shù)據(jù)文件配置到相應(yīng)的cpld或fpga的器件中。(4) 設(shè)計(jì)校驗(yàn):設(shè)計(jì)校驗(yàn)由對應(yīng)于設(shè)計(jì)輸人、設(shè)計(jì)實(shí)現(xiàn)和器件編程的功能仿真、時(shí)序仿真和器件測試三個(gè)部分組成。功能仿真驗(yàn)證設(shè)計(jì)的邏輯功能,以了解其實(shí)現(xiàn)的功能是否滿足原設(shè)計(jì)的要求,仿真過程不涉及具體器件的硬件特性,如延遲特性,一般的設(shè)計(jì),這一層次的仿真可略去。時(shí)序仿真是在設(shè)計(jì)實(shí)現(xiàn)后,針對所選中器件的布局、布線方案進(jìn)行時(shí)延仿真,因在仿真過程考慮了器件的硬件特性,故仿真精度極高。器件測試是在器件編程后,通過實(shí)驗(yàn)或借助于測試工具,測試器件最終功能和性能指標(biāo)。在布局布線和后仿真完成之后,當(dāng)需要大批量生產(chǎn)該芯片時(shí),就可以開始asic芯片的投產(chǎn)。2.2.3 max7000系列器件和max+plus介紹altera公司是最大的可編程邏輯器件提供商之一。max 7000系列器件是該公司的高密度、高性能的cmos工藝cpld器件,它是在第二代max結(jié)構(gòu)基礎(chǔ)上,采用先進(jìn)的cmos eeprom技術(shù)制造的,可提供600到5000可用門和44到208個(gè)引腳的各種封裝形式。引腳到引腳的延時(shí)為5ns,計(jì)數(shù)器工作頻率可達(dá)到178.6mhz。max7000結(jié)構(gòu)中包括邏輯陣列塊、宏單元、共享和并聯(lián)擴(kuò)展乘積項(xiàng)、可編程連線陣列和i/o控制五部分,此外還包括4個(gè)專用輸入,它們能用作通用輸入,或作為每個(gè)宏單元和i/o引腳的高速的、全局的控制信號,即時(shí)鐘(clock)、清除(clear)和輸出使能(output enable)。max7000結(jié)構(gòu)可100%模仿ttl,并可將ssi、msi、和lsi的邏輯功能高密度地集成,它也可以集成各種可變成邏輯器件,其范圍從pal、gal到mach、plsi和fpga,在速度、密度和i/o資源方面可與通用的掩膜式門陳列相媲美,可實(shí)現(xiàn)各種組合邏輯和時(shí)序邏輯。在設(shè)計(jì)開發(fā)和調(diào)試階段,max7000器件可以快速而有效地重新編程,并保證可編程擦除10000次。max7000結(jié)構(gòu)可高度集成各種邏輯功能,在速度、密度和i/o資源方面有多種型號可選,并且有多種封裝,包括plcc、pga、pqfp和tqfp封裝,便于調(diào)試開發(fā)及成品生產(chǎn)。max7000s是高密度的max7000系列,具有以下特性:6個(gè)由引腳或邏輯驅(qū)動(dòng)的輸出使能;2個(gè)可選為反相工作的全局時(shí)鐘信號;改善了布線性能,增加了連線資源;從i/o引腳到宏單元寄存器的專用路徑可提供快速的建立時(shí)間;輸出電壓擺率可以編程控制;具有集電極開路選擇、可編程保密位以及內(nèi)置jtag bst電路,并可通過jtag接口實(shí)現(xiàn)在系統(tǒng)編程。下面是epm7128slc84-15的引腳圖epm7128s芯片內(nèi)部集成了2500門,可用的i/o引腳數(shù)隨封裝不同有68、84和100三種規(guī)格。它有128個(gè)宏單元,每個(gè)宏單元有一個(gè)可編程的“與”陣和固定的“或”陣,以及一個(gè)具有獨(dú)立可編程時(shí)鐘、時(shí)鐘使能、清除和置位功能的可配置觸發(fā)器。為了能構(gòu)成復(fù)雜的邏輯函數(shù),每個(gè)宏單元可使用共享擴(kuò)展乘積項(xiàng)和高速并聯(lián)擴(kuò)展乘積項(xiàng),向每個(gè)宏單元提供多達(dá)32個(gè)乘積項(xiàng)。這一特點(diǎn)使它更適合采用eda工具進(jìn)行自動(dòng)邏輯綜合。其引腳圖如圖2.7所示。圖27 epm7128的引腳圖 可編程邏輯芯片實(shí)際上是包含了大量與門、或門、觸發(fā)器、存儲(chǔ)器等邏輯資源的半成品,若要使芯片在系統(tǒng)中正常工作必須對芯片進(jìn)行編程。altera的max+plus開發(fā)系統(tǒng)支持max7000系列的編程開發(fā)和下載。該系統(tǒng)的全稱是multiple array matrix and programmable logic user system。它具有原理圖輸入、文本輸入、波形輸入等多種輸入方式,利用它所配備的編輯、編譯、仿真、綜合等功能,可以完成數(shù)字電路從設(shè)計(jì)、檢查、模擬到下載的全過程,是eda設(shè)計(jì)中不可缺少的一種有用工具。 max+plus開發(fā)系統(tǒng)具有開放的界面、與結(jié)構(gòu)無關(guān)、多平臺(tái)、完全集成化、豐富的設(shè)計(jì)庫、模塊化工具、硬件描述語言、megacore功能opencore特性等幾個(gè)特點(diǎn)。max+plus所提供的靈活性和高效性是無可比擬的。其豐富的圖形界面,輔之以完整的、可即時(shí)訪問的在線文檔,則可使設(shè)計(jì)人員能夠輕松地掌握和使用max+plus軟件。2.4 單片機(jī)概述 at89c51是一種低功耗、高性能的片內(nèi)含有4kb快閃可編程/擦除只讀存儲(chǔ)器的8位cmos微控制器,使用高密度、非易丟失存儲(chǔ)技術(shù)制造,并且與80c51引腳和指令系統(tǒng)完全兼容。芯片上的flash存儲(chǔ)器允許在線編程或采用通用的非易丟失存儲(chǔ)編程器重復(fù)編程。at89c51將具有多種功能的8位cpu與flash存儲(chǔ)器結(jié)合在一個(gè)芯片上,為很多嵌入式控制應(yīng)用提供了非常靈活而又價(jià)格適宜的方案,其性能價(jià)格比遠(yuǎn)高于8751。2.3.1 89c51的性能及特點(diǎn) 89c51的主要性能包括: 與msc51微控制器產(chǎn)品系列兼容。 片內(nèi)有4kb可在線重復(fù)編程的快閃擦寫存儲(chǔ)器。 存儲(chǔ)器可循環(huán)寫入/擦除1000次。 存儲(chǔ)數(shù)據(jù)保存時(shí)間為10年。 寬工作電壓范圍:vcc可為2.7v6v。 全靜態(tài)工作:可從0hz至16hz。 程序存儲(chǔ)器具有3級加密保護(hù)。 128*8位內(nèi)部ram。 32條可編程i/o線。 兩個(gè)16位定時(shí)器/計(jì)數(shù)器。 中斷結(jié)構(gòu)具有5個(gè)中斷源和2個(gè)優(yōu)先級。 可編程雙全工串行通道。 空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲(chǔ)內(nèi)容。2.3.2 片內(nèi)快閃存儲(chǔ)器 由于eeprom具有在線改寫,并在掉電后仍能保存數(shù)據(jù)的特點(diǎn),可為用戶的特殊應(yīng)用提供便利。但是,擦除和寫入對于要求數(shù)據(jù)高速吞吐的應(yīng)用還顯得時(shí)間過長,這是eeprom芯片的主要性能缺陷。表2.2給出了幾種典型eeprom芯片的主要性能特點(diǎn)。表2.2 幾種典型eeprom芯片主要性能型號28162816a28172817a去數(shù)時(shí)間/ms250200/250250200/250擦/寫電壓/v215215字節(jié)擦除時(shí)間/ms109151010寫入時(shí)間/ms109151010由表2.1可見,所列各種芯片的字節(jié)擦除時(shí)間和寫入時(shí)間基本上為10ms,這樣長的時(shí)間對于許多實(shí)際應(yīng)用是不能接受的。因此,為了將存儲(chǔ)器集成到微控制器芯片內(nèi),設(shè)法縮短此類存儲(chǔ)器的擦除和寫入時(shí)間是一個(gè)首要問題。片內(nèi)快閃存儲(chǔ)器的概念就是在這種背景下提出來的。2.3.3 89c51的基本組成在89c51芯片上,集中了微型計(jì)算機(jī)的各個(gè)組成部分,它包括: 一個(gè)8位微處理器。 片內(nèi)數(shù)據(jù)存儲(chǔ)器ram,用于存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等。 片內(nèi)快閃存儲(chǔ)器eeprom,用于存放程序、一些原始數(shù)據(jù)和表格。 四個(gè)8位并行i/o接口。 兩個(gè)16位定時(shí)器/計(jì)數(shù)器。 五個(gè)中斷源的中斷控制系統(tǒng)。 一個(gè)全雙工uart的串行i/o口,用于實(shí)現(xiàn)單片機(jī)與微機(jī)之間的串行通信。 片內(nèi)震蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許震蕩器頻率為24mhz。2.3.4 89c51的內(nèi)部結(jié)構(gòu)和一般微處理器相比,89c51增加了四個(gè)8位i/o口,一個(gè)串行口,4kb fperom,128b ram,很多工作寄存器及特殊功能寄存器。各部分的功能如下。(1) 中央處理單元cpu是89c51的核心,是計(jì)算機(jī)的控制和指揮中心,由運(yùn)算器和控制器兩個(gè)部分電路組成。運(yùn)算器運(yùn)算器包括一個(gè)可進(jìn)行8位算術(shù)運(yùn)算和邏輯運(yùn)算的單元alu,8位的暫存器1、暫存器2,8位的累加器acc,寄存器b和程序狀態(tài)寄存器psw等。alu:可對4位、8位和16位數(shù)據(jù)進(jìn)行操作,能做如加、減、乘、除、bcd數(shù)十進(jìn)制調(diào)整及比較等算術(shù)運(yùn)算和與、或、異或、求補(bǔ)及循環(huán)移位等邏輯操作。acc:累加器acc經(jīng)常作為一個(gè)運(yùn)算數(shù)暫存器2進(jìn)入alu的輸入端,與另一個(gè)來自寄存器1的運(yùn)算數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)果又送回acc。在指令中用助記符a來表示。psw:程序狀態(tài)字寄存器,8位,用于指示指令執(zhí)行后的狀態(tài)信息,相當(dāng)于一般微處理器的標(biāo)志寄存器。psw中各位狀態(tài)供程序查詢和判別用。b:8位寄存器,在乘、除運(yùn)算時(shí)它用來存放一個(gè)操作數(shù)和運(yùn)算后的一部分結(jié)果;不做乘、 除運(yùn)算時(shí),作通用寄存器使用。控制器控制器包括程序計(jì)數(shù)器pc、指令寄存器ir、指令譯碼器id、震蕩器及定時(shí)電路等。程序計(jì)數(shù)器pc:由兩個(gè)8位的計(jì)數(shù)器pch及pcl組成,共16位。pc實(shí)際上是程序的字節(jié)地址計(jì)數(shù)器,pc中的內(nèi)容是將要執(zhí)行的下一條指令的地址。改變pc的內(nèi)容就可以改變程序執(zhí)行的方向。指令寄存器ir及指令譯碼器id:由pc中的內(nèi)容指定rom地址,取出來的指令經(jīng)指令寄存器ir送至指令譯碼器id,由id對指令譯碼并送pla產(chǎn)生一定序列的控制信號,以執(zhí)行指令所規(guī)定的操作。震蕩器及定時(shí)電路:89c51單片機(jī)片內(nèi)震蕩電路,只需外接石英晶體和頻率微調(diào)電容,其頻率范圍為1.2mhz12mhz。該脈沖信號作為89c51工作的基本節(jié)拍及時(shí)間的最小單位。(2) 存儲(chǔ)器89c51的存儲(chǔ)器有片內(nèi)外之分。片內(nèi)存儲(chǔ)器集成在芯片內(nèi)部;片外存儲(chǔ)器又稱外部存儲(chǔ)器。片內(nèi)和片外存儲(chǔ)器中,又有rom和ram之分。rom存儲(chǔ)器89c51片內(nèi)程序存儲(chǔ)器容量為4kb,地址從0000h開始,用于存放程序和表格常數(shù)。ram存儲(chǔ)器89c51的ram存儲(chǔ)器有片內(nèi)外之分:片內(nèi)ram共128b,地址范圍為00h7fh;片外ram共64kb,地址范圍為0000hffffh。為了指示是到片內(nèi)ram尋址還是到片外ram尋址,89c51的指令系統(tǒng)設(shè)計(jì)了不同的數(shù)據(jù)傳送指令符。特殊功能寄存器sfrcpu訪問片內(nèi)rom指令用mov,訪問片外ram指令用movx。片內(nèi)ram共128b,分為工作寄存器區(qū)、位尋址和便簽區(qū)。1工作寄存器區(qū)這32個(gè)ram單元共分四組,每組占8個(gè)ram單元,分別用代號r0r7表示。r0r7可以指向四組中任一組,由psw中rs1、rs2的狀態(tài)決定。2位尋址區(qū)這16個(gè)ram單元具有雙功能。它們既可以像普通ram單元一樣按字節(jié)存取,也可以對每個(gè)ram單元中的任何一位單獨(dú)存取,就是位尋址。3便簽區(qū)便簽區(qū)共有80個(gè)ram單元,用于存放用戶數(shù)據(jù)或作堆棧區(qū)使用。89c51對便簽區(qū)中每個(gè)ram單元是按字節(jié)存取的。在21個(gè)sfr寄存器中,用戶可通過直接尋址指令對它們進(jìn)行字節(jié)存取,也可以對acc、b、psw等11個(gè)寄存器進(jìn)行位尋址。(3) i/o端口i/o端口又稱為i/o接口,是89c51對外部實(shí)現(xiàn)控制和信息交換的必經(jīng)之路,它們都是雙向端口。每個(gè)端門各有8條io線,均可輸入/輸出??梢园裪o口當(dāng)作一般特殊功能寄存器來尋址。2.3.5 89c51的引腳及其功能at89c51采用了40腳雙列直插封裝方式。其引腳分為電源引腳、輸入/輸出端口引腳、控制信號引腳和時(shí)鐘電路引腳這四類。其引腳如圖2.8所示: (1) 電源引腳 vcc:為+5v供電電壓引腳。 gnd:為接地引腳。 (2) i/o端口引腳圖2.8 單片機(jī)at89c51的引腳圖 89c51共有四個(gè)并行i/o端口,每個(gè)端口有8個(gè)端口線,用于傳送數(shù)據(jù)/地址。由于每個(gè)端口的結(jié)構(gòu)不相同,因此它們在功能和用途上的差別很大。p0口:p0口共有8個(gè)引腳,其中p0.7為最高位,p0.0為最低位。這8條引腳有兩種不同的功能,分別使用于兩種不同情況。第一種情況是89c51不帶片外存儲(chǔ)器,p0口可以作為通用i/o口使用,p0.0p0.7用于傳送cpu的輸入/輸出數(shù)據(jù)。這時(shí),輸出數(shù)據(jù)可以得到鎖存,不需要外接專用鎖存器,輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性;第二種情況是89c51帶片外存儲(chǔ)器,p0.0p0.7在cpu訪問片外存儲(chǔ)器時(shí)用于傳送片外存儲(chǔ)器的低8位地址,然后傳送cpu對片外存儲(chǔ)器的讀寫數(shù)據(jù)。p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,其緩沖器可接收輸出4ttl門電流。p1口管腳寫入“1”后,被內(nèi)部上拉為高,用作輸入;被外部下拉為低電平時(shí),將輸出電流。p2口:p2口的第一功能和p0口的第一功能相同,即它可以作為通用i/o口使用。它的第二功能和p0口引腳的第二功能相配合,用于輸出片外存儲(chǔ)器的高8位地址,共同選中片外存儲(chǔ)器單元,但并不能像p0口那樣還可以傳送存儲(chǔ)器的讀寫數(shù)據(jù)。p3口:作輸入/輸出時(shí)同p1口。p3口也可作為89c51的一些特殊功能口。如表2.3所式:(3) 控制信號引腳rst:復(fù)位信號輸入端,高電平有效。它可以使89c51處于復(fù)位工作狀態(tài)。復(fù)位后,89c51的四個(gè)端口p0、p1、p2、p3為全高,即它們的值均為ffh。ale/prog:地址鎖存允許/編程端。在flash編程期間,此引腳用于輸入編程脈沖。平時(shí),ale端以不變的頻率周期輸出正脈沖信號,此頻率為震蕩頻率的1/6。因此,它可用作外部輸出的脈沖。psen:外部程序存儲(chǔ)器的選通信號端。在外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號將不出現(xiàn)。表2.3 p3口第二功能p3口第二功能注 釋p3.0rxd串行數(shù)據(jù)接收口p3.1txd串行數(shù)據(jù)發(fā)送口p3.2into外部中斷0輸入p3.3int1外部中斷1輸入p3.4t0計(jì)數(shù)器0計(jì)數(shù)輸入p3.5t1計(jì)數(shù)器1計(jì)數(shù)輸入p3.6wr外部ram寫選通信號p3.7rd外部ram讀選通信號 ea/vpp:外部程序存儲(chǔ)器地址允許輸入端/編程電壓輸入端。 (4) 時(shí)鐘電路引腳xtal1:反向震蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入端。在采用外部時(shí)鐘時(shí),該引腳必須接地。xtal2:來自反向震蕩器的輸出。若采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖。2.3.6 定時(shí)器/計(jì)數(shù)器89c51內(nèi)部有兩個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器,命名為t0和t1。t0由兩個(gè)8位寄存器tho和tlo拼裝而成,其中tho為高8位,tlo為低8位。t1也和t0類同。tho、tlo、th1和tl1均為特殊功能寄存器中的一個(gè),用戶可以通過指令對它們存儲(chǔ)數(shù)據(jù)。t0和t1的最大計(jì)數(shù)值為65535,即需要65535個(gè)脈沖才能把它們從全“0”變?yōu)槿?”。下面介紹定時(shí)器的控制。定時(shí)器共有兩個(gè)控制字,由軟件寫入tmod和tcon兩個(gè)8位寄存器,用來設(shè)置t0、t1的操作模式和控制功能。當(dāng)89c51系統(tǒng)復(fù)位時(shí),兩個(gè)寄存器所有位都被清零。(1) 工作模式寄存器tmodtmod用于控制t0和t1的工作模式,其各位的定義格式如表2.4所示。表2.4 工作模式寄存器tmod的位定義tmod d7 d6 d5 d4 d3 d2 d1 d0gatec/tm1m0gatec/tm1m0其中低四位用于t0,高四位用于t1。以下介紹各位的功能。m1和m0操作模式控制位。兩位可形成四種編碼,對應(yīng)于四種操作模式,見表2.5。c/t計(jì)數(shù)器/定時(shí)器方式選擇位。c/t=0,設(shè)置為定時(shí)方式。定時(shí)器計(jì)數(shù)89c51片內(nèi)脈沖,亦即對機(jī)器周期計(jì)數(shù)。c/t=1,設(shè)置為計(jì)數(shù)方式。表2.5 定時(shí)器/計(jì)數(shù)器的工作模式m1 m0工作模式功能描述0 0模式013位計(jì)數(shù)器0 1模式116位計(jì)數(shù)器1 0模式2自動(dòng)再裝入8位計(jì)數(shù)器1 1模式3定時(shí)器0:分成兩個(gè)8位計(jì)數(shù)器gate門控位。gate=0時(shí),只要用軟件使tro置1就可以啟動(dòng)定時(shí)器,而不管into的電平是高還是低。gate=1時(shí),只有into引腳為高電平且由軟件使tro置1時(shí),才能啟動(dòng)定時(shí)器工作。(2) 控制寄存器tcon定時(shí)器控制寄存器tcon除可用于字節(jié)尋址外,各位還可位尋址。各位的定義格式如表2.6所式:表2.6 控制寄存器tcon的位定義tcon8fh8eh8dh8ch8bh8ah89h88h(88h)tr1tf0tf0tr0ie1it1ie0it0tf1t1溢出標(biāo)志位。當(dāng)t1溢出時(shí),由硬件自動(dòng)使tf置“1”,并且申請中斷。響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,tf1又被硬件自動(dòng)清0。tf1也可被軟件清0。tf0t0溢出標(biāo)志位。其功能和操作情況同tf1。tr1t1運(yùn)行控制位??赏ㄟ^軟件置1或清0啟動(dòng)或關(guān)閉t1。在程序中用指令“setb tr1”使tr1位置1,定時(shí)器t1便開始計(jì)數(shù)。trot0運(yùn)行控制位。其功能和操作情況同tr1。ie1、it1、ie0、it0外部中斷請求及請求方式控制位。單片機(jī)的開發(fā)過程 這里所說的開發(fā)過程并不是一般書中所說的從任務(wù)分析開始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來后,其控制字也就被確定了。然后用文本編緝器(如edit、cced等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯(cuò),直到?jīng)]有語法錯(cuò)誤,除了極簡單的程序外,一般應(yīng)用仿真機(jī)對軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫片(將程序固化在eprom中)。在源程序被編譯后,生成了擴(kuò)展名為hex的目標(biāo)文件,一般編程器能夠識別這種格式的文件,只要將此文件調(diào)入即可寫片。仿真、仿真機(jī) 仿真是單片機(jī)開發(fā)過程中非常重要的一個(gè)環(huán)節(jié),除了一些極簡單的任務(wù),一般產(chǎn)品開發(fā)過程中都要進(jìn)行仿真,仿真的主要目的是進(jìn)行軟件調(diào)試,當(dāng)然借助仿真機(jī),也能進(jìn)行一些硬件排錯(cuò)。一塊單片機(jī)應(yīng)用電路板包括單片機(jī)部份及為達(dá)到使用目的而設(shè)計(jì)的應(yīng)用電路,仿真就是利用仿真機(jī)來代替應(yīng)用電路板(稱目標(biāo)機(jī))的單片機(jī)部份,對應(yīng)用電路部份進(jìn)行測試、調(diào)試。仿真有cpu仿真和rom仿真兩種,所謂cpu仿真是指用仿真機(jī)代替目標(biāo)機(jī)的cpu,由仿真機(jī)向目標(biāo)機(jī)的應(yīng)用電路部份提供各種信號、數(shù)據(jù),進(jìn)行調(diào)試的方法。這種仿真可以通過單步運(yùn)行、連續(xù)運(yùn)行等多種方法來運(yùn)行程序,并能觀察到單片機(jī)內(nèi)部的變化,便于改正程序中的錯(cuò)誤。所謂rom仿真,就是用仿真機(jī)代替目標(biāo)機(jī)的rom,目標(biāo)機(jī)的cpu工作時(shí),從仿真機(jī)中讀取程序,并執(zhí)行。這種仿真其實(shí)就是將仿真機(jī)當(dāng)成一片eprom,只是省去了擦片、寫片的麻煩,并沒有多少調(diào)試手段可言。通常這是二種不同類型的仿真機(jī),也就是說,一臺(tái)仿真機(jī)不能既做cpu仿真,又做rom仿真。可能的情況下,當(dāng)然以cpu仿真好。2.5 本章小結(jié) 本章介紹了系統(tǒng)硬件總體電路及各部分電路,還介紹了所用到的幾個(gè)主要的器件at89c51 , epm7128slc84-15,max+plus 2的原理及其應(yīng)用。第三章 系統(tǒng)軟件設(shè)計(jì)3.1 vhdl語言介紹 3.1.1 概述 利用vhdl 進(jìn)行硬件可編程器件編程設(shè)計(jì)同一般的通用算法語言編程有很大的區(qū)別的。硬件電路單元的執(zhí)行是并發(fā)的,而且硬件設(shè)計(jì)要求的時(shí)序關(guān)系特別是高速系統(tǒng)的時(shí)序關(guān)系是設(shè)計(jì)中的重要考慮對象。程序的仿真和修改,特別是時(shí)序仿真是硬件開發(fā)過程中比較繁重的任務(wù)之一在引退鎖里,面積約束和延時(shí)約束三者之間的沖突,對于一個(gè)經(jīng)驗(yàn)豐富的設(shè)計(jì)員來說也難免發(fā)生錯(cuò)誤。vhdl 編制程序時(shí),語法規(guī)則和語義約定方面兩者關(guān)系比普通的編程語言更隱涵一些。當(dāng)進(jìn)行語法檢查時(shí)完全正確,當(dāng)?shù)搅司C合和實(shí)現(xiàn)階段時(shí),開發(fā)平臺(tái)總會(huì)有不少的警告,提示出現(xiàn)。若忽視這些警告,到仿真階段碰到的問題,會(huì)令人束手無策,反復(fù)查代碼根本無錯(cuò)誤可言,仔細(xì)閱讀語法的語義約定,才搞清楚問題的所在。在不能使用鎖存器(或使用鎖存器不好)的器件中。這種錯(cuò)誤更是必須避免,否則要向下一步進(jìn)行可能走不通??偩€沖突(競爭)也是設(shè)計(jì)中碰到的一個(gè)較大的難題,由于時(shí)序的錯(cuò)位,引起多個(gè)值同時(shí)賦給某總線,引起總線沖突。這個(gè)問題的解決需要對時(shí)序和所編寫的程序代碼進(jìn)行同步的對照和人工綜合才能解決。有關(guān)編碼和程序調(diào)試及設(shè)計(jì)要求和實(shí)現(xiàn)的矛盾問題不勝枚舉。對于有微處理器的系統(tǒng),系統(tǒng)工作所要求的命令可以有軟件代碼來產(chǎn)生出來,而可編程器件系統(tǒng)是采用純硬件的方法,所需要的命令必須自己進(jìn)行設(shè)計(jì),這些命令的產(chǎn)生就只能依靠各種信號的組合邏輯產(chǎn)生或是利用信號的邊沿上升,下降沿來生成,同時(shí)還要考慮到時(shí)序要求,在設(shè)計(jì)就必須仔細(xì)考慮。 本部分介紹cpld 編程的標(biāo)準(zhǔn)語言vhdl(very high speed integrated circuit hdl),但由于硬件編程畢竟不同于其它的編程方式,它和器件在設(shè)計(jì)的最后要走到一起,因此有必要介紹一下cpld 的結(jié)構(gòu)和設(shè)計(jì)中使用的芯片epm7128slc84-15。cpld 的開發(fā)可以用硬件描述語言(hdl)編程,然后在開發(fā)平臺(tái)上進(jìn)行驗(yàn)證,最后由eda 工具自動(dòng)實(shí)現(xiàn)設(shè)計(jì);也可以在開發(fā)平臺(tái)中用原理圖的設(shè)計(jì)方式,像pcb 設(shè)計(jì)方式一樣的設(shè)計(jì)cpld 芯片中的硬件電路。在hdl 形成發(fā)展以前,已經(jīng)有了眾多的、標(biāo)準(zhǔn)化的程序設(shè)計(jì)語言,例如c、pascal、fortran 等,它們適合于描述過程的算法,但不適于描述硬件。各公司在發(fā)展自己的eda 工具的同時(shí),必然要發(fā)展一種與之配套的hdl。由于發(fā)展eda 工具在前,標(biāo)準(zhǔn)化工作在后,這些hdl 必然不同, 用戶一旦選用某種eda 工具,就被束縛在這個(gè)環(huán)境之中。為了解決這個(gè)問題,美國國防部為他們的超高速集成電路計(jì)劃(veryhigh speed integrated circuit,vhsic),提出了硬件描述語言vhdl,并把這個(gè)任務(wù)交給了ti、ibm 和intermetrics 公司。1987 年12 月,ieee 把vhdl定為標(biāo)準(zhǔn)hdl,即ieee std10761987lrm87。此后,又作了若干修改,增加了一些功能,新的標(biāo)準(zhǔn)版本記為ieeestd10761993lrm93。 目前使用較多的hdl 有:從ada 語言演化來的vhdl,從c 語言演化來的verilog 語言,由于altera 的芯片在國內(nèi)有廣泛的使用歷史,其描述語言ahdl 也被廣泛使用。 硬件描述語言(hdl)是硬件設(shè)計(jì)者和eda(電子設(shè)計(jì)自動(dòng)化)工具之間的界面,設(shè)計(jì)者使用hdl 來描述自己的設(shè)計(jì)方案,設(shè)計(jì)要求或設(shè)計(jì)意圖,并把這個(gè)描述(稱為設(shè)計(jì)輸入)告訴給eda 工具,然后在eda 工具的幫助下進(jìn)行詳細(xì)的設(shè)計(jì)驗(yàn)證,最后可以通過簡單的選擇和設(shè)置就可以讓eda 工具最終完成設(shè)計(jì)。vhdl 是目前最流行的, 標(biāo)準(zhǔn)化的hdl(hardware description language)。vhdl 與具體工藝、設(shè)計(jì)方法無關(guān),也不局限于某一特定的仿真工具和工業(yè)部門。ic 設(shè)計(jì)者在語言范圍內(nèi)自由選擇工藝和設(shè)計(jì)方法。為了適應(yīng)集成電路工藝和不斷變化和發(fā)展,vhdl 具有把新的工藝方便地插進(jìn)現(xiàn)有的設(shè)計(jì)中的抽象能力。vhdl 是高度抽象的語言,這種對數(shù)字器件的抽象包括一個(gè)數(shù)字器件的行為,時(shí)間關(guān)系和結(jié)構(gòu)。vhdl 的基礎(chǔ)建立在三個(gè)相互獨(dú)立的模型上: 行為模型 解釋數(shù)字器件的功能 時(shí)間模型 表明數(shù)字器件的激勵(lì)響應(yīng)情況 結(jié)構(gòu)模型 當(dāng)一個(gè)數(shù)字器件包括多個(gè)操作時(shí),可以把每個(gè)操作分成多個(gè)功能上相關(guān)的部分3.1.2 vhdl 程序的基本結(jié)構(gòu) 一個(gè)完整的vhdl 程序含有五個(gè)部分:實(shí)體,結(jié)構(gòu)體,配置,程序包及庫。我們用下面的圖示來表示五者在程序設(shè)計(jì)中的相對位置圖3.1 vhdl 結(jié)構(gòu)圖 庫:是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包集合定義,實(shí)體定義,結(jié)構(gòu)定義和配置定義;vhdl 的庫有五類:ieee,std,asic 矢量庫,work 庫和用戶定義庫;庫的聲明總是在設(shè)計(jì)單元的最前端。 程序包:用來羅列vhdl 中要用到的信號定義,常數(shù)定義,數(shù)據(jù)類型,元件語句,函數(shù)定義,過程定義等。程序包的使用格式為:use 庫名.包集合名.all。 實(shí)體:描述元件的外觀或者是對外的接口信號,相當(dāng)于元件或芯片的引腳定義。 構(gòu)造體:描述系統(tǒng)、元件或電路的行為、功能或者結(jié)構(gòu)的封裝體,對外是不可見的。構(gòu)造體內(nèi)部的語句必須是是并行語句,這是由硬件的并發(fā)性特點(diǎn)決定的。結(jié)構(gòu)體的描述是vhdl的核心部分。 配置:是層與層之間的連接關(guān)系,以及實(shí)體與結(jié)構(gòu)體之間的連接關(guān)系;層與層之間的連接元件調(diào)用,模塊的調(diào)用等,實(shí)體與結(jié)構(gòu)體之間的連接是在多個(gè)實(shí)現(xiàn)的結(jié)構(gòu)體中選擇要進(jìn)行模擬的結(jié)構(gòu)體。 (1)vhdl語言結(jié)構(gòu)體描述方式 結(jié)構(gòu)體具體指明了該設(shè)計(jì)實(shí)體的行為,定義了該設(shè)計(jì)實(shí)體的功能,規(guī)定了該設(shè)計(jì)實(shí)體的數(shù)據(jù)流程 ,指派了實(shí)體中內(nèi)部元件的連接關(guān)系。 用 vhdl語言描述結(jié)構(gòu)體功能有 3 種方法: (2)行為描述法(behavioral description) 所謂結(jié)構(gòu)體的行為描述, 即對設(shè)計(jì)實(shí)體按算法的路徑進(jìn)行描述。行為描述采用進(jìn)程語句, 順序描述被設(shè)計(jì)實(shí)體的行為 。實(shí)體的行為描述是一種抽象描述, 不是對某一個(gè)具體器件對電子設(shè)計(jì)而言,而是高層次的概括,是整體設(shè)計(jì)功能的定義; 從計(jì)算機(jī)領(lǐng)域而言,行為描述和高級編程語言相類似,因此行為描述在eda工程中被稱為高層次描述或高級描述。當(dāng)用順序執(zhí)行結(jié)構(gòu)體的行為描述時(shí),設(shè)計(jì)工程師可為實(shí)體定義一組狀態(tài)時(shí)序機(jī)制,不需要互聯(lián)表,無需關(guān)注實(shí)體的電路組織和門級實(shí)現(xiàn), 這些完全eda工具綜合生成;設(shè)計(jì)工程師只需注意正確的實(shí)體行為、準(zhǔn)確的函數(shù)模型和精確的輸出結(jié)果。 (3)數(shù)據(jù)流描述法(dataflow description)數(shù)據(jù)流描述是結(jié)構(gòu)體描述方法之一 ,它描述了數(shù)據(jù)流程的運(yùn)動(dòng)路徑、 運(yùn)動(dòng)方向和運(yùn)動(dòng)結(jié)果。數(shù)據(jù)流描述采用進(jìn)程語句順序描述數(shù)據(jù)流在控制流的作用下被加工、處理、存儲(chǔ)的全過程。 常用的語句是條件信號賦值語句(case-when)和選擇信號賦值語句(with-select-when) 數(shù)據(jù)流描述法采用并行信號賦值語句,而不是順序語句; 一個(gè)結(jié)構(gòu)體可以有多重信號賦值語句,且語句可以并行執(zhí)行。 (4)結(jié)構(gòu)化描述法(structural description) 結(jié)構(gòu)化描述采用并行處理語句描述設(shè)計(jì)實(shí)體內(nèi)的結(jié)構(gòu)組織和元件的互連關(guān)系。 它通常用于層次式設(shè)計(jì)實(shí)體說明中僅說明了該實(shí)體的 i/o 關(guān)系, 而設(shè)計(jì)中采用標(biāo)準(zhǔn)元件。 輸入關(guān)系用 use 從句的方式從庫中調(diào)用,對于一個(gè)復(fù)雜的電子系統(tǒng)可以分解成許多子系統(tǒng), 子系統(tǒng)再分解成模塊, 多層次設(shè)計(jì)可以使設(shè)計(jì)多人協(xié)作、 同時(shí)進(jìn)行; 多層次設(shè)計(jì)中, 每個(gè)層次都可以作為一個(gè)元件, 再構(gòu)成一個(gè)模塊,或構(gòu)成一個(gè)系統(tǒng)。每個(gè)元件可以分別仿真。 然后再整體調(diào)試。結(jié)構(gòu)化描述不僅是一個(gè)設(shè)計(jì)方法, 而且是一種設(shè)計(jì)思想, 除了一個(gè)常規(guī)的門電路標(biāo)準(zhǔn)化后作為一個(gè)元件放在庫中調(diào)用, 用戶自己定義的特殊功能的元件, 也可以放在庫中, 方便調(diào)用, 這個(gè)過程稱為標(biāo)準(zhǔn)化或例化;尤其聲明的是元件標(biāo)準(zhǔn)化不僅僅是常規(guī)門電路,這和標(biāo)準(zhǔn)化元件的含義不一樣,即任何一個(gè)用戶設(shè)計(jì)的實(shí)體, 無論功能多么復(fù)雜 , 復(fù)雜到一個(gè)系統(tǒng), 還是多么簡單, 簡單到一個(gè)門電路, 都可以標(biāo)準(zhǔn)化成一個(gè)更加復(fù)雜的文件系統(tǒng)。 設(shè)計(jì)者可以從不同層次的抽象來描述設(shè)計(jì), 無論采用哪種編程方式其結(jié)果應(yīng)該是一致的。 3.1.3 結(jié)構(gòu)體的3種子結(jié)構(gòu)設(shè)計(jì)方法 一個(gè)設(shè)計(jì)實(shí)體可以擁有幾個(gè)結(jié)構(gòu)體,對于一個(gè)結(jié)構(gòu)體,如果功能豐富、結(jié)構(gòu)復(fù)雜,采用一個(gè)描述模塊是不方便的。因而產(chǎn)生了結(jié)構(gòu)體中的子結(jié)構(gòu)模塊的設(shè)計(jì)方法, 子結(jié)構(gòu)的形式有3種: 進(jìn)程、模塊和子程序。 這三種子結(jié)構(gòu)形式分別采用3種描述語句:即process語句,block 語句和子程序調(diào)用語句(subprograms)。 采用多進(jìn)程描述復(fù)雜結(jié)構(gòu)體的方法proess語句是一種并行處理語句,進(jìn)程的內(nèi)部結(jié)構(gòu)由一系列順序語句構(gòu)成 ;語句逐條執(zhí)行。 順序與語句的書寫順序相一致,需要注意的是在vhdl 中,所謂順序僅僅是指語句按序執(zhí)行上的順序性,但這并不意味process 語句結(jié)構(gòu)所對應(yīng)的硬件邏輯行為也具有相同的順序性。process 結(jié)構(gòu)中既可以有時(shí)序邏輯的描述, 也可以有組合邏輯的描述,它們都可以用順序語句來表達(dá) 。一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu)進(jìn)程的設(shè)計(jì)需要注意以下幾方面的問題: (1)雖然同一結(jié)構(gòu)體中的進(jìn)程之間是并行運(yùn)行的,但同一進(jìn)程中的邏輯描述語句則是順序運(yùn)行的, 因而在進(jìn)程中只能設(shè)置順序語句。 (2)進(jìn)程的激活必須由敏感信號表中定義的任一敏感信號的變化或wait 語句來啟動(dòng),但是如果進(jìn)程中包含 wait 語句, 則不允許有敏感信號表存在, 所謂進(jìn)程對信號敏感,就是指當(dāng)這個(gè)信號發(fā)生變化時(shí)能觸發(fā)進(jìn)程中語句的執(zhí)行,如果進(jìn)程包含敏感表,進(jìn)程執(zhí)行完其最后一條語句時(shí)將被掛起,直到敏感表中的一個(gè)信號發(fā)生變化為止,如果進(jìn)程有一個(gè)或多個(gè) wait 語句(因此沒有敏感表) 進(jìn)程將在第一條等待條件為false 的wait 語句處被掛起。 一般,綜合后的電路需要對所有進(jìn)程中要讀取的信號敏感。為了保證vhdl 仿真和綜合后的電路具有相同的結(jié)果, 進(jìn)程敏感表就得包括所有對進(jìn)程產(chǎn)生作用的信號。 vhdl編譯器將檢查敏感表的完整性,對于任何一個(gè)進(jìn)程內(nèi)已經(jīng)讀取,但敏感表中并沒列出的信號給出警告消息;如果進(jìn)程中時(shí)鐘信號被當(dāng)作數(shù)據(jù)讀取則會(huì)產(chǎn)生錯(cuò)誤。 (3)一個(gè)結(jié)構(gòu)體中多個(gè)進(jìn)程的并行同步運(yùn)行通過傳遞信號和共享變量值實(shí)現(xiàn)。相對于結(jié)構(gòu)體來說,信號具有全局特性,它是進(jìn)程間進(jìn)行并行聯(lián)系的重要途徑,因此, 在任一進(jìn)程的進(jìn)程說明部分不允許定義信號和共享變量(共享變量是 vhdl93 增加的內(nèi)容)。 (4)采用多模塊描述復(fù)雜結(jié)構(gòu)體的方法塊語句(block)的并行工作方式更為明顯 ,塊語句本身是并行語句結(jié)構(gòu),而且它的內(nèi)部也都是由并行語句構(gòu)成(包括進(jìn)程)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- A證(企業(yè)負(fù)責(zé)人)-安全員A證(企業(yè)負(fù)責(zé)人考前練習(xí))
- 廣東省中山市2024年九年級中考三模數(shù)學(xué)試卷附答案
- 電力系統(tǒng)節(jié)能減排實(shí)施方案
- 高一化學(xué)二第三章第一節(jié)最簡單的有機(jī)化合物-甲烷教學(xué)設(shè)計(jì)
- 2024高中地理第3章地理信息技術(shù)應(yīng)用第3節(jié)全球定位系統(tǒng)及其應(yīng)用學(xué)案湘教版必修3
- 2024高中語文第一單元以意逆志知人論世蜀相訓(xùn)練含解析新人教版選修中國古代詩歌散文欣賞
- 2024高中語文第四單元?jiǎng)?chuàng)造形象詩文有別第21課自主賞析項(xiàng)羽之死課時(shí)作業(yè)含解析新人教版選修中國古代詩歌散文欣賞
- 2024高考化學(xué)一輪復(fù)習(xí)專練5化學(xué)與STSE含解析新人教版
- 2024高考化學(xué)一輪復(fù)習(xí)第一部分考點(diǎn)41烴的含氧衍生物強(qiáng)化訓(xùn)練含解析
- 2024高考化學(xué)一輪復(fù)習(xí)課練3物質(zhì)的組成性質(zhì)分類和化學(xué)用語含解析
- 嘔血護(hù)理查房
- 2024年新青島版(六三制)三年級下冊科學(xué)全冊知識點(diǎn)
- 朝韓關(guān)系相關(guān)分析
- 校園熱水方案
- 跟蹤服務(wù)項(xiàng)目活動(dòng)實(shí)施方案
- 新能源汽車產(chǎn)業(yè)鏈中的區(qū)域發(fā)展不均衡分析與對策
- 財(cái)務(wù)機(jī)器人技術(shù)在會(huì)計(jì)工作中的應(yīng)用
- 建筑保溫隔熱構(gòu)造
- 智慧財(cái)務(wù)綜合實(shí)訓(xùn)
- 安徽省合肥市2021-2022學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題(含答案)3
- 教育專家報(bào)告合集:年度得到:沈祖蕓全球教育報(bào)告(2023-2024)
評論
0/150
提交評論