




已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
上海海事大學(xué)本科生畢業(yè)設(shè)計(jì) (論文)封面刪除你懂的26摘 要隨著微電子技術(shù)、計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)的發(fā)展,很多傳統(tǒng)的數(shù)字門電路的設(shè)計(jì)已經(jīng)被可編程邏輯器件替代。而對(duì)于傳統(tǒng)的模擬控制技術(shù),也被數(shù)字控制系統(tǒng)所取代。數(shù)字系統(tǒng)在各個(gè)領(lǐng)域顯示出了無窮的魅力與優(yōu)勢(shì),如今已經(jīng)被廣泛應(yīng)用于實(shí)際工程中。本文利用Verilog HDL 語(yǔ)言自頂向下的設(shè)計(jì)方法設(shè)計(jì)多功能數(shù)字鐘, 實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)和校時(shí),以及整點(diǎn)報(bào)時(shí)和鬧鐘的功能。突出了其作為硬件描述語(yǔ)言的良好的可讀性、可移植性和易理解等優(yōu)點(diǎn), 并通過ModelSim SE 6.5 完成綜合、仿真。通過Verilog HDL語(yǔ)言完成數(shù)字鐘的層次化設(shè)計(jì)。關(guān)鍵詞:數(shù)字電子時(shí)鐘,有限狀態(tài)機(jī),功能仿真AbstractAs the microelectronics, computer technology, semiconductor technology, many traditional design of digital gate programmable logic device has been replaced. As for the traditional analog control, digital control systems have also been replaced. Digital systems in various fields has shown infinite charm and advantages, and now has been widely used in practical projects. In this paper, Verilog HDL, the design of top-down multi-functional digital clock designed to achieve the hours, minutes, seconds, time and school, as well as the whole point timekeeping and alarm functions. Highlighted as a hardware description language, good readability, portability and ease of understanding, etc., and through the ModelSim SE 6.5 complete the comprehensive, simulation. Completed by Verilog HDL, the level of the digital clock design.朗讀顯示對(duì)應(yīng)的拉丁字符的拼音字典Key words: Digital electronic clock, finite state machine, functional simulation顯示對(duì)應(yīng)的拉丁字符的拼音字典.目 錄第1章 緒論.11.1時(shí)鐘的發(fā)展簡(jiǎn)史.11.2設(shè)計(jì)目的.11.3Verilog HDL硬件描述語(yǔ)言.21.4Modelsim仿真工具.5第2章 數(shù)字電路設(shè)計(jì)方法.72.1數(shù)字系統(tǒng)設(shè)計(jì)簡(jiǎn)介.72.2有限狀態(tài)機(jī).9第3章 數(shù)字鐘的層次化設(shè)計(jì).133.1功能要求.133.2數(shù)字鐘系統(tǒng)的工作原理.133.3 模塊的設(shè)計(jì).133.4程序設(shè)計(jì).14第4章 功能仿真.194.1 仿真前準(zhǔn)備.194.2 功能仿真.20第5章 總結(jié).23參考文獻(xiàn).26第1章 緒論1.1時(shí)鐘的發(fā)展簡(jiǎn)史設(shè)計(jì)目的公元1300年以前,人類主要是利用天文現(xiàn)象和流動(dòng)物質(zhì)的連續(xù)運(yùn)動(dòng)來計(jì)時(shí)。例如,日晷是利用日影的方位計(jì)時(shí);漏壺和沙漏是利用水流和沙流的流量計(jì)時(shí)。東漢張衡制造漏水轉(zhuǎn)渾天儀,用齒輪系統(tǒng)把渾象和計(jì)時(shí)漏壺聯(lián)結(jié)起來,漏壺滴水推動(dòng)渾象均勻地旋轉(zhuǎn),一天剛好轉(zhuǎn)一周,這是最早出現(xiàn)的機(jī)械鐘。北宋元祜三年(1088)蘇頌和韓公廉等創(chuàng)制水運(yùn)儀象臺(tái),已運(yùn)用了擒縱機(jī)構(gòu)。1350年,意大利的丹蒂制造出第一臺(tái)結(jié)構(gòu)簡(jiǎn)單的機(jī)械打點(diǎn)塔鐘,日差為1530分鐘,指示機(jī)構(gòu)只有時(shí)針;15001510年,德國(guó)的亨萊思首先用鋼發(fā)條代替重錘,創(chuàng)造了用冕狀輪擒縱機(jī)構(gòu)的小型機(jī)械鐘;1582年前后,意大利的伽利略發(fā)明了重力擺;1657年,荷蘭的惠更斯把重力擺引入機(jī)械鐘,創(chuàng)立了擺鐘。1660年英國(guó)的胡克發(fā)明游絲,并用后退式擒縱機(jī)構(gòu)代替了冕狀輪擒縱機(jī)構(gòu);1673年,惠更斯又將擺輪游絲組成的調(diào)速器應(yīng)用在可攜帶的鐘表上;1675年,英國(guó)的克萊門特用叉瓦裝置制成最簡(jiǎn)單的錨式擒縱機(jī)構(gòu),這種機(jī)構(gòu)一直沿用在簡(jiǎn)便擺錘式掛鐘中。1695年,英國(guó)的湯姆平發(fā)明工字輪擒縱機(jī)構(gòu);1715年,英國(guó)的格雷厄姆又發(fā)明了靜止式擒縱機(jī)構(gòu),彌補(bǔ)了后退式擒縱機(jī)構(gòu)的不足,為發(fā)展精密機(jī)械鐘表打下了基礎(chǔ);1765年,英國(guó)的馬奇發(fā)明自由錨式擒縱機(jī)構(gòu),即現(xiàn)代叉瓦式擒縱機(jī)構(gòu)的前身;17281759年,英國(guó)的哈里森制造出高精度的標(biāo)準(zhǔn)航海鐘;17751780年,英國(guó)的阿諾德創(chuàng)造出精密表用擒縱機(jī)構(gòu)。1819世紀(jì),鐘表制造業(yè)已逐步實(shí)現(xiàn)工業(yè)化生產(chǎn),并達(dá)到相當(dāng)高的水平。20世紀(jì),隨著電子工業(yè)的迅速發(fā)展,電池驅(qū)動(dòng)鐘、交流電鐘、電機(jī)械表、指針式石英電子鐘表、數(shù)字式石英電子鐘表相繼問世,鐘表的日差已小于0.5秒,鐘表進(jìn)入了微電子技術(shù)與精密機(jī)械相結(jié)合的石英化新時(shí)期。1.2設(shè)計(jì)目的1. 掌握各類計(jì)數(shù)器及將他們相連的方法2. 掌握多個(gè)數(shù)碼管動(dòng)態(tài)顯示的原理與方法3. 掌握用FPGA技術(shù)的層次化設(shè)計(jì)方法4. 進(jìn)一步掌握用Verilog硬件描述語(yǔ)言的設(shè)計(jì)思想5. 了解相關(guān)數(shù)字系統(tǒng)的設(shè)計(jì)1.3 Verilog HDL硬件描述語(yǔ)言1.3.1Verilog HDL的發(fā)展過程與編程特點(diǎn)Verilog HDL是一種硬件描述語(yǔ)言(HDL:Hardware Discription Language),是一種以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語(yǔ)言,用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。Verilog HDL就是在用途最廣泛的C語(yǔ)言的基礎(chǔ)上發(fā)展起來的一種件描述語(yǔ)言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首創(chuàng)的,最初只設(shè)計(jì)了一個(gè)仿真與驗(yàn)證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時(shí)序分析工具。1985年Moorby推出它的第三個(gè)商用仿真器Verilog-XL,獲得了巨大的成功,從而使得Verilog HDL迅速得到推廣應(yīng)用。Verilog HDL充分保留了C語(yǔ)言簡(jiǎn)潔、高效的編程風(fēng)格,其中有許多語(yǔ)句和C語(yǔ)言中的語(yǔ)句十分相似,如if語(yǔ)句、case語(yǔ)句等。1.3.2Verilog HDL的基本結(jié)構(gòu)1)模塊的基本結(jié)構(gòu)模塊是Verilog DHL語(yǔ)言的基本單元。一個(gè)模塊可以大道代表一個(gè)完整的系統(tǒng),也可以小到僅代表最基本的邏輯單元。模塊內(nèi)部具體行為的描述或?qū)崿F(xiàn)方式的改變,并不會(huì)影響該模塊與外部之間的連接關(guān)系。一個(gè)Verilog模塊可被任意多個(gè)其他模塊所調(diào)用,但由于Verilog HDL所描述的是具體的硬件電路,一個(gè)模塊代表具有特定功能的一個(gè)電路塊,每當(dāng)它被某個(gè)其他模塊調(diào)用一次,則在該模塊內(nèi)部,被調(diào)用的模塊將原原本本的復(fù)制一次。一個(gè)完整的Verilog HDL模塊由以下五部分組成。(1)模塊定義行。 這一行以module開頭,接著給出所定義模塊的模塊名,模塊名是模塊唯一的標(biāo)識(shí)符;之后的括號(hào)內(nèi)給出的是端口名列表,端口名列表是由模塊的各個(gè)輸入、輸出和雙向端口組成的一張端口列表,這些端口用來與其他模塊進(jìn)行連接;最后以分號(hào)結(jié)束。當(dāng)無端口名列表時(shí),括號(hào)可省去。(2)端口類型說明接在模塊定義行后面的是對(duì)端口類型的說明,凡是出現(xiàn)在端口名列表中的端口,都必須顯示說明其端口類型。(3)數(shù)據(jù)類型說明 Verilog HDL支持的數(shù)據(jù)類型有連線類和寄存器類兩個(gè)大類,每個(gè)大類有細(xì)分為多種具體的數(shù)據(jù)類型。數(shù)據(jù)類型定義部分用來指定模塊內(nèi)用到的數(shù)據(jù)對(duì)象為寄存器型或連線型,除了1位寬的wire類可缺省外,其他將在后面的描述中出現(xiàn)的變量都應(yīng)給出相應(yīng)的數(shù)據(jù)類型說明。(4)描述部分 本部分具體展開對(duì)模塊功能的描述。(5)結(jié)束行結(jié)束行是用關(guān)鍵詞endmodule標(biāo)志模塊定義的結(jié)束。 2)模塊的描述在模塊的功能描述中,可用下述方式描述一個(gè)設(shè)計(jì):數(shù)據(jù)流方式;行為方式;結(jié)構(gòu)方式;上述描述方式的混合。下面分別介紹模塊的這幾種描述方式。(1)數(shù)據(jù)流描述方式數(shù)據(jù)流型描述主要用來描述組合功能,具體由“assign”連續(xù)賦值語(yǔ)句來實(shí)現(xiàn)。(2)行為描述方式行為描述時(shí)一種高級(jí)語(yǔ)言使用到的方法,Verilog中的行為描述方式具有很強(qiáng)的通用性。行為描述是通過行為語(yǔ)句來實(shí)現(xiàn)的,行為功能可使用下述過程語(yǔ)句結(jié)構(gòu)描述。Initial語(yǔ)句:此語(yǔ)句只執(zhí)行一次。Always語(yǔ)句:此語(yǔ)句循環(huán)執(zhí)行。(3)結(jié)構(gòu)描述方式結(jié)構(gòu)描述方式是通過實(shí)例進(jìn)行描述的方法。它將Verilog中預(yù)定義的基本元件實(shí)例嵌入到語(yǔ)言中,監(jiān)控實(shí)例的輸入,一但其中任何一個(gè)發(fā)生變化,便重新運(yùn)算并輸出。(4)混合型描述方式在模塊中,用戶可以混合使用以上幾種描述方式,也就是說,模塊中可以包含門的實(shí)例、模塊實(shí)例語(yǔ)句、連續(xù)賦值語(yǔ)句、always語(yǔ)句和initial語(yǔ)句以及它們的混合語(yǔ)句,并且它們之間可以相互包含。1.3.3Verilog HDL的層次設(shè)計(jì)實(shí)現(xiàn)過程用Verilog HDL進(jìn)行硬件設(shè)計(jì)的過程實(shí)質(zhì)上是把構(gòu)成硬件系統(tǒng)的各功能模塊進(jìn)行Verilog描述,也可以使結(jié)構(gòu)描述,前者側(cè)重刻畫模塊所具有的行為特征,后者側(cè)重反映模塊內(nèi)部的具體構(gòu)造。通常一個(gè)硬件系統(tǒng)是由多個(gè)不同的功能模塊所組成的,因而總會(huì)存在這樣一個(gè)模塊,他用結(jié)構(gòu)描述的方法,將構(gòu)成硬件系統(tǒng)的所有功能模塊連接起來,這個(gè)模塊就是系統(tǒng)的頂層模塊。相對(duì)于頂層模塊,其他的模塊就是低一層次的模塊。在對(duì)低一層次的模塊進(jìn)行描述時(shí),如果有必要,可以同樣用結(jié)構(gòu)描述的方法,把模塊的內(nèi)部結(jié)構(gòu)進(jìn)一步具體的刻畫出來,相對(duì)于頂層模塊而言,用于構(gòu)造低一層次模塊的結(jié)構(gòu)單元就屬于更低一個(gè)層次。因而隨著設(shè)計(jì)過程的展開,一個(gè)硬件系統(tǒng)的構(gòu)造逐漸由頂層走向底層,各個(gè)功能模塊的內(nèi)部結(jié)構(gòu)逐漸得到深化和細(xì)化,整個(gè)設(shè)計(jì)過程因而被稱之為一個(gè)自頂向下的分級(jí)設(shè)計(jì)過程。在這個(gè)自頂向下的設(shè)計(jì)過程的任何階段,都可以利用仿真工具對(duì)處于設(shè)計(jì)過程中的系統(tǒng)描述進(jìn)行性能評(píng)估與正確性檢測(cè)。在自頂向下的設(shè)計(jì)過程中,對(duì)于上層模塊來說,只需要 知道某個(gè)模塊的名稱與端口類型,就可把它作為自己的一個(gè)下層模塊進(jìn)行調(diào)用。至于下層模塊的具體實(shí)現(xiàn)方式,或者從一種實(shí)現(xiàn)方式轉(zhuǎn)換到另一種實(shí)現(xiàn)方式,都不會(huì)對(duì)上層 模塊的描述產(chǎn)生任何影響。這是自頂向下設(shè)計(jì)方法一個(gè)突出的優(yōu)點(diǎn)。在設(shè)計(jì)過程中,通過仿真測(cè)試,如果發(fā)現(xiàn)性能不夠理想,或者發(fā)現(xiàn)任何錯(cuò)誤,只需對(duì)存在問題的低層的描述或?qū)崿F(xiàn)方式進(jìn)行修改或調(diào)整,而不必對(duì)上層結(jié)構(gòu)進(jìn)行任何改變。所謂的頂層和底層都是相對(duì)的。在實(shí)際設(shè)計(jì)過程中,總是把當(dāng)前正在實(shí)現(xiàn)的模塊作為一個(gè)局部的頂層模塊,在完成描述后,先單獨(dú)對(duì)他進(jìn)行仿真測(cè)試,在驗(yàn)證其正確性后在加入需要調(diào)用它的模塊中,而成為整個(gè)系統(tǒng)設(shè)計(jì)中某一個(gè)層次的功能模塊,一個(gè)大的電子系統(tǒng)設(shè)計(jì)就是這樣從頂層到底層,邊設(shè)計(jì),邊仿真,并依據(jù)仿真結(jié)果,反復(fù)調(diào)整或優(yōu)化的過程。1.4 Modelsim仿真工具M(jìn)odelSim是業(yè)界最優(yōu)秀的HDL語(yǔ)言仿真器。它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。是作FPGA/ASIC設(shè)計(jì)的RTL級(jí)和門級(jí)電路仿真的首選,它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無關(guān),便于保護(hù)IP核,個(gè)性化的圖形界面和用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段。全面支持VHDL和Verilog語(yǔ)言的IEEE 標(biāo)準(zhǔn),支持C/C+功能調(diào)用和調(diào)試。ModelSim專業(yè)版,具有快速的仿真性能和最先進(jìn)的調(diào)試能力,全面支持UNIX(包括64位)、Linux和Windows平臺(tái)。主要特點(diǎn):RTL和門級(jí)優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快;單內(nèi)核VHDL和Verilog混合仿真;源代碼模版和助手,項(xiàng)目管理;集成了性能分析、波形比較、代碼覆蓋等功能;數(shù)據(jù)流ChaseX;Signal Spy;C和Tcl/Tk接口,C調(diào)試。是業(yè)界唯一單一內(nèi)核支持VHDL、 Verilog HDL和SystemC混合仿真的仿真器同時(shí)也支持業(yè)界最廣泛的標(biāo)準(zhǔn)如Verilog 2001、SystemVerilog等,內(nèi)部集成了用于C/C+,PLI/FLI和SystemC的集成C調(diào)試器。支持眾多的ASIC和FPGA廠家?guī)欤梢杂糜贔PGA和ASIC設(shè)計(jì)的RTL級(jí)和門級(jí)電路仿真。下面圖1.1為modelsim的主界面。圖1.1modelsim主界面ModelSim最大的特點(diǎn)是其強(qiáng)大的調(diào)試功能:先進(jìn)的數(shù)據(jù)流窗口,可以迅速追蹤到產(chǎn)生不定或者錯(cuò)誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測(cè)試的完備;多種模式的波形比較功能;先進(jìn)的Signal Spy功能,可以方便地訪問VHDL 或者VHDL和Verilog混合設(shè)計(jì)中的底層信號(hào);支持加密IP;可以實(shí)現(xiàn)與Matlab的Simulink的聯(lián)合仿真。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級(jí)的版本而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計(jì)工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對(duì)于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSim XE為例,對(duì)于代碼少于40000行的設(shè)計(jì),ModelSim SE 比ModelSim XE要快10倍;對(duì)于代碼超過40000行的設(shè)計(jì),ModelSim SE要比ModelSim XE快近40倍。以下列表介紹了OEM版本(以Xilinx公司提供的ModelSim XE版本為例)與ModelSim SE版本之間的差異。ModelSim SE支持PC、UNIX和LINUX混合平臺(tái);提供全面完善以及高性能的驗(yàn)證功能;全面支持業(yè)界廣泛的標(biāo)準(zhǔn);Mentor Graphics公司提供業(yè)界最好的技術(shù)支持與服務(wù)。第2章 數(shù)字電路設(shè)計(jì)方法2.1數(shù)字系統(tǒng)設(shè)計(jì)簡(jiǎn)介2.1.1數(shù)字系統(tǒng)從概念上講,凡是利用數(shù)字技術(shù)處理和傳輸信息的系統(tǒng)都可以稱為數(shù)字系統(tǒng)。通常把門電路、觸發(fā)器等稱為邏輯器件。將由邏輯器件構(gòu)成,能執(zhí)行某單一功能的電路,如計(jì)數(shù)器、譯碼器、加法器等稱為邏輯功能部件,把有邏輯功能部件組成的能實(shí)現(xiàn)復(fù)雜功能的數(shù)字電路稱為數(shù)字系統(tǒng)。復(fù)雜的數(shù)字系統(tǒng)可以分割稱為若干個(gè)子系統(tǒng),例如,計(jì)算機(jī)就是一個(gè)內(nèi)部結(jié)構(gòu)相當(dāng)復(fù)雜的數(shù)字系統(tǒng)。近幾年來,IC技術(shù)的發(fā)展日新月異,而最具有代表性的IC芯片主要包括以下幾類:微控制芯片(MCU);可編程邏輯器件(PLD);數(shù)字信號(hào)處理器(DSP);大規(guī)模存儲(chǔ)芯片(RAM&ROM)。這幾類器件在最近20年均取得了長(zhǎng)足的發(fā)展,無論是芯片的規(guī)模還是性能都有了巨大的提高,構(gòu)成了現(xiàn)代數(shù)字系統(tǒng)的基石。2.1.2數(shù)字系統(tǒng)設(shè)計(jì)方法數(shù)字系統(tǒng)一般由控制電路、多個(gè)受控電路、輸入/輸出電路、時(shí)基電路等幾部分構(gòu)成,如圖2.1所示。 圖2.1數(shù)字系統(tǒng)設(shè)計(jì)方法構(gòu)成圖一般來說,電子系統(tǒng)的設(shè)計(jì)有兩種思路,一種是自下而上的設(shè)計(jì)思路,一種自上而下的設(shè)計(jì)思路。(1)自下而上的設(shè)計(jì)自下而上的設(shè)計(jì),也可稱為自底向上的設(shè)計(jì),過程從最底層設(shè)計(jì)開始。設(shè)計(jì)系統(tǒng)硬件時(shí),首先選擇具體的元器件,用這些元器件通過邏輯電路設(shè)計(jì),完成系統(tǒng)中各獨(dú)立功能模塊的設(shè)計(jì),再把這些功能模塊連接起來,總裝成完整的硬件系統(tǒng)。(2)自上而下的設(shè)計(jì)自上而下的設(shè)計(jì),也可稱為自頂向下的設(shè)計(jì)。它是目前常用的數(shù)字系統(tǒng)設(shè)計(jì)方法,也是基于芯片的系統(tǒng)設(shè)計(jì)的主要方法。它在功能劃分、任務(wù)分配及設(shè)計(jì)管理上有一定的長(zhǎng)處。2.1.3數(shù)字系統(tǒng)設(shè)計(jì)流程 數(shù)字系統(tǒng)的設(shè)計(jì)可分為四個(gè)層次,即系統(tǒng)級(jí)設(shè)計(jì)、電路級(jí)設(shè)計(jì)、芯片級(jí)設(shè)計(jì)和電路板級(jí)設(shè)計(jì)。相應(yīng)的,從提出設(shè)計(jì)要求到完成系統(tǒng)成品,數(shù)字系統(tǒng)設(shè)計(jì)可分為以下幾個(gè)步驟:系統(tǒng)設(shè)計(jì)、電路設(shè)計(jì)、芯片設(shè)計(jì)、PCB設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)及電路調(diào)試和系統(tǒng)調(diào)試,如圖2.2所示。圖2.2數(shù)字系統(tǒng)設(shè)計(jì)流程圖2.1.4數(shù)字系統(tǒng)設(shè)計(jì)準(zhǔn)則進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)時(shí),通常需要考慮多方面的條件和要求。如設(shè)計(jì)的功能和性能要求,元器件的資源分配和設(shè)計(jì)工具的可實(shí)現(xiàn)性,系統(tǒng)的開發(fā)費(fèi)用和成本等。雖然具體設(shè)計(jì)的條件和要求千差萬(wàn)別,實(shí)現(xiàn)方法也個(gè)各相同,但數(shù)字系統(tǒng)設(shè)計(jì)還是具備一些共同的方法和準(zhǔn)則。1) 分割準(zhǔn)則自頂向下設(shè)計(jì)方法或其他層次化設(shè)計(jì)方法需要對(duì)系統(tǒng)功能進(jìn)行分割,然后用邏輯語(yǔ)言進(jìn)行描述。分割過程中,若分割過粗,則不易用邏輯語(yǔ)言表達(dá);若分割過細(xì),則會(huì)帶來不必要的充分和繁瑣。因此,分割合適與否對(duì)系統(tǒng)設(shè)計(jì)是否方便有著至關(guān)重要的影響。2) 系統(tǒng)的可觀測(cè)性一個(gè)系統(tǒng)除了引腳上的信號(hào)外,系統(tǒng)內(nèi)部的狀態(tài)也是需要測(cè)試的內(nèi)容。因此,在系統(tǒng)設(shè)計(jì)中,應(yīng)該同時(shí)考慮功能檢查和性能的測(cè)試,即系統(tǒng)觀測(cè)性的問題。3) 系統(tǒng)的穩(wěn)定性設(shè)計(jì)時(shí)應(yīng)注意采取措施避免競(jìng)爭(zhēng)和增加系統(tǒng)穩(wěn)定性。4) 最優(yōu)化設(shè)計(jì)設(shè)計(jì)中常見的最優(yōu)化目標(biāo)有:(1)器件資源利用率最高;(2)系統(tǒng)工作速度最快,即延時(shí)最??;(3)布線最容易。2.2有限狀態(tài)機(jī)2.2.1有限狀態(tài)機(jī)簡(jiǎn)介有限狀態(tài)機(jī)(FSM)又稱為有限狀態(tài)自動(dòng)機(jī)或簡(jiǎn)稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作的數(shù)學(xué)模型。一般來說,除了輸入部分和輸出部分外,狀態(tài)機(jī)還含有一組具有“記憶”功能的寄存器,這些寄存器的功能是記憶有限狀態(tài)機(jī)的內(nèi)部狀態(tài),他們常被稱為狀態(tài)寄存器。其中,寄存器邏輯的功能是存儲(chǔ)有限狀態(tài)機(jī)的內(nèi)部狀態(tài);而組合和邏輯又可分為次態(tài)邏輯和輸出邏輯兩部分,次態(tài)邏輯的功能是確定有限狀態(tài)機(jī)的下一個(gè)狀態(tài),輸出邏輯的功能是確定有限狀態(tài)機(jī)的輸出。在實(shí)際應(yīng)用中,根據(jù)有限狀態(tài)機(jī)的輸出信號(hào)是否與輸入信號(hào)有關(guān),將其分為Moore(莫爾)型有限狀態(tài)機(jī)和Mealy(米里)型有限狀態(tài)機(jī)兩種類型。Moore型狀態(tài)機(jī)輸出信號(hào)僅與當(dāng)前狀態(tài)有關(guān),如圖2.3。即可以把Moore型有限狀態(tài)的輸出看成是當(dāng)前狀態(tài)的函數(shù)。Mealy型狀態(tài)機(jī)輸出信號(hào)不僅與當(dāng)前狀態(tài)有關(guān),而且還與輸入信號(hào)有關(guān),如圖2.4即可以把Mealy型狀態(tài)機(jī)的輸出看成是當(dāng)前狀態(tài)和輸入信號(hào)的函數(shù)。 圖2.3Moore函數(shù)圖輸出邏輯輸出當(dāng)前狀態(tài)激勵(lì)輸入狀態(tài)寄存器下一個(gè)邏輯狀態(tài)時(shí)鐘信號(hào) 圖2.4Mealy函數(shù)圖需要注意的是Mealy型狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和輸入信號(hào)的函數(shù),它的輸出是在輸入變化后立即發(fā)生的,不依賴時(shí)鐘的同步。而Moore型狀態(tài)機(jī)僅為當(dāng)前狀態(tài)的函數(shù),這類狀態(tài)機(jī)在輸入發(fā)生變化后,還必須等待時(shí)鐘的到來,時(shí)鐘使?fàn)顟B(tài)發(fā)生變化才導(dǎo)致輸出的變化,所以比Mealy要多等待一個(gè)時(shí)鐘周期。2.2.2有限狀態(tài)機(jī)的編碼方案在狀態(tài)機(jī)的編碼方案中,有兩種重要的編碼方法:二進(jìn)制編碼和一位熱碼(OneHot)編碼。在二進(jìn)制編碼的狀態(tài)機(jī)中,狀態(tài)位(B)與狀態(tài)(S)的數(shù)目之間的關(guān)系為B=log2S,如兩位狀態(tài)位就有00,01,10,11四個(gè)不同狀態(tài),它們?cè)诓煌目刂菩盘?hào)下可以進(jìn)行狀態(tài)轉(zhuǎn)換,但如果各觸發(fā)器又沒有準(zhǔn)確地同時(shí)改變其輸出值,那么在狀態(tài)01變到10時(shí)則會(huì)出現(xiàn)暫時(shí)的11或00狀態(tài)輸出,這類險(xiǎn)象可能使整個(gè)系統(tǒng)造成不可預(yù)測(cè)的結(jié)果。這時(shí),采用格雷碼二進(jìn)制編碼是特別有益,在該編碼方案中,每次僅一個(gè)狀態(tài)位的值發(fā)生變化。一位熱碼編碼就是用n個(gè)觸發(fā)器來實(shí)現(xiàn)n個(gè)狀態(tài)的編碼方式,狀態(tài)機(jī)中的每一個(gè)狀態(tài)都由其中一個(gè)觸發(fā)器的狀態(tài)來表示。如4個(gè)狀態(tài)的狀態(tài)機(jī)需4個(gè)觸發(fā)器,同一時(shí)間僅一個(gè)狀態(tài)位處于邏輯1電平,四個(gè)狀態(tài)分別為:0001、0010、0100、1000。在實(shí)際應(yīng)用中,根據(jù)狀態(tài)機(jī)的復(fù)雜程度、所使用的器件系列和從非法狀態(tài)退出所需的條件來選擇最適合的編碼方案,使之能確保高效的性能和資源的利用。對(duì)復(fù)雜的狀態(tài)機(jī),二進(jìn)制編碼需用的觸發(fā)器的數(shù)目比一位熱碼編碼的少。如100個(gè)狀態(tài)的狀態(tài)機(jī)按二進(jìn)制編碼僅用7個(gè)觸發(fā)器就可以實(shí)現(xiàn),而一位熱碼編碼則要求100個(gè)觸發(fā)器。另一方面,雖然一位熱碼編碼要求用較多的觸發(fā)器,但邏輯上通常相對(duì)簡(jiǎn)單些。在二進(jìn)制編碼的狀態(tài)機(jī)中,控制從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的邏輯與所有7個(gè)狀態(tài)位以及狀態(tài)機(jī)的輸入均有關(guān)。這類邏輯通常要求到狀態(tài)位輸入的函數(shù)是多輸入變量的。然而,在一熱戀位編碼的狀態(tài)機(jī)中,到狀態(tài)位的輸入常常是其它狀態(tài)位的簡(jiǎn)單函數(shù)。站在器件結(jié)構(gòu)的角度,不同結(jié)構(gòu)支持其確定的編碼類型。MAX+plus II編譯程序?qū)λ捎玫钠骷盗凶詣?dòng)地選擇最合適的編碼方法(除非在設(shè)計(jì)文件中規(guī)定了具體的編碼方案)。例如,F(xiàn)LEX 7000器件系列是寄存器增強(qiáng)型(Register-intensive),以這類器件為對(duì)象的狀態(tài)機(jī)最好選用一位熱碼編碼方案來實(shí)現(xiàn)。由于一位熱碼編碼的狀態(tài)機(jī)降低了送到每一個(gè)狀態(tài)位的邏輯電路的復(fù)雜程度,因而可提高用FLEX 7000器件實(shí)現(xiàn)的狀態(tài)機(jī)的性能。MAX 5000和MAX 7000器件系列最適合二進(jìn)制狀態(tài)機(jī)編碼方案。這兩類器件都能夠利用共享和并聯(lián)的擴(kuò)展乘積項(xiàng)有效地實(shí)現(xiàn)復(fù)雜的邏輯函數(shù)。因此,在這兩類器件小,可以容納復(fù)雜的組合邏輯函數(shù)而不會(huì)浪費(fèi)資源或損失性能。2.2.3有限狀態(tài)機(jī)的一般設(shè)計(jì)步驟用Verilog HDL進(jìn)行有限狀態(tài)機(jī)的設(shè)計(jì)時(shí),主要是用always和case語(yǔ)句來描述模塊的功能,一般來說,它們可以采用以下幾個(gè)步驟來進(jìn)行:(1) 通過邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖或狀態(tài)表首先,通過分析給定的邏輯問題,確定輸入變量、輸出變量以及電路的狀態(tài)數(shù),通常是把設(shè)計(jì)給定的條件作為輸入變量,把得到的結(jié)果作為輸出變量;然后,定義輸入、輸出邏輯狀態(tài)的含義,并將電路狀態(tài)順序編號(hào);最后,按照要求列出電路的狀態(tài)轉(zhuǎn)換表或畫出狀態(tài)轉(zhuǎn)換圖就可以了。(2) 狀態(tài)化簡(jiǎn)初次確定的狀態(tài),通常會(huì)出現(xiàn)重復(fù)的狀態(tài),即它們?cè)谙嗤妮斎胂罗D(zhuǎn)換到同一狀態(tài)去,并得到一樣的輸出。這樣的狀態(tài)可以合并為一個(gè)。電路的狀態(tài)數(shù)越少,存儲(chǔ)電路也就越簡(jiǎn)單。狀態(tài)簡(jiǎn)化的目的就是要將重復(fù)的狀態(tài)盡可能的合并,以得到最簡(jiǎn)單的狀態(tài)裝換圖。(3) 狀態(tài)分配狀態(tài)分配又稱狀態(tài)編碼。通常有很多編碼方法,編碼方案選擇得當(dāng),設(shè)計(jì)的電路可以很簡(jiǎn)單;反之,選的不好,則設(shè)計(jì)的電路就會(huì)復(fù)雜很多。實(shí)際設(shè)計(jì)時(shí),需綜合考慮電路復(fù)雜度與電路性能之間的折中。在觸發(fā)器資源豐富的FPGA或ASIC設(shè)計(jì)中,采用獨(dú)熱編碼,既可以使電路性能得到保證,又可充分利用觸發(fā)器數(shù)量多的優(yōu)勢(shì)。(4) 根據(jù)畫好的狀態(tài)轉(zhuǎn)換圖或狀態(tài)表,用Verilog HDL編寫程序。用Verilog HDL來描述有限狀態(tài)機(jī),通過使用always塊語(yǔ)句和case(if)等條件語(yǔ)句及賦值語(yǔ)句即可方便實(shí)現(xiàn),而不必去考慮邏輯化簡(jiǎn)等問題,那些問題可以通過計(jì)算機(jī)自動(dòng)完成。第3章 數(shù)字鐘的層次化的設(shè)計(jì)3.1功能要求設(shè)計(jì)一個(gè)具有時(shí)、分、秒計(jì)時(shí)功能的電子鐘電路。按照層次化的設(shè)計(jì)方法將數(shù)字鐘的功能劃分為三個(gè)功能塊:計(jì)時(shí)電路,顯示電路,和擴(kuò)展電路。要求在準(zhǔn)確計(jì)時(shí)的基礎(chǔ)上具有校時(shí)、校分的功能,定時(shí)鬧鐘的功能和整點(diǎn)報(bào)時(shí)的功能。3.2數(shù)字鐘系統(tǒng)的工作原理向秒計(jì)數(shù)器提供秒脈沖信號(hào),秒計(jì)數(shù)器記滿60后向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器記滿60后向小時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按照24進(jìn)制規(guī)律計(jì)數(shù)。計(jì)數(shù)器的輸出經(jīng)譯碼器送顯示器,即顯示時(shí)間。計(jì)時(shí)出現(xiàn)誤差可以用校時(shí)電路進(jìn)行校時(shí)、校分。在計(jì)時(shí)主體電路正確運(yùn)行的況下,進(jìn)行功能擴(kuò)展,實(shí)現(xiàn)仿電臺(tái)報(bào)時(shí)和鬧鐘功能。3.3模塊的設(shè)計(jì) 數(shù)字鐘可以劃分為三個(gè)功能塊:1.計(jì)時(shí)電路;2.顯示電路;3.擴(kuò)展電路。這些模塊又可分割為更小的模塊。計(jì)時(shí)電路包括校時(shí)電路和計(jì)數(shù)器兩個(gè)部分。計(jì)數(shù)器的功能是完成小時(shí)、分鐘、秒鐘的計(jì)時(shí),因此又可繼續(xù)分割為二十四進(jìn)制和六十進(jìn)制計(jì)數(shù)器;校時(shí)電路的作用是對(duì)小時(shí)和分鐘的誤差進(jìn)行調(diào)整,可設(shè)置兩個(gè)按鍵,分別予以控制。顯示電路的作用是將計(jì)時(shí)電路產(chǎn)生的幾十只在數(shù)碼管上進(jìn)行顯示,通過七段譯碼后,驅(qū)動(dòng)LED數(shù)碼管,然后在計(jì)時(shí)電路正確的情況下實(shí)現(xiàn)兩個(gè)擴(kuò)展功能。 設(shè)計(jì)圖如圖3.1 數(shù)字鐘功能擴(kuò)展鬧鐘偽電臺(tái)報(bào)時(shí)計(jì)時(shí)電路顯示電路校時(shí)電路計(jì)數(shù)器二十四進(jìn)制小時(shí)計(jì)數(shù)器六十進(jìn)制秒計(jì)數(shù)器六十進(jìn)制分計(jì)數(shù)器圖3.1模塊設(shè)計(jì)3.4 程序設(shè)計(jì)3.4.1.計(jì)時(shí)電路設(shè)計(jì)(1)六十進(jìn)制計(jì)數(shù)器。module cnt60(clk,qs,co);input clk;output7:0 qs=0;output co=0;reg7:0 qs; reg co;always (posedge clk)beginif(qs7:4!=4b0101)beginif (qs3:0=4b1001) begin qs7:4=qs7:4+4b0001;qs3:0=4b0000;co=1b0;endelse begin qs7:4=qs7:4;qs3:0= qs3:0+4b0001; co=1b0;endendelseif(qs3:0=4b1001) begin qs7:4=4b0000;qs3:0=4b0000;co=1b1; endelse begin qs7:4=qs7:4;qs3:0=qs3:0+4b0001;co=1b0;endend endmodule (2)二十四進(jìn)制計(jì)數(shù)器module cnt24(qh,clk);input clk;output7:0 qh=0;reg7:0 qh;always (posedge clk)beginif(qh7:4!=2)beginif (qh3:0=4b1001) begin qh7:4=qh7:4+4b0001;qh3:0=4b0000; endelse begin qh7:4=qh7:4;qh3:0=qh3:0+4b0001; endend else if (qh3:0=4b0011)begin qh7:4=4b0000;qh3:0=4b0000;end else begin qh7:4=qh7:4;qh3:0=qh3:0+4b0001;end endendmodule2)校時(shí)電路設(shè)計(jì)module adjust(clk,co1,co2,set1,set2,clk1,clk2);input clk,set1,set2,co1,co2;output clk1,clk2;assign clk1=set1? clk:co1;assign clk2=set2? clk:(!set1&co2);endmodule3.4.2.擴(kuò)展電路設(shè)計(jì)module alarm(clk,qm,qh,qs,sound);input clk;input7:0qs,qm,qh;output sound;wire bell,noise;reg cp;always (posedge clk) begincp=cp;endassign noise=(qh=8h7)&(qm=8h30)&clk;assign bell=(qs=8h51|qs=8h53|qs=8h55|qs=8h57)&(qm=8h59)&cp)|(qs=8h59)&(qm=8h59)&clk);assign sound=noise|bell;endmodule3.4.3.數(shù)字鐘頂層電路設(shè)計(jì)module top(clk1,clk2,set1,set2,qs,qm,qh,sound);input clk1,clk2,set1,set2;output7:0 qm,qh,qs;output sound;wire7:0 qs,qm,qh;cnt60 s(clk1,qs,co1); cnt60 m(cp1,qm,co2);cnt24 h(qh,cp2);adjust u1(clk1,co1,co2,set1,set2,cp1,cp2);alarm u2(clk2,qm,qh,qs,sound);endmodule模塊說明:計(jì)時(shí)電路設(shè)計(jì)包括計(jì)數(shù)器電路設(shè)計(jì)和校時(shí)電路設(shè)計(jì)兩個(gè)部分。計(jì)數(shù)器電路包含二十四進(jìn)制和六十進(jìn)制兩種類型計(jì)數(shù)器,分別用于時(shí)和秒(分)的計(jì)數(shù)。計(jì)數(shù)器間采用串行連接方式,由六十進(jìn)制計(jì)數(shù)器在計(jì)數(shù)到最大值后產(chǎn)生高電平,作為向前級(jí)(分或時(shí))的進(jìn)位信號(hào)。(1)六十進(jìn)制計(jì)數(shù)器。六十進(jìn)制計(jì)數(shù)器完成分和秒的計(jì)時(shí),其計(jì)數(shù)規(guī)律為:00-01-02-58-59-00-01-clk:1Hz脈沖信號(hào)或秒計(jì)數(shù)器的進(jìn)位信號(hào)qs:計(jì)數(shù)器輸出co:進(jìn)位脈沖信號(hào)模塊最要的部分是clk的定義,首先假定計(jì)數(shù)器的高位,也就是十位數(shù)(高4位)不等于5,定義個(gè)位數(shù)的累加和進(jìn)位,當(dāng)?shù)臀?:0值等于9時(shí),低位值清零,高位7:4值+1,當(dāng)值小于9時(shí),低位3:0值+1。else語(yǔ)句定義十位數(shù)等于5的情況,當(dāng)個(gè)位值為9的時(shí)候,個(gè)位,十位全部清零,并且co進(jìn)位+1。(2)二十四進(jìn)制計(jì)數(shù)器小時(shí)計(jì)數(shù)器為二十四進(jìn)制計(jì)數(shù)器,其計(jì)數(shù)規(guī)律為:00-01-02-09-10-11-12-18-19-20-21-22-23先定義小時(shí)模塊的十位(高位),當(dāng)十位不等于2的時(shí)候,個(gè)位等于9以后,十位值+1,個(gè)位清零;個(gè)位置小于9時(shí),十位不變,個(gè)位置+1。當(dāng)十位等于2的時(shí)候,個(gè)位置等于9,全部清零重置;個(gè)位小于9,則個(gè)位值+1.(3)校時(shí)模塊電路進(jìn)行校時(shí)和正常計(jì)時(shí)的區(qū)別在于,若是分鐘的正常計(jì)時(shí),則分鐘計(jì)數(shù)器選用秒計(jì)數(shù)器的進(jìn)位信號(hào)作為其時(shí)鐘信號(hào),而進(jìn)行分校時(shí),則分鐘計(jì)數(shù)器選用1Hz脈沖信號(hào)作為其時(shí)鐘信號(hào)。小時(shí)計(jì)數(shù)器的時(shí)鐘信號(hào)選擇原理類似。在校時(shí)模塊中,clk1和clk2都采用高電平有效來實(shí)現(xiàn)校分和校時(shí),clk1表示分鐘,clk表示小時(shí)。set1對(duì)應(yīng)的是clk1,set2對(duì)應(yīng)clk2。(4)擴(kuò)展電路sound信號(hào)為輸出,clk為1kHz的方波信號(hào),引入分秒時(shí)3個(gè)計(jì)數(shù)器,分別為qm,qs,qh,bell為鬧鐘信號(hào)輸出,noise為仿電臺(tái)報(bào)時(shí)信號(hào)輸出,在59分51秒的時(shí)候開始進(jìn)行報(bào)時(shí),每?jī)擅胍淮涡盘?hào)。(4)頂層模塊共有4個(gè)輸入clk1、clk2、set1、set2,7個(gè)輸出outsl、outsh、outml、outmh、outhl、outhh,分別代表譯碼顯示模塊的秒分時(shí)的低位和高位顯示。通過將qs、qm、qh相連接,顯示出完整的時(shí)間。第4章 功能仿真4.1仿真前準(zhǔn)備(1)打開Modelsim SE新建工程:點(diǎn)擊FileNewProject出現(xiàn)圖4.1所示對(duì)話框,輸入工程名,點(diǎn)擊OK。 圖4.1(2)給工程添加文件:如圖4.2,如若沒有現(xiàn)成文件,則點(diǎn)擊Creat New File添加新文件。出現(xiàn)如圖4.3對(duì)話框,寫好文件名點(diǎn)擊OK。圖4.2 圖4.3(3)把預(yù)先寫好的程序復(fù)制的建好文件中,點(diǎn)擊編譯ComlileComlile All。如若沒有問題,就可以正式開始仿真啦。4.2功能仿真Testbench如下timescale 100us/100usmodule top_test;reg clk1,clk2,set1,set2;wire sound;wire7:0 qs,qm,qh;initial begin clk1=0; clk2=0;endinitialbeginset1=0;#150000 set1=1;#50000 set1=0;endinitialbeginset2=0;#300000 set2=1;#50000 set2=0;endalways #5000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品運(yùn)輸公司管理制度
- 藥庫(kù)藥房調(diào)撥管理制度
- 藥店店面衛(wèi)生管理制度
- 藥店藥品倉(cāng)庫(kù)管理制度
- 營(yíng)運(yùn)客車報(bào)廢管理制度
- 設(shè)備備品耗材管理制度
- 設(shè)備改造安全管理制度
- 設(shè)備檢查計(jì)劃管理制度
- 設(shè)備管道安全管理制度
- 設(shè)備設(shè)施拆除管理制度
- 2023-2024學(xué)年遼寧省沈陽(yáng)市皇姑區(qū)七年級(jí)(下)期末數(shù)學(xué)試卷(含答案)
- 江西省南昌二中心遠(yuǎn)教育集團(tuán)九灣學(xué)校2023-2024學(xué)年八年級(jí)下學(xué)期期末考試物理試題
- 深入理解Nginx(模塊開發(fā)與架構(gòu)解析)
- 釀酒機(jī)械與設(shè)備智慧樹知到期末考試答案章節(jié)答案2024年齊魯工業(yè)大學(xué)
- 兒童保健門診規(guī)范化建設(shè)標(biāo)準(zhǔn)
- 《庖丁解?!肥」_課金獎(jiǎng)全國(guó)賽課一等獎(jiǎng)微課獲獎(jiǎng)?wù)n件
- MOOC 中國(guó)文化概論-華南師范大學(xué) 中國(guó)大學(xué)慕課答案
- 初中人教版八年級(jí)下冊(cè)期末物理真題模擬試卷經(jīng)典套題
- 24春國(guó)家開放大學(xué)《離散數(shù)學(xué)》大作業(yè)參考答案
- 健康保險(xiǎn)合同
- 2023-2024年天原杯全國(guó)初中學(xué)生化學(xué)競(jìng)賽復(fù)賽試題(含答案)
評(píng)論
0/150
提交評(píng)論