引言
FPGA 是現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array)的簡(jiǎn)稱(chēng)。FPGA器件及其開(kāi)發(fā)系統(tǒng)是開(kāi)發(fā)大規(guī)模數(shù)字集成電路的新技術(shù)。它利用計(jì)算機(jī)輔助設(shè)計(jì),繪制出實(shí)現(xiàn)用戶邏輯的原理圖、編輯布爾方程或用硬件描述語(yǔ)言等方式作為設(shè)計(jì)輸入;然后經(jīng)一系列轉(zhuǎn)換程序、自動(dòng)布局布線、模擬仿真的過(guò)程;最后生成配置FPGA器件的數(shù)據(jù)文件,對(duì)FPGA器件初始化。這樣就實(shí)現(xiàn)了滿足用戶要求的專(zhuān)用集成電路,真正達(dá)到了用戶自行設(shè)計(jì)、自行研制和自行生產(chǎn)集成電路的目的。
FPGA是一種半定制的集成電路,其特點(diǎn)是直接面向用戶,具有極大的靈活性和通用性,開(kāi)發(fā)效率高,硬件測(cè)試和實(shí)現(xiàn)快捷,工作可靠性好而且技術(shù)維護(hù)簡(jiǎn)單。
隨著電子技術(shù)的發(fā)展,集成電路的規(guī)模越來(lái)越大,復(fù)雜程度也越來(lái)越高。對(duì)于如此大規(guī)模的和復(fù)雜程度的電路設(shè)計(jì)問(wèn)題,傳統(tǒng)的門(mén)級(jí)描述方法顯得過(guò)于瑣碎和難以管理。而VHDL語(yǔ)言具有強(qiáng)大的功能,覆蓋面廣,描述能力強(qiáng),可用于從門(mén)級(jí)、電路級(jí)直至系統(tǒng)級(jí)的描述、仿真和綜合。下面簡(jiǎn)要介紹了VHDL語(yǔ)言。
VHDL的英文全名是Very-High-Speed Intergrated Circuit Hardware Description Language誕生于1982年。1987年底,VHDL被IEEE和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡(jiǎn)稱(chēng)87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本(簡(jiǎn)稱(chēng)93版)�,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持。在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專(zhuān)家認(rèn)為:在新的世紀(jì)中,VHDL與Verilog語(yǔ)言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì)——或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可視部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),即設(shè)計(jì)實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其它的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。
Quartus II是Altera公司推出的CPLD/FPGA集成化開(kāi)發(fā)軟件,可以完成設(shè)計(jì)輸入、邏輯綜合、布局與布線、仿真、時(shí)序分析、硬件配置完整的PLD設(shè)計(jì)流程。QuartusⅡ提供了多種設(shè)計(jì)輸入方式、快速的編譯和直接易懂的器件編程。具有友好的用戶界面, 快速的綜合速度和更優(yōu)化的綜合和適配功能。Quartus II自帶宏功能模塊庫(kù),大大減輕了用戶的工作量,加快設(shè)計(jì)速度。Quartus II 內(nèi)置仿真器可以在工程中仿真任何設(shè)計(jì)。可進(jìn)行功能仿真、時(shí)序仿真來(lái)檢驗(yàn)設(shè)計(jì)的邏輯功能和計(jì)算設(shè)計(jì)的內(nèi)部定時(shí)是否符合設(shè)計(jì)。仿真器可以仿真整個(gè)設(shè)計(jì),或仿真設(shè)計(jì)的任何部分。支持可編程系統(tǒng)(SOPC)和大規(guī)模FPGA設(shè)計(jì)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。
該軟件支持Altera公司的Stratix Ⅱ、Stratix GX、Stratix、MAX3000A、MAX 7000B、MAX 7000AE、MAX Ⅱ、FLEX6000、FLEX10K系列、Cyclone、CycloneⅡ、APEX Ⅱ、APEX20K和ACEX1K系列。
1 整體設(shè)計(jì)方案
設(shè)計(jì)基于FPGA的計(jì)數(shù)器,要求顯示1個(gè)0-9999的四位計(jì)數(shù)器,可以由4個(gè)模塊為10的十進(jìn)制計(jì)數(shù)器級(jí)聯(lián)而成,所以可以顯示的頻率范圍是1-9999HZ。因此頻率計(jì)的功能分割成四個(gè)模塊:分頻計(jì)、計(jì)數(shù)器、輸出鎖存器和譯碼顯示電路。各個(gè)模塊均用VHDL語(yǔ)言描述并用QuartusⅡ進(jìn)行仿真。本設(shè)計(jì)采用數(shù)控分頻計(jì)可以對(duì)信號(hào)實(shí)現(xiàn)不同分頻比輸出信號(hào)作為計(jì)數(shù)器輸入。鎖存器由一個(gè)外部脈沖控制可以控制顯示部分顯示周期。當(dāng)系統(tǒng)正常工作時(shí),輸入信號(hào)標(biāo)提供頻率,經(jīng)過(guò)分頻器分頻,產(chǎn)生計(jì)數(shù)信號(hào)送入計(jì)數(shù)器模塊,計(jì)數(shù)模塊對(duì)輸入的脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù)數(shù)結(jié)束后將計(jì)數(shù)結(jié)果送入鎖存器中,保證系統(tǒng)可以穩(wěn)定顯示數(shù)據(jù),計(jì)數(shù)結(jié)果能夠顯示在七段數(shù)碼顯示管上。
圖1-1整體設(shè)計(jì)方案
2各功能模塊設(shè)計(jì)及仿真
2.1分頻器的設(shè)計(jì)
2.1.1分頻器設(shè)計(jì)原理
嵌入式設(shè)備品種繁多而且性能差異也十分巨大。有些嵌入式設(shè)備如VoIP電話,簡(jiǎn)單的車(chē)載系統(tǒng),簡(jiǎn)單的機(jī)頂盒等,由于它們的任務(wù)單一,功能簡(jiǎn)單,因此計(jì)算能力和存儲(chǔ)空間都很有限。采用這些設(shè)備進(jìn)行移植顯然是不現(xiàn)實(shí)的。因此,在嵌入式設(shè)備的選擇上,本項(xiàng)目將移植的目標(biāo)設(shè)備定位在具有一定計(jì)算能力和存儲(chǔ)空間的中高端嵌入式設(shè)備上。比較有代表性的嵌入式設(shè)備包括:中高端PDA,中高端智能電話,中高端機(jī)頂盒等。此外,為了加快移植的速度,減短開(kāi)發(fā)周期,因此,將嵌入式設(shè)備的硬件平臺(tái)選擇為X86體系結(jié)構(gòu)的硬件平臺(tái)。在數(shù)字邏輯電路設(shè)計(jì)中,分頻器是一種基本電路,通過(guò)分頻可以得到需要的時(shí)鐘頻率。常見(jiàn)的分頻器有二進(jìn)制分頻器、偶數(shù)次分頻器、奇數(shù)次分頻器、占空比可調(diào)的分頻器和小數(shù)分頻器。分頻的方法很多最常見(jiàn)的就是利用加法器對(duì)時(shí)鐘信號(hào)進(jìn)行分頻,當(dāng)然也可以利用一些專(zhuān)用的電路結(jié)構(gòu)來(lái)實(shí)現(xiàn)。
數(shù)控分頻器的功能是在輸入端給定不同數(shù)據(jù)時(shí),將對(duì)輸入的時(shí)鐘信號(hào)有不同的分頻比,對(duì)于一個(gè)N分頻器,分頻出的時(shí)鐘周期是原時(shí)鐘周期的N倍,頻率變?yōu)樵瓉?lái)的1/N。對(duì)于一個(gè)8位計(jì)數(shù)器,如果輸入數(shù)D,然后啟動(dòng)計(jì)數(shù)器工作,則經(jīng)過(guò)D倍的時(shí)鐘周期計(jì)數(shù)器溢出時(shí),輸出full變?yōu)楦唠娖剑僖詅ull為敏感信號(hào),對(duì)fout進(jìn)行取反操作,如此N=2D。計(jì)數(shù)一次后,再重新計(jì)數(shù),反復(fù)進(jìn)行直至輸入被賦予新值。對(duì)于數(shù)控分頻數(shù)器,裝載不同的計(jì)數(shù)初始值時(shí),會(huì)有不同頻率的溢出信號(hào),從而得到不同的輸出。數(shù)控分頻器是利用計(jì)數(shù)值可并行預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成的。
2.1.2源程序及波形仿真
圖2-1 分頻器時(shí)序仿真
2.1.3分頻器RTL 電路圖
圖2-2 分頻器RTL電路圖
2.2計(jì)數(shù)器的設(shè)計(jì)
2.2.1分頻器設(shè)計(jì)原理
計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)器在數(shù)字系統(tǒng)中主要是對(duì)脈沖的個(gè)數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測(cè)量、計(jì)數(shù)和控制的功能,同時(shí)兼有分頻功能,計(jì)數(shù)器是由基本的計(jì)數(shù)單元和一些控制門(mén)所組成,計(jì)數(shù)單元?jiǎng)t由一系列具有存儲(chǔ)信息功能的各類(lèi)觸發(fā)器構(gòu)成,這些觸發(fā)器有RS觸發(fā)器、T觸發(fā)器、D觸發(fā)器及JK觸發(fā)器等。計(jì)數(shù)器在數(shù)字系統(tǒng)中應(yīng)用廣泛,如在電子計(jì)算機(jī)的控制器中對(duì)指令地址進(jìn)行計(jì)數(shù),以便順序取出下一條指令,在運(yùn)算器中作乘法、除法運(yùn)算時(shí)記下加法、減法次數(shù),又如在數(shù)字儀器中對(duì)脈沖的計(jì)數(shù)等等。計(jì)數(shù)器可以用來(lái)顯示產(chǎn)品的工作狀態(tài),一般來(lái)說(shuō)主要是用來(lái)表示產(chǎn)品已經(jīng)完成了多少份的折頁(yè)配頁(yè)工作。它主要的指標(biāo)在于計(jì)數(shù)器的位數(shù),常見(jiàn)的有3位和4位的。很顯然,3位數(shù)的計(jì)數(shù)器最大可以顯示到999,4位數(shù)的最大可以顯示到9999。在數(shù)字電子技術(shù)中應(yīng)用的最多的時(shí)序邏輯電路。計(jì)數(shù)器不僅能用于對(duì)時(shí)鐘脈沖計(jì)數(shù),還可以用于分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。但是并無(wú)法顯示計(jì)算結(jié)果,一般都是要通過(guò)外接LCD或LED屏才能顯示。
2.2.2六十進(jìn)制計(jì)數(shù)器
2.2.3RTL電路圖
圖2-3六十進(jìn)制計(jì)數(shù)器RTL電路圖
2.3鎖存器的設(shè)計(jì)2.3.1鎖存器設(shè)計(jì)原理所謂鎖存器,就是輸出端的狀態(tài)不會(huì)隨輸入端的狀態(tài)變化而變化,僅在有鎖存信號(hào)時(shí)輸入的狀態(tài)被保存到輸出,直到下一個(gè)鎖存信號(hào)到來(lái)時(shí)才改變。典型的鎖存器邏輯電路是D 觸發(fā)器電路。在LED和數(shù)碼管顯示方面,要維持一個(gè)數(shù)據(jù)的顯示,往往要持續(xù)的快速的刷新。尤其是在四段八位數(shù)碼管等這些要選通的顯示設(shè)備上。在人類(lèi)能夠接受的刷新頻率之內(nèi),大概每三十毫秒就要刷新一次。這就大大占用了處理器的處理時(shí)間,消耗了處理器的處理能力,還浪費(fèi)了處理器的功耗。鎖存器的使用可以大大的緩解處理器在這方面的壓力。當(dāng)處理器把數(shù)據(jù)傳輸?shù)芥i存器并將其鎖存后,鎖存器的輸出引腳便會(huì)一直保持?jǐn)?shù)據(jù)狀態(tài)直到下一次鎖存新的數(shù)據(jù)為止。這樣在數(shù)碼管的顯示內(nèi)容不變之前,處理器的處理時(shí)間和IO引腳便可以釋放�?梢钥闯�,處理器處理的時(shí)間僅限于顯示內(nèi)容發(fā)生變化的時(shí)候,這在整個(gè)顯示時(shí)間上只是非常少的一個(gè)部分。而處理器在處理完后可以有更多的時(shí)間來(lái)執(zhí)行其他的任務(wù)。這就是鎖存器在LED和數(shù)碼管顯示方面的作用:節(jié)省了寶貴的MCU時(shí)間。
2.3.2鎖存器源程序及波形仿真
對(duì)于人機(jī)交互式單片機(jī)系統(tǒng)來(lái)說(shuō),不僅需要響應(yīng)用戶輸入,同時(shí)也需要將一些測(cè)控信息輸出顯示。這些顯示信息可以提供實(shí)時(shí)的數(shù)據(jù)或圖形結(jié)果,以便于掌握系統(tǒng)的狀態(tài)并進(jìn)行分析處理。目前,最常用的是LED數(shù)碼管顯示。其成本低廉、使用簡(jiǎn)便,可以顯示數(shù)字或幾個(gè)特定的字符。數(shù)碼管數(shù)碼管的一種是半導(dǎo)體發(fā)光器件,數(shù)碼管可分為七段數(shù)碼管和八段數(shù)碼管,區(qū)別在于八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元,其基本單元是發(fā)光二極管。數(shù)碼管通過(guò)對(duì)其不同的管腳輸入相對(duì)的電流,使其發(fā)亮,從而顯示出數(shù)字能夠顯示時(shí)間、日期、溫度等所有可用數(shù)字表示的參數(shù)的器件。在電器特別是家電領(lǐng)域應(yīng)用極為廣泛,如顯示屏、空調(diào)、熱水器、冰箱等等。絕大多數(shù)熱水器用的都是數(shù)碼管,其他家電也用液晶屏與熒光屏。
2.4.2七段數(shù)碼管顯示源程序及波形仿真3系統(tǒng)頂層設(shè)計(jì)
3.1自頂向下的設(shè)計(jì)方法
所謂自頂向下設(shè)計(jì)方法,就是采用可完全獨(dú)立于芯片廠商及其產(chǎn)品結(jié)構(gòu)的描述語(yǔ),在功能級(jí)對(duì)設(shè)計(jì)產(chǎn)品進(jìn)行定義,并結(jié)合功能仿真技術(shù),以確保設(shè)計(jì)的正確性,能定義完成后,利用邏輯綜合技術(shù),把功能描述轉(zhuǎn)換成某一具體結(jié)構(gòu)芯片的網(wǎng)表文件,輸出給廠商的布局布線器進(jìn)行布局布線。布局布線結(jié)果還可反標(biāo)回同一仿真器,進(jìn)行包括功能和時(shí)序的后驗(yàn)證,以保證布局布線所帶來(lái)的門(mén)延時(shí)和線延時(shí)不會(huì)影響設(shè)計(jì)的性能。
自頂向下設(shè)計(jì)方法的優(yōu)越性是顯而易見(jiàn)的。首先,由于功能描述可完全獨(dú)立于芯片結(jié)構(gòu),在設(shè)計(jì)的最初階段,設(shè)計(jì)師可不受芯片結(jié)構(gòu)的約束,集中精力進(jìn)行產(chǎn)品設(shè)計(jì),避免了傳統(tǒng)設(shè)計(jì)方法所帶來(lái)的重新再設(shè)計(jì)風(fēng)險(xiǎn),大大縮短了設(shè)計(jì)周期。其次,設(shè)計(jì)的再利用得到保證。目前的電子產(chǎn)品正向模塊化發(fā)展所謂模塊化就是對(duì)以往設(shè)計(jì)成果進(jìn)行修改,組合和再利用,產(chǎn)生全新的或派生設(shè)計(jì),而自頂向下設(shè)計(jì)方法的功能描述可與芯片結(jié)構(gòu)無(wú)關(guān)。因此可以以一種IP的方式進(jìn)行存檔,以便將來(lái)的重新利用。 第三,設(shè)計(jì)規(guī)模大大提高。簡(jiǎn)單的語(yǔ)言描述即可完成復(fù)雜的功能,而不需要手工繪圖。第四,芯片選擇更加靈活。設(shè)計(jì)師可在較短的時(shí)間內(nèi)采用各種結(jié)構(gòu)芯片來(lái)完成同一功能描述,從而在設(shè)計(jì)規(guī)模、速度、芯片價(jià)格及系統(tǒng)性能要求等方面進(jìn)行平衡,選擇最佳結(jié)果。
3.2頂層設(shè)計(jì)源程序及其仿真波形
圖3-1系統(tǒng)頂層RTL 電路圖
4總結(jié)
在這次設(shè)計(jì)中遇到了很多實(shí)際性的問(wèn)題,在實(shí)際設(shè)計(jì)中才發(fā)現(xiàn),書(shū)本上理論性的東西與在實(shí)際運(yùn)用中的還是有一定的出入的,所以有些問(wèn)題不但要深入地理解,而且要不斷地更正以前的錯(cuò)誤思維。一切問(wèn)題必須要靠自己一點(diǎn)一滴的解決,而在解決的過(guò)程當(dāng)中你會(huì)發(fā)現(xiàn)自己在飛速的提升。對(duì)于教材管理系統(tǒng),其程序是比較簡(jiǎn)單的,主要是解決程序設(shè)計(jì)中的問(wèn)題,而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了你解決問(wèn)題的邏輯思維和創(chuàng)新能力,它才是一個(gè)設(shè)計(jì)的靈魂所在。因此在整個(gè)設(shè)計(jì)過(guò)程中大部分時(shí)間是用在程序上面的。很多子程序是可以借鑒書(shū)本上的,但怎樣銜接各個(gè)子程序才是關(guān)鍵的問(wèn)題所在,這需要對(duì)系統(tǒng)的結(jié)構(gòu)很熟悉。通過(guò)這次設(shè)計(jì)我也發(fā)現(xiàn)了自身存在的不足之處,雖然感覺(jué)理論上已經(jīng)掌握,但在運(yùn)用到實(shí)踐的過(guò)程中仍有意想不到的困惑,經(jīng)過(guò)一番努力才得以解決。
完整的Word格式文檔51黑下載地址:
肖力全20125024033.doc
(422 KB, 下載次數(shù): 17)
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |