




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
硬盤編譯碼的FPGA實(shí)現(xiàn)中文摘要在硬盤的數(shù)據(jù)傳輸和存取過程中,信道調(diào)制編碼是一個(gè)不可缺少且關(guān)系到存儲系統(tǒng)性能的環(huán)節(jié),它解決的問題主要是使輸入的序列得以在介質(zhì)中存儲,并使從介質(zhì)中讀取得信號還原為原本的信息。在使用峰值檢測技術(shù)的磁盤驅(qū)動(dòng)中的一種標(biāo)準(zhǔn)編碼是碼率為1/2的(d,k)=(2,7)碼,也稱Franaszek碼。本文闡述了硬盤編譯碼的FPGA實(shí)現(xiàn)的設(shè)計(jì),在簡要介紹了FPGA技術(shù)背景、VHDL語言和MAX+plusII開發(fā)平臺的基礎(chǔ)上,闡述了硬盤編譯碼的FPGA實(shí)現(xiàn)的各模塊的設(shè)計(jì),并設(shè)計(jì)了硬盤編譯碼的FPGA實(shí)現(xiàn)的整體架構(gòu)。Franaszek編碼碼元長度可變是本設(shè)計(jì)的一大難點(diǎn),F(xiàn)ranaszek編碼是一種同步變長編碼,其碼率不變但碼元長度可變,是一種特殊的變長編碼。本設(shè)計(jì)采用狀態(tài)機(jī)解決了變長編碼碼元識別的問題,狀態(tài)機(jī)思想的優(yōu)越性在本設(shè)計(jì)中得到了很好的體現(xiàn),在較低的時(shí)鐘頻率下很好地解決的變長編碼碼元識別的問題。讓編碼序列連續(xù)輸出時(shí)本設(shè)計(jì)的另一個(gè)難點(diǎn),由于在編碼器中最高時(shí)鐘頻率僅能與輸出序列的時(shí)鐘同步,要在同一個(gè)時(shí)鐘沿解決存入與輸出的問題,文中設(shè)計(jì)了一個(gè)緩存控制器用于控制輸出的連續(xù)性,使輸出序列保持連續(xù)。采用了VHDL硬件描述語言對各基本模塊進(jìn)行了設(shè)計(jì)實(shí)現(xiàn),并給出各模塊和整個(gè)系統(tǒng)的仿真結(jié)果。本課題的硬盤編譯碼器實(shí)現(xiàn),為實(shí)用游程長度受限碼編譯碼在的FPGA上的實(shí)現(xiàn)做了探索性嘗試,為其他信道調(diào)制編譯碼的IP核設(shè)計(jì)和FPGA實(shí)現(xiàn)有一定的借鑒意義。
關(guān)鍵詞:游程長度受限碼,FPGA,VHDL,MAX+plusII
FPGAimplementationofharddiskencodinganddecodingAbstractDuringtheprocessofdatatransmissionintheharddisk,channelmodulationcodingisanecessaryandalsorelatedtotheperformanceofthestoragesystem.Itsolvetheproblemwhichtheinputtedsequencecanberecordedatreadfromthestoragemedia.Oneofthecodingmodeisusedinthediskdrivewhichadoptthepeakdetectiontechnologyasastandardcode,itscoderateis1/2and(d,k)=(2,7),so-calledFranaszekcode.ThispaperintroducedthedesignoftheFPGAimplementationofharddiskencodinganddecoding,onthebasisofbrieflyintroducingthetechnicalbackgroundofFPGA\VHDLandMAX+plusIIdevelopmentsoftware.Allthemajormodulesoftheencoderanddecoderwasbeenexpoundedanddesigntheoverallstructureofthem.ThemostdifficultproblemisthelengthofcodeelementsofFranaszekcodeisvariable,Franaszekisakindofsynchronousvariablelengthcodewhosecoderateisinvariableandthelengthofcodeelementisvariable,soitisaspecialkindofvariablelengthcode.Thisdesignusesstatemachine,solvetheproblemrecognitionofcodeelementsofthevariablelengthcode,theadvantageofstatemachineprinciplewasbeenwellshown,tosolvetheproblemoftherecognitionofcodeelementsinaverylowclockfrequency.Tolettheoutputsequencecontinuousisanotherdifficultyinthisthesis,becausethehighestclockfrequencyonlycanbesynchronouswiththeclockofoutputsequenceofencoder,soitmustfinishtheoperationofstorageandoutputinthesameclockedge,thisthesisdesignabuffercontrollertoensurethecontinuityofoutput,maintainthecontinuousoutputsequence.UsingVHDLdesignedandimplementedharddiskencoderanddecoderofbasicmodeandgivesthesimulationresultofmainmodulesoftheencoderanddecoder.ThedesignandimplementationofharddiskencoderanddecoderprovidedanexploringattemptonthehardwareimplementationofpracticalRLLencoderanddecoderandareferenceonotherchannelmodulationencoderanddecodersystemIPcoreandtheirFPGAimplementation.
Keywords:run-length-limited,FPGA,VHDL,MAX+plusII
目錄
第一章:緒論
11.1課題概述
1器件的應(yīng)用狀況與發(fā)展趨勢
1第二章:FPGA介紹
3的結(jié)構(gòu)
3的優(yōu)點(diǎn)
5的性能
7的FLEX10K系列FPGA
8第三章:VHDL介紹
103.1硬件描述語言概述
10的特點(diǎn)
11的功能與應(yīng)用
12的語法
12第四章:MAX+plusII軟件介紹
144.1MAX+plusII概述
144.2MAX+plusII的界面
154.3MAX+plusII的設(shè)計(jì)流程
16第五章:基于FPGA的硬盤編譯碼器的設(shè)計(jì)
21系統(tǒng)的總體設(shè)計(jì)
21狀態(tài)機(jī)的設(shè)計(jì)
24緩存控制器的設(shè)計(jì)
28結(jié)論
37謝辭
38參考文獻(xiàn)
39
第一章:緒論1.1課題概述隨著微電子技術(shù)與自動(dòng)控制技術(shù)的發(fā)展,越來越多的FPGA器件正廣泛應(yīng)用于各種數(shù)字信號處理過程。其特點(diǎn)是硬件體積小、實(shí)時(shí)性好、工作效率高,提高了系統(tǒng)集成度。在一般信號處理系統(tǒng)中,當(dāng)前比較通用的系統(tǒng)結(jié)構(gòu)通常會分立元件,采用電子管、晶體管、中小規(guī)模集成電路來實(shí)現(xiàn)信號處理算法、具體控制和通信任務(wù)。但由于半導(dǎo)體工藝及可編程邏輯器件的飛速發(fā)展,可編程邏輯器件的集成度越來越高,運(yùn)算能力越來越強(qiáng),對于完成傳統(tǒng)的數(shù)字信號處理任務(wù)而言實(shí)在大有富余。而電子產(chǎn)品市場的激烈競爭,迫切要求電子產(chǎn)品設(shè)計(jì)工程師縮短開發(fā)周期,加快產(chǎn)品的更新?lián)Q代。而又有高可靠性,小體積,造價(jià)低的要求。在這些場合中,使用分立元件固然不可行,即便開發(fā)周期來得及,成本也無法接受。而使用基于FPGA的平臺,結(jié)合采用EDA技術(shù)的開發(fā)平臺,就成為一種具有優(yōu)勢的方案。本設(shè)計(jì)針對硬盤數(shù)據(jù)存儲中的信道調(diào)制編碼的技術(shù)問題。采用Altera公司的FLEX10K系列FPGA,使用VHDL語言在MAX+plusII開發(fā)平臺下,編寫了集編碼器譯碼器于一體的數(shù)字信號處理系統(tǒng)。器件的應(yīng)用狀況與發(fā)展趨勢隨著半導(dǎo)體工藝及EDA技術(shù)的飛速發(fā)展,F(xiàn)PGA的應(yīng)用在通信、消費(fèi)電子、汽車、存儲、服務(wù)器、工業(yè)、航空和國防等領(lǐng)域日益滲透和拓寬。幾乎可以說已涉及到社會的各個(gè)方面,而數(shù)字信號處理是FPGA應(yīng)用的重要領(lǐng)域。實(shí)現(xiàn)以FPGA為核心的數(shù)字信號處理自動(dòng)化和機(jī)電設(shè)備及科學(xué)儀器儀表的現(xiàn)代化,是我國信息產(chǎn)業(yè)技術(shù)進(jìn)步的重要內(nèi)容,是降低能源及原材料消耗、提高產(chǎn)品質(zhì)量及性能、增強(qiáng)國際競爭能力縮短產(chǎn)品上市時(shí)間的重要技術(shù)進(jìn)步手段。EDA技術(shù)是ElectronicDesignAutomation(電子設(shè)計(jì)自動(dòng)化)的縮寫EDA技術(shù)就是以計(jì)算機(jī)為工具,在EDA軟件平臺上,根據(jù)硬件描述語言HDL完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局線、仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。[1]EDA主要包括FPGA器件、硬件描述語言HDL和EDA工具軟件三大部分。電子設(shè)計(jì)自動(dòng)化技術(shù)是21世紀(jì)電子設(shè)計(jì)領(lǐng)域中最重要的技術(shù)之一。EDA技術(shù)是20世紀(jì)90年代初從CAD(計(jì)算機(jī)輔助設(shè)計(jì))、CAM(計(jì)算機(jī)輔助制造)、CAT(計(jì)算機(jī)輔助測試)和CAE(計(jì)算機(jī)輔助工程)的概念發(fā)展而來的??删幊踢壿嬈骷陨鲜兰o(jì)70年代出現(xiàn)以來,已有了很普遍的應(yīng)用,為數(shù)字系統(tǒng)的設(shè)計(jì)帶來極大的靈活性。20世紀(jì)末世界上最大的變化就是全球市場的形成。全球市場導(dǎo)致競爭空前激烈,促使企業(yè)必須加快新產(chǎn)品投放市場時(shí)間(TimetoMarket)、改善質(zhì)量(Quality)、降低成本(Cost)以及完善服務(wù)體系(Service),這就是企業(yè)的T.Q.C.S.。由于可編程邏輯器件可以通過軟件編程對其硬件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切給數(shù)字系統(tǒng)的設(shè)計(jì)帶來了革命性的變化??v觀可編程邏輯器件的發(fā)展史,它在結(jié)構(gòu)原理、集成規(guī)模、下載方式、邏輯設(shè)計(jì)手段等方面的每一次進(jìn)步都為現(xiàn)代電子設(shè)計(jì)技術(shù)的革命與發(fā)展提供了不可或缺的強(qiáng)大動(dòng)力??删幊踢壿嬈骷拈T類較多。先后發(fā)展出PLA、PAL、GAL、EPLD、FPGA和CPLD等類型。事實(shí)上其中的FPGA和CPLD日益成為基本主導(dǎo)形式,這已成為半導(dǎo)體器件行業(yè)的共識。與其他可編程邏輯器件相比,F(xiàn)PGA和CPLD在結(jié)構(gòu)工藝集成度、功能速度和靈活性方面都有很大的改進(jìn)和提高。CPLD是指基于乘積項(xiàng)技術(shù)FLASH工藝的PLD,F(xiàn)PGA是指基于查找表技術(shù)、SRAM工藝的PLD。CPLD與FPGA由于各自的特點(diǎn)與優(yōu)勢,使得二者在可編程邏輯器件技術(shù)的競爭中并駕齊驅(qū),成為兩支領(lǐng)導(dǎo)可編程器件技術(shù)發(fā)展的主要力量。對用戶而言,CPLD與FPGA的內(nèi)部結(jié)構(gòu)確有不同,但隨著技術(shù)的發(fā)展,一些廠家陸續(xù)推出了一些新的CPLD和FPGA,這些產(chǎn)品逐漸模糊了CPLD和FPGA的區(qū)別。因此也很難準(zhǔn)確定義每個(gè)型號到底屬于這兩種類型中的哪一種。因此在實(shí)際應(yīng)用中,用戶無需深究兩者的區(qū)別,習(xí)慣上都把他們叫做FPGA。FPGA主要用于工業(yè)、農(nóng)業(yè)、教學(xué)和科學(xué)研究中的實(shí)時(shí)信號處理和過程控制?,F(xiàn)在一些重要的消費(fèi)電子產(chǎn)品(如移動(dòng)通信設(shè)備和數(shù)字電視)和科學(xué)儀器儀表(如示波器和生物醫(yī)學(xué)儀器)將FPGA作為解決方案的越來越多。綜上所述,F(xiàn)PGA技術(shù)是一類跨世紀(jì)的高新技術(shù),應(yīng)用廣泛,發(fā)展前景良好,因此,相信以FPGA為基礎(chǔ)的高性能數(shù)字系統(tǒng)將成為主流。
第二章:FPGA介紹的結(jié)構(gòu)FPGA是FieldProgrammableGateArray(現(xiàn)場可編程門陣列)的縮寫,F(xiàn)PGA是從PAL、GAL、EPLD等傳統(tǒng)可編程邏輯器件發(fā)展而來,它是ASIC領(lǐng)域中的一種半定制器件,具有可編程的特點(diǎn),同時(shí)又克服了傳統(tǒng)可編程邏輯器件邏輯門電路不足的缺點(diǎn)??删幊踢壿嬈骷≒LD)自上世紀(jì)70年代發(fā)明以來,先后有PROM、PLA、PAL、GAL和EPLD等多種實(shí)現(xiàn)方式或產(chǎn)品類型,而當(dāng)前最具代表性及應(yīng)用最廣泛的是FPGA和CPLD器件。[2]FPGA器件由美國的XILINX公司于1985年首先推出。一般把FPGA定義為基于查找表(Look-UpTable,LUT)技術(shù)和SRAM工藝的PLD,目前的FPGA已經(jīng)遠(yuǎn)遠(yuǎn)超出先前產(chǎn)品的基本功能,并且整合了許多常用功能(如RAM、時(shí)鐘管理和DSP),在新型的系統(tǒng)級可編程邏輯器件中還可以IP核的形式來進(jìn)行功能設(shè)計(jì)。使得FPGA中可以實(shí)現(xiàn)DSP、MCU等嵌入式處理器。在未來的數(shù)字系統(tǒng)中,或許只需要一塊FPGA芯片就可以實(shí)現(xiàn)所有功能,成為片上系統(tǒng)(SOC,SystemOnaChip)。
圖2-1
FPGA的芯片結(jié)構(gòu)查找表的本質(zhì)是一個(gè)RAM,用戶用原理圖或HDL語言描述好邏輯電路的設(shè)計(jì)后,由設(shè)計(jì)軟件計(jì)算出所有可能的結(jié)果后存入相應(yīng)的地址,這樣,輸入信號就等于RAM的地址,輸入地址后就會輸出相應(yīng)的數(shù)據(jù)作為計(jì)算結(jié)果。一般FPGA的查找表是一個(gè)4輸入的SRAM也可以看成一個(gè)16x1的RAM。因此FPGA是一種細(xì)粒度器件,觸發(fā)器資源十分豐富適合用于時(shí)序電路的設(shè)計(jì),但由于乘積項(xiàng)資源不夠豐富,在用于組合邏輯的場合時(shí)就需要當(dāng)量的邏輯塊間的連線,而FPGA的邏輯塊間的連線是分布式的,因此FPGA的延遲是不可預(yù)測的。
CPLD(ComplexProgrammableLogicDevice,復(fù)雜可編程邏輯器件)器件是一種基于乘積項(xiàng)(productterm)的可編程邏輯器件,CPLD利用宏單元(marcocell)實(shí)現(xiàn)邏輯功能,宏單元由乘積項(xiàng)陣列和控制清0與時(shí)鐘的可編程開關(guān)與觸發(fā)器組成。其中乘積項(xiàng)陣列是一個(gè)“與或”陣列在與或陣列的沒個(gè)交叉點(diǎn)上都有一個(gè)可編程熔絲如果導(dǎo)通就可以實(shí)現(xiàn)“與”邏輯,陣列后面還有乘積項(xiàng)選擇矩陣,作為“或”陣列。圖2-2
CPLD的總體結(jié)構(gòu)通常一個(gè)宏單元包含16個(gè)乘積項(xiàng),因此設(shè)計(jì)人員可部署大量的組合邏輯而不用增加額外的路徑。這就是為何CPLD被認(rèn)為是“邏輯豐富”型的。但單個(gè)CPLD中通常僅包含數(shù)百個(gè)宏單元,因此CPLD的集成度不如FPGA,寄存器資源也遠(yuǎn)不如FPGA豐富,但FPGA在邏輯塊之間的連線是集總式的,相對于FPGA的分布式布線,CPLD的延遲是均勻和可預(yù)測的,且CPLD的速度比FPGA快,可以工作在較高頻率,總體而言CPLD器件提供的資源比FPGA少,但CPLD具有很好的可預(yù)測性。[3]由于半導(dǎo)體技術(shù)的飛速發(fā)展,每年都有許多新器件出現(xiàn),且器件的工藝和內(nèi)部結(jié)構(gòu)日趨復(fù)雜,很難根據(jù)傳統(tǒng)的定義判斷每個(gè)PLD產(chǎn)品屬于FPGA或CPLD,而各PLD供應(yīng)商也不斷推出各種兼具兩種器件特點(diǎn)的新型器件,再加上不同廠家對器件的定義方法各不相同,因此在許多場合都把新型的可編程邏輯器件統(tǒng)稱FPGA,畢竟用戶關(guān)心的是器件的功能而不是器件的運(yùn)行原理與內(nèi)部結(jié)構(gòu),而兩者在功能甚至開發(fā)上并無不同。下文也不特別區(qū)分FPGA與CPLD。的優(yōu)點(diǎn)最近10年國內(nèi)FPGA應(yīng)用有了很快的發(fā)展,按照傳統(tǒng)觀點(diǎn),F(xiàn)PGA僅使用于產(chǎn)品原型設(shè)計(jì)和ASIC的驗(yàn)證,用于大規(guī)模的數(shù)字系統(tǒng)開發(fā)就過于昂貴而且功耗過大。但隨著近年來FPGA的研發(fā)陸續(xù)突破了低功耗、低成本和先進(jìn)工藝的瓶頸后,F(xiàn)PGA解決方案的應(yīng)用領(lǐng)域正在日益擴(kuò)張,F(xiàn)PGA數(shù)字系統(tǒng)在通信、數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域得到了廣泛應(yīng)用。隨著功能和性能的進(jìn)一步提高,F(xiàn)PGA的應(yīng)用已從可編程邏輯領(lǐng)域擴(kuò)展到了其他技術(shù)領(lǐng)域,如高性能DSP、高性能嵌入式處理和高速串行連接。FPGA解決方案之所以有如此廣泛的應(yīng)用,正是因?yàn)殡S著EDA技術(shù)和微電子技術(shù)的迅速發(fā)展,F(xiàn)PGA相對于其他類似功能的器件的許多優(yōu)勢日益凸顯。FPGA相對于DSP的優(yōu)勢DSP(DigitalSignalProcessor)是一種特殊的微處理器,在一塊芯片內(nèi)包含了控制、運(yùn)算、寄存器和一定數(shù)量的存儲單元。DSP采用流水線結(jié)構(gòu),基于馮諾依曼結(jié)構(gòu)的某種變形,采用軟件編程,因此它的運(yùn)算基本上是串行的。DSP在數(shù)據(jù)通信、音視頻處理和數(shù)字控制等領(lǐng)域有廣泛的應(yīng)用,F(xiàn)PGA相對于DSP的優(yōu)勢是:片內(nèi)實(shí)現(xiàn)細(xì)粒度,高度并行的結(jié)構(gòu),目前串行結(jié)構(gòu)的處理器發(fā)展已經(jīng)遇到了瓶頸,性能難以進(jìn)一步提高,近幾年,并行計(jì)算正逐步成為計(jì)算機(jī)科學(xué)的熱點(diǎn)研究方向,而DSP從根本上講其結(jié)構(gòu)只適合串行的算法結(jié)構(gòu),多處理器系統(tǒng)是很昂貴而且只適合粗粒度的并行運(yùn)算。這與FPGA的片內(nèi)實(shí)現(xiàn)并行算法在開發(fā)的難度和成本上是無法相提并論的。明顯的性能提升,F(xiàn)PGA的計(jì)算能力比DSP的性能更加強(qiáng)大。例如,30美元的Spartan23AFPGA性能可高達(dá)每秒200億條乘法累加操作(GMACs),同樣花30美元買一個(gè)600MHz的C64xDSP,每秒的累加操作僅僅是25億條,后者在性能上差距了一個(gè)數(shù)量級。FPGA允許用戶構(gòu)件高度并行的器件結(jié)構(gòu),使采樣速率和時(shí)鐘速率達(dá)到相等,再加上FPGA內(nèi)部集成鎖相環(huán),可以使外部時(shí)鐘倍頻,在數(shù)據(jù)量大,速度要求高的場合中,F(xiàn)PGA是無法被替代的。功能和應(yīng)用更加靈活,DSP實(shí)現(xiàn)的是軟邏輯,DSP根據(jù)燒寫在存儲器中的代碼動(dòng)作,DSP首先需要從存儲器中讀取代碼,然后解釋代碼、執(zhí)行代碼。FPGA實(shí)現(xiàn)的是硬邏輯,設(shè)計(jì)者用硬件描述語言(HDL,HardwareDescriptionLanguage)描述要實(shí)現(xiàn)的邏輯,然后綜合下載到FPGA后,生成相應(yīng)的電路,這些電路由基本的門電路和觸發(fā)器構(gòu)成,配置十分靈活,而且可以完全根據(jù)算法定制理想的器件結(jié)構(gòu)。另外DSP的外圍擴(kuò)展接口種類和數(shù)量都是固定的,不夠用時(shí)無法增加,多余的時(shí)候也無法騰出來用作其他用途,因此FPGA更具靈活性,雖然FPGA本身不能實(shí)現(xiàn)復(fù)雜的功能但隨著各廠商提供各種功能的IP核,目前FPGA中已經(jīng)可以嵌入8051、ARM和高性能DSP等通用處理器,這將使FPGA實(shí)現(xiàn)真正的SOC。可以毫不夸張的講,F(xiàn)PGA能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡單的74電路,都可以用FPGA來實(shí)現(xiàn)。降低成本,減少PCB面積,降低功耗,F(xiàn)PGA允許允許集成其他系統(tǒng)所需的元器件。同一片F(xiàn)PGA,不同的編程數(shù)據(jù)就可以產(chǎn)生完全不同的電路功能。因此FPGA也是提高系統(tǒng)集成度的最佳選擇,它可以將DSP解決方案中所需的接口電路集成到FPGA中,從而降低成本和功耗,而一些新型號甚至還包含了模擬電路,一些系統(tǒng)中包含數(shù)十路AD、DADSP必須仔細(xì)進(jìn)行資源分配、總線隔離,而FPGA中只要利用自身IO就能解決問題。因此FPGA在提高系統(tǒng)集成度,降低硬件復(fù)雜性,縮短開發(fā)周期和降低成本方面具有獨(dú)特的優(yōu)勢。[4]相對定制ASIC的優(yōu)勢ASIC(ApplicationSpecificIntergratedCircuits)即專用集成電路,是指應(yīng)特定用戶要求和特定電子系統(tǒng)的需要而設(shè)計(jì)、制造的集成電路。ASIC的特點(diǎn)是面向特定用戶需求。FPGA是ASIC的近親,兩者的應(yīng)用基本相似。FPGA相對全定制ASIC的優(yōu)勢在于:更快的上市時(shí)間:無需布線、掩模和其它制造步驟。FPGA無需任何制造過程,可以直接實(shí)現(xiàn)現(xiàn)場編程,用戶也不需要考慮掩膜設(shè)計(jì),布線和電路參數(shù)等具體問題,而ASIC無論在設(shè)計(jì)還是制造上都要比FPGA花費(fèi)更多時(shí)間??s短了設(shè)計(jì)周期。目前主流EDA軟件已經(jīng)能夠很好地實(shí)現(xiàn)綜合、布線和配置的自動(dòng)化,設(shè)計(jì)者只需要關(guān)注器件的功能就可以了,利用VHDL等硬件描述語言在EDA軟件中描述好器件的行為之后就可以進(jìn)行實(shí)際電路的仿真,然后就可以在具體的器件上設(shè)計(jì)方案。而ASIC的設(shè)計(jì)者需要完成所有電路的設(shè)計(jì),這需要大量的人力物力也需要不少時(shí)間,但卻只能帶來很小的性能提升?,F(xiàn)場可重編程能力。今年來在自動(dòng)控制技術(shù)和數(shù)字電子技術(shù)飛速發(fā)展,設(shè)計(jì)出一個(gè)數(shù)字系統(tǒng)通常不需要多久就被淘汰,而ASIC一旦制造出來就無法再改變其內(nèi)部電路結(jié)構(gòu)和功能,再加上設(shè)計(jì)耗時(shí)太久,經(jīng)常在產(chǎn)品上市不久就被淘汰,而FPGA內(nèi)部的電路結(jié)構(gòu)可以在現(xiàn)場通過多種方式重新編程,使產(chǎn)品更能適應(yīng)新技術(shù)和市場需求的變化。由于技術(shù)的發(fā)展,市場需求的不斷變化,導(dǎo)致產(chǎn)品的生命周期越來越短,可編程技術(shù)勢在必行。目前,ASIC開發(fā)公司和FPGA開發(fā)公司的比例約為30:1,但由于技術(shù)的不斷進(jìn)步和FPGA成本優(yōu)勢的不斷凸顯,F(xiàn)PGA在未來將不斷蠶食ASIC的市場,并逐步成為專用集成電路市場的主流。[5]的性能FPGA自上世紀(jì)80年代誕生以來,其性能就一直保持很快的上升速度,如Altera公司推出的基于40nm工藝的StratixIVGT系列FPGA包含24個(gè)工作速率高達(dá)的收發(fā)器,邏輯單元增加至最多530K。速度提高的同時(shí)功耗也有所下降,Xilinx公司推出的Virtex-6功耗較之Virtex-5降幅多達(dá)50%,成本也有20%的下降。另外FPGA還支持多種不同的IO標(biāo)準(zhǔn),F(xiàn)PGA的IO可以按組分類,每組可以支持完全不同的IO標(biāo)準(zhǔn),靈活的IO使FPGA的接口電路設(shè)計(jì)大幅簡化。另外FPGA還提供嵌入式的存儲器,這些片上存儲器的延時(shí)通常很低,跟普通的門電路差不多。而且配置相當(dāng)靈活,大多數(shù)支持雙端口模式。運(yùn)算速度則是FPGA最大的優(yōu)點(diǎn),根據(jù)測試,同樣價(jià)格的FPGA在通信應(yīng)用中吞吐量為同樣價(jià)格DSP的5~10倍。因此在DSP的傳統(tǒng)應(yīng)用數(shù)字信號處理領(lǐng)域,F(xiàn)PGA的性能也具有明顯的優(yōu)勢,由于FPGA中包含大量的低功耗、高密度乘法器、存儲器和邏輯資源,在低成本領(lǐng)域,目前,已經(jīng)有不少低成本FPGA能夠滿足1080pHDTV的性能要求。因此在復(fù)雜的信號處理方面,F(xiàn)PGA也有其它處理器無法比擬的優(yōu)勢,隨著并行處理在各個(gè)領(lǐng)域的逐漸普及,F(xiàn)PGA將完成許多以前由DSP或DSP陣列來完成的工作。除了FPGA本身的發(fā)展之外,近幾年FPGA開發(fā)工具的發(fā)展也十分迅速,業(yè)界也普遍認(rèn)為當(dāng)前FPGA的普及度不如DSP和單片機(jī)最主要的原因是各行業(yè)的開發(fā)人員還難以適應(yīng)FPGA的全新的設(shè)計(jì)方法和技巧,各大FPGA廠商無疑也意識到了這一點(diǎn),近兩年來,F(xiàn)PGA各種開發(fā)工具版本不斷更新,說明各廠商都一直為設(shè)計(jì)工具的開發(fā)投入精力,當(dāng)前主流FPGA廠商都提供了豐富的IP核,其中還有許多是包含處理器和DSP功能的軟核,這些模塊庫和工具的完善將為FPGA的普及消除最后一道障礙,大幅提高FPGA解決方案的新引力和易用性。當(dāng)然在遇到復(fù)雜的串行算法時(shí),DSP的流水線處理器結(jié)構(gòu)則比FPGA更適合,而對于側(cè)重控制的場合,仍然是單片機(jī)更合適,總之FPGA是屬于并行計(jì)算時(shí)代的器件。的FLEX10K系列FPGAFLEX10K是業(yè)界第一款嵌入式PLD,采用了重復(fù)可構(gòu)造的CMOSSRAM工藝,把連續(xù)的快速通道互連與獨(dú)特的嵌入式陣列結(jié)構(gòu)相結(jié)合,同時(shí)FLEX(FlexibleLogicElementMatriX)架構(gòu)可結(jié)合眾多可編程器件來完成普通門陣列的宏功能,具有強(qiáng)大的系統(tǒng)集成功能。由于其具有高密度、低成本、低功率等特點(diǎn),所以脫穎而出,成為當(dāng)今AlteraPLD中應(yīng)用最好的器件系列。型號典型門數(shù)邏輯單元LE數(shù)邏輯陣列塊LAB數(shù)EAB數(shù)最大IO引腳EPF10K1010000576723150EPF10K202000011521446189EPF10K303000017282166246EPF10K404000023042888189EPF10K5050000288036010310EPF10K707000037444689358EPF10K10010000499262412406EPF10K130V130000665683216470EPF10K250A25000012160152020470表1
FLEX10K器件特性Flex10K集成了1萬~25萬個(gè)邏輯門,最多40960位RAM,其中每個(gè)嵌入式陣列塊(EmbeddedArrayBlock,EAB)包含2048位。FLEX10K集成的EAB可以配置成ROM或者RAM,兩種情況下都可以構(gòu)成2048x1、1024x2、512x4、256x8等四中類型中的任意一種。EAB中的RAM輸入與輸出端口是分開的,這樣就不需要三態(tài)門進(jìn)行總線隔離,減少編程上的麻煩。FLEX10K作為Altera的主流器件具有多種特性包括:為各種功能配備嵌入式陣列,如高效存儲器和專用內(nèi)存;大量通用邏輯陣列;高達(dá)10000到250000個(gè)典型門內(nèi)置RAM可達(dá)40960位,每個(gè)EAB包含2048位,使用這些RAM不需要減少任何邏輯容量;支持MultiVoltI/O界面;低功耗(多數(shù)型號在待機(jī)模式下的典型功耗少于);FLEX10K設(shè)備支持標(biāo)準(zhǔn);內(nèi)置JTAG(JointTestActionGroup)邊界掃描測試電路,兼容標(biāo)準(zhǔn),使用這項(xiàng)功能不需要花費(fèi)任何器件邏輯。由于集成度可以高達(dá)25萬門,F(xiàn)LEX10K器件提供了高密度、快速并且可以集成整個(gè)系統(tǒng)(包含多個(gè)32位總線)等特性都集成到單一器件中。FLEX10K器件是可再配置的,它可以在投入開發(fā)前進(jìn)行100%的測試,因此,設(shè)計(jì)者不需要制定測試向量來覆蓋所有錯(cuò)誤。設(shè)計(jì)者也不需要辨別不同的ASIC設(shè)計(jì)方案,F(xiàn)LEX10K器件可以在板上配置成所需要的專門的功能。所有的FLEX10K器件都包含嵌入式陣列(embeddedarray)和邏輯陣列(logicarray)。嵌入式陣列用于實(shí)現(xiàn)存儲功能或復(fù)雜的邏輯功能,如數(shù)字信號處理(DigitalSignalProcessing,DSP)、微控制器(microcontroller)和數(shù)據(jù)轉(zhuǎn)換等功能,邏輯陣列實(shí)現(xiàn)ASIC中門海的功能,它用于實(shí)現(xiàn)一般的邏輯功能,如計(jì)數(shù)器、加法器、狀態(tài)機(jī)和數(shù)據(jù)選擇器。將門陣列與嵌入式陣列結(jié)合起來,就可以實(shí)現(xiàn)高性能、高密度的嵌入式門陣列,使設(shè)計(jì)者得以將整個(gè)系統(tǒng)集成在單一器件內(nèi)。[6]
第三章:VHDL介紹3.1硬件描述語言概述FPGA的設(shè)計(jì)方法主要有4種1、畫原理圖輸入;2、用VHDL或VerilogHDL等硬件描述語言(HardwareDescriptionLanguage,HDL)來描述設(shè)計(jì)然后進(jìn)行邏輯綜合;3、用圖形化的描述語言來描述設(shè)計(jì);4、混合使用各種方法。每種方法都有自己的特點(diǎn)和應(yīng)用場合,當(dāng)中HDL是最重要的現(xiàn)代硬件描述手段。HDL是用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言。硬件描述語言是相對于一般計(jì)算機(jī)軟件語言如C、BASIC來說的,HDL是設(shè)計(jì)者和EDA工具的界面,HDL主要用于描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式,設(shè)計(jì)者通過HDL來描述所設(shè)計(jì)的電子系統(tǒng)的結(jié)構(gòu)特征和行為方式。由于采用計(jì)算機(jī)語言的形式,HDL比電路原理圖更容易編譯并且可讀性更強(qiáng)。在越高級別的描述中,HDL的重要性越大。盡管原理圖能更清楚地傳達(dá)部分信息,但通常它們沒有語言描述那么容易理解。并且HDL的文字描述比原理圖中關(guān)于元件和導(dǎo)線位置的圖形描述更容易被程序處理。目前最具代表性且使用最頻繁的美國國防部開發(fā)的VHDL(Very-High-SpeedIntegratedCircuitHDL)和Verilog公司開發(fā)的VerilogHDL?,F(xiàn)在VHDL和VerilogHDL作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,得到了大多數(shù)EDA工具的支持。[1][7]HDL源于各公司開發(fā)的EDA工具,各家公司在開發(fā)EDA工具時(shí)也必須同時(shí)設(shè)計(jì)一種HDL,但這些HDL大多數(shù)只成為企業(yè)標(biāo)準(zhǔn),而無法成為國際標(biāo)準(zhǔn)。上世紀(jì)80年代初,美國國防部為了降低開發(fā)費(fèi)用,避免重復(fù)設(shè)計(jì),要求各承包商按照同樣的設(shè)計(jì)語言進(jìn)行甚高速集成電路的開發(fā),于是VHDL工作組于1981年6月成立,于1983年由Intermatrics、IBM、TI三家公司組成開發(fā)小組。1986年3月IEEE開始制定VHDL標(biāo)準(zhǔn),經(jīng)過1年的審查,1987年12月IEEE發(fā)布了第一個(gè)VHDL標(biāo)準(zhǔn)版本IEEEstd1076(簡稱VHDL-1987)。VHDL1987發(fā)布之后獲得了廣泛的支持,主流EDA軟件相繼宣布支持VHDL,1993年IEEE又發(fā)布了新版本的VHDL標(biāo)準(zhǔn)IEEEstd1076-1993(簡稱VHDL-1993),VHDL-1993只增加了少量功能,并修改了少部分語法規(guī)則。絕大部分基本語法語義的定義與VHDL-1987是一樣的,1997年IEEE制定了包含模擬電路設(shè)計(jì)功能的VHDL擴(kuò)充版本,成為VHDL-AMS,AMS的含義是模擬和混合信號(AnalogandMixedSignal),1998年IEEE制定了用于寄存器傳輸級(RTL,RegisterTransmitLevel)綜合的VHDL子集標(biāo)準(zhǔn)。在2000年與2002年又有新版本的VHDL標(biāo)準(zhǔn),但這些后續(xù)版本僅對一些不常用的功能進(jìn)行修改,基本的內(nèi)容一直沒有變化。[8]本設(shè)計(jì)基于VHDL-1993。的特點(diǎn)與其他HDL和軟件編程語言相比VHDL具有以下特點(diǎn)或優(yōu)勢:與具體器件無關(guān),設(shè)計(jì)系統(tǒng)時(shí)只需要考慮其行為的實(shí)現(xiàn),而不必與具體的器件關(guān)聯(lián),或者輸入具體的硬件參數(shù),這種與硬件關(guān)聯(lián)度較小的特點(diǎn)使FPGA能較好的適應(yīng)各種設(shè)計(jì),并且有更普遍的應(yīng)用。強(qiáng)大的行為描述能力,隨著半導(dǎo)體工藝的進(jìn)步和百萬門級的FPGA出現(xiàn)普及,F(xiàn)PGA及ASIC的設(shè)計(jì)復(fù)雜性必然增加,VHDL強(qiáng)大的行為描述能力使得它比其它HDL更適合VLSI、SOC等規(guī)模較大的集成電路設(shè)計(jì)。VHDL本身具有廣泛的多領(lǐng)域的應(yīng)用,VHDL基本具備了所有硬件描述語言應(yīng)有的特性,這就意味著設(shè)計(jì)者從原始的系統(tǒng)行為描述,同過逐步地分解綜合等過程,直到最后生成FPGA廠商提供的適配器所能接受的編程文件的整個(gè)過程,都可以在VHDL的范疇之內(nèi)完成,VHDL所支持的電子系統(tǒng)設(shè)計(jì)級別包括系統(tǒng)級、行為算法級、寄存器傳輸級(RTL)、邏輯級和開關(guān)級。VHDL把大部分設(shè)計(jì)工作推給計(jì)算機(jī),這使得VHDL對計(jì)算機(jī)和VHDL綜合器有較高的要求,隨著EDA工具和VHDL綜合器的日益完善和計(jì)算機(jī)性能的大幅提高,VHDL的這一特點(diǎn)使其與其他HDL相比具有更高的設(shè)計(jì)自動(dòng)化程度,同時(shí)設(shè)計(jì)者可以根據(jù)綜合的結(jié)構(gòu)進(jìn)行適當(dāng)?shù)男薷?,或者對綜合器的參數(shù)進(jìn)行必要的設(shè)定以達(dá)到理想的性能指標(biāo),這無疑使VHDL成為一種優(yōu)秀的EDA解決方案??茖W(xué)的語言結(jié)構(gòu),可讀性好,作為一種計(jì)算機(jī)語言,VHDL既可以被計(jì)算機(jī)編譯,也可以被人理解,VHDL的源代碼,既是程序,又是文檔。既成為學(xué)術(shù)交流中的載體,又可以作為合同簽約者之間的文件。支持大規(guī)模項(xiàng)目的層次化設(shè)計(jì)和已有設(shè)計(jì)的再利用,隨著半導(dǎo)體工藝的不斷發(fā)展和集成電路規(guī)模的擴(kuò)張,一個(gè)大規(guī)模的設(shè)計(jì)項(xiàng)目已經(jīng)很難由一個(gè)人完成,而必須由一個(gè)項(xiàng)目組甚至多個(gè)項(xiàng)目組協(xié)同完成,VHDL中實(shí)體、類屬、程序包和設(shè)計(jì)庫的概念讓層次化設(shè)計(jì)和以往設(shè)計(jì)的再利用變得十分方便,從而實(shí)現(xiàn)了多人多任務(wù)并行工作的方式,保證大規(guī)模的系統(tǒng)設(shè)計(jì)能被迅速完成。標(biāo)準(zhǔn)化,可移植,作為IEEE的一種工業(yè)標(biāo)準(zhǔn)硬件描述語言,VHDL獲得了眾多EDA工具的支持,任何設(shè)計(jì),只要它采用VHDL,都可以在不同的設(shè)計(jì)平臺間轉(zhuǎn)移,這又進(jìn)一步提高的VHDL的通用性。VHDL在提供與工藝無關(guān)的設(shè)計(jì)途徑的同時(shí),又具備在設(shè)計(jì)中加入工藝參數(shù)的特性,在工藝改變時(shí),只需要修改相應(yīng)的類屬即可使同樣的設(shè)計(jì)適應(yīng)不同的工藝。設(shè)計(jì)的各個(gè)階段都能進(jìn)行仿真和驗(yàn)證,VHDL在制定之初就考慮到了電路的仿真和驗(yàn)證問題,在EDA工具中設(shè)計(jì)者可以在設(shè)計(jì)的每個(gè)階段對設(shè)計(jì)的每個(gè)部分進(jìn)行驗(yàn)證,檢查邏輯和電路的正確性,從而減少錯(cuò)誤發(fā)生的可能性和設(shè)計(jì)的反復(fù)修改。降低了開發(fā)成本的功能與應(yīng)用經(jīng)過幾十年的發(fā)展VHDL在眾多HDL中逐步脫穎而出成為電子系統(tǒng)設(shè)計(jì)的通用語言,同時(shí)它還不斷拓展應(yīng)用領(lǐng)域。在EDA軟件的編輯器中VHDL是電子系統(tǒng)設(shè)計(jì)語言,描述系統(tǒng)的結(jié)構(gòu)和功能。經(jīng)過編譯后又成為用于系統(tǒng)行為仿真的VHDL行為仿真文件,而經(jīng)過VHDL綜合器后的結(jié)果會生成VHDL網(wǎng)表文件,此文件可以直接交給廠商提供的適配器用于配置可編程邏輯器件或產(chǎn)生下載所需的配置文件。VHDL還可以用于層次化設(shè)計(jì),將預(yù)先定義的VHDL描述的元件和程序包存入EDA軟件的數(shù)據(jù)庫中。除了行為描述外,VHDL也可以描述電路結(jié)構(gòu),包括門級描述、功能塊描述和寄存器傳輸級描述,當(dāng)然隨著抽象級別的提高,VHDL更能體現(xiàn)它的優(yōu)勢,SOC的發(fā)展成熟也對HDL描述的范圍提出了更廣泛的要求,而在VHDL中允許對相同的描述建立不同抽象級別的元件模型。隨著電路規(guī)模的擴(kuò)大電路的模擬驗(yàn)證正成為FPGA和ASIC設(shè)計(jì)的一大挑戰(zhàn),在模擬驗(yàn)證中VHDL可以提供數(shù)字系統(tǒng)元件的特性以及它們之間的相互連接和相互作用,甚至包括外部的輸入信號和內(nèi)部的信號觀察點(diǎn)。總之隨著EDA工具的進(jìn)一步成熟,除了主流的硬件描述語言之外,VHDL已經(jīng)成為電子設(shè)計(jì)領(lǐng)域?qū)W術(shù)交流、設(shè)計(jì)存檔、程序模塊的移植、ASIC源程序的交付、IP核的應(yīng)用等領(lǐng)域有了廣泛的應(yīng)用,顯然,VHDL已成為軟硬件工程師們的共同語言。的語法一個(gè)完整的VHDL程序包含以下部分:庫(Library):存放已經(jīng)編譯的包集合、實(shí)體、結(jié)構(gòu)體和配置等。庫的好處在于使設(shè)計(jì)者可共享已經(jīng)編譯過的設(shè)計(jì)結(jié)果。包(Package):聲明在實(shí)體中將用到的信號定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義和過程定義等。實(shí)體(Entity):定義電路的輸入/輸出接口。結(jié)構(gòu)體(Architecture):描述電路內(nèi)部的功能。一個(gè)實(shí)體可以對應(yīng)多個(gè)結(jié)構(gòu)體,但在同一時(shí)間,只有一個(gè)結(jié)構(gòu)體被使用。配置(Configuration):決定哪一個(gè)結(jié)構(gòu)體被使用。并非所有VHDL程序都具有以上5種語法結(jié)構(gòu)。理論上只有實(shí)體和結(jié)構(gòu)體式必備的,而在實(shí)際應(yīng)用中常要在實(shí)體之前調(diào)用程序包。以下一個(gè)2分頻電路是VHDL程序的常用結(jié)構(gòu):libraryIEEE;
--庫、程序包調(diào)用useIEEE.std_logic_1164.all;
entityFreDevideris
--實(shí)體聲明port(clock:instd_logic;clkout:outstd_logic);end;
architecturebehaviorofFreDevideris--結(jié)構(gòu)體定義signalclk:std_logic;begin
process(clock)
begin
ifrising_edge(clock)then
clk<=notclk;
endif;
endprocess;
clkout<=clk;end;程序中--標(biāo)識后的字符為注釋。
第四章:MAX+plusII軟件介紹4.1MAX+plusII概述MAX+plusII是美國Altera公司的第三代FPGA開發(fā)軟件,其全稱為MultipleArrayMatrixandProgrammableLogicUserSystems。MAX+plusII可以在安裝Windows、SunSPACstations、HP9000Series700/800或IBMRISCSystem/6000的計(jì)算機(jī)上運(yùn)行,MAX+plusII的功能強(qiáng)大而且使用方便。使用MAX+plusII,用戶不需要了解可編程邏輯器件的內(nèi)部結(jié)構(gòu),用戶可以用自己熟悉的方法(原理圖或HDL)進(jìn)行設(shè)計(jì),MAX+plusII會將用戶的輸入自動(dòng)轉(zhuǎn)換為最終形式,利用MAX+plusII可以高效靈活的設(shè)計(jì)各類數(shù)字電路。MAX+plusII包含編輯、編譯、仿真、綜合和下載等功能。用戶可以在軟件中完成從源代碼輸入到最終配置器件的整個(gè)過程,MAX+plusII具有開放的界面,它支持的HDL有VHDL、VerilogHDL和Altera自家的設(shè)計(jì)語言AHDL,并且提供了與其他主流EDA軟件工具的接口,除了軟件自身集成的大量功能塊和元件庫外,設(shè)計(jì)人員可以自行添加自己的宏定義和程序包,從而達(dá)到縮短開發(fā)周期,減少工作量的目的,MAX+plusII僅支持部分VHDL語句的綜合,但由于其功能的高度集成化以及方便的操作使得其在國內(nèi)高校和VHDL初學(xué)者中具有很高的普及率。相關(guān)資料也比較豐富,特別適合初學(xué)者使用。本設(shè)計(jì)采用MAX+plusII的最后一個(gè)版本MAX+plusII10.2baseline版
圖4-1
MAX+plusII的組成4.2MAX+plusII的界面在WindowsXP系統(tǒng)中(其它平臺與此類似),選擇“開始”→“所有程序”→“MAX+plusII10.2BASELINE”→“MAX+plusII10.2BASELINE”就可以進(jìn)入MAX+plusII開發(fā)平臺,MAX+plusII各組件界面如圖,下文中各界面元素的名稱以圖中所示為準(zhǔn)。
文本編輯界面圖4-2
文本編輯界面編譯器
圖4-3
編譯器
波形編輯器界面圖4-4
波形編輯界面
仿真器對話框圖4-5
仿真器4.3MAX+plusII的設(shè)計(jì)流程使用MAX+plusII設(shè)計(jì)FPGA的基本流程如圖所示,下面就簡要介紹Franaszek編譯碼器的設(shè)計(jì)的操作。
圖4-6
用MAX+plusII進(jìn)行FPGA設(shè)計(jì)的基本流程設(shè)計(jì)輸入(1)打開TextEditor在主菜單最左邊的MAX+plusII菜單中選擇TextEditor進(jìn)入文本編輯界面,然后就可以輸入編碼器狀態(tài)機(jī)的代碼了。(2)存儲文件在File菜單中選擇Save,打開如圖所示的對話框,選擇欲存放的路徑并輸入文件名。MAX+plusII中的文本編輯器太過簡陋以至影響使用,習(xí)慣UltraEdit的程序員可以使用UltraEdit來完成設(shè)計(jì)輸入,再在MAX+plusII打開編譯即可。在UltraEdit的中加入VHDL的關(guān)鍵字即可實(shí)現(xiàn)VHDL關(guān)鍵字的高亮顯示。將當(dāng)前文件設(shè)為工作文件在File菜單下的Project子菜單中選擇SetProjecttoCurrentFile,或用快捷鍵Ctrl+Shift+J將設(shè)為當(dāng)前工作文件。編譯在主菜單的MAX+plusII中選擇Compiler,出現(xiàn)編譯器窗口。此時(shí)可以在主菜單的Processing中選擇FunctionalSNFExtractor進(jìn)行功能仿真,若選擇TimingSNFExtractor則進(jìn)行時(shí)序仿真。VHDL仿真器允許定義輸入并應(yīng)用到設(shè)計(jì)中,不必生成實(shí)際電路就可以觀察輸出,功能仿真主要用于檢查系統(tǒng)功能設(shè)計(jì)的正確性,不涉及具體器件的硬件特性。根據(jù)適配到具體器件后的模型,可以進(jìn)行時(shí)序仿真。因?yàn)榇藭r(shí)已經(jīng)得到目標(biāo)器件的實(shí)際硬件參數(shù),所以仿真能夠比較精確地代表實(shí)際性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求就要選擇其它目標(biāo)器件或修改VHDL源代碼,甚至重構(gòu)整個(gè)系統(tǒng)。這里先選擇功能仿真的編譯,驗(yàn)證狀態(tài)機(jī)功能的正確性。仿真(1)打開波形編輯器的輸入節(jié)點(diǎn)對話框在主菜單中的MAX+plusII子菜單中選擇WaveformEditor,打開波形編輯器。然后再Node菜單中選擇EnterNodesformSNF(2)選擇要觀察的節(jié)點(diǎn)單擊右上角的List按鈕,在左邊的AvailableNodesGroups中就會出現(xiàn)于左下角的Type對應(yīng)的節(jié)點(diǎn),這里只要觀察輸入輸出,就只選擇Inputs、Outputs和Groups三種節(jié)點(diǎn)。選擇需要觀察的節(jié)點(diǎn)如圖,就可以然后單擊“=〉”按鈕,這些節(jié)點(diǎn)就會出現(xiàn)在SelectedNodes&Groups中。這就完成了對節(jié)點(diǎn)的選擇,然后點(diǎn)擊ok,選擇的節(jié)點(diǎn)就會出現(xiàn)在波形編輯器中。(3)對輸入信號進(jìn)行賦值單擊節(jié)點(diǎn)名稱后整個(gè)節(jié)點(diǎn)會被選中,然后可以對輸入信號進(jìn)行賦值,也可以選中輸入信號中的一段進(jìn)行賦值在時(shí)鐘賦值中,其中時(shí)鐘周期的賦值與Option菜單中的GridSize的設(shè)置有關(guān),ClockPeriod必須是GridSize的偶數(shù)倍。進(jìn)行仿真將賦值好的波形保存,然后在MAX+plusII菜單下的Simulator就是仿真器了,點(diǎn)擊Start就可以開始仿真,編碼器狀態(tài)機(jī)的功能仿真結(jié)果顯示在波形編輯器中,如圖,
圖4-7
編碼器狀態(tài)機(jī)仿真結(jié)果層次化設(shè)計(jì)仿真好編碼器狀態(tài)機(jī)后再用同樣方法編譯編碼器緩存控制器,然后用層次化設(shè)計(jì)方法完成編碼器的設(shè)計(jì)。生成元件符號在編譯成功后MAX+plusII會為每個(gè)實(shí)體生成一個(gè)相應(yīng)的元件符號,也就是一個(gè)后綴為sym的文件。有了元件符號后,就可以在圖形編輯器中調(diào)用該實(shí)體了。MAX+plusII只在第一次成功編譯后生成一次元件符號,如果編譯不通過或編譯通過后又修改了設(shè)計(jì),都不會生成或更新元件符號,因此修改設(shè)計(jì)后,元件符號都需要重新生成。在當(dāng)前文件是工作文件的情況下,在File菜單中點(diǎn)擊CreateDefaultSymbol,就可以更新元件符號了。調(diào)用元件符號在MAX+plusII菜單中選擇GraphicEditor打開圖形編輯器。在圖形編輯器中右擊后在彈出的菜單中選擇EnterSymbol,依次添加狀態(tài)機(jī)、緩存控制器和ROM的元件符號。添加參數(shù)化元件LPM_ROM時(shí)需要設(shè)定模塊的參數(shù),在Ports中選擇ROM要用到的引腳,在parameters中修改各種參數(shù),每個(gè)參數(shù)的意義和設(shè)定值將在下一章具體說明。定義輸入/輸出端口與連線添加輸入輸出引腳的辦法是:在EnterSymbol對話框中的SymbolName中輸入input或output即可添加輸入輸出引腳。連線的方法是將鼠標(biāo)光標(biāo)移至連線一端的端口上,在出現(xiàn)“+”時(shí)按住左鍵后將其拖到連線的另一端,刪除的方法是選中該連線然后按delete鍵。于是就生成了編碼器的層次化設(shè)計(jì)文件。存儲的文件名不能與調(diào)用的任何文件實(shí)體名一致。邏輯綜合與時(shí)序仿真將圖形文件設(shè)為當(dāng)前工作文件后就可以進(jìn)行編譯或邏輯綜合了。(1)引腳圖編輯在綜合到具體器件之前必須指定一個(gè)目標(biāo)器件在Assign子菜單中選擇Device,出現(xiàn)器件選擇對話框。在DeviceFamily中選擇FLEX10K,然后指定一款型號,比如EPF10K30RC240-3,減號后面的數(shù)字表示器件速度,如“-3”表示器件傳輸延時(shí)為3ns。在MAX+plusII菜單中選擇FloorplanEditor,然后在Layout菜單中將視圖設(shè)置為DeviceView和CurrentAssignmentsFloorplan,。然后將相應(yīng)輸入輸出拖到合適的引腳,具體如何分配將在下一章中詳細(xì)說明。(2)邏輯綜合與時(shí)序仿真引腳分配完成之后可以針對具體器件進(jìn)行邏輯綜合和時(shí)序仿真。在打開編譯器后,不要選擇FunctionalSNFExtractor,而選擇TimingSNFExtractor,這時(shí)編譯器中就多了LogicSynthesizer(邏輯綜合)、Partitioner(分割器)、Fitter(適配)、Assembler(裝配)等步驟。這樣編譯完成后,就可以進(jìn)行時(shí)序仿真,時(shí)序仿真的步驟與之前的功能仿真相似,這里就不再贅述。
第五章:基于FPGA的硬盤編譯碼器的設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)系統(tǒng)的技術(shù)要求在使用峰值檢測技術(shù)的磁盤驅(qū)動(dòng)中的一種標(biāo)準(zhǔn)編碼是碼率為1/2的()=(2,7)碼,也稱代碼。1設(shè)計(jì)編碼器要求信息序列能連續(xù)輸入,編碼序列連續(xù)輸出。2設(shè)計(jì)編碼器要求信息序列能連續(xù)輸入,編碼序列連續(xù)輸出,譯碼器輸如使用編碼器的輸出序列3碼字存在ROM中。4輸入有一個(gè)指示數(shù)據(jù)起始的同步脈沖5系統(tǒng)要求使用的最高時(shí)鐘頻率只能是輸入信息序列時(shí)鐘的2倍。系統(tǒng)的特點(diǎn)磁記錄過程是通過磁頭與磁記錄介質(zhì)相互作用來實(shí)現(xiàn)的,這個(gè)過程可以看做一個(gè)電磁轉(zhuǎn)換的過程,其中磁頭與介質(zhì)之間相對運(yùn)動(dòng)。在寫入數(shù)據(jù)時(shí),磁頭線圈的電流發(fā)生改變,從而使介質(zhì)磁化,其此話狀態(tài)就的改變,就記錄了信息。當(dāng)讀數(shù)據(jù)時(shí),不同的磁化狀態(tài)使線圈磁通發(fā)生變化,從而是線圈電流變化,電流變化經(jīng)過處理后就可以還原出記錄的信息。[9][10]存儲系統(tǒng)的編碼通常有兩部分,一部分是糾錯(cuò)碼,一部分是調(diào)制碼。信息在進(jìn)入存儲系統(tǒng)后,需要的信息中加入一些糾錯(cuò)碼,使得存儲系統(tǒng)能夠發(fā)現(xiàn)或更正存儲過程中產(chǎn)生的錯(cuò)誤。在經(jīng)過糾錯(cuò)編碼以后,數(shù)據(jù)需要再一次被編碼,以滿足存儲介質(zhì)的需要。在磁存儲中,磁疇被磁化為兩個(gè)不同的方向,在硬盤中,通常采用一種叫做反轉(zhuǎn)不歸0(Non-Return-to-Zero,Inverted,NRZI)的記錄方式,按照這種方法,磁化方向變化對應(yīng)于數(shù)據(jù)‘1’,磁化方向不變對應(yīng)于數(shù)據(jù)‘0’。而在記錄過程中,磁頭上的電流信號可以看做一個(gè)幅值為+1和-1的二值波形。在實(shí)際記錄過程中,已寫入的跳變將干擾正在寫入下一個(gè)跳變,在高密度存儲系統(tǒng)中,如果兩個(gè)跳變之間的距離太短,則這種干擾就不能忽略,它會造成檢測信號幅值和相位的偏移,如果這種偏移很嚴(yán)重,將導(dǎo)致檢測錯(cuò)誤(產(chǎn)生串?dāng)_)。而在硬盤中,數(shù)據(jù)傳輸是自同步的。收到的信號中本身就包含同步信息,通過鎖相環(huán)來檢測信號中的跳變,從而實(shí)現(xiàn)了信號的同步,如果兩個(gè)跳變間間隔太遠(yuǎn),則鎖相環(huán)有可能失去鎖定(失步)。因此在硬盤的存儲介質(zhì)中兩個(gè)相鄰的跳變的間隔,既不能太長,也不能太短,兩個(gè)相鄰跳變的間隔也稱作“游程”,所以在硬盤中,寫入介質(zhì)信號的游程,既不能太長,也不能太短,太長有可能失步,太短則會產(chǎn)生串?dāng)_,滿足這種游程長度限制的編碼就叫做游程長度受限碼(RLL,Run-Length-Limited),一般表示為RLL(d,k),參數(shù)d表示兩個(gè)1之間至少要有d個(gè)0,k表示兩個(gè)1之間最多有k個(gè)0,“1”表示磁疇翻轉(zhuǎn),“0”表示不翻轉(zhuǎn),d與k的選擇與介質(zhì)的屬性和存儲密度有關(guān)。[11][12]近年來,在香農(nóng)編碼理論的基礎(chǔ)上發(fā)展出了多種RLL編碼方式,其中Franaszek提出了一種特殊的變長編碼,源字與碼字的長度是可變的,但它們之間的長度之比是不變的,因此固定長度的源字會被轉(zhuǎn)換為固定長度的碼字,所以這種編碼屬于同步變長碼,F(xiàn)ranaszek編碼是一種在峰值檢測技術(shù)的磁盤驅(qū)動(dòng)中的一種標(biāo)準(zhǔn)編碼其中(d,k)=(2,7)碼率為1/2。它的編碼表是:信源字碼字110100101000000000100010001000011100100001000001000001100100100表2
Franaszek編碼表由于設(shè)計(jì)要求系統(tǒng)最高時(shí)鐘頻率只能是輸入信息序列的2倍,即與編碼器輸出時(shí)鐘同步,而目前主流的解決方案中只有ASIC和FPGA能達(dá)到此要求,而如果使用定制器件作為編譯碼器,在延長設(shè)計(jì)周期的同時(shí)還降低產(chǎn)品的靈活性和兼容性,因此本系統(tǒng)采用FPGA作為目標(biāo)器件。因?yàn)橐笤贔PGA中有嵌入式ROM用于存放碼字,所以Altera的FLEX10K系列FPGA是主流器件中符合要求且具備可行性的選擇,F(xiàn)LEX10K的參數(shù)在前文已經(jīng)介紹過,對于FLEX10K的開發(fā),雖然一些大型的EDA平臺如Synopsys、Cadence和MentorGraphics等也可以勝任,但是從計(jì)算機(jī)的運(yùn)行速度、軟件的普及度、綜合質(zhì)量和器件的適應(yīng)性等方面考慮,還是使用Altera為自家FPGA開發(fā)的MAX+plusII作為設(shè)計(jì)工具更合適。本系統(tǒng)采用目前FPGA開發(fā)的標(biāo)準(zhǔn)VHDL語言描述,VHDL語言具有可移植性好、語法嚴(yán)謹(jǐn)、行為描述能力強(qiáng)等特點(diǎn)。系統(tǒng)的總體設(shè)計(jì)本題目屬于變長編解碼的范疇,從信息論中學(xué)到的知識可知,變長編碼有很多優(yōu)點(diǎn),例如壓縮率大,平均碼長短,其中最著名的就是經(jīng)常用到的哈夫曼編碼。一般來說,變長碼的編譯碼要比定長碼的難,主要有以下兩個(gè)難點(diǎn):如何識別信源字信源字并不是固定長度的,不能像定長碼一樣簡單地按碼長來判斷,而必須邊接收信息邊識別,如何最簡單、有效地檢測出信源字是本題首先要解決的一個(gè)問題。速率匹配問題假設(shè)輸入的信源碼存在這樣的組合:2位信源字后緊接著4位信源字。如果編碼器在檢測到2位信源字后立即輸出編碼結(jié)果,將出現(xiàn)什么結(jié)果呢?當(dāng)這2位信源字的編碼輸出結(jié)束后,4位信源字尚未接收完畢,自然也就無法進(jìn)行編碼。也就是說,2個(gè)信源字編碼之間出現(xiàn)了空當(dāng),造成了輸出碼字的不連續(xù),這是不可接受的。造成這個(gè)現(xiàn)象的原因是:變長編碼編成的碼字長度是不相等的,這必然導(dǎo)致信源輸出速率是變化的,然而在實(shí)際信道傳送的信息率是固定不變的,也就是說信源給出的是變速的,而信道傳送的則是恒速的,因此信源與信道之間必然存在一個(gè)速率匹配問題。解決第一個(gè)問題的方法有很多,但最簡單、易懂而且容易編程的方法非狀態(tài)機(jī)莫屬。在信源識別狀態(tài)下若讀到信息位為0,則重新進(jìn)入0狀態(tài);否則進(jìn)入1狀態(tài),開始識別下一個(gè)信源字。事實(shí)上,這里還應(yīng)該加上一個(gè)初始狀態(tài),即開始編碼之前的狀態(tài)。在此狀態(tài)下,如果接收到開始編碼的信號,程序就根據(jù)讀到的信息位選擇進(jìn)入0狀態(tài)或1狀態(tài)。如果要解決第二個(gè)問題(速率匹配),那么通常采用緩沖存儲器(Buffer)來實(shí)現(xiàn)變速輸入,恒速輸出的功能。緩存就像水庫一樣,就算往水庫注水時(shí)快時(shí)慢,抽水機(jī)輸入水流的速率仍是一樣的。根據(jù)上面的分析,初步定下了整體的設(shè)計(jì)方案:整個(gè)編碼器由狀態(tài)機(jī),緩存控制模塊和ROM組成;由狀態(tài)機(jī)來進(jìn)行信源字的識別,并將其相應(yīng)的存儲地址傳給存有編碼規(guī)則的ROM;緩存控制模塊讀取存于ROM中的編碼,置于緩存中,當(dāng)緩存中的數(shù)據(jù)達(dá)到一定的數(shù)量(足以避免出現(xiàn)空當(dāng)現(xiàn)象)即開始對外串行輸出編碼;ROM采用MAX+plus2中的可調(diào)參數(shù)宏模塊LPM_ROM,既充分利用片內(nèi)資源,又減少編程量。由于緩存控制器的時(shí)鐘頻率與狀態(tài)機(jī)的識別和輸入頻率不同,因此在緩存控制器中必須考慮兩者如何協(xié)調(diào)的問題,比如狀態(tài)機(jī)的flag信號會維持兩個(gè)緩存控制器的時(shí)鐘周期,在緩存控制器中如果簡單地以flag作為識別的信號,可能會發(fā)生同一個(gè)flag信號內(nèi)兩次緩存操作的問題。
圖5-1
Franaszek編碼器系統(tǒng)框圖以下分別闡述系統(tǒng)各部分的設(shè)計(jì)和最后綜合仿真的結(jié)果分析。狀態(tài)機(jī)的設(shè)計(jì)狀態(tài)機(jī)概述數(shù)字電路分為組合邏輯和時(shí)序邏輯兩大類。組合邏輯電路的輸出只與當(dāng)前的輸入有關(guān);時(shí)序邏輯電路的輸出則不僅與當(dāng)前的輸入有關(guān),而且還與過去的一系列輸入有關(guān)。狀態(tài)機(jī)(StateMachine)可以說是一個(gè)廣義時(shí)序電路,觸發(fā)器、計(jì)數(shù)器、移位寄存器等都算是它的特殊功能類型的一種。實(shí)際時(shí)序邏輯電路中的狀態(tài)數(shù)是有限的,因此又叫做有限狀態(tài)機(jī)(FSM,F(xiàn)initeStateMachine),又稱為有限狀態(tài)自動(dòng)機(jī)或簡稱狀態(tài)機(jī),有限狀態(tài)機(jī)在許多領(lǐng)域都有重要作用,包括電子工程、語言學(xué)、計(jì)算機(jī)科學(xué)、哲學(xué)、生物學(xué)、數(shù)學(xué)和邏輯學(xué)。許多大型控制系統(tǒng)就是用狀態(tài)機(jī)思路建模和編寫的,因?yàn)橛脿顟B(tài)機(jī)建模往往能比用控制流程的思路建模更簡潔高效。用VHDL設(shè)計(jì)狀態(tài)機(jī)不必知道其電路具體實(shí)現(xiàn)的細(xì)節(jié),而只要在邏輯上加以描述。[13]實(shí)用狀態(tài)機(jī)一般都設(shè)計(jì)為同步時(shí)序電路,它在時(shí)鐘信號的觸發(fā)下,完成各個(gè)狀態(tài)之間的轉(zhuǎn)移。標(biāo)準(zhǔn)狀態(tài)機(jī)可以分為Moore型和Mealy型兩種。在Moore機(jī)中其輸出僅僅是當(dāng)前狀態(tài)值的函數(shù),并且僅在時(shí)鐘邊沿到來時(shí)才發(fā)生變化。Mealy機(jī)的輸出則是當(dāng)前狀態(tài)值、當(dāng)前輸出值和當(dāng)前輸入值的函數(shù)。狀態(tài)機(jī)有3種表示方法:狀態(tài)圖、狀態(tài)表和流程圖。這3種表示方法是等價(jià)的,相互之間可以轉(zhuǎn)換,其中狀態(tài)圖是最常用的一種表示方式。Moore型和Mealy型是狀態(tài)機(jī)的兩種基本形式,選擇合適的狀態(tài)機(jī)形式將影響最終的設(shè)計(jì)效果,但目前并沒有一個(gè)廣泛適用的說法認(rèn)為哪一種狀態(tài)機(jī)更好,Moore模型的好處是行為的簡單性,Mealy型的使用經(jīng)常導(dǎo)致狀態(tài)數(shù)目的簡約。本設(shè)計(jì)的狀態(tài)機(jī)如果采用Mealy型狀態(tài)機(jī),將只有中間狀態(tài)而沒有識別狀態(tài),但也會由于難以區(qū)分中間狀態(tài)和識別狀態(tài)而增加后期維護(hù)的難度。如果使用Moore型狀態(tài)機(jī),增設(shè)專門的輸出狀態(tài),輸出僅與當(dāng)前狀態(tài)有關(guān),使程序更為易讀,方便后期的調(diào)試和將來的維護(hù),也減少緩存控制器的編寫難度,本設(shè)計(jì)的難點(diǎn)恰好在緩存控制器,所以應(yīng)采用Moore型狀態(tài)機(jī)。編碼器狀態(tài)機(jī)的設(shè)計(jì)
為了與后級的緩存控制器配合,本模塊設(shè)立了兩個(gè)與緩存控制器相連的接口信號:Flag和Length。每識別出一個(gè)信源字,F(xiàn)lag就從低電平變?yōu)楦唠娖?,用以指示緩存控制器從ROM中讀取相應(yīng)編碼;而Length則用來表征編碼的長度,即指示緩存控制器應(yīng)從ROM中讀取的數(shù)值的位數(shù)(ROM的數(shù)據(jù)線長度是固定的,因此必須借助Length信號完成變長編碼)。圖5-2
編碼器狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖圖中的末端狀態(tài)中若輸入為0則下一個(gè)狀態(tài)是S0若,輸入為1則下一個(gè)狀態(tài)為S1
仿真結(jié)果:圖5-3
編碼器狀態(tài)機(jī)仿真結(jié)果單擊Start開始仿真,這里可以很直觀地看出,每到一個(gè)識別狀態(tài),flag信號由0變1,同時(shí)length和address輸出相應(yīng)的ROM地址和編碼的長度,當(dāng)下一個(gè)上升沿到達(dá)時(shí),flag由1變0,length和address的信號也同時(shí)消失,換句話說,當(dāng)flag為高電平時(shí),length和address為有效值。狀態(tài)則根據(jù)當(dāng)前輸入數(shù)據(jù)改變。而輸出則僅隨當(dāng)前狀態(tài)改變,與輸入無關(guān)。譯碼器狀態(tài)機(jī)設(shè)計(jì)在譯碼器的設(shè)計(jì)上,可以采用狀態(tài)獨(dú)立的滑塊譯碼器,其譯碼過程根據(jù)當(dāng)前的碼字、當(dāng)前碼字以前的r個(gè)碼字和以后的q個(gè)碼字來聯(lián)合確定輸出結(jié)果??梢哉J(rèn)為滑塊分組譯碼器由一個(gè)w=(r+1+q)步的移位寄存器和譯碼邏輯組成,參數(shù)w稱為滑塊窗口。該譯碼器的特點(diǎn)是譯碼過程僅依賴于w個(gè)連續(xù)碼字,與其他編碼獨(dú)立,如果在滑塊譯碼器的輸入中有單個(gè)錯(cuò)誤發(fā)生,則僅有w個(gè)碼字的譯碼受到影響,從而可以有效控制錯(cuò)誤的傳播。但是我經(jīng)過分析后認(rèn)為滑塊譯碼器由于在譯碼時(shí)需要同時(shí)考慮w=(r+q+1)個(gè)碼字因此邏輯復(fù)雜,消耗大量器件資源,在用于Franaszek這樣的可變長編碼時(shí)還很難確定滑動(dòng)窗口的大小,雖然它可以減少錯(cuò)誤造成的影響,但對于硬盤這樣誤碼率很低(相對光盤而言)的環(huán)境下,再加上使用的是可靠性較高的FPGA實(shí)現(xiàn),純硬件實(shí)現(xiàn)中,不存在單片機(jī)或其它軟件實(shí)現(xiàn)方案中可能出現(xiàn)的單片機(jī)死機(jī)問題,因此譯碼器的設(shè)計(jì)方案應(yīng)采用與編碼器類似的狀態(tài)機(jī)方案,既節(jié)約器件資源,又適合變長編碼的情況。譯碼器狀態(tài)轉(zhuǎn)移圖:
圖5-4
譯碼器狀態(tài)機(jī)在出錯(cuò)的情況下可以轉(zhuǎn)入錯(cuò)誤狀態(tài)進(jìn)行相應(yīng)的處理,這樣就可以使錯(cuò)誤影響的范圍得到有效控制,而不影響到下面的譯碼。如在S01后面譯碼器輸入若再次出現(xiàn)1,則進(jìn)入se狀態(tài),表示錯(cuò)誤,同時(shí)狀態(tài)機(jī)表示錯(cuò)誤的輸出err置位。用以下代碼實(shí)現(xiàn)
whens10=>
ifdin='1'then
state<=se;
else
state<=s100;
endif;在輸出定義進(jìn)程中的相應(yīng)代碼為
casestateis
whense=>
flag<='0';
molength<=0;
address<="000";
err<='1';
譯碼器狀態(tài)機(jī)的仿真結(jié)果:圖5-5
譯碼器狀態(tài)機(jī)仿真結(jié)果緩存控制器的設(shè)計(jì)編碼器緩存控制器的設(shè)計(jì)緩存的設(shè)計(jì)是本題的難點(diǎn)之一,主要因?yàn)椋壕彺婵刂破鞑坏獙OM中的數(shù)據(jù)存入緩存,而且同時(shí)要實(shí)現(xiàn)串、并轉(zhuǎn)換;系統(tǒng)的最高時(shí)鐘為信息序列輸出的2倍,即與編碼輸出的時(shí)鐘相同,因此要在同一個(gè)時(shí)鐘沿解決存與出的問題,時(shí)序上比較復(fù)雜;MAX+plusII支持的僅是VHDL的一個(gè)子集,題目要求程序能在MAX+plusII得到綜合,這就意味著可用的語句較少,增加了編程的難度。在設(shè)計(jì)時(shí)首先要解決以下幾個(gè)問題:采用多大的緩存?理論上需要的緩存最大為14位(當(dāng)?shù)谝粋€(gè)編碼為6位,而第二個(gè)編碼為8位時(shí)),再加上有可能要存儲一些暫時(shí)的變量,所以這里采用16位的緩沖區(qū)。采用什么數(shù)據(jù)結(jié)構(gòu)?這里采用了一個(gè)類似于隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。Tempdata(0to15)為16位的std_logic_vector;pos是類型為integerrange0to15的變量,用以指示第1個(gè)尚未存儲數(shù)據(jù)的單元;code為輸出的編碼,一直指向隊(duì)列首tempdata(0)。何時(shí)開始輸出編碼?當(dāng)緩存存儲的數(shù)據(jù)第1次達(dá)到8位或者多于8位(即pos>8)時(shí),就可以開始輸出了
編碼器緩存控制器流程圖:圖5-6
編碼器緩存控制器流程圖譯碼器緩存控制器的設(shè)計(jì)譯碼器的緩存控制器與編碼器的基本相同,大小設(shè)為8位,當(dāng)存儲的數(shù)據(jù)第一次達(dá)到4位時(shí)開始輸出。
譯碼器緩存控制器流程圖:圖5-6
譯碼器緩存控制器流程圖系統(tǒng)的層次化設(shè)計(jì)層次化設(shè)計(jì)(HierarchicalDesign)在數(shù)字系統(tǒng)設(shè)計(jì)中被廣泛地使用,因?yàn)樗邢旅鎯蓚€(gè)主要的優(yōu)點(diǎn):①一些常用的模塊可以被單獨(dú)創(chuàng)建并存儲,在以后的設(shè)計(jì)中可以直接調(diào)用該模塊,而無需重新設(shè)計(jì);②它使整個(gè)設(shè)計(jì)更結(jié)構(gòu)化,程序也具有更高的可讀性:頂層文件只將一些小模塊整合在一起,這使整個(gè)系統(tǒng)的設(shè)計(jì)思想比較容易被理解。層次化的核心思想有兩個(gè),一個(gè)是模塊化,二是元件重用。①模塊化:可以將一個(gè)大系統(tǒng)劃分為幾個(gè)子模塊,而這些子模塊又分別由更小的模塊組成,由此往下,直至不可再分。這也正是自頂向下(Top-Down)的設(shè)計(jì)方法。每個(gè)實(shí)體可以看成上一層的一個(gè)模塊或元件(component),系統(tǒng)就像搭積木一樣一層一層地構(gòu)建。②元件重用(reuse):同一個(gè)元件可以被不同的設(shè)計(jì)實(shí)體調(diào)用,也可以被同一個(gè)設(shè)計(jì)實(shí)體多次調(diào)用。元件重用不但大大減輕了設(shè)計(jì)者的工作量,而且使程序更結(jié)構(gòu)化和具有更高的可讀性。在第四章中已經(jīng)對MAX+plusII中層次化設(shè)計(jì)的操作步驟作了介紹,這里主要介紹如何在前面設(shè)計(jì)的狀態(tài)機(jī)和緩存控制器的基礎(chǔ)上將他們組合成一個(gè)Franaszek編譯碼器。5.4.1LPM_ROM的設(shè)置
根據(jù)設(shè)計(jì)要求,需要將編碼器和譯碼器的碼字保存在ROM中,這里使用FLEX10K器件中的EAB模塊,在圖形編輯器中添加一個(gè)LPM_ROM模塊,各參數(shù)的設(shè)定值如圖圖5-7
編碼器ROM的參數(shù)
圖5-8
譯碼器ROM的參數(shù)參數(shù)名功能LPM_ADDRESS_CONTROL設(shè)定address是寄存還是非寄存LPM_FILEmif文件或hex文件的位置LPM_NUMWORDSROM存放的字?jǐn)?shù)LPM_OUTDATAq端口是被寄存還是非寄存LPM_WIDTH設(shè)定q端口的數(shù)據(jù)位數(shù)LPM_WIDTHAD設(shè)定地址端口address的數(shù)據(jù)位數(shù)表3
各參數(shù)的意義
這里將ROM配置為異步方式,輸出的數(shù)據(jù)根據(jù)地址
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川雅茶集團(tuán)茶業(yè)有限公司2024年第一期公開招聘人員總排名及考察人員筆試參考題庫附帶答案詳解
- 焦炭買賣合同范本
- 應(yīng)用類課題申報(bào)書范文
- 2025至2030年中國卡箍式膠管接頭數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國十四孔枕數(shù)據(jù)監(jiān)測研究報(bào)告
- 高中物理-2.2-2.3晶體的微觀結(jié)構(gòu)-固體新材料課時(shí)作業(yè)(含解析)粵教版選修3-3
- 臨時(shí)勞務(wù)派遣合同范本
- 二零二五年度校外住宿學(xué)生安全協(xié)議及風(fēng)險(xiǎn)管理合同
- 傳染病終末消毒處理流程
- 二零二五年度高端公寓租賃管理服務(wù)合同范本
- 2025年黑龍江交通職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫必考題
- 個(gè)人畫協(xié)議合同范本
- 2024-2025學(xué)年高一下學(xué)期開學(xué)第一節(jié)課(哪吒精神)主題班會課件
- 人教版2025-初中物理實(shí)驗(yàn)室實(shí)驗(yàn)課程安排
- 2024年無錫科技職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 舞蹈藝術(shù)賞析課件
- 2025江蘇泰州興化市陳堡鎮(zhèn)村級后備干部招聘10人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中冶建工集團(tuán)限公司校園招聘114人高頻重點(diǎn)提升(共500題)附帶答案詳解
- (完整版)python學(xué)習(xí)課件
- CNAS-RL01:2019實(shí)驗(yàn)室認(rèn)可規(guī)則
- 2025中國人民解放軍空軍部隊(duì)軍工廠招聘21人管理單位筆試遴選500模擬題附帶答案詳解
評論
0/150
提交評論