![基于VerilogHDL的鬧鐘設(shè)計說明_第1頁](http://file4.renrendoc.com/view/8f7843733574f709cd3b563926975936/8f7843733574f709cd3b5639269759361.gif)
![基于VerilogHDL的鬧鐘設(shè)計說明_第2頁](http://file4.renrendoc.com/view/8f7843733574f709cd3b563926975936/8f7843733574f709cd3b5639269759362.gif)
![基于VerilogHDL的鬧鐘設(shè)計說明_第3頁](http://file4.renrendoc.com/view/8f7843733574f709cd3b563926975936/8f7843733574f709cd3b5639269759363.gif)
![基于VerilogHDL的鬧鐘設(shè)計說明_第4頁](http://file4.renrendoc.com/view/8f7843733574f709cd3b563926975936/8f7843733574f709cd3b5639269759364.gif)
![基于VerilogHDL的鬧鐘設(shè)計說明_第5頁](http://file4.renrendoc.com/view/8f7843733574f709cd3b563926975936/8f7843733574f709cd3b5639269759365.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
.PAGE.....封面刪除~你懂的..摘要隨著微電子技術(shù)、計算機技術(shù)、半導體技術(shù)的發(fā)展,很多傳統(tǒng)的數(shù)字門電路的設(shè)計已經(jīng)被可編程邏輯器件替代。而對于傳統(tǒng)的模擬控制技術(shù),也被數(shù)字控制系統(tǒng)所取代。數(shù)字系統(tǒng)在各個領(lǐng)域顯示出了無窮的魅力與優(yōu)勢,如今已經(jīng)被廣泛應(yīng)用于實際工程中。本文利用VerilogHDL語言自頂向下的設(shè)計方法設(shè)計多功能數(shù)字鐘,實現(xiàn)時、分、秒的計時和校時,以及整點報時和鬧鐘的功能。突出了其作為硬件描述語言的良好的可讀性、可移植性和易理解等優(yōu)點,并通過ModelSimSE6.5完成綜合、仿真。通過VerilogHDL語言完成數(shù)字鐘的層次化設(shè)計。關(guān)鍵詞:數(shù)字電子時鐘,有限狀態(tài)機,功能仿真AbstractAsthemicroelectronics,computertechnology,semiconductortechnology,manytraditionaldesignofdigitalgateprogrammablelogicdevicehasbeenreplaced.Asforthetraditionalanalogcontrol,digitalcontrolsystemshavealsobeenreplaced.Digitalsystemsinvariousfieldshasshowninfinitecharmandadvantages,andnowhasbeenwidelyusedinpracticalprojects.Inthispaper,VerilogHDL,thedesignoftop-downmulti-functionaldigitalclockdesignedtoachievethehours,minutes,seconds,timeandschool,aswellasthewholepointtimekeepingandalarmfunctions.Highlightedasahardwaredescriptionlanguage,goodreadability,portabilityandeaseofunderstanding,etc.,andthroughtheModelSimSE6.5completethecomprehensive,simulation.CompletedbyVerilogHDL,thelevelofthedigitalclockdesign.Keywords:Digitalelectronicclock,finitestatemachine,functionalsimulation...目錄第1章緒論11.1時鐘的發(fā)展簡史11.2設(shè)計目的………………11.3VerilogHDL硬件描述語言21.4Modelsim仿真工具5第2章數(shù)字電路設(shè)計方法72.1數(shù)字系統(tǒng)設(shè)計簡介72.2有限狀態(tài)機9第3章數(shù)字鐘的層次化設(shè)計…133.1功能要求………133.2數(shù)字鐘系統(tǒng)的工作原理133.3模塊的設(shè)計……………….…………133.4程序設(shè)計14第4章功能仿真…….……194.1仿真前準備194.2功能仿真20第5章總結(jié)23參考文獻26..第1章緒論1.1時鐘的發(fā)展簡史設(shè)計目的公元1300年以前,人類主要是利用天文現(xiàn)象和流動物質(zhì)的連續(xù)運動來計時。例如,日晷是利用日影的方位計時;漏壺和沙漏是利用水流和沙流的流量計時。東漢張衡制造漏水轉(zhuǎn)渾天儀,用齒輪系統(tǒng)把渾象和計時漏壺聯(lián)結(jié)起來,漏壺滴水推動渾象均勻地旋轉(zhuǎn),一天剛好轉(zhuǎn)一周,這是最早出現(xiàn)的機械鐘。北宋元祜三年<1088>蘇頌和韓公廉等創(chuàng)制水運儀象臺,已運用了擒縱機構(gòu)。1350年,意大利的丹蒂制造出第一臺結(jié)構(gòu)簡單的機械打點塔鐘,日差為15~30分鐘,指示機構(gòu)只有時針;1500~1510年,德國的亨萊思首先用鋼發(fā)條代替重錘,創(chuàng)造了用冕狀輪擒縱機構(gòu)的小型機械鐘;1582年前后,意大利的伽利略發(fā)明了重力擺;1657年,荷蘭的惠更斯把重力擺引入機械鐘,創(chuàng)立了擺鐘。1660年英國的胡克發(fā)明游絲,并用后退式擒縱機構(gòu)代替了冕狀輪擒縱機構(gòu);1673年,惠更斯又將擺輪游絲組成的調(diào)速器應(yīng)用在可攜帶的鐘表上;1675年,英國的克萊門特用叉瓦裝置制成最簡單的錨式擒縱機構(gòu),這種機構(gòu)一直沿用在簡便擺錘式掛鐘中。1695年,英國的湯姆平發(fā)明工字輪擒縱機構(gòu);1715年,英國的格雷厄姆又發(fā)明了靜止式擒縱機構(gòu),彌補了后退式擒縱機構(gòu)的不足,為發(fā)展精密機械鐘表打下了基礎(chǔ);1765年,英國的馬奇發(fā)明自由錨式擒縱機構(gòu),即現(xiàn)代叉瓦式擒縱機構(gòu)的前身;1728~1759年,英國的哈里森制造出高精度的標準航海鐘;1775~1780年,英國的阿諾德創(chuàng)造出精密表用擒縱機構(gòu)。18~19世紀,鐘表制造業(yè)已逐步實現(xiàn)工業(yè)化生產(chǎn),并達到相當高的水平。20世紀,隨著電子工業(yè)的迅速發(fā)展,電池驅(qū)動鐘、交流電鐘、電機械表、指針式石英電子鐘表、數(shù)字式石英電子鐘表相繼問世,鐘表的日差已小于0.5秒,鐘表進入了微電子技術(shù)與精密機械相結(jié)合的石英化新時期。1.2設(shè)計目的掌握各類計數(shù)器及將他們相連的方法掌握多個數(shù)碼管動態(tài)顯示的原理與方法掌握用FPGA技術(shù)的層次化設(shè)計方法進一步掌握用Verilog硬件描述語言的設(shè)計思想了解相關(guān)數(shù)字系統(tǒng)的設(shè)計1.3VerilogHDL硬件描述語言VerilogHDL的發(fā)展過程與編程特點VerilogHDL是一種硬件描述語言〔HDL:HardwareDiscriptionLanguage,是一種以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。VerilogHDL就是在用途最廣泛的C語言的基礎(chǔ)上發(fā)展起來的一種件描述語言,它是由GDA<GatewayDesignAutomation>公司的PhilMoorby在1983年末首創(chuàng)的,最初只設(shè)計了一個仿真與驗證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時序分析工具。1985年Moorby推出它的第三個商用仿真器Verilog-XL,獲得了巨大的成功,從而使得VerilogHDL迅速得到推廣應(yīng)用。VerilogHDL充分保留了C語言簡潔、高效的編程風格,其中有許多語句和C語言中的語句十分相似,如if語句、case語句等。VerilogHDL的基本結(jié)構(gòu)1模塊的基本結(jié)構(gòu)模塊是VerilogDHL語言的基本單元。一個模塊可以大道代表一個完整的系統(tǒng),也可以小到僅代表最基本的邏輯單元。模塊內(nèi)部具體行為的描述或?qū)崿F(xiàn)方式的改變,并不會影響該模塊與外部之間的連接關(guān)系。一個Verilog模塊可被任意多個其他模塊所調(diào)用,但由于VerilogHDL所描述的是具體的硬件電路,一個模塊代表具有特定功能的一個電路塊,每當它被某個其他模塊調(diào)用一次,則在該模塊內(nèi)部,被調(diào)用的模塊將原原本本的復(fù)制一次。一個完整的VerilogHDL模塊由以下五部分組成。<1>模塊定義行。這一行以module開頭,接著給出所定義模塊的模塊名,模塊名是模塊唯一的標識符;之后的括號內(nèi)給出的是端口名列表,端口名列表是由模塊的各個輸入、輸出和雙向端口組成的一張端口列表,這些端口用來與其他模塊進行連接;最后以分號結(jié)束。當無端口名列表時,括號可省去。<2>端口類型說明接在模塊定義行后面的是對端口類型的說明,凡是出現(xiàn)在端口名列表中的端口,都必須顯示說明其端口類型。<3>數(shù)據(jù)類型說明VerilogHDL支持的數(shù)據(jù)類型有連線類和寄存器類兩個大類,每個大類有細分為多種具體的數(shù)據(jù)類型。數(shù)據(jù)類型定義部分用來指定模塊內(nèi)用到的數(shù)據(jù)對象為寄存器型或連線型,除了1位寬的wire類可缺省外,其他將在后面的描述中出現(xiàn)的變量都應(yīng)給出相應(yīng)的數(shù)據(jù)類型說明。<4>描述部分本部分具體展開對模塊功能的描述。<5>結(jié)束行結(jié)束行是用關(guān)鍵詞endmodule標志模塊定義的結(jié)束。2>模塊的描述在模塊的功能描述中,可用下述方式描述一個設(shè)計:數(shù)據(jù)流方式;行為方式;結(jié)構(gòu)方式;上述描述方式的混合。下面分別介紹模塊的這幾種描述方式。<1>數(shù)據(jù)流描述方式數(shù)據(jù)流型描述主要用來描述組合功能,具體由"assign"連續(xù)賦值語句來實現(xiàn)。<2>行為描述方式行為描述時一種高級語言使用到的方法,Verilog中的行為描述方式具有很強的通用性。行為描述是通過行為語句來實現(xiàn)的,行為功能可使用下述過程語句結(jié)構(gòu)描述。Initial語句:此語句只執(zhí)行一次。Always語句:此語句循環(huán)執(zhí)行。<3>結(jié)構(gòu)描述方式結(jié)構(gòu)描述方式是通過實例進行描述的方法。它將Verilog中預(yù)定義的基本元件實例嵌入到語言中,監(jiān)控實例的輸入,一但其中任何一個發(fā)生變化,便重新運算并輸出。<4>混合型描述方式在模塊中,用戶可以混合使用以上幾種描述方式,也就是說,模塊中可以包含門的實例、模塊實例語句、連續(xù)賦值語句、always語句和initial語句以及它們的混合語句,并且它們之間可以相互包含。VerilogHDL的層次設(shè)計實現(xiàn)過程用VerilogHDL進行硬件設(shè)計的過程實質(zhì)上是把構(gòu)成硬件系統(tǒng)的各功能模塊進行Verilog描述,也可以使結(jié)構(gòu)描述,前者側(cè)重刻畫模塊所具有的行為特征,后者側(cè)重反映模塊內(nèi)部的具體構(gòu)造。通常一個硬件系統(tǒng)是由多個不同的功能模塊所組成的,因而總會存在這樣一個模塊,他用結(jié)構(gòu)描述的方法,將構(gòu)成硬件系統(tǒng)的所有功能模塊連接起來,這個模塊就是系統(tǒng)的頂層模塊。相對于頂層模塊,其他的模塊就是低一層次的模塊。在對低一層次的模塊進行描述時,如果有必要,可以同樣用結(jié)構(gòu)描述的方法,把模塊的內(nèi)部結(jié)構(gòu)進一步具體的刻畫出來,相對于頂層模塊而言,用于構(gòu)造低一層次模塊的結(jié)構(gòu)單元就屬于更低一個層次。因而隨著設(shè)計過程的展開,一個硬件系統(tǒng)的構(gòu)造逐漸由頂層走向底層,各個功能模塊的內(nèi)部結(jié)構(gòu)逐漸得到深化和細化,整個設(shè)計過程因而被稱之為一個自頂向下的分級設(shè)計過程。在這個自頂向下的設(shè)計過程的任何階段,都可以利用仿真工具對處于設(shè)計過程中的系統(tǒng)描述進行性能評估與正確性檢測。在自頂向下的設(shè)計過程中,對于上層模塊來說,只需要知道某個模塊的名稱與端口類型,就可把它作為自己的一個下層模塊進行調(diào)用。至于下層模塊的具體實現(xiàn)方式,或者從一種實現(xiàn)方式轉(zhuǎn)換到另一種實現(xiàn)方式,都不會對上層模塊的描述產(chǎn)生任何影響。這是自頂向下設(shè)計方法一個突出的優(yōu)點。在設(shè)計過程中,通過仿真測試,如果發(fā)現(xiàn)性能不夠理想,或者發(fā)現(xiàn)任何錯誤,只需對存在問題的低層的描述或?qū)崿F(xiàn)方式進行修改或調(diào)整,而不必對上層結(jié)構(gòu)進行任何改變。所謂的頂層和底層都是相對的。在實際設(shè)計過程中,總是把當前正在實現(xiàn)的模塊作為一個局部的頂層模塊,在完成描述后,先單獨對他進行仿真測試,在驗證其正確性后在加入需要調(diào)用它的模塊中,而成為整個系統(tǒng)設(shè)計中某一個層次的功能模塊,一個大的電子系統(tǒng)設(shè)計就是這樣從頂層到底層,邊設(shè)計,邊仿真,并依據(jù)仿真結(jié)果,反復(fù)調(diào)整或優(yōu)化的過程。1.4Modelsim仿真工具ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真器。它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。是作FPGA/ASIC設(shè)計的RTL級和門級電路仿真的首選,它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段。全面支持VHDL和Verilog語言的IEEE標準,支持C/C++功能調(diào)用和調(diào)試。ModelSim專業(yè)版,具有快速的仿真性能和最先進的調(diào)試能力,全面支持UNIX<包括64位>、Linux和Windows平臺。主要特點:RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快;單內(nèi)核VHDL和Verilog混合仿真;源代碼模版和助手,項目管理;集成了性能分析、波形比較、代碼覆蓋等功能;數(shù)據(jù)流ChaseX;SignalSpy;C和Tcl/Tk接口,C調(diào)試。是業(yè)界唯一單一內(nèi)核支持VHDL、VerilogHDL和SystemC混合仿真的仿真器同時也支持業(yè)界最廣泛的標準如Verilog2001、SystemVerilog等,內(nèi)部集成了用于C/C++,PLI/FLI和SystemC的集成C調(diào)試器。支持眾多的ASIC和FPGA廠家?guī)?可以用于FPGA和ASIC設(shè)計的RTL級和門級電路仿真。下面圖1.1為modelsim的主界面。圖1.1modelsim主界面ModelSim最大的特點是其強大的調(diào)試功能:先進的數(shù)據(jù)流窗口,可以迅速追蹤到產(chǎn)生不定或者錯誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測試的完備;多種模式的波形比較功能;先進的SignalSpy功能,可以方便地訪問VHDL或者VHDL和Verilog混合設(shè)計中的底層信號;支持加密IP;可以實現(xiàn)與Matlab的Simulink的聯(lián)合仿真。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級的版本而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSimXE為例,對于代碼少于40000行的設(shè)計,ModelSimSE比ModelSimXE要快10倍;對于代碼超過40000行的設(shè)計,ModelSimSE要比ModelSimXE快近40倍。以下列表介紹了OEM版本〔以Xilinx公司提供的ModelSimXE版本為例與ModelSimSE版本之間的差異。ModelSimSE支持PC、UNIX和LINUX混合平臺;提供全面完善以及高性能的驗證功能;全面支持業(yè)界廣泛的標準;MentorGraphics公司提供業(yè)界最好的技術(shù)支持與服務(wù)。第2章數(shù)字電路設(shè)計方法2.1數(shù)字系統(tǒng)設(shè)計簡介2.1.1從概念上講,凡是利用數(shù)字技術(shù)處理和傳輸信息的系統(tǒng)都可以稱為數(shù)字系統(tǒng)。通常把門電路、觸發(fā)器等稱為邏輯器件。將由邏輯器件構(gòu)成,能執(zhí)行某單一功能的電路,如計數(shù)器、譯碼器、加法器等稱為邏輯功能部件,把有邏輯功能部件組成的能實現(xiàn)復(fù)雜功能的數(shù)字電路稱為數(shù)字系統(tǒng)。復(fù)雜的數(shù)字系統(tǒng)可以分割稱為若干個子系統(tǒng),例如,計算機就是一個內(nèi)部結(jié)構(gòu)相當復(fù)雜的數(shù)字系統(tǒng)。近幾年來,IC技術(shù)的發(fā)展日新月異,而最具有代表性的IC芯片主要包括以下幾類:微控制芯片〔MCU;可編程邏輯器件〔PLD;數(shù)字信號處理器〔DSP;大規(guī)模存儲芯片〔RAM&ROM。這幾類器件在最近20年均取得了長足的發(fā)展,無論是芯片的規(guī)模還是性能都有了巨大的提高,構(gòu)成了現(xiàn)代數(shù)字系統(tǒng)的基石。數(shù)字系統(tǒng)設(shè)計方法數(shù)字系統(tǒng)一般由控制電路、多個受控電路、輸入/輸出電路、時基電路等幾部分構(gòu)成,如圖2.1所示。圖2.1數(shù)字系統(tǒng)設(shè)計方法構(gòu)成圖一般來說,電子系統(tǒng)的設(shè)計有兩種思路,一種是自下而上的設(shè)計思路,一種自上而下的設(shè)計思路。<1>自下而上的設(shè)計自下而上的設(shè)計,也可稱為自底向上的設(shè)計,過程從最底層設(shè)計開始。設(shè)計系統(tǒng)硬件時,首先選擇具體的元器件,用這些元器件通過邏輯電路設(shè)計,完成系統(tǒng)中各獨立功能模塊的設(shè)計,再把這些功能模塊連接起來,總裝成完整的硬件系統(tǒng)。<2>自上而下的設(shè)計自上而下的設(shè)計,也可稱為自頂向下的設(shè)計。它是目前常用的數(shù)字系統(tǒng)設(shè)計方法,也是基于芯片的系統(tǒng)設(shè)計的主要方法。它在功能劃分、任務(wù)分配及設(shè)計管理上有一定的長處。數(shù)字系統(tǒng)設(shè)計流程數(shù)字系統(tǒng)的設(shè)計可分為四個層次,即系統(tǒng)級設(shè)計、電路級設(shè)計、芯片級設(shè)計和電路板級設(shè)計。相應(yīng)的,從提出設(shè)計要求到完成系統(tǒng)成品,數(shù)字系統(tǒng)設(shè)計可分為以下幾個步驟:系統(tǒng)設(shè)計、電路設(shè)計、芯片設(shè)計、PCB設(shè)計、結(jié)構(gòu)設(shè)計及電路調(diào)試和系統(tǒng)調(diào)試,如圖2.2所示。圖2.2數(shù)字系統(tǒng)設(shè)計流程圖數(shù)字系統(tǒng)設(shè)計準則進行數(shù)字系統(tǒng)設(shè)計時,通常需要考慮多方面的條件和要求。如設(shè)計的功能和性能要求,元器件的資源分配和設(shè)計工具的可實現(xiàn)性,系統(tǒng)的開發(fā)費用和成本等。雖然具體設(shè)計的條件和要求千差萬別,實現(xiàn)方法也個各相同,但數(shù)字系統(tǒng)設(shè)計還是具備一些共同的方法和準則。分割準則自頂向下設(shè)計方法或其他層次化設(shè)計方法需要對系統(tǒng)功能進行分割,然后用邏輯語言進行描述。分割過程中,若分割過粗,則不易用邏輯語言表達;若分割過細,則會帶來不必要的充分和繁瑣。因此,分割合適與否對系統(tǒng)設(shè)計是否方便有著至關(guān)重要的影響。系統(tǒng)的可觀測性一個系統(tǒng)除了引腳上的信號外,系統(tǒng)內(nèi)部的狀態(tài)也是需要測試的內(nèi)容。因此,在系統(tǒng)設(shè)計中,應(yīng)該同時考慮功能檢查和性能的測試,即系統(tǒng)觀測性的問題。系統(tǒng)的穩(wěn)定性設(shè)計時應(yīng)注意采取措施避免競爭和增加系統(tǒng)穩(wěn)定性。最優(yōu)化設(shè)計設(shè)計中常見的最優(yōu)化目標有:〔1器件資源利用率最高;〔2系統(tǒng)工作速度最快,即延時最??;〔3布線最容易。2.2有限狀態(tài)機有限狀態(tài)機簡介有限狀態(tài)機〔FSM又稱為有限狀態(tài)自動機或簡稱狀態(tài)機,是表示有限個狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動作的數(shù)學模型。一般來說,除了輸入部分和輸出部分外,狀態(tài)機還含有一組具有"記憶"功能的寄存器,這些寄存器的功能是記憶有限狀態(tài)機的內(nèi)部狀態(tài),他們常被稱為狀態(tài)寄存器。其中,寄存器邏輯的功能是存儲有限狀態(tài)機的內(nèi)部狀態(tài);而組合和邏輯又可分為次態(tài)邏輯和輸出邏輯兩部分,次態(tài)邏輯的功能是確定有限狀態(tài)機的下一個狀態(tài),輸出邏輯的功能是確定有限狀態(tài)機的輸出。在實際應(yīng)用中,根據(jù)有限狀態(tài)機的輸出信號是否與輸入信號有關(guān),將其分為Moore〔莫爾型有限狀態(tài)機和Mealy〔米里型有限狀態(tài)機兩種類型。Moore型狀態(tài)機輸出信號僅與當前狀態(tài)有關(guān),如圖2.3。即可以把Moore型有限狀態(tài)的輸出看成是當前狀態(tài)的函數(shù)。Mealy型狀態(tài)機輸出信號不僅與當前狀態(tài)有關(guān),而且還與輸入信號有關(guān),如圖2.4即可以把Mealy型狀態(tài)機的輸出看成是當前狀態(tài)和輸入信號的函數(shù)。圖2.3Moore函數(shù)圖輸出輸出邏輯輸出當前狀態(tài)激勵輸入輸出當前狀態(tài)激勵輸入狀態(tài)寄存器狀態(tài)寄存器下一個邏輯狀態(tài)時鐘信號時鐘信號圖2.4Mealy函數(shù)圖需要注意的是Mealy型狀態(tài)機的輸出是當前狀態(tài)和輸入信號的函數(shù),它的輸出是在輸入變化后立即發(fā)生的,不依賴時鐘的同步。而Moore型狀態(tài)機僅為當前狀態(tài)的函數(shù),這類狀態(tài)機在輸入發(fā)生變化后,還必須等待時鐘的到來,時鐘使狀態(tài)發(fā)生變化才導致輸出的變化,所以比Mealy要多等待一個時鐘周期。有限狀態(tài)機的編碼方案在狀態(tài)機的編碼方案中,有兩種重要的編碼方法:二進制編碼和一位熱碼<One—Hot>編碼。在二進制編碼的狀態(tài)機中,狀態(tài)位<B>與狀態(tài)<S>的數(shù)目之間的關(guān)系為B=log2S,如兩位狀態(tài)位就有00,01,10,11四個不同狀態(tài),它們在不同的控制信號下可以進行狀態(tài)轉(zhuǎn)換,但如果各觸發(fā)器又沒有準確地同時改變其輸出值,那么在狀態(tài)01變到10時則會出現(xiàn)暫時的11或00狀態(tài)輸出,這類險象可能使整個系統(tǒng)造成不可預(yù)測的結(jié)果。這時,采用格雷碼二進制編碼是特別有益,在該編碼方案中,每次僅一個狀態(tài)位的值發(fā)生變化。一位熱碼編碼就是用n個觸發(fā)器來實現(xiàn)n個狀態(tài)的編碼方式,狀態(tài)機中的每一個狀態(tài)都由其中一個觸發(fā)器的狀態(tài)來表示。如4個狀態(tài)的狀態(tài)機需4個觸發(fā)器,同一時間僅一個狀態(tài)位處于邏輯1電平,四個狀態(tài)分別為:0001、0010、0100、1000。在實際應(yīng)用中,根據(jù)狀態(tài)機的復(fù)雜程度、所使用的器件系列和從非法狀態(tài)退出所需的條件來選擇最適合的編碼方案,使之能確保高效的性能和資源的利用。對復(fù)雜的狀態(tài)機,二進制編碼需用的觸發(fā)器的數(shù)目比一位熱碼編碼的少。如100個狀態(tài)的狀態(tài)機按二進制編碼僅用7個觸發(fā)器就可以實現(xiàn),而一位熱碼編碼則要求100個觸發(fā)器。另一方面,雖然一位熱碼編碼要求用較多的觸發(fā)器,但邏輯上通常相對簡單些。在二進制編碼的狀態(tài)機中,控制從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)的邏輯與所有7個狀態(tài)位以及狀態(tài)機的輸入均有關(guān)。這類邏輯通常要求到狀態(tài)位輸入的函數(shù)是多輸入變量的。然而,在一熱戀位編碼的狀態(tài)機中,到狀態(tài)位的輸入常常是其它狀態(tài)位的簡單函數(shù)。站在器件結(jié)構(gòu)的角度,不同結(jié)構(gòu)支持其確定的編碼類型。MAX+plusII編譯程序?qū)λ捎玫钠骷盗凶詣拥剡x擇最合適的編碼方法〔除非在設(shè)計文件中規(guī)定了具體的編碼方案。例如,FLEX7000器件系列是寄存器增強型〔Register-intensive,以這類器件為對象的狀態(tài)機最好選用一位熱碼編碼方案來實現(xiàn)。由于一位熱碼編碼的狀態(tài)機降低了送到每一個狀態(tài)位的邏輯電路的復(fù)雜程度,因而可提高用FLEX7000器件實現(xiàn)的狀態(tài)機的性能。MAX5000和MAX7000器件系列最適合二進制狀態(tài)機編碼方案。這兩類器件都能夠利用共享和并聯(lián)的擴展乘積項有效地實現(xiàn)復(fù)雜的邏輯函數(shù)。因此,在這兩類器件小,可以容納復(fù)雜的組合邏輯函數(shù)而不會浪費資源或損失性能。有限狀態(tài)機的一般設(shè)計步驟用VerilogHDL進行有限狀態(tài)機的設(shè)計時,主要是用always和case語句來描述模塊的功能,一般來說,它們可以采用以下幾個步驟來進行:通過邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖或狀態(tài)表首先,通過分析給定的邏輯問題,確定輸入變量、輸出變量以及電路的狀態(tài)數(shù),通常是把設(shè)計給定的條件作為輸入變量,把得到的結(jié)果作為輸出變量;然后,定義輸入、輸出邏輯狀態(tài)的含義,并將電路狀態(tài)順序編號;最后,按照要求列出電路的狀態(tài)轉(zhuǎn)換表或畫出狀態(tài)轉(zhuǎn)換圖就可以了。狀態(tài)化簡初次確定的狀態(tài),通常會出現(xiàn)重復(fù)的狀態(tài),即它們在相同的輸入下轉(zhuǎn)換到同一狀態(tài)去,并得到一樣的輸出。這樣的狀態(tài)可以合并為一個。電路的狀態(tài)數(shù)越少,存儲電路也就越簡單。狀態(tài)簡化的目的就是要將重復(fù)的狀態(tài)盡可能的合并,以得到最簡單的狀態(tài)裝換圖。狀態(tài)分配狀態(tài)分配又稱狀態(tài)編碼。通常有很多編碼方法,編碼方案選擇得當,設(shè)計的電路可以很簡單;反之,選的不好,則設(shè)計的電路就會復(fù)雜很多。實際設(shè)計時,需綜合考慮電路復(fù)雜度與電路性能之間的折中。在觸發(fā)器資源豐富的FPGA或ASIC設(shè)計中,采用獨熱編碼,既可以使電路性能得到保證,又可充分利用觸發(fā)器數(shù)量多的優(yōu)勢。根據(jù)畫好的狀態(tài)轉(zhuǎn)換圖或狀態(tài)表,用VerilogHDL編寫程序。用VerilogHDL來描述有限狀態(tài)機,通過使用always塊語句和case〔if等條件語句及賦值語句即可方便實現(xiàn),而不必去考慮邏輯化簡等問題,那些問題可以通過計算機自動完成。第3章數(shù)字鐘的層次化的設(shè)計3.1功能要求設(shè)計一個具有時、分、秒計時功能的電子鐘電路。按照層次化的設(shè)計方法將數(shù)字鐘的功能劃分為三個功能塊:計時電路,顯示電路,和擴展電路。要求在準確計時的基礎(chǔ)上具有校時、校分的功能,定時鬧鐘的功能和整點報時的功能。3.2數(shù)字鐘系統(tǒng)的工作原理向秒計數(shù)器提供秒脈沖信號,秒計數(shù)器記滿60后向分計數(shù)器進位,分計數(shù)器記滿60后向小時計數(shù)器進位,小時計數(shù)器按照24進制規(guī)律計數(shù)。計數(shù)器的輸出經(jīng)譯碼器送顯示器,即顯示時間。計時出現(xiàn)誤差可以用校時電路進行校時、校分。在計時主體電路正確運行的況下,進行功能擴展,實現(xiàn)仿電臺報時和鬧鐘功能。3.3模塊的設(shè)計數(shù)字鐘可以劃分為三個功能塊:1.計時電路;2.顯示電路;3.擴展電路。這些模塊又可分割為更小的模塊。計時電路包括校時電路和計數(shù)器兩個部分。計數(shù)器的功能是完成小時、分鐘、秒鐘的計時,因此又可繼續(xù)分割為二十四進制和六十進制計數(shù)器;校時電路的作用是對小時和分鐘的誤差進行調(diào)整,可設(shè)置兩個按鍵,分別予以控制。顯示電路的作用是將計時電路產(chǎn)生的幾十只在數(shù)碼管上進行顯示,通過七段譯碼后,驅(qū)動LED數(shù)碼管,然后在計時電路正確的情況下實現(xiàn)兩個擴展功能。設(shè)計圖如圖3.1數(shù)字鐘數(shù)字鐘功能擴展鬧鐘偽電臺報時計時電路顯示電路校時電路計數(shù)器二十四進制小時計數(shù)器六十進制秒計數(shù)器六十進制分計數(shù)器圖3.1模塊設(shè)計3.4程序設(shè)計.計時電路設(shè)計<1>六十進制計數(shù)器。modulecnt60<clk,qs,co>;inputclk;output[7:0]qs=0;outputco=0;reg[7:0]qs;regco;always<posedgeclk>beginif<qs[7:4]!=4'b0101>beginif<qs[3:0]==4'b1001>beginqs[7:4]<=qs[7:4]+4'b0001;qs[3:0]<=4'b0000;co<=1'b0;endelsebeginqs[7:4]<=qs[7:4];qs[3:0]<=qs[3:0]+4'b0001;co<=1'b0;endendelseif<qs[3:0]==4'b1001>beginqs[7:4]<=4'b0000;qs[3:0]<=4'b0000;co<=1'b1;endelsebeginqs[7:4]<=qs[7:4];qs[3:0]<=qs[3:0]+4'b0001;co<=1'b0;endendendmodule<2>二十四進制計數(shù)器modulecnt24<qh,clk>;inputclk;output[7:0]qh=0;reg[7:0]qh;always<posedgeclk>beginif<qh[7:4]!=2>beginif<qh[3:0]==4'b1001>beginqh[7:4]<=qh[7:4]+4'b0001;qh[3:0]<=4'b0000;endelsebeginqh[7:4]<=qh[7:4];qh[3:0]<=qh[3:0]+4'b0001;endendelseif<qh[3:0]==4'b0011>beginqh[7:4]<=4'b0000;qh[3:0]<=4'b0000;endelsebeginqh[7:4]<=qh[7:4];qh[3:0]<=qh[3:0]+4'b0001;endendendmodule2>校時電路設(shè)計moduleadjust<clk,co1,co2,set1,set2,clk1,clk2>;inputclk,set1,set2,co1,co2;outputclk1,clk2;assignclk1=set1?clk:co1;assignclk2=set2?clk:<!set1&&co2>;endmodule3.4.2.modulealarm<clk,qm,qh,qs,sound>;inputclk;input[7:0]qs,qm,qh;outputsound;wirebell,noise;regcp;always<posedgeclk>begincp<=~cp;endassignnoise=<qh==8'h7>&&<qm==8'h30>&&clk;assignbell=<<qs==8'h51||qs==8'h53||qs==8'h55||qs==8'h57>&&<qm==8'h59>&&cp>||<<qs==8'h59>&&<qm==8'h59>&&clk>;assignsound=noise|bell;endmodule3.4.3.moduletop<clk1,clk2,set1,set2,qs,qm,qh,sound>;inputclk1,clk2,set1,set2;output[7:0]qm,qh,qs;outputsound;wire[7:0]qs,qm,qh;cnt60s<clk1,qs,co1>;cnt60m<cp1,qm,co2>;cnt24h<qh,cp2>;adjustu1<clk1,co1,co2,set1,set2,cp1,cp2>;alarmu2<clk2,qm,qh,qs,sound>;endmodule模塊說明:計時電路設(shè)計包括計數(shù)器電路設(shè)計和校時電路設(shè)計兩個部分。計數(shù)器電路包含二十四進制和六十進制兩種類型計數(shù)器,分別用于時和秒〔分的計數(shù)。計數(shù)器間采用串行連接方式,由六十進制計數(shù)器在計數(shù)到最大值后產(chǎn)生高電平,作為向前級〔分或時的進位信號。<1>六十進制計數(shù)器。六十進制計數(shù)器完成分和秒的計時,其計數(shù)規(guī)律為:00-01-02-…-58-59-00-01-…clk:1Hz脈沖信號或秒計數(shù)器的進位信號qs:計數(shù)器輸出co:進位脈沖信號模塊最要的部分是clk的定義,首先假定計數(shù)器的高位,也就是十位數(shù)〔高4位不等于5,定義個位數(shù)的累加和進位,當?shù)臀籟3:0]值等于9時,低位值清零,高位[7:4]值+1,當值小于9時,低位[3:0]值+1。else語句定義十位數(shù)等于5的情況,當個位值為9的時候,個位,十位全部清零,并且co進位+1。<2>二十四進制計數(shù)器小時計數(shù)器為二十四進制計數(shù)器,其計數(shù)規(guī)律為:00-01-02-…-09-10-11-12-…18-19-20-21-22-23先定義小時模塊的十位〔高位,當十位不等于2的時候,個位等于9以后,十位值+1,個位清零;個位置小于9時,十位不變,個位置+1。當十位等于2的時候,個位置等于9,全部清零重置;個位小于9,則個位值+1.<3>校時模塊電路進行校時和正常計時的區(qū)別在于,若是分鐘的正常計時,則分鐘計數(shù)器選用秒計數(shù)器的進位信號作為其時鐘信號,而進行分校時,則分鐘計數(shù)器選用1Hz脈沖信號作為其時鐘信號。小時計數(shù)器的時鐘信號選擇原理類似。在校時模塊中,clk1和clk2都采用高電平有效來實現(xiàn)校分和校時,clk1表示分鐘,clk表示小時。set1對應(yīng)的是clk1,set2對應(yīng)clk2。<4>擴展電路sound信號為輸出,clk為1kHz的方波信號,引入分秒時3個計數(shù)器,分別為qm,qs,qh,bell為鬧鐘信號輸出,noise為仿電臺報時信號輸出,在59分51秒的時候開始進行報時,每兩秒一次信號。<4>頂層模塊共有4個輸入clk1、clk2、set1、set2,7個輸出outsl、outsh、outml、outmh、outhl、outhh,分別代表譯碼顯示模塊的秒分時的低位和高位顯示。通過將qs、qm、qh相連接,顯示出完整的時間。第4章功能仿真4.1仿真前準備〔1打開ModelsimSE新建工程:點擊FileNewProject出現(xiàn)圖4.1所示對話框,輸入工程名,點擊OK。圖4.1〔2給工程添加文件:如圖4.2,如若沒有現(xiàn)成文件,則點擊CreatNewFile添加新文件。出現(xiàn)如圖4.3對話框,寫好文件名點擊OK。圖4.2圖4.3〔3把預(yù)先寫好的程序復(fù)制的建好文件中,點擊編譯ComlileComlileAll。如若沒有問題,就可以正式開始仿真啦。4.2功能仿真Testbench如下`timescale100us/100usmoduletop_test;regclk1,clk2,set1,set2;wiresound;wire[7:0]qs,qm,qh;initialbeginclk1=0;clk2=0;endinitialbeginset1=0;#150000set1=1;#50000set1=0;endinitialbeginset2=0;#300000set2=1;#50000set2=0;endalways#5000clk1=~clk1;alwa
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級地理下冊第八章認識區(qū)域:環(huán)境與發(fā)展復(fù)習聽課評課記錄
- 2022版新課標七年級上冊道德與法治第八課探問生命第一課時生命可以永恒嗎聽課評課記錄
- 人教版道德與法治七年級下冊《5.2 在品味情感中成長》聽課評課記錄
- 粵人版地理七年級下冊《第三節(jié) 南亞》聽課評課記錄4
- 北師大版歷史九年級上冊第9課《文藝復(fù)興運動》聽課評課記錄
- 部編版道德與法治九年級1.2《走向共同富?!仿犝n評課記錄
- 星球版地理七年級下冊《第九章 全球化與不平衡發(fā)展》聽課評課記錄2
- 冀教版數(shù)學九年級上冊《反比例函數(shù)的性質(zhì)》聽評課記錄2
- 石家莊市八年級道德與法治下冊中國夢聽課評課記錄(新人教版)
- 中圖版地理八年級下冊《第五節(jié) 俄羅斯》聽課評課記錄2
- 英語主語從句省公開課一等獎全國示范課微課金獎?wù)n件
- 上海天文館分析
- 中醫(yī)睡眠養(yǎng)生中心方案
- 生活中的邏輯學
- 大學生返家鄉(xiāng)社會實踐報告
- 初中生物中考真題(合集)含答案
- 《醫(yī)學免疫學實驗》課件
- C139客戶開發(fā)管理模型
- GB/T 5019.5-2023以云母為基的絕緣材料第5部分:電熱設(shè)備用硬質(zhì)云母板
- 《工傷保險專題》課件
- 2024年農(nóng)發(fā)集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論