版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于VHDL的8255并行接口芯片的設(shè)計</p><p><b> 1.緒論</b></p><p> 當(dāng)今是數(shù)字化的時代,數(shù)字技術(shù)的應(yīng)用已滲透到人類生活的方方面面,信息、高速公路、多媒體電腦、移動電話、數(shù)字電視,各種自動化設(shè)備以及家用電器無不盡可能地采用了數(shù)字技術(shù)。</p><p> 凡是利用數(shù)字技術(shù)對信息進(jìn)行存儲
2、、傳輸、處理的電子系統(tǒng)皆可稱為數(shù)字系統(tǒng)。和模擬系統(tǒng)相比,數(shù)字系統(tǒng)具有以下特點:穩(wěn)定性、精確性、可靠性和模塊化。在數(shù)字化的道路上,電子設(shè)計技術(shù)的發(fā)展經(jīng)歷了,并將繼續(xù)經(jīng)歷許多重大的變革飛躍。從應(yīng)用SSI通用數(shù)字集成芯片構(gòu)成的數(shù)字系統(tǒng),到廣泛應(yīng)用MCU(微控制器或單片機(jī)),使數(shù)字系統(tǒng)的設(shè)計方法發(fā)生了具有里程碑意義的飛躍,這一飛躍不但克服了純SSI數(shù)字系統(tǒng)許多不可逾躍的困難,同時也為數(shù)字電子設(shè)計技術(shù)的應(yīng)用開拓了更廣闊的前景,它使得數(shù)字電子系統(tǒng)的
3、智能化水平在廣度和深度上發(fā)生了質(zhì)的飛躍。</p><p> 數(shù)字系統(tǒng)設(shè)計技術(shù)的發(fā)展在很大程度上得益于器件和集成技術(shù)的發(fā)展,大規(guī)模可編程邏輯器件PLD(programmable logic device)、現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Array)的出現(xiàn)、集成工藝和計算機(jī)技術(shù)的發(fā)展使得數(shù)字系統(tǒng)的設(shè)計理念、設(shè)計方法發(fā)生了深刻的變化。數(shù)字系統(tǒng)的設(shè)計歷來存在兩個分支,即系統(tǒng)硬
4、件設(shè)計和系統(tǒng)軟件設(shè)計。但是,以大規(guī)模集成電路為物質(zhì)基礎(chǔ)的EDA(Electronic Design Automation)技術(shù)終打破了軟硬件之間的最后屏障,為數(shù)字系統(tǒng)的硬件和軟件的協(xié)同設(shè)計打下了良好的基礎(chǔ),即數(shù)字系統(tǒng)的硬件、軟件設(shè)計可以在一開始就進(jìn)行通盤考慮,進(jìn)行早期仿真,大大提高了系統(tǒng)設(shè)計的效率。</p><p> 本課題提出的“基于VHDL的8255并行接口芯片的設(shè)計”技術(shù)將是計算機(jī)硬件技術(shù)的發(fā)展趨勢。本課
5、題在Altera公司的Quartus2開發(fā)環(huán)境下采用VHDL語言進(jìn)行設(shè)計、編譯綜合、仿真,采用Alera公司的ACEX 1K系列的EP1K10TC100-3 FPGA芯片實現(xiàn)。</p><p> 2 VHDL語言及實現(xiàn)</p><p> 2.1 EDA技術(shù)的發(fā)展</p><p> 因為EDA技術(shù)豐富的內(nèi)容以及電子技術(shù)各學(xué)科領(lǐng)域的相關(guān)性,其發(fā)展的歷程同大規(guī)模
6、集成電路設(shè)計技術(shù)、計算機(jī)輔助工程、可編程邏輯器件,以及電子設(shè)計技術(shù)和工藝的發(fā)展是同步的。就過去近30年的電子技術(shù)的發(fā)展歷程,可大致將EDA技術(shù)的發(fā)展分為三個階段:</p><p> a) 20世紀(jì)70年代,集成電路制作方面,MOS工藝已經(jīng)得到廣泛的應(yīng)用??删幊踢壿嫾夹g(shù)及其器件已經(jīng)問世,計算機(jī)作為一種運(yùn)算工具已在科研領(lǐng)域得到廣泛應(yīng)用。而在后期,CAD的概念已見雛形。這一階段人們開始利用計算機(jī)取代手工勞動,輔助進(jìn)
7、行集成電路版圖編輯、PCB布局布線等工作。</p><p> b) 20世紀(jì)80年代,集成電路設(shè)計進(jìn)入了CMOS(互補(bǔ)場效應(yīng)管)時代。復(fù)雜可編程邏輯器件已進(jìn)入商業(yè)應(yīng)用,相應(yīng)的輔助設(shè)計軟件也已投入使用.而在80年代末,出現(xiàn)了FPGA(Filed Programmable Gate Array), CAE和CAD技術(shù)的應(yīng)用更為廣泛,它們在PCB設(shè)計方面的原理圖輸入、自動布局布線及PCB分析,以及邏輯設(shè)計、邏輯仿真
8、、布爾方程綜合和化簡等方面擔(dān)任了重要的角色,特別是各種硬件描述語言的出現(xiàn)、應(yīng)用和標(biāo)準(zhǔn)化方面的重大進(jìn)步,為電子設(shè)計自動化必須解決的電路建模、標(biāo)準(zhǔn)文當(dāng)及仿真測試奠定了基礎(chǔ)。</p><p> c) 進(jìn)入20世紀(jì)90年代,隨著硬件描述語言的標(biāo)準(zhǔn)化得到進(jìn)一步的確立,計算機(jī)輔助工程、輔助分析和輔助設(shè)計在電子技術(shù)領(lǐng)域獲得更加廣泛的應(yīng)用,與此同時電子技術(shù)在通信、計算機(jī)及家電產(chǎn)品生產(chǎn)中的市場需求和技術(shù)需求,極大地推動了全新的
9、電子設(shè)計自動化技術(shù)的應(yīng)用和發(fā)展。特別是集成電路設(shè)計工藝步入了超深亞微米階段,百萬門次以上的大規(guī)模可編程邏輯期間的陸續(xù)面世,以及基于計算機(jī)技術(shù)的面向用戶的低成本大規(guī)模ASIC設(shè)計技術(shù)的應(yīng)用,促進(jìn)了EDA技術(shù)的形成。更為重要的是各EDA公司致力于推出兼容各種硬件實現(xiàn)方案和支持準(zhǔn)硬件描述語言的EDA工具軟件的研究,都有效地將EDA技術(shù)推向成熟。</p><p> EDA技術(shù)在進(jìn)入21世紀(jì)以后,得到了更大的發(fā)展,突出表
10、現(xiàn)在以下幾個方面:</p><p> 1)電子設(shè)計成果以自主知識產(chǎn)權(quán)的方式得以明確表達(dá)和確認(rèn)成為可能。</p><p> 2)電子技術(shù)全方位納入EDA領(lǐng)域,除了口益成熟的數(shù)字技術(shù)外,傳統(tǒng)的電路系統(tǒng)設(shè)計建模理念發(fā)生了重大的變化:軟件無線電技術(shù)的崛起,模擬電路系統(tǒng)硬件描述語言的表達(dá)和設(shè)計的標(biāo)準(zhǔn)化,系統(tǒng)可編程模擬器件的出現(xiàn),數(shù)字信號處理和圖像處理的全硬件實現(xiàn)方案普遍接受,軟硬件技術(shù)的進(jìn)一步融
11、合等。</p><p> 3)在方針和設(shè)計兩方面支持標(biāo)準(zhǔn)硬件描述語言的功能強(qiáng)大的EDA軟件不斷推出。</p><p> 4)EDA使得電子領(lǐng)域各學(xué)科的界限更加模糊,更加互為包容:模擬與數(shù)字、軟件與硬件、系統(tǒng)與器件、ASIC與GPGA、行為與結(jié)構(gòu)等。</p><p> 5)更大規(guī)模的FPGA和CPLD器件的不斷推出。</p><p>
12、6)基于EDA工具的ASIC設(shè)計標(biāo)準(zhǔn)單元以涵蓋了大規(guī)模電子系統(tǒng)及IP核模塊。軟硬件IP核在電子行業(yè)的產(chǎn)業(yè)領(lǐng)域、技術(shù)領(lǐng)域和設(shè)計應(yīng)用領(lǐng)域得到進(jìn)一步確認(rèn)。(IP即Intellectual Property,即知識產(chǎn)權(quán)的簡稱,往往指一個公司出售給另一個公司的硬件設(shè)計包)。</p><p> 7)SoC高效低成本設(shè)計技術(shù)的成熟。</p><p> 值得提出的是,世界個EDA公司致力退出兼容各種硬
13、件事先方案和支持標(biāo)準(zhǔn)硬件描述語言的EDA工具軟件,有效地將EDA技術(shù)推向成熟。今天,EDA技術(shù)已經(jīng)成為電子設(shè)計的重要工具,無論是設(shè)計芯片還是設(shè)計系統(tǒng),如果沒有EDA工具的支持,都將是難以完成的。EDA工具已經(jīng)成為電路設(shè)計師的重要武器,正在發(fā)揮著越來越重要的作用。</p><p> 2.2 VHDL概述</p><p> 2.2.1 VHDL的由來</p><p&
14、gt; VHDL是Very High Speed Integrated Circuit Hardware Description Language 的縮寫,意思是非常高速集成電路的硬件描述語言,是HDL的一種,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可
15、以和VHDL接口。此后VHDL在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。這是一項誕生與由美國國
16、防部所支持的研究計劃,目的是為了把電子電路的設(shè)計意義以文字或文件的方式保存下來,以便他人能輕易地了解電路的設(shè)計意義。由于VHDL電</p><p> 2.2.2 VHDL的特點</p><p> VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多方面具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法十分類似與一般的計算機(jī)高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工
17、程設(shè)計或稱設(shè)計實體(可以是一個元件、一個電路模塊或一個系統(tǒng))分成外部(即端口)和內(nèi)部(即設(shè)計實體的內(nèi)部功能和算法完成部分)。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其它的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。具體特點如下:</p><p> 1)與其它的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語
18、言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模集成電路的重要保證。</p><p> 2)VHDL豐富的仿真語言和庫函數(shù),使得在大規(guī)模集成電路設(shè)計的早期就能查驗出設(shè)計系統(tǒng)的功能可行性,可隨時對設(shè)計進(jìn)行功能仿真、時序仿真,使設(shè)計者在設(shè)計初期就可以對整個工程設(shè)計的可行性做出決策,從而縮短了設(shè)計周期,減少了研發(fā)成本。</p><p> 3)VHDL語句的行為描述能力
19、和程序結(jié)構(gòu)決定了它具有支持大規(guī)模集成電路設(shè)計的分解和對已有設(shè)計的再利用功能。重復(fù)利用他人的Ip(Intelligence Property core)模塊和軟核(softcore)是VHDL的特色,設(shè)計不必各個都從頭再來,只要在更高的層次上把IP模塊利用起來,能達(dá)到事半功倍的效果。</p><p> 4)對于VHDL完成的一個確定的設(shè)計,可以利用EDA工具(如Quartus2)</p><p
20、> 進(jìn)行邏輯綜合和優(yōu)化,并自動把VHDL描述設(shè)計轉(zhuǎn)換成門級網(wǎng)表。這種設(shè)計方式突破了傳統(tǒng)門級設(shè)計中的瓶頸,極大地減少了電路設(shè)計的時間和錯誤發(fā)生率,降低了開發(fā)成本,縮短了設(shè)計周期。</p><p> 5)VHDL對設(shè)計的描述具有相對的獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必關(guān)心最終設(shè)計的目標(biāo)器件是什么而進(jìn)行獨立的設(shè)計。正因為VHDL的硬件描述與具體的工藝和硬件結(jié)構(gòu)無關(guān),VHDL設(shè)計程序的硬件實現(xiàn)目標(biāo)器件有廣
21、闊的選擇范圍。</p><p> 6)由于VHDL具有類屬描述語句和子程序調(diào)用等功能,對于己完成的設(shè)計,在不改變源程序的前提下,只需改變類屬參數(shù)或函數(shù),就能改變設(shè)計的規(guī)模和結(jié)構(gòu)。</p><p> 2.2.3 VHDL的描述風(fēng)格</p><p> 在VHDL結(jié)構(gòu)體中,可以用不同的描述方式或說是建模方法來表達(dá),通??蓺w納為行為描述、寄存器傳輸RTL(Regis
22、ters Transfer Language)描述和結(jié)構(gòu)描述。</p><p> 1)行為描述 行為描述只表示輸入與輸出間轉(zhuǎn)換的行為,不包含任何結(jié)構(gòu)信息。行為描述主要指順序語句描述,既通常是指含有進(jìn)程的非結(jié)構(gòu)化的邏輯描述。</p><p> 2)RTL描述 也稱為數(shù)據(jù)流描述,是以規(guī)定設(shè)計中的各種寄存器形式為特征,然后在寄存器之間插入組合邏輯。RTL描述是建立在用并行信號賦值語句(進(jìn)程)
23、基礎(chǔ)上的,RTL描述能比較直觀地表達(dá)底層邏輯行為。它既含有邏輯單元的結(jié)構(gòu)信息,又隱含表示某種行為,RTL描述主要是指非結(jié)構(gòu)化的并行語句描述。</p><p> 3)結(jié)構(gòu)描述 結(jié)構(gòu)描述是基于元件例化或生成語句的應(yīng)用,表示元件間的互連,其風(fēng)格最接近實際的硬件結(jié)構(gòu)。</p><p> 2.2.4 VHDL的基本程序結(jié)構(gòu)</p><p> 一個相對完整的VHDL設(shè)計
24、由以下幾個部分組成:</p><p> 1) 庫、程序包;</p><p><b> 2) 實體;</b></p><p><b> 3) 結(jié)構(gòu)體;</b></p><p><b> 4) 配置;</b></p><p> 其各自作用如
25、圖2.1所示:</p><p> 圖2.1 VHDL基本程序結(jié)構(gòu)</p><p> 以上四個部分并不是每一個VHDL程序都必須具備的,其中只有一個實體和一個與之對應(yīng)的結(jié)構(gòu)體是必須的。</p><p><b> a) 實體</b></p><p> 實體(ENTITY)是VHDL設(shè)計中最基本的一個組成部分,VHD
26、L表達(dá)的所有設(shè)計均與實體有關(guān)。實體類似與原理圖中的一個部件符號,它并不描述設(shè)計的具體功能,只定義了該設(shè)計所需的全部輸入輸出信號。</p><p> 實體的語法格式如下:</p><p> ENTITY e_name IS</p><p> PROT( p_name : prot_m data_type;</p><p><
27、b> …</b></p><p> p_name : port_mi data_type);</p><p> END ENTITY e_name;</p><p> 上式中,ENTITY、IS、PORT和END、ENTITY都是描述實體的關(guān)鍵詞,在實體描述中必須包含這些關(guān)鍵詞。在編譯中,關(guān)鍵詞不分大寫和小寫。</p>&l
28、t;p><b> b) 結(jié)構(gòu)體</b></p><p> 所有能被仿真的實體都有結(jié)構(gòu)體(ARCHITECTURE)描述即結(jié)構(gòu)體描述實體的結(jié)構(gòu)或行為。在結(jié)構(gòu)體描述中可采用行為描述、結(jié)構(gòu)描述或數(shù)據(jù)流描述三種不同的描述方式,或稱為建模方法,從不同的側(cè)面描述結(jié)構(gòu)體的行為方式。在實際應(yīng)用中,為了兼顧整個設(shè)計的功能、資源、性能幾方面的因素,通?;旌鲜褂眠@三種描述方式。</p>
29、<p> 結(jié)構(gòu)體的語法格式如下:</p><p> ARCHITECTURE arch_name OF e_name IS</p><p><b> [說明語句]</b></p><p><b> BEGIN</b></p><p><b> (功能描述語句)</
30、b></p><p> END ARCHITECTURE arch_name;</p><p> 上式中,ARCHITECTURE、OF、IS、BEGIN和END ARCHITECTURE都是描述結(jié)構(gòu)體的關(guān)鍵詞,在描述中必須包含它們。arch_name是結(jié)構(gòu)體名,是標(biāo)識符。</p><p> [說明語句]包括在結(jié)構(gòu)體中,用以說明和定義數(shù)據(jù)對象、數(shù)據(jù)類型、
31、元件調(diào)用聲明等。[說明語句]并非是必須的,(功能描述語句)則不同,結(jié)構(gòu)體中必須給出相應(yīng)的電路功能描述語句,可以是并行語句,順序語句或它們的混合。</p><p> 2.2.5 程序包(Package)</p><p> 在VHDL語言中,數(shù)據(jù)類型、常量與子程序已在實體說明部分和結(jié)構(gòu)體部分加以說明,而且實體說明部分所定義的類型、常量及子程序在相應(yīng)的結(jié)構(gòu)體中是可見的(可以被使用)。但是,
32、在一個實體的說明部分與結(jié)構(gòu)體部分中定義的數(shù)據(jù)類型、常量及子程序?qū)τ谄渌鼘嶓w的說明部分與結(jié)構(gòu)體部分是不可見的。程序包就是為了使用一組類型說明、常量說明和子程序說明對多個設(shè)計實體都成為可見的而提供的一種結(jié)構(gòu)。</p><p> 程序包定義了一組數(shù)據(jù)類型說明、常量說明、元件說明和子程序說明它分包頭和包體兩部分。包頭以保留字PACKAGE開頭,包體則以PACKAGE BODY識別。</p><p&g
33、t; 2.2.6 庫((Library)</p><p> 庫是專門存放預(yù)先編好的程序包(package)的地方,這樣它們就可以在其它設(shè)計中被調(diào)用。它實際上對應(yīng)一個目錄,預(yù)編譯程序包的文件就放在此目錄中。用戶自建的庫即為設(shè)計文件所在的目錄,庫名與目錄名的對應(yīng)關(guān)系可在編譯軟件中指定。</p><p> 2.2.7 VHDL運(yùn)算符</p><p> VHD
34、L為構(gòu)造計算數(shù)值的表達(dá)式提供了許多預(yù)定義算符。預(yù)定義算符可分為四種類型:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,邏輯運(yùn)算符與連接運(yùn)算符。</p><p><b> 算術(shù)運(yùn)算符</b></p><p><b> + 加</b></p><p><b> ?。?減</b></p>
35、<p><b> * 乘</b></p><p><b> / 除</b></p><p> ** 乘方</p><p> mod 求模</p><p> rem 求余</p><p> abs
36、求絕對值</p><p><b> 關(guān)系運(yùn)算符</b></p><p> = 等于</p><p> /= 不等于</p><p> < 小于</p><p> <= 小于或等于</p><p>
37、> 大于</p><p> >= 大于等于</p><p> 注:其中‘<=’操作符也用于表示信號的賦值操作</p><p><b> 邏輯運(yùn)算符</b></p><p> and 邏輯與</p><p> or
38、 邏輯或</p><p> not 邏輯非</p><p> nand 與非</p><p> nor 或非</p><p> xor 異或</p><p> xnor 同或</p><p><b>
39、; 并直運(yùn)算符</b></p><p> & 用于將多個元素或矢量連接成新的矢量。</p><p> 2.2.8 VHDL數(shù)據(jù)對象</p><p> 在邏輯綜合中,VHDL語言常用的數(shù)據(jù)對象為信號、常量、變量。</p><p> 1)信號(Signal)</p><p>
40、; 用于聲明內(nèi)部信號,而非外部信號(外部信號對應(yīng)為in, out, inout,buffer),其在元件之間起互聯(lián)作用,可以賦值給外部信號。信號也可在狀態(tài)機(jī)中表示狀態(tài)變量。信號賦值符號為“<=”。</p><p><b> 2)常量</b></p><p> 常量在設(shè)計描述中保持某一規(guī)定類型的特定值不變。利用它可設(shè)計不同模值的計數(shù)器,模值存于一常量中。&l
41、t;/p><p> 常量在定義時賦初值,賦值符號為“:=”。</p><p><b> 3)變量</b></p><p> 變量在給定的進(jìn)程中用于聲明局部值或用于子程序中。變量的賦值符號“:=”。</p><p> 2.2.9 VHDL常用語句</p><p> VHDL常用語句分并行(C
42、oncurrent)語句和順序(sequential)語句:</p><p> 1)并行語句(Concurrent):</p><p> 并行語句總是處于進(jìn)程(PROCESS)的外部。所有并行語句都是并行執(zhí)行的,即與它們出現(xiàn)的先后次序無關(guān)。如when…else語句。</p><p> 2)順序語句(Sequential)</p><p>
43、; 順序語句總是處于進(jìn)程(PROCESS)的內(nèi)部,并且從仿真的角度來看是順序執(zhí)行的。如if-then-else語句。</p><p> 進(jìn)程(PROCESS)用于描述順序(sequential)事件并且包含在結(jié)構(gòu)體中,一個結(jié)構(gòu)體可以包含多個進(jìn)程語句。以下為進(jìn)程語句的構(gòu)成:</p><p> 2.3 FPGA概述</p><p> FPGA即現(xiàn)場可編程門陣列
44、(Field Programmable Gate Array),FPGA既具有門陣列器件的高度集成度和通用性,又有可編程器件用戶可編程的靈活性。所謂現(xiàn)場可編程,指用戶在自己的實驗室編程。</p><p> 2.3.1 FPGA結(jié)構(gòu)</p><p> FPGA門陣列中的每一個節(jié)點放的不象CPLD是單獨的門,而是用門、觸發(fā)器等做成的邏輯單元(cell),并在各個單元之間預(yù)先制作了許多連線
45、,所謂編程,就是安排邏輯單元與這些連線之間的關(guān)系,依靠連接點的合理配置,實現(xiàn)各邏輯單元之間的互連。FLEX 10K系列是非常有代表性的器件,它結(jié)合了可編程器件的靈活性,器件規(guī)模從10000門到250000門,系統(tǒng)時鐘可達(dá)到204MHZ,具有獨特的邏輯實現(xiàn)結(jié)構(gòu)—嵌入式陣列EBA(Embedded Array Block)和邏輯陣列LA(logic Array)。</p><p> 2.3.2 基于FPGA的數(shù)字
46、集成電路設(shè)計過程</p><p> 基于FPGA的設(shè)計流程圖如圖2.2所示: </p><p><b> 1)設(shè)計輸入</b></p><p> 設(shè)計輸入就是設(shè)計者對邏輯器件的邏輯功能描述。設(shè)計輸入通常采用圖形輸入和VHDL文本輸入方式。在設(shè)計輸入過程中,往往采用層次化設(shè)計方法,分模塊、分層次地進(jìn)行設(shè)計描述。描述器件總功能的模塊放在最上層
47、,稱頂層設(shè)計;描述器件最基本功能的模塊放在最低層,稱低層設(shè)計;一般在頂層設(shè)計中采用圖形輸入法來描述模塊連接關(guān)系;在低層設(shè)計中采用HDL(VHDL、AHDL)文本輸入法描述模塊的邏輯功能。本設(shè)計的設(shè)計輸入底層采用文本輸入,而頂層采用圖形輸入。</p><p> 圖2.2 基于FPGA/CPLD的設(shè)計流程圖</p><p><b> 2)項目編輯</b></p&
48、gt;<p> 為完成對設(shè)計的處理,QuartusⅡ提供了一個完全集成的編譯器(Compiler),可直接完成從網(wǎng)表提取到最后編程文件的生成。在編譯過程中生成一系列標(biāo)準(zhǔn)文件可進(jìn)行時序模擬、適配等。在編譯過程中,若某個環(huán)節(jié)出錯,編譯器會停下來,并告訴錯誤的原因及位置,直到編譯通過。</p><p><b> 3)項目校驗</b></p><p> 完
49、成對設(shè)計的功能、時序仿真;進(jìn)行時序分析、寄存器性能分析。</p><p><b> 4)項目編程</b></p><p> 將設(shè)計的項目下載/配置到所選擇的器件(FPGA)中。由FPGA的設(shè)計流程可知,采用VHDL語言進(jìn)行FPGA設(shè)計或利用FPGA進(jìn)行ASIC前端設(shè)計的功能驗證,主要工作是系統(tǒng)模塊的劃分、對各個模塊RTL(Registers Transfer La
50、nguage)級可綜合VHDL語言的描述、功能及時序的仿真,至此僅完成了系統(tǒng)軟件上的仿真。由于仿真激勵文件的不完善,所以時序仿真的通過并不代表加載到FPGA片中的成功,只有真正通過了FPGA的硬件調(diào)試,才是系統(tǒng)設(shè)計的真正成功。</p><p> 2.4 QuartusⅡ概述</p><p> Altera公司的QuartusⅡ開發(fā)系統(tǒng)是一個完全集成化、易學(xué)易用的可編程邏輯設(shè)計環(huán)境,它
51、可以在多種平臺上運(yùn)行。它所提供的靈活性和高效性是無可比擬的。它具有豐富的圖形界面,輔之以完整的、即時訪問的在線文檔,使設(shè)計者能夠輕松的使用去QuartusⅡ軟件包設(shè)計數(shù)字集成電路。它能夠解決FPGA/CPLD開發(fā)過程中的編譯、編輯、綜合及仿真等內(nèi)容,目前最高版本為QuartusⅡ,是目前FPGA/CPLD開發(fā)工具中較為理想的綜合、仿真軟件,具有許多優(yōu)良的特性。</p><p> 2.4.1 QuartusⅡ的
52、特點:</p><p><b> 1)開放的界面</b></p><p> QuartusⅡ軟件可以與其它工業(yè)標(biāo)準(zhǔn)的設(shè)計輸入、綜合與校驗工具相連接。目前QuartusⅡ支持與Candence、Exemplarlogic、synopsys、synplicity、Viewlogic等其它公司所提供的EDA工具接口。</p><p><b&
53、gt; 2)與結(jié)構(gòu)無關(guān)</b></p><p> Quartus2系統(tǒng)的核心Compiler支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX5000和Classic可編程器件,提供了真正與結(jié)構(gòu)無關(guān)的可編程設(shè)計環(huán)境。QuartusⅡ的Compiler還提供了強(qiáng)大的邏輯綜合與優(yōu)化功能,使用戶比較容易地將起設(shè)計集成到器件中。</p><
54、p><b> 3)完全集成化</b></p><p> QuartusⅡ軟件的設(shè)計輸入、處理與校驗功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動態(tài)調(diào)試、縮短設(shè)計周期。</p><p><b> 4)豐富的設(shè)計庫</b></p><p> QuartusⅡ提供了豐富的庫單元,其中包括74系列的全部器件和多種特殊
55、的邏輯宏功能以及參數(shù)化的兆功能供設(shè)計者調(diào)用,大大減輕了設(shè)計者的工作量,縮短了設(shè)計周期。</p><p><b> 5)模塊化工具</b></p><p> 設(shè)計者可以從各種設(shè)計輸入、處理和校驗選項中進(jìn)行選擇從而使設(shè)計環(huán)境用戶化,必要時,還可以根據(jù)需要添加新功能。由于QuartusⅡ支持多種器件,設(shè)計者不必學(xué)習(xí)新的工具就可支持新的結(jié)構(gòu)。</p><
56、;p> 6)支持多種硬件描述語言</p><p> QuartusⅡ軟件支持多種硬件描述語言設(shè)計輸入選項,包括VHDL、VerilogHDL和AHDL等語言。</p><p> 7)繼承了MAX/+PLUSⅡ的優(yōu)點</p><p> 圖形輸入依然形象,圖形符號與MAX/+PLUSⅡ符號一樣符合數(shù)字電路的特點,大量74系列器件符號使初學(xué)者能在較短的時間內(nèi)
57、利用圖形編輯設(shè)計出需要的電路。文本輸入幾乎與MAX/+PLUSⅡ相同,而且在文本的每一行都有行號,適用語言編寫的電路清晰易讀。底層編輯仍然采用Chipview方式,引腳排列位置映射了實際器件引腳,只要簡單的鼠標(biāo)拖放即可完成底層編輯。</p><p><b> 8)支持的器件更多</b></p><p> 出了支持MAX3000、MAX7000、FLEX6000、F
58、LEX10KE、ACEX1K等MAX+PLUSⅡ已支持的器件外,還支持PEX20K、APEX20K、APEXⅡ、EXCALIBUR-ARM、Mercury、Stratix等MAX+PLUSⅡ下無法支持的大容量高性能的器件。</p><p> 9)綜合器的功能更強(qiáng)大</p><p> QuartusⅡ的環(huán)境下已經(jīng)集成了Sesign Architect、Design compiler、EP
59、GA compiler 、EPGA compilerⅡ、EPGA compilerⅡAltera Edition、FPGA Express、Leonard Spectrum、Lecnard Spectrum、Simlify、Viewdraw等強(qiáng)有力的綜合工具,是VHDL、Verlog HDL編寫的電路綜合效果比MAX+PLUSⅡ有大幅度提高。</p><p> 當(dāng)然,QuartusⅡ也有它的不足之處,那就是軟件
60、結(jié)構(gòu)龐大,適用復(fù)雜,不如MAX+PLUSⅡ簡單,易學(xué)易用。</p><p> 2.4.2 配置要求</p><p> 為了使QuartusⅡ軟件的性能達(dá)到最佳,Altera公司建議計算機(jī)的最低配置如下:</p><p> CPU為PentiumⅡ 400MHz以上型號,512MB以上系統(tǒng)內(nèi)存。</p><p> Dayu 200MB
61、的安裝QuartusⅡ軟件所需的最小硬盤空間。</p><p> Microsft Windows NT4.0(Service Pack4以上)、Windows2000以上。</p><p> Microsft Windows兼容的SVGA顯示器。</p><p> CD-ROM驅(qū)動器。</p><p> 至少有下面的接口之一:應(yīng)用B
62、yteBlasterⅡ或ByteBlaster MV下載電纜的井口接口(LPT接口);用于MasterBlaster通信電纜的串行接口;用于USB-Blaster下載電纜、MasterBlaster通信電纜以及APU(Altera Programming Unit)的USB接口(僅用于Windows2000和Windows XP)。</p><p> Microsoft IE以上瀏覽器。</p>
63、<p> TCP/IP網(wǎng)絡(luò)協(xié)議。</p><p> 3 可編程并行接口芯片8255背景知識</p><p> Intel 8255芯片是配合Inter微處理器而設(shè)計的通用可編程并行I/O接口器件,它能把外圍設(shè)備連到微型計算機(jī)總線上,通用性強(qiáng),使用靈活,可以用程序來設(shè)置和改變芯片的工作方式,是一種典型的可編程并行接口芯片。8255共有三種模式:基本的輸入/輸出(方式0)、有
64、選通的輸入/輸出(方式l)和雙向總線輸入/輸出(方式2)。</p><p> 3.1 8255芯片的特性及外部信號</p><p> 8255并行1/0接口芯片具有如下特性:</p><p> ·與MCS一85兼容。</p><p> ·與TTL電路完全兼容。</p><p> ·
65、;與Intel公司的微處理器完全兼容。</p><p><b> ·改善了時序特性。</b></p><p> ·直接復(fù)位/置位特性便于實現(xiàn)控制性接口。</p><p><b> ·減少了器件數(shù)目。</b></p><p> ·提高了直流驅(qū)動能力。&l
66、t;/p><p> 可編程并行接口8255芯片的引腳如圖3.1所示:</p><p> 圖3.1 8255引腳圖</p><p> 除了電源(VCC)和地(GND)以外,其它引腳信號可分為兩組:</p><p> 1)和外設(shè)一邊相連的</p><p> ·PA7--PA0。端口A的數(shù)據(jù)信號,根據(jù)工作方式
67、A口可工作于輸入、輸出方式或雙向方式。</p><p> ·PB7--PB0。端口B的數(shù)據(jù)信號,根據(jù)工作方式B口可工作于輸入或輸出方式,但端口B不能工作在雙向方式。</p><p> ·PC7--PC0端口C的數(shù)據(jù)信號,根據(jù)工作方式C口的數(shù)據(jù)線可作為輸入/輸出線、控制線和狀態(tài)線。</p><p> 2)和CPU一邊相連的</p>
68、<p> ·RESET復(fù)位信號(高電平有效),復(fù)位后,A口、B口、C口均被自動設(shè)為</p><p> 輸入方式,同時所有內(nèi)部寄存器/鎖存器都被清零。</p><p> ·D7--D0雙向數(shù)據(jù)總線,和系統(tǒng)數(shù)據(jù)總線相連,用來讀/寫數(shù)據(jù)和控制字。</p><p> ·CS片選信號(低電平有效),只有當(dāng)有效信號到來時,讀信
69、號RD和寫信號WR才對8255有效。</p><p> ·RD芯片讀信號(低電平有效),當(dāng)RD有效時,CPU可以從8255中讀取輸入數(shù)據(jù)和狀態(tài)字。</p><p> ·WR芯片寫信號(低電平有效),當(dāng)WR有效時,CPU可以往8255中寫入控制字或數(shù)據(jù)。</p><p> ·A1、A0端口選擇線。8255內(nèi)部有3個數(shù)據(jù)端口(A、B、
70、C口)和1個控制端口,規(guī)定當(dāng)A1、A0為00時,選中A口;為01時,選中B口;為10時,選中C口;為11時,選中控制口。</p><p> 概括起來,8255的幾個控制信號和傳輸動作之間的關(guān)系如下表所示:</p><p> 表3.1 8255控制信號和傳輸動作之間的關(guān)系</p><p> 3.2 可編程8255并行I/O口接口芯片內(nèi)部結(jié)構(gòu)</p>
71、<p> 8255內(nèi)部結(jié)構(gòu)如圖3.2所示:</p><p> 圖3.2 8255內(nèi)部結(jié)構(gòu)</p><p> 由圖3.2可知,左邊的信號與CPU總線相連,而右邊的信號與外部設(shè)備相連。A,B,C端口的輸出都有鎖存能力,而輸入端口也有鎖存能力。</p><p> 為了控制方便,3個端口A,B,C 分為兩組,其中C端口折開,高4位PC7--PC4, 劃
72、歸B組。低4位PC3—PC0, 劃歸A組。A組和B組端口都分別由軟件控制。</p><p> 3.3 可編程8255并行I/0芯片工作方式及控制字</p><p> 8255有3種工作方式:方式0、方式1和方式2。</p><p><b> 1)方式0</b></p><p> 方式O也叫基本的輸入/輸出方式,
73、查詢方式;A,B,C三個端口均可。在這種方式下,任何一個端口可作為輸入口,也可作為輸出口,各端口之間沒有規(guī)定必然的關(guān)系。各個端口的輸入或輸出,可以有16種不同的組合,所以可使用于多種使用場合。</p><p><b> 2)方式l</b></p><p> 方式1也叫選通的輸入/輸出方式,中斷方式;A ,B,兩個端口均可。和方式0相比,最重要的差別是A口和B口用方
74、式1進(jìn)行輸入/輸出傳輸時,要利用C口提供選通和應(yīng)答信號,而這些信號與端口C中的數(shù)位之間有固定的對應(yīng)關(guān)系,這種關(guān)系不是程序可以改變的,除非改變工作方式。</p><p><b> 3)方式2</b></p><p> 方式2也叫雙向傳輸方式,這種方式只適用于A口,當(dāng)A日工作在方式2時,端口C的高5位(PC7--PC3)自動配合端口A提供控制信號和狀態(tài)信號。</
75、p><p> 8255有很強(qiáng)的功能,其中不同的功能的實現(xiàn)是通過對控制器寫不同的控制字來實現(xiàn)的。8255有兩種控制字:方式控制字和C口位操作控制字。</p><p><b> 方式控制字</b></p><p> 8255方式控制字如表3.2所示:</p><p> 表3.2 8255控制字格式</p>
76、<p> 如果在設(shè)定A口為輸入口,B口為輸出口,C口的低4位輸入,C口的高4位為輸出,那么控制字的格式為91H。將該控制字寫向控制寄存器,就會使8255處于設(shè)定的工作方式。</p><p><b> C口位操作控制字</b></p><p> 此控制字的最高位為零,用來指定PC口的某一位(某個引腳)輸出高電平或低電平。用此位作為軟件開關(guān)將控制字寫入不
77、同的控制器。例如,當(dāng)C作為輸入口時,控制字為0DH,將此值送控制寄存器地址就可以使PC6置1。如表3.3所示:</p><p> 表3.3 C端口控制字</p><p><b> 系統(tǒng)方案設(shè)計</b></p><p> 傳統(tǒng)的系統(tǒng)硬件設(shè)計方法</p><p> 在EDA(Electronic Design Au
78、tomation)出現(xiàn)以前,人們一直采用傳統(tǒng)的硬件電路設(shè)計方法,這種設(shè)計的特點是:</p><p> a) 自下而上(Bottom-Up)的設(shè)計方法</p><p> 自下而上的設(shè)計流程圖如圖4.1所示。從流程圖可知,傳統(tǒng)的硬件設(shè)計方法是從選擇具體器件開始的,并用這些器件進(jìn)行邏輯設(shè)計,完成系統(tǒng)各個獨立功能塊的設(shè)計,再將各功能模塊連接起來,完成整個系統(tǒng)的設(shè)計。上述過程從最底層開始設(shè)計,
79、直到最高層的設(shè)計,所以這種設(shè)計方法稱為自下而上的設(shè)計。</p><p> 圖4.1 自下而上的設(shè)計流程圖</p><p> b) 采用通用的邏輯器件</p><p> 在傳統(tǒng)的設(shè)計中,設(shè)計者根據(jù)系統(tǒng)的要求,選擇市場上能夠買到的標(biāo)準(zhǔn)芯片。如:74/45系列(TTL)、4000/4500(COMS)芯片等,采用“搭積木”式的方法進(jìn)行設(shè)計,而這些芯片的功能是固定
80、的,設(shè)計時幾乎沒有靈活性可言。</p><p> c) 系統(tǒng)設(shè)計的后期進(jìn)行仿真、調(diào)試</p><p> 在傳統(tǒng)的設(shè)計方中,仿真和調(diào)試通常只能在后期進(jìn)行,因為仿真和調(diào)試的儀器一般為系統(tǒng)仿真器、示波器等,因此只有系統(tǒng)設(shè)計完成后才能仿真和調(diào)試。這樣,在系統(tǒng)設(shè)計時存在的問題只有在后期才能發(fā)現(xiàn)。一旦考慮不周,修改很麻煩,甚至?xí)肮ΡM棄,不得不重新設(shè)計系統(tǒng),使設(shè)計的周期和成本都大大增加。<
81、/p><p> d) 主要設(shè)計文件為電路圖</p><p> 在用傳統(tǒng)的設(shè)計方法對系統(tǒng)設(shè)計調(diào)試完后,所形成的硬件設(shè)計文件主要是由若干張電路圖組成的文件。對于系統(tǒng)比較大的系統(tǒng),這種電路圖可能會有幾千張、幾萬張,甚至幾十萬張,如此多的電路圖對于歸檔、閱讀、修改和使用都會帶來許多麻煩。</p><p> 4.2 基于硬件描述言HDL的硬件設(shè)計方法</p>
82、<p> 隨著大規(guī)??删幊踢壿嬈骷LD、現(xiàn)場可編程門陣列FPGA的出現(xiàn)和EDA技術(shù)的發(fā)展,基于FPGA目標(biāo)器件、利用VHDL硬件描述語言的系統(tǒng)設(shè)計稱為設(shè)計的主流方向。利用VHDL進(jìn)行系統(tǒng)設(shè)計的特點是:</p><p> a) 自上而下(Top—Down)的設(shè)計方法</p><p> 基于EDA技術(shù)的自上而下的設(shè)計方法,與傳統(tǒng)的自下而上的設(shè)計方法正好相反,其步驟就是采
83、用可完全獨立于目標(biāo)器件芯片物理結(jié)構(gòu)的硬件描述語言,如VHDL,在系統(tǒng)的基本功能或行為級上對設(shè)計的產(chǎn)品進(jìn)行描述和定義,結(jié)合多層次的仿真技術(shù),在確保設(shè)計的可行性與正確的前提下,完成功能設(shè)計。然后利用EDA工具(如QuartusⅡ)的邏輯綜合功能,把功能描述轉(zhuǎn)換成某一具體目標(biāo)器件芯片的網(wǎng)表文件,輸出給該器件廠商的布局布線適配器,進(jìn)行邏輯映射及布局布線,再利用產(chǎn)生的仿真文件進(jìn)行包括功能和時序的驗證,以確保系統(tǒng)的功能。自上而下的設(shè)計流程圖如圖4.
84、2所示:</p><p> 圖4.2 自上而下的設(shè)計流程圖</p><p> 從流程圖可知,從總體設(shè)計到最終進(jìn)行邏輯綜合、形成網(wǎng)表為止,每一步都進(jìn)行仿真,這樣有利于盡早發(fā)現(xiàn)問題,從而使設(shè)計的成本和周期大大降低。這是用HDL語言設(shè)計硬件系統(tǒng)的最突出的優(yōu)點之一。</p><p> b) IP(Intelleetual Property)的使用和嵌入式模塊的應(yīng)用
85、</p><p> 隨著芯片規(guī)模的日益擴(kuò)大、系統(tǒng)功能的日益復(fù)雜,特別是片上系統(tǒng)的出現(xiàn),如果仍延續(xù)傳統(tǒng)的設(shè)計方法,開發(fā)周期將會很長,設(shè)計的質(zhì)量也會受到影,在此情況下,IP應(yīng)運(yùn)而生,人們可以將合適的IP軟核(Core)或其它形式的核,作為嵌入式模塊裝在自己的設(shè)計中,方便而快捷地完成一個系統(tǒng)設(shè)計。</p><p> c) 降低了設(shè)計難度</p><p> 用傳統(tǒng)的
86、設(shè)計方法,要求設(shè)計者在設(shè)計電路前要寫出邏輯表達(dá)式或真值表或時序電路的狀態(tài)表,這個過程相當(dāng)繁雜,而采用HDL語言就可以使設(shè)計者免除編寫邏輯表達(dá)式、真值表和狀態(tài)表之苦。</p><p> d) 主要設(shè)計文件是用HDL語言編寫的源程序</p><p> 用HDL語言編寫的源程序資料量小,易于歸檔??衫^承性好,當(dāng)設(shè)計其它電路時可以調(diào)用己設(shè)計好的程序,閱讀性好。</p><
87、p> 4.3 8255并行接口芯片的設(shè)計實現(xiàn)</p><p> 4.3.1 系統(tǒng)整體方案</p><p> 為了使設(shè)計的程序不太復(fù)雜,這里設(shè)計的模塊僅使用于可編程并行接口的‘0’工作模式,即基本的輸入輸出方式。由圖3.2 8255內(nèi)部結(jié)構(gòu)圖可知,該模塊應(yīng)由3種邏輯電路構(gòu)成:鎖存器、組合邏輯電路、和三態(tài)緩沖器。</p><p><b> 1
88、) 鎖存器</b></p><p> 鎖存器用于鎖存數(shù)據(jù)。在8255的模塊的結(jié)構(gòu)中定義了7個鎖存器,它們是:</p><p> pa_latch: A口輸出鎖存器,8位;</p><p> pb_latch: B口輸出鎖存器,8位;</p><p> pcl_latch: C口低4位輸出鎖存器,4位;</p>
89、<p> pch_latch: C口高4位輸出鎖存器,4位;</p><p> ptrreg: 方式控制字寄存器;</p><p> bctrreg: C口位控制字寄存器,4位;</p><p> ctrregf: 選擇標(biāo)志寄存器,1位。</p><p> 當(dāng)該標(biāo)志寄存器為‘1’時,數(shù)據(jù)存人方式控制字寄存器,當(dāng)它為‘0’
90、時,該數(shù)據(jù)的低4位存人C口控制寄存器。</p><p><b> 2) 三態(tài)緩沖器</b></p><p> 在8255芯片中數(shù)據(jù)線D0~D7,端口PA,PB,PC都是雙向的,因此,在設(shè)計該部分邏輯與外部接口時,必須是三態(tài)的,即這些引腳都應(yīng)為三態(tài)雙向引腳。</p><p> 3) 組合邏輯電路</p><p>
91、 除上述兩類電路外,余下的基本上是選擇電路和譯碼電路。</p><p> entity mode0_8255 is</p><p><b> port(</b></p><p> reset:in std_ulogic; -- 復(fù)位信號</p><p> rd:in st
92、d_ulogic; --讀信號</p><p> wr:in std_ulogic; --寫信號</p><p> cs:in std_ulogic; --片選信號</p><p> a0:in std_ulogic;
93、 --選擇端口</p><p> a1:in std_ulogic; --選擇端口</p><p> pa: inout std_ulogic_vector(7 downto 0); -- A口</p><p> pb: inout std_ulogic_vector(
94、7 downto 0); -- B口</p><p> pcl: inout std_ulogic_vector(3 downto 0); -- C口低4位</p><p> pch: inout std_ulogic_vector(3 downto 0); -- C口高4位</p><p> databus: inout std_ulogic_vect
95、or(7 downto 0) -- 與CPU數(shù)據(jù)接口</p><p><b> );</b></p><p> end mode0_8255;</p><p> 4.3.2 各模塊的設(shè)計與實現(xiàn)</p><p> 可編程8255并行接口的各模塊由6個進(jìn)程描述,它們分別是讀,寫的進(jìn)程和形成pa、pb、pc三態(tài)輸出的三
96、個進(jìn)程。下面對該構(gòu)造體詳細(xì)說明。</p><p><b> 構(gòu)造體中各信號定義</b></p><p><b> 內(nèi)部總線</b></p><p> 在構(gòu)造體中定義了兩條內(nèi)部總線interal_bus_out 和internal_bus_in,所有8位。數(shù)據(jù)的輸入或輸出,在8255模塊內(nèi)部都是通過這兩條總線實現(xiàn)的。&
97、lt;/p><p> architecture mode0 of mode0_8255 is</p><p> signal internal_bus_out: std_ulogic_vector(7 downto 0); -- 數(shù)據(jù)寫入緩沖 </p><p> signal internal_bus_in: std_ulogic_vector(7 downto
98、 0); -- 數(shù)據(jù)讀入緩沖</p><p> signal st,ad,flag: std_ulogic_vector(1 downto 0);</p><p> signal ctrreg: std_ulogic_vector(7 downto 0); -- 控制寄存器</p><p> signal pa_latch,pb_latch
99、,pc_latch: std_ulogic_vector(7 downto 0); </p><p><b> 鎖存器和寄存器輸出</b></p><p> 構(gòu)造體中信號pa_latch,pb_latch和pc_latch是8255模塊中A口、B口及C口鎖存器的輸出。信號ctrreg是方式控制寄存器的輸出。</p><p> Pa_out
100、:process(pa_latch) -- A口鎖存器數(shù)據(jù)輸出到A口</p><p><b> begin</b></p><p> if(ctrl_reg(4) ='0') then pa <= (pa_latch);</p><p> else pa <= "ZZZZZZZZ";<
101、/p><p><b> end if;</b></p><p> end process;</p><p> pb_outprocess(pb_latch) -- B口鎖存器數(shù)據(jù)輸出到B口</p><p><b> begin</b></p><p> if(ctrl_
102、reg(1) ='0') then pb <= pb_latch;</p><p> else pb <= "ZZZZZZZZ";</p><p><b> end if;</b></p><p> end process;</p><p> pcl_out:pro
103、cess(pc_latch) -- C口低4位</p><p><b> begin </b></p><p> if(ctrreg(0) ='0') then pcl <= pc_latch(3 downto 0);</p><p> else pcl <= "ZZZZ";</p&g
104、t;<p><b> end if;</b></p><p> end process;</p><p> Pch_out:process(pc_latch) -- C口高4位 </p><p><b> begin</b></p><p> if(ctrreg(3)= &
105、#39;0') then pch <= pc_latch(7 downto 4);</p><p> else pch <="ZZZZ";</p><p><b> end if;</b></p><p> end process;</p><p><b> b)
106、 寫進(jìn)程</b></p><p> 8255模塊在方式0下寫進(jìn)程的流程圖如圖5.1所示。在寫的進(jìn)程最前面是將寫8255時的最高數(shù)據(jù)位送標(biāo)志寄存器保存,以便以后在判別是方式控制字還是位控制字時使用。這里的標(biāo)志寄存器采用的是變量ctrregf,而沒有采用信號量。</p><p> 當(dāng)復(fù)位信號有效時(reset= '1'),對8255芯片進(jìn)行初始化。前面提到82
107、55模塊復(fù)位后所有端口都處于輸入方式,故方式控制字寄存器初始化的值為9BH,其它均設(shè)置為"0"。</p><p> Write1:process(cs,wr,reset) -- 寫進(jìn)程1</p><p><b> Begin</b></p><p> If(reset= &
108、#39;1') then ctrl_reg_func<= '0'; --位操作控制位置0,位操作</p><p> Elsif(cs= '0' and wr= '0')then</p><p> ctrl_reg_func<=databus(7);</p><p> internal_bus_
109、out<=databus; --數(shù)據(jù)寫入到內(nèi)部寄存器</p><p><b> end if;</b></p><p> end process;</p><p> write2:process(reset,wr) --寫進(jìn)程2</p><p><
110、;b> begin</b></p><p> if(reset='1') then --異步復(fù)位</p><p> pa_latch<=”00000000”;</p><p> pb_latch<=”00000000”;</p><p> pc_latc
111、h<=”00000000”;</p><p> ctrl_reg<=”10011011”; --控制寄存器</p><p> 如果是寫狀態(tài),則根據(jù)數(shù)據(jù)線D0~D7,送了的不同數(shù)據(jù)及地址線A0-A1的不同狀態(tài),將數(shù)據(jù)寫入控制寄存器或pa, pb, pc各輸出鎖存器。</p><p> elsif(wr'event a
112、nd wr='1') then</p><p> if(ctrl_reg_func='1' and port_no="11" and cs='0') then</p><p> ctrl_reg<=internal_bus_out; --數(shù)據(jù)送控制寄存器 </p><
113、p> elsif(ctrl_reg(7)='1' and cs='0' and port_no="00") then </p><p> pa_latch<=internal_bus_out; --數(shù)據(jù)送至A口鎖存器</p><p> elsif(ctrl_reg(7)='1' and
114、 cs='0' and port_no="01") then</p><p> pb_latch<=internal_bus_out; --數(shù)據(jù)送至B口鎖存器</p><p> elsif(ctrl_reg(7)='1' and cs='0' and port_no="10"
115、;) then</p><p> pc_latch<=internal_bus_out; --數(shù)據(jù)送至C口鎖存器</p><p> end if; </p><p> 程序中case語句用來實現(xiàn)C口的位控制功能。當(dāng)寫入的控制寄存器的控制字是位控制字(b7=0)時,b3-b0的值
116、就寫入到位控制寄存器,位控制寄存器的輸出內(nèi)容經(jīng)譯碼使C口的某一位置位或復(fù)位。</p><p> if(ctrl_reg_func= '0' and cs= '0' and ad="11") then</p><p> case internal_bus_out(3 downto 0) is --位操作</p&g
117、t;<p> when "0000" => pc_latch(0)<='0';</p><p> when "0010" => pc_latch(1)<='0'; </p><p> when "0100" => pc_latch(2)<=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ch16-可編程并行接口芯片8255
- 實驗八 可編程并行接口芯片8255a的使用2
- [hide2]8255并行接口應(yīng)用實驗
- 常用可編程并行接口芯片8255a82c55功能
- 并行接口程序設(shè)計
- 實驗5 8255a可編程并行接口實驗
- 微原硬件實驗二8255a并行接口應(yīng)用
- 實驗6.1_8255并行接口與交通燈控制
- 計算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)課程設(shè)計--擴(kuò)展8255并行接口
- 串行并行接口差別
- IEEE1284并行接口的設(shè)計與實現(xiàn).pdf
- 視頻DSP-并行接口與Cache的軟核設(shè)計.pdf
- 基于vhdl的電梯控制系統(tǒng)畢業(yè)設(shè)計
- 基于vhdl的函數(shù)信號發(fā)生器的設(shè)計畢業(yè)設(shè)計
- 基于vhdl的交通節(jié)點控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于 vhdl語言的多功能數(shù)字鐘設(shè)計
- 基于vhdl的音樂演奏電路設(shè)計開發(fā)【畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計---基于硬件描述語言vhdl的電子鐘設(shè)計
- 通信畢業(yè)設(shè)計----基于vhdl的ask調(diào)制與解調(diào)設(shè)計與實現(xiàn)
- 單片機(jī)課程設(shè)計---8255并行口設(shè)計
評論
0/150
提交評論