基于ISE的數(shù)字秒表的設(shè)計(jì)與仿真_第1頁(yè)
基于ISE的數(shù)字秒表的設(shè)計(jì)與仿真_第2頁(yè)
基于ISE的數(shù)字秒表的設(shè)計(jì)與仿真_第3頁(yè)
基于ISE的數(shù)字秒表的設(shè)計(jì)與仿真_第4頁(yè)
基于ISE的數(shù)字秒表的設(shè)計(jì)與仿真_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)字秒表設(shè)計(jì)實(shí)驗(yàn)報(bào)告學(xué)院(系):專業(yè):

學(xué)號(hào):學(xué)生姓名:指導(dǎo)教師:電子設(shè)計(jì)實(shí)驗(yàn)報(bào)告——數(shù)字秒表的設(shè)計(jì)目錄摘要 41引言 61.1FPGA的開發(fā) 61.2VHDL語(yǔ)言的使用 71.3ISE簡(jiǎn)介 81.4modelsim仿真軟件的使用 82數(shù)字秒表的設(shè)計(jì) 92.1時(shí)間的概念 92.2實(shí)驗(yàn)任務(wù)及要求 92.3系統(tǒng)需求和解決方案 102.3.1分頻器設(shè)計(jì) 122.3.2按鍵消抖電路設(shè)計(jì) 122.3.3控制器設(shè)計(jì) 132.3.4計(jì)數(shù)器設(shè)計(jì) 132.3.5鎖存器設(shè)計(jì) 142.3.6掃描顯示和控制電路設(shè)計(jì) 142.3.7模塊綜合 153數(shù)字秒表的仿真結(jié)果 153.1各仿真結(jié)果 163.2分頻器仿真 163.3計(jì)數(shù)器仿真 164實(shí)驗(yàn)結(jié)論 16參考文獻(xiàn) 17附錄 17 摘要本次實(shí)驗(yàn)設(shè)計(jì)使用的軟件ISE主要功能包括設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)和下載,涵蓋了可編程邏輯器件開發(fā)的全過程,從功能上講,完成CPLD/FPGA的設(shè)計(jì)流程無需借助任何第三方EDA軟件。而本次設(shè)計(jì)目的在于設(shè)計(jì)一個(gè)可以自動(dòng)計(jì)數(shù)、清零、鎖存、暫停的、顯示范圍為59分59秒,精確度為百分之一秒的數(shù)字秒表并熟練利用modelsim仿真軟件進(jìn)行仿真并從中不斷檢驗(yàn)錯(cuò)誤,修改程序達(dá)到學(xué)習(xí)提高的效果。為達(dá)到實(shí)驗(yàn)?zāi)康模驹O(shè)計(jì)分為:分頻器,鎖存器,計(jì)數(shù)器,控制器及消抖電路。關(guān)鍵詞:ISE;modelsim仿真;數(shù)字秒表設(shè)計(jì);FPGA可編程邏輯器件;檢驗(yàn);學(xué)習(xí)

Abstract TheISEsoftwareusedinexperimentaldesignthemainfunctionincludingdesign,implementation,integration,simulationanddownload,coversthewholeprocessofthedevelopmentofprogrammablelogicdevices,tellfromthefunction,completedthedesignofCPLD/FPGAwithoutusinganythird-partyEDAsoftware.Andthepurposeofthedesignistodesignanautomaticcounting,reset,latches,suspended,displayareafor59minutesand59seconds,accuracyofonepercentseconddigitalstopwatchandskilleduseofthemodelsimsimulationsoftwaresimulationandcontinuousinspectionerror,modifytheprogramtoimprovelearningeffect.Forthepurposeoftheexperiment,thedesignisdividedinto:frequencydivider,latch,counter,controllerandshakecircuit.Keywords:ISE;modelsim;digitalstopwatch;TheFPGAprogrammablelogicdevices;check;learn1引言在傳統(tǒng)的硬件電路設(shè)計(jì)中,主要的設(shè)計(jì)文件是電路原理圖,而采用硬件描述語(yǔ)言(VHDL)設(shè)計(jì)系統(tǒng)硬件電路時(shí)主要使用VHDL編寫源程序。所謂硬件描述語(yǔ)言,就是該語(yǔ)言可以描述硬件電路的功能、信號(hào)連接關(guān)系及定時(shí)關(guān)系。EDA代表了當(dāng)今電子設(shè)計(jì)技術(shù)發(fā)展的方向,它的基本特征是:設(shè)計(jì)人員按照“自頂向下”的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分系統(tǒng)的關(guān)鍵電路,用一片或幾片專用集成ASI實(shí)現(xiàn),然后采用硬件描述語(yǔ)言(HDL)完成系統(tǒng)設(shè)計(jì),最后通過綜合器和適配器生成最終的目標(biāo),這樣的設(shè)計(jì)方法被稱為高層次的電子設(shè)計(jì)。高層次的設(shè)計(jì)給我們提供了一種“自頂向下”(Top2Down)的全新設(shè)計(jì)方法,這種方法首先從系統(tǒng)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì).在方框圖一級(jí)進(jìn)行仿真、糾錯(cuò)并用硬件描述語(yǔ)言對(duì)高層的系統(tǒng)進(jìn)行描述,在系統(tǒng)一級(jí)進(jìn)行驗(yàn)證,然后用綜合優(yōu)化工具生成具體的門電路網(wǎng)表。1.1FPGA的開發(fā)使用FPGA(Field-ProgrammableGateArray),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA的開發(fā)相對(duì)于傳統(tǒng)PC、單片機(jī)的開發(fā)有很大不同。FPGA以并行運(yùn)算為主,以硬件描述語(yǔ)言來實(shí)現(xiàn);相比于PC或單片機(jī)的順序操作有很大區(qū)別,也造成了FPGA開發(fā)入門較難。FPGA開發(fā)需要從頂層設(shè)計(jì)、模塊分層、邏輯實(shí)現(xiàn)、軟硬件調(diào)試等多方面著手。一個(gè)完整的設(shè)計(jì)流程包括電路設(shè)計(jì)與輸入、功能方針、設(shè)計(jì)綜合、綜合后仿真、設(shè)計(jì)實(shí)現(xiàn)布線后仿真與下載、實(shí)驗(yàn)板調(diào)試等主要步驟,如下圖(1)示圖(1)FPGA開發(fā)流程FPGA芯片的組成:(1)可編程輸入輸出單元;(2)基本可編程邏輯單元;(3)完整的時(shí)鐘管理;(4)嵌入塊式RAM;(5)豐富的布線資源;(6)內(nèi)嵌的底層功能單元和專用硬件模塊。在本實(shí)驗(yàn)中我們采用的實(shí)驗(yàn)板為FPGAxc3s200a-4ft256的板子,此FPGA芯片隸屬于Spartan-3AFPGA芯片系列。Spartan-3A系列延伸平臺(tái)融小型器件封裝以及Spartan-3A、Spartan-3ADSP和Spartan-3AN平臺(tái)經(jīng)市場(chǎng)驗(yàn)證的低成本和高性能特點(diǎn)于一體,形成一系列單個(gè)的、大容量的FPGA平臺(tái)。憑借對(duì)業(yè)界最廣泛的I/O標(biāo)準(zhǔn)(26種)的支持、豐富的節(jié)電配置功能和防克隆安全優(yōu)勢(shì),賽靈思Spartan系列已經(jīng)成為目前全球應(yīng)用最廣泛的低成本FPGA。與同類低成本FPGA解決方案相比,賽靈思Spartan-3A延伸FPGA解決方案可降低高達(dá)50%的總體系統(tǒng)成本。眾多系統(tǒng)功能的集成減少了對(duì)外部元器件的需要,降低了靜態(tài)功耗并且提供了更為強(qiáng)大的低成本安全系統(tǒng),這一優(yōu)勢(shì)對(duì)于系統(tǒng)設(shè)計(jì)人員來說極具吸引力。Spartan-3A系列FPGA主要技術(shù)特征如下表示:型號(hào)系統(tǒng)門數(shù)SLICE數(shù)目分布式RAM容量塊RAM容量專用乘法器數(shù)DCM數(shù)目最大可用I/O數(shù)最大差分I/O對(duì)數(shù)XC3S50A50k86411k54k3214464XC3S200A200k201628k288k164248112XC3S400A400k403256k360k204311142XC3S700A700k662492k360k208372165XC3S1400A1400k12672176k576k3285022271.2VHDL語(yǔ)言的使用VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。VHDL語(yǔ)言能夠成為標(biāo)準(zhǔn)化的硬件描述語(yǔ)言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語(yǔ)言所不具備的優(yōu)點(diǎn)。歸納起來,VHDL語(yǔ)言主要具有以下優(yōu)點(diǎn):(1)VHDL語(yǔ)言功能強(qiáng)大,設(shè)計(jì)方式多樣。(2)VHDL語(yǔ)言具有強(qiáng)大的硬件描述能力。(3)VHDL語(yǔ)言具有很強(qiáng)的移植能力。(4)VHDL語(yǔ)言的設(shè)計(jì)描述與器件無關(guān)。(5)VHDL語(yǔ)言程序易于共享和復(fù)用。VHDL程序結(jié)構(gòu)特點(diǎn)是將一個(gè)電路模塊或一個(gè)系統(tǒng)分成端口和內(nèi)部功能算法實(shí)現(xiàn)兩部分。對(duì)于一個(gè)電路模塊或者數(shù)字系統(tǒng)而言,定義了外部端口后,一旦內(nèi)部功能算法完成后,其他系統(tǒng)可以直接依據(jù)外部端口調(diào)用該電路模塊或數(shù)字系統(tǒng),而不必知道其內(nèi)部結(jié)構(gòu)和算法。VHDL的特點(diǎn)使得電子系統(tǒng)新的設(shè)計(jì)方法一一“自頂向下”設(shè)計(jì)方法更加容易實(shí)現(xiàn)??梢韵葘?duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì),按功能劃分成若干單元模塊,然后對(duì)每個(gè)單元模塊進(jìn)一步細(xì)分編程,直到簡(jiǎn)單實(shí)現(xiàn)的單元電路。VHDL支持硬件的設(shè)計(jì)、驗(yàn)證、綜合和測(cè)試,以及硬件設(shè)計(jì)數(shù)據(jù)的交換、維護(hù)、修改和硬件的實(shí)現(xiàn),具有描述能力強(qiáng)、生命周期長(zhǎng)、支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用等優(yōu)點(diǎn)。1.3ISE軟件的使用ISE的主要功能包括設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)和下載,涵蓋了可編程邏輯器件開發(fā)的全過程,從功能上講,完成CPLD/FPGA的設(shè)計(jì)流程無需借助任何第三方EDA軟件。下面簡(jiǎn)要說明各功能的作用:設(shè)計(jì)輸入:ISE提供的設(shè)計(jì)輸入工具包括用于HDL代碼輸入和查看報(bào)告的ISE文本編輯器(TheISETextEditor),用于原理圖編輯的工具ECS(TheEngineeringCaptureSystem),用于生成IPCore的CoreGenerator,用于狀態(tài)機(jī)設(shè)計(jì)的StateCAD以及用于約束文件編輯的ConstraintEditor等。綜合:ISE的綜合工具不但包含了Xilinx自身提供的綜合工具XST,同時(shí)還可以內(nèi)嵌MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify,實(shí)現(xiàn)無縫鏈接。仿真:ISE本身自帶了一個(gè)具有圖形化波形編輯功能的仿真工具HDLBencher,同時(shí)又提供了使用ModelTech公司的Modelsim進(jìn)行仿真的接口。實(shí)現(xiàn):此功能包括了翻譯、映射、布局布線等,還具備時(shí)序分析、管腳指定以及增量設(shè)計(jì)等高級(jí)功能。下載:下載功能包括了BitGen,用于將布局布線后的設(shè)計(jì)文件轉(zhuǎn)換為位流文件,還包括了IMPACT,功能是進(jìn)行芯片配置和通信,控制將程序燒寫到FPGA芯片中去。ISE使用的整體開發(fā)流程為:建立新工程→建立源文件→編寫工程代碼→行為仿真→各模塊綜合→管腳約束→功能實(shí)現(xiàn)→時(shí)序仿真→生成bit流文件→下載到實(shí)驗(yàn)板上調(diào)試。1.4Modelsim仿真軟件的使用仿真是指在軟件環(huán)境下,驗(yàn)證電路的行為和設(shè)計(jì)意圖是否一致。Modelsim是一種第三方EDA仿真工具,它是由Model公司開發(fā)的,它支持Verilog、VHDL以及兩者的混合仿真,可以將整個(gè)程序分步執(zhí)行,它在程序執(zhí)行的任何步驟任何時(shí)刻都可以查看任意變量的當(dāng)前值,可以查看某一單元或模塊的輸入輸出的連續(xù)變化等。其主要特點(diǎn)是仿真速度快,仿真精度高,而且支持VHDL、VerilogHDL以及兩者的混合使用,是目前業(yè)界最流行最通用的仿真器之一。Modelsim仿真步驟分為以下5步:(1)建立庫(kù);(2)映射庫(kù)到物理目錄;(3)編譯源代碼,包括所有的HDL代碼和Testbench;(4)啟動(dòng)仿真器并加載設(shè)計(jì)頂層;(5)執(zhí)行仿真;一般來說,仿真分為三種類型,即功能仿真、綜合后功能仿真和時(shí)序仿真,分別對(duì)應(yīng)于設(shè)計(jì)輸入后、綜合完成后、布局布線完成后等步驟,這些步驟也是仿真的切入點(diǎn)。(1)功能仿真功能仿真也稱為前仿真,主旨在于驗(yàn)證電路功能是否符合設(shè)計(jì)要求,其特點(diǎn)是不考慮電路門延時(shí)與路徑延時(shí),考察重點(diǎn)為電路在理想環(huán)境下的行為和設(shè)計(jì)構(gòu)想是否一致??删C合FPGA仿真代碼是用RTL級(jí)代碼語(yǔ)言描述的,功能仿真的輸入是設(shè)計(jì)的RTL代碼,也就是HDL源文件與Testbench.。(2)綜合后仿真綜合后仿真的主旨在于驗(yàn)證綜合后的電路結(jié)構(gòu)是否與設(shè)計(jì)意圖相符,是否存在歧義綜合結(jié)果。綜合后仿真的輸入是從綜合得到的一般性邏輯網(wǎng)表抽象出的仿真模型和綜合產(chǎn)生的延時(shí)文件,綜合時(shí)的延時(shí)文件僅僅能估算門延時(shí),而不包含布線延時(shí)信息,所以延時(shí)信息不十分準(zhǔn)確。(3)時(shí)序仿真時(shí)序仿真也稱為布局布線后仿真或者后仿真,是指電路已經(jīng)映射到特定的工藝環(huán)境后,綜合考慮電路的路徑延時(shí)與門延時(shí)的影響,驗(yàn)證電路的行為是否能夠在一定時(shí)序條件下滿足設(shè)計(jì)構(gòu)想的功能。時(shí)序仿真主要目的在于驗(yàn)證電路是否存在時(shí)序違規(guī),其輸入為從布局布線抽象出的門級(jí)網(wǎng)表、Testbench以及擴(kuò)展名為SDO的標(biāo)準(zhǔn)延時(shí)文件。一般來說,時(shí)序仿真是必選步驟,通過時(shí)序仿真能檢查設(shè)計(jì)時(shí)序與FPGA的實(shí)際運(yùn)行情況是否一致,確保設(shè)計(jì)的可靠性和穩(wěn)定性。2數(shù)字秒表的設(shè)計(jì)2.1時(shí)間的概念人類在生活中總結(jié)出時(shí)間的觀念,其根源來自于日常生活中事件的發(fā)生次序。當(dāng)然人們?cè)谏钪械玫降慕^不僅僅是事件發(fā)生次序的概念,同時(shí)也有時(shí)間間隔長(zhǎng)短的概念,這個(gè)概念來源于對(duì)兩個(gè)過程的比較——比如兩件事同時(shí)開始,但一件事結(jié)束了另一件事還在進(jìn)行,我們就說另一件事所需的時(shí)間更長(zhǎng)。這里我們可以看到,人們運(yùn)用可以測(cè)量的過程來測(cè)量抽象的時(shí)間。當(dāng)前人類包括生物圈里的決大多數(shù)生命使用的都是太陽(yáng)時(shí)。地球自轉(zhuǎn)一周導(dǎo)致了太陽(yáng)東升西落一次,這一周期的完成就表示過去了一天。一天這個(gè)時(shí)間是由地球自轉(zhuǎn)一周導(dǎo)致的太陽(yáng)東升西落這一運(yùn)動(dòng)狀態(tài)決定的。一年也是一樣,是由地球公轉(zhuǎn)繞太陽(yáng)一周這個(gè)運(yùn)動(dòng)狀態(tài)決定的。地球的自轉(zhuǎn)和公轉(zhuǎn)速度的改變狀態(tài)將直接導(dǎo)致人類使用的一天和一年發(fā)生改變時(shí)間來自于運(yùn)動(dòng),不同的運(yùn)動(dòng)狀態(tài)決定了不同的時(shí)間??刂七\(yùn)動(dòng)、掌握時(shí)間成了每一個(gè)人都可以做到的事,時(shí)間不在神秘。一種運(yùn)動(dòng)狀態(tài)決定了一個(gè)時(shí)間,一個(gè)獨(dú)立的時(shí)間也表示了一種動(dòng)動(dòng)狀態(tài)的延續(xù)。2.2實(shí)驗(yàn)任務(wù)及要求秒表的計(jì)時(shí)范圍為00’00”00~59’59”99。有兩個(gè)按鈕開關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開始計(jì)時(shí)。在秒表正常運(yùn)行的情況下,如果按下“Start/Stop”鍵,則秒表暫停計(jì)時(shí);再次按下該鍵,秒表繼續(xù)計(jì)時(shí)。在秒表正常運(yùn)行的情況下,如果按下“Split/Reset”鍵,顯示停止在按鍵時(shí)的時(shí)間,但秒表仍然在計(jì)時(shí);再次按下該鍵,秒表恢復(fù)正常顯示。在秒表暫停計(jì)時(shí)的情況下,按下“Split/Reset”鍵,秒表復(fù)位歸零。圖2.2.1實(shí)驗(yàn)原理圖圖2.2.2秒表實(shí)物圖2.3系統(tǒng)需求和解決方案首先根據(jù)設(shè)計(jì)的要求明確設(shè)計(jì)的目的,并根據(jù)設(shè)計(jì)需求制定相應(yīng)的設(shè)計(jì)方法,設(shè)計(jì)出不同的設(shè)計(jì)模塊,畫出秒表設(shè)計(jì)的總框圖,在設(shè)計(jì)時(shí)根據(jù)已有的設(shè)計(jì)框圖一步步設(shè)計(jì)各個(gè)子模塊。在設(shè)計(jì)一個(gè)秒表電路時(shí),需要先設(shè)計(jì)各個(gè)不同的子模塊,然后進(jìn)行模塊的綜合。根據(jù)我們的習(xí)慣我們可以按照從左到右的順序依次建立模塊并進(jìn)行組合。設(shè)計(jì)電路時(shí)遵循從上到下的設(shè)計(jì)原則,首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì),頂層的每個(gè)子模塊均可完成一個(gè)獨(dú)立的功能,子模塊在調(diào)試成功后可生成一個(gè)默認(rèn)的符號(hào),以供上一層使用??紤]到實(shí)驗(yàn)電路板條件有限,僅有48MHZ的晶體振蕩器,為獲取準(zhǔn)確時(shí)間,需要1KHZ的時(shí)鐘信號(hào),且實(shí)際使用時(shí)又涉及到計(jì)數(shù),進(jìn)位,8段數(shù)碼管顯示,暫停時(shí)的時(shí)間顯示和保存,各部分聯(lián)動(dòng)及按鍵的消抖等諸多問題,故在分模塊的設(shè)計(jì)時(shí)可為分頻器電路,按鍵消抖電路,控制電路,計(jì)數(shù)電路,鎖存電路,掃描和顯示電路。以下為各部分功能簡(jiǎn)述:圖2.3.1實(shí)驗(yàn)板實(shí)物圖1.分頻器=1\*GB3①對(duì)產(chǎn)生的時(shí)鐘信號(hào)的48MHz晶體振蕩器進(jìn)行分頻,先產(chǎn)生1KHz產(chǎn)生時(shí)間基準(zhǔn)信號(hào),用以控制8個(gè)數(shù)碼管以掃描方式顯示計(jì)時(shí)結(jié)果。=2\*GB3②再對(duì)1KHz的分頻信號(hào)再進(jìn)行10分頻,從而產(chǎn)生100Hz的基準(zhǔn)信號(hào),用于秒表最后一位的顯示。2.按鍵消抖電路在按鍵按下時(shí),F(xiàn)PGA的輸入為低電平;松開按鍵時(shí),F(xiàn)PGA的輸入為高電平,但是在按下按鍵和松開按鍵的瞬間會(huì)出現(xiàn)抖動(dòng)現(xiàn)象,影響秒表的運(yùn)行,因此需要按鍵消抖電路,用以消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。3.控制器控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位。產(chǎn)生鎖存器的使能信號(hào),控制模塊應(yīng)包括開始計(jì)時(shí)/停止計(jì)時(shí)、分段/復(fù)位兩個(gè)按鈕,即電路設(shè)計(jì)經(jīng)常用到的使能端和清零端,這兩個(gè)控制端口直接接到計(jì)數(shù)器的清零和史能端即可實(shí)現(xiàn)復(fù)位、開始計(jì)時(shí)/停止計(jì)時(shí);但是外圍使能輸入需要經(jīng)過使能轉(zhuǎn)換電路后,才可變?yōu)橛?jì)數(shù)器可用的使能控制信號(hào)。因此在輸入使能信號(hào)和計(jì)數(shù)器使能輸入之間需設(shè)計(jì)一個(gè)信號(hào)轉(zhuǎn)換模塊。顯示計(jì)數(shù)結(jié)果的模塊實(shí)現(xiàn)較為簡(jiǎn)單,只需將六位計(jì)數(shù)結(jié)果通過七段譯碼電路接到輸出即可點(diǎn)亮數(shù)碼管,無需時(shí)序控制,直接用組合邏輯電路就可以實(shí)現(xiàn)。數(shù)碼管顯示可以采用掃描顯示,用一個(gè)頻率1KHz的信號(hào)掃描一個(gè)多路選擇器,實(shí)現(xiàn)對(duì)六位已經(jīng)鎖存的計(jì)數(shù)結(jié)果的掃描輸出。該模塊部分VHDL源程序見附錄。狀態(tài)圖如圖2.3.3所示:圖2.3.2狀態(tài)圖4.計(jì)數(shù)器對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成10進(jìn)制,6進(jìn)制的計(jì)數(shù)功能,并在最后把他們進(jìn)行綜合級(jí)聯(lián),組成兩個(gè)60進(jìn)制,一個(gè)100進(jìn)制的計(jì)數(shù)器。5.數(shù)據(jù)鎖存器鎖存數(shù)據(jù)使顯示并保持暫停。6.掃描顯示的控制電路包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,控制8個(gè)數(shù)碼管以掃描方式顯示計(jì)時(shí)結(jié)果。總框圖如圖2.3.3所示總設(shè)計(jì)框圖2.3.1分頻器設(shè)計(jì)實(shí)驗(yàn)板提供48MHz的震蕩信號(hào),要求輸出頻率分別為1KHz和100Hz。分頻器的實(shí)現(xiàn)原理是基于計(jì)數(shù)器的方法設(shè)計(jì)的,通過對(duì)若干個(gè)震蕩信號(hào)的計(jì)數(shù)來實(shí)現(xiàn)輸出信號(hào)的翻轉(zhuǎn),故而實(shí)現(xiàn)了分頻。要得到1KHz的方波,需要48000分頻,同時(shí)若想得到100Hz的方波,需要再對(duì)得到的1KHz的時(shí)鐘信號(hào)再進(jìn)行10分頻。對(duì)時(shí)鐘分頻模塊是將輸入的外部48MHz的時(shí)鐘信號(hào)進(jìn)行分頻,從而產(chǎn)生用來消抖和用于控制的1KHz的時(shí)鐘信號(hào)clk_out和用于秒表內(nèi)部計(jì)時(shí)的100Hz的時(shí)鐘信號(hào)clk,輸入信號(hào)實(shí)驗(yàn)板晶振產(chǎn)生的48MHz的時(shí)鐘信號(hào),輸出信號(hào)分別是用于消抖和控制的clk_out和用于計(jì)數(shù)的時(shí)鐘信號(hào)clk,如圖示,本次設(shè)計(jì),我使用的方法是取第24000次翻轉(zhuǎn),從而達(dá)到48000次一個(gè)周期實(shí)現(xiàn)1KHZ信號(hào)的獲取,模塊圖如圖1:圖12.3.2消抖電路設(shè)計(jì)由于秒表采用按鍵的輸入方式,按鍵產(chǎn)生的時(shí)間和持續(xù)的時(shí)間的長(zhǎng)短是隨機(jī)的,存在各種原因引起的電平抖動(dòng)現(xiàn)象,因此需要在每個(gè)開關(guān)后面加一個(gè)按鍵輸入模塊。消抖模塊應(yīng)能排除在按鍵按下電平不能穩(wěn)定變化,出現(xiàn)紋波的情況下,對(duì)按鍵電平的識(shí)別。按鍵輸入模塊的作用是保證系統(tǒng)能捕捉到輸入脈沖,并保證每按一鍵,只形成一個(gè)寬度為模塊時(shí)鐘周期的脈沖。當(dāng)按鍵按下時(shí),做一個(gè)延時(shí),一段延時(shí)后,仍檢測(cè)出按鍵為低電平,則認(rèn)為按鍵按下,否則不判定為按鍵按下。本設(shè)使用計(jì)的按鍵消抖模塊的思想為,當(dāng)按鍵按下后,在所設(shè)定的一小段時(shí)間內(nèi),持續(xù)維持低電平,則判斷為真正按下,輸出有效。2.3.3控制器使能控制是為了產(chǎn)生使能控制信號(hào),在該控制信號(hào)作用下使輸出發(fā)生翻轉(zhuǎn)。按鍵輸入每來一個(gè)上升沿,使能輸出電平變化一次。即實(shí)現(xiàn)了每按一次按鍵計(jì)數(shù)器在停止和開始計(jì)數(shù)之間切換。控制模塊的主要作用是產(chǎn)生秒表內(nèi)部的定時(shí)計(jì)數(shù)的計(jì)數(shù)允許信號(hào),該模塊的輸入信號(hào)分別是兩個(gè)去除抖動(dòng)后的啟動(dòng)信號(hào)ajxss,ajxsr,以及時(shí)鐘信號(hào)clk_out,輸出分別為用于控制計(jì)數(shù)器的清零信號(hào)kzrst,控制計(jì)數(shù)器使能信號(hào)的kzcin,以及控制鎖存器的信號(hào)kzen,控制模塊的引腳如圖2示:圖22.3.4計(jì)數(shù)器秒表計(jì)數(shù)模塊主要是用于實(shí)現(xiàn)秒表的定時(shí)計(jì)數(shù)功能。由于實(shí)驗(yàn)板數(shù)碼管數(shù)量限制,計(jì)數(shù)器由六個(gè)計(jì)數(shù)器級(jí)聯(lián)實(shí)現(xiàn),其中4個(gè)十進(jìn)制計(jì)數(shù)器、2個(gè)六進(jìn)制計(jì)數(shù)器。本實(shí)驗(yàn)方案采用同步級(jí)聯(lián)實(shí)現(xiàn)。本設(shè)計(jì)使用的是異步清零和同步使能,即當(dāng)清零有效時(shí),計(jì)數(shù)器立即清零,而當(dāng)使能有效時(shí),只有當(dāng)時(shí)鐘上升沿到來時(shí),才進(jìn)行暫?;蜷_始計(jì)數(shù)的功能。使能輸入即進(jìn)位輸入。首先先判斷清零是否有效,當(dāng)有效時(shí),執(zhí)行清零操作,q值為0。當(dāng)清零無效時(shí),并且使能有效是,進(jìn)行計(jì)數(shù)。計(jì)數(shù)輸出為四位二進(jìn)制數(shù)q。最后判斷當(dāng)計(jì)數(shù)值滿并且使能有效時(shí),進(jìn)位輸出有效。六進(jìn)制計(jì)數(shù)器原理與十進(jìn)制計(jì)數(shù)器類似。只是q值最大為“0101”。秒表計(jì)數(shù)模塊的輸入信號(hào)包括經(jīng)過分頻的100Hz時(shí)鐘信號(hào)以及用于控制清零復(fù)位信號(hào)rst和使能的cin。秒表計(jì)數(shù)模塊的輸出信號(hào)就是秒表的計(jì)時(shí)信息,包括分十位信號(hào),分個(gè)位信號(hào),秒十位信號(hào),秒個(gè)位信號(hào),0.01秒十位信號(hào),0.01秒個(gè)位信號(hào),并將輸出信號(hào)與鎖存器相連,作為鎖存器的輸入信號(hào)。根據(jù)計(jì)數(shù)器的知識(shí)我們可以知道,可以將6個(gè)計(jì)數(shù)器級(jí)聯(lián)實(shí)現(xiàn)這個(gè)功能。利用分頻器得到0.01s的方波信號(hào),以此作為每一個(gè)計(jì)數(shù)器的clk,計(jì)數(shù)器計(jì)算上升沿,得到輸出與進(jìn)位,此計(jì)數(shù)器的進(jìn)位作為下一個(gè)計(jì)數(shù)器的使能控制端cin,依次類推。一共有7個(gè)計(jì)數(shù)器,第1、2、4、7個(gè)計(jì)數(shù)器是十進(jìn)制,第5、8個(gè)計(jì)數(shù)器是6進(jìn)制。其中rst為復(fù)位清零信號(hào),cin為計(jì)數(shù)使能信號(hào),計(jì)數(shù)器有模10和模6計(jì)數(shù)器,其引腳電路圖如圖3示,結(jié)構(gòu)圖如圖4示:圖3圖42.3.5模塊設(shè)計(jì)之?dāng)?shù)據(jù)鎖存器因?yàn)槊氡碓O(shè)計(jì)中要求在計(jì)時(shí)過程中能隨時(shí)固定顯示時(shí)間,而計(jì)時(shí)仍然繼續(xù),所以要用到鎖存器。數(shù)據(jù)鎖存器,在使能en=1時(shí),將計(jì)數(shù)器傳送來的數(shù)據(jù)正常傳輸至輸出口從而正常顯示,en=0時(shí),不能將計(jì)數(shù)器傳出來的數(shù)據(jù)正常送至輸出,而是將之前輸入送至輸出,一直顯示因此不能正常顯示,但此時(shí)仍能正常計(jì)數(shù),當(dāng)en再次等于1時(shí),顯示將回歸原來的狀態(tài)。鎖存器的輸入為計(jì)數(shù)器的輸出,鎖存器結(jié)構(gòu)如圖5示:圖52.3.6模塊設(shè)計(jì)之掃描顯示和控制電路顯示部分直接采用實(shí)驗(yàn)板上的6個(gè)共陽(yáng)極數(shù)碼管,如上圖示,若想使數(shù)碼管顯示,則需先使其使能端置于低電平,在本設(shè)計(jì)中為ncs=0,掃描顯示和控制電路共分為3個(gè)小模塊,=1\*GB3①在clk信號(hào)1khz,計(jì)數(shù)器數(shù)其上升沿,輸出q2、q1、q0三位位選信號(hào)=2\*GB3②在q2、q1、q0控制下,將來自鎖存器的信號(hào)某一時(shí)刻只輸出一個(gè)信號(hào)=3\*GB3③將此信號(hào)輸出成數(shù)碼管編碼。位選某一時(shí)刻選擇一個(gè)數(shù)碼管顯示相應(yīng)數(shù)據(jù),即為動(dòng)態(tài)掃描顯示。數(shù)碼管的7個(gè)段,只需將其輸出端口定義到可用作數(shù)碼管顯示的器件的I/O引腳上即可。顯示電路引腳圖如圖6示;圖62.3.7模塊設(shè)計(jì)之模塊綜合秒表內(nèi)部模塊級(jí)聯(lián)框圖如下:3數(shù)字秒表的仿真結(jié)果3.1各仿真結(jié)果編寫各個(gè)模塊的testbench文件,進(jìn)行仿真,得到仿真波形。3.2模塊仿真之分頻器仿真波形如圖示(圖3.1)圖3.13.3計(jì)數(shù)電路仿真=1\*GB3①模6計(jì)數(shù)器仿真(圖3.2)圖3.2=2\*GB3②模10計(jì)數(shù)器仿真(圖3.3)圖3.34實(shí)驗(yàn)結(jié)論經(jīng)下載仿真后,從FPGA實(shí)驗(yàn)板的運(yùn)行結(jié)果來看,該秒表實(shí)現(xiàn)了設(shè)計(jì)要求中包括所有擴(kuò)展功能在內(nèi)的全部功能,且顯示時(shí)間穩(wěn)定準(zhǔn)確,按鍵靈敏度高。在ISE軟件的開發(fā)環(huán)境下,采用自頂向下的方法有利于在早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)中的錯(cuò)誤,再結(jié)合基于FPGA的可編程實(shí)驗(yàn)板,輕松的實(shí)現(xiàn)了秒表的功能,利用仿真和現(xiàn)場(chǎng)觀察實(shí)驗(yàn)結(jié)果,大大地提高了設(shè)計(jì)的可靠性和成功率,充分體現(xiàn)了可編程邏輯器件在數(shù)字電路中的優(yōu)越性。參考文獻(xiàn)[1]侯伯亨,顧新,VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)[2]石英,李新新,ISE應(yīng)用與開發(fā)技巧[3]馮祥,可編程邏輯器件在數(shù)字系統(tǒng)中的應(yīng)用[4]JohnM.Yarbrough,DigitallogicApplicationandDesign[5]熊焱春,劉益成,基于FPGA的數(shù)字秒表設(shè)計(jì)[6]古天祥,王厚軍,習(xí)友寶,電子測(cè)量原理[7]洪海麗,用VHDL設(shè)計(jì)數(shù)字電路[8]胡青,EDA設(shè)計(jì)中的層次化設(shè)計(jì)方法[9]劉寧寧,VHDL語(yǔ)言在FPGA設(shè)計(jì)中的應(yīng)用[10]于斌,米秀杰,ModelSim電子系統(tǒng)分析及仿真附錄:1,分頻器電路程序Company:--Engineer:----CreateDate:15:50:0803/06/2014--DesignName:--ModuleName:fenpin-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityfenpinisport(clk:instd_logic; clk_out:outstd_logic); endfenpin;architectureBehavioraloffenpinissignalnew_clk:integer:=0;signalclk_out_tmp:std_logic:='0';beginprocess(clk)begin ifrising_edge(clk)then ifnew_clk=23999then new_clk<=0; clk_out_tmp<=notclk_out_tmp; else new_clk<=new_clk+1; endif; endif;endprocess;clk_out<=clk_out_tmp;endBehavioral;2,消抖電路程序Company:--Engineer:----CreateDate:16:37:3103/06/2014--DesignName:--ModuleName:zongxiaodou-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityzongxiaodouisport(clk:INstd_logic; key_in:INstd_logic;keysr_in:INstd_logic; key_out:OUTstd_logic; keysr_out:OUTstd_logic);endzongxiaodou;architectureBehavioralofzongxiaodouisCOMPONENTxiaodou PORT( clk:INstd_logic; key_in:INstd_logic; key_out:OUTstd_logic ); ENDCOMPONENT;signalzbclk:std_logic;beginzbclk<=clk; XD1:xiaodouPORTMAP( clk=>zbclk, key_in=>key_in, key_out=>key_out ); XD2:xiaodouPORTMAP( clk=>zbclk, key_in=>keysr_in, key_out=>keysr_out );endBehavioral;XD1&XD2:Company:--Engineer:----CreateDate:16:38:2603/06/2014--DesignName:--ModuleName:xiaodou-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityxiaodouisport(clk:instd_logic;key_in:instd_logic; key_out:outstd_logic); endxiaodou;architectureBehavioralofxiaodouissignalk1,k2:std_logic; signalcnt:std_logic_vector(1downto0); beginprocess(clk,key_in) begin ifclk'eventandclk='0'then ifcnt=3then k1<='1'; else k1<='0'; cnt<=cnt+1; endif; k2<=k1; endif; ifkey_in='0'then cnt<="00"; endif; endprocess; key_out<=notk1andk2; endBehavioral;3,控制電路程序Company:--Engineer:----CreateDate:15:51:0503/06/2014--DesignName:--ModuleName:control-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entitycontrolis port( clk:instd_logic; ajxss:instd_logic; ajxsr:instd_logic; kzrst:outstd_logic; kzcin:outstd_logic; kzen:outstd_logic );endcontrol;architectureBehavioralofcontrolis signalst:std_logic_vector(2downto0):="111"; signalsr:std_logic_vector(1downto0);begin sr<=ajxss&ajxsr; process(sr,clk) begin ifrising_edge(clk)then casestis when"011"=> casesris when"01"=>st<="010"; when"10"=>st<="001"; whenothers=>st<="011"; endcase; when"111"=> casesris when"10"=>st<="011"; whenothers=>st<="111"; endcase; when"001"=> casesris when"01"=>st<="111"; when"10"=>st<="011"; whenothers=>st<="001"; endcase; when"010"=> casesris when"01"=>st<="011"; whenothers=>st<="010"; endcase; whenothers=> st<="111"; endcase; endif; endprocess; kzrst<=st(2); kzcin<=st(1); kzen<=st(0); endBehavioral;4,計(jì)數(shù)電路程序綜合進(jìn)位程序Company:--Engineer:----CreateDate:15:51:4703/06/2014--DesignName:--ModuleName:main-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitymainisport(rst:instd_logic; cin:instd_logic; clk:instd_logic; q1:outstd_logic_vector(3downto0); q2:outstd_logic_vector(3downto0); q3:outstd_logic_vector(3downto0); q4:outstd_logic_vector(3downto0); q5:outstd_logic_vector(3downto0); q6:outstd_logic_vector(3downto0));endmain;architectureBehavioralofmainisCOMPONENTcnt_10 PORT( clk:INstd_logic; cin:INstd_logic; rst:INstd_logic; cout:OUTstd_logic; q:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTcnt_6 PORT( clk:INstd_logic; cin:INstd_logic; rst:INstd_logic; cout:OUTstd_logic; q:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; signalc0,c1,c2,c3,c4,c5:std_logic;begin U0:cnt_10PORTMAP( clk=>clk, cin=>cin, rst=>rst, cout=>c0, q=>open ); U1:cnt_10PORTMAP( clk=>clk, cin=>c0, rst=>rst, cout=>c1, q=>q1 ); U2:cnt_10PORTMAP( clk=>clk, cin=>c1, rst=>rst, cout=>c2, q=>q2 ); U3:cnt_10PORTMAP( clk=>clk, cin=>c2, rst=>rst, cout=>c3, q=>q3 ); U4:cnt_6PORTMAP( clk=>clk, cin=>c3, rst=>rst, cout=>c4, q=>q4 ); U5:cnt_10PORTMAP( clk=>clk, cin=>c4, rst=>rst, cout=>c5, q=>q5 ); U6:cnt_6PORTMAP( clk=>clk, cin=>c5, rst=>rst, cout=>open, q=>q6 );endBehavioral;=1\*GB3①模6計(jì)數(shù)器Company:--Engineer:----CreateDate:15:54:2503/06/2014--DesignName:--ModuleName:cnt_6-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitycnt_6is port( clk:instd_logic; cin:instd_logic; rst:instd_logic; cout:outstd_logic; q:outstd_logic_vector(3downto0) );endcnt_6;architectureBehavioralofcnt_6is signalold_s,new_s:std_logic_vector(3downto0);begin process(rst,clk) begin ifrst='1'then old_s<=(others=>'0'); elsifrising_edge(clk)then old_s<=new_s; endif; endprocess; process(cin,old_s) begin ifcin='1'then ifold_s<5then new_s<=old_s+1; else new_s<=(others=>'0'); endif; else new_s<=old_s; endif; endprocess; process(cin,old_s) begin q<=old_s; ifcin='1'andold_s=5then cout<='1'; else cout<='0'; endif; endprocess;endBehavioral;=2\*GB3②模10計(jì)數(shù)器Company:--Engineer:----CreateDate:15:53:1503/06/2014--DesignName:--ModuleName:cnt_10-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitycnt_10is port( clk:instd_logic; cin:instd_logic; rst:instd_logic; cout:outstd_logic; q:outstd_logic_vector(3downto0) );endcnt_10;architectureBehavioralofcnt_10is signalold_s,new_s:std_logic_vector(3downto0);begin process(rst,clk) begin ifrst='1'then old_s<=(others=>'0'); elsifrising_edge(clk)then old_s<=new_s; endif; endprocess; process(cin,old_s) begin ifcin='1'then ifold_s<9then new_s<=old_s+1; else new_s<=(others=>'0'); endif; else new_s<=old_s; endif; endprocess; process(cin,old_s) begin q<=old_s; ifcin='1'andold_s=9then cout<='1'; else cout<='0'; endif; endprocess;endBehavioral;5,數(shù)據(jù)鎖存電路程序Company:--Engineer:----CreateDate:15:55:0603/06/2014--DesignName:--ModuleName:save-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitysaveisport(en:instd_logic; rq1:instd_logic_vector(3downto0); rq2:instd_logic_vector(3downto0); rq3:instd_logic_vector(3downto0); rq4:instd_logic_vector(3downto0); rq5:instd_logic_vector(3downto0); rq6:instd_logic_vector(3downto0); cq1:outstd_logic_vector(3downto0); cq2:outstd_logic_vector(3downto0); cq3:outstd_logic_vector(3downto0); cq4:outstd_logic_vector(3downto0); cq5:outstd_logic_vector(3downto0); cq6:outstd_logic_vector(3downto0));endsave;architectureBehavioralofsaveissignals1,s2,s3,s4,s5,s6:std_logic_vector(3downto0);begins1<=rq1; s2<=rq2; s3<=rq3; s4<=rq4; s5<=rq5; s6<=rq6;process(s1,s2,s3,s4,s5,s6,en)beginifen='1'then cq1<=s1; cq2<=s2; cq3<=s3; cq4<=s4; cq5<=s5; cq6<=s6;endif;endprocess;endBehavioral;6,掃描顯示和控制電路程序Company:--Engineer:----CreateDate:15:55:4003/06/2014--DesignName:--ModuleName:disp-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitydispisport(zsclk:instd_logic; m1:INstd_logic_vector(3downto0); m2:INstd_logic_vector(3downto0); m3:INstd_logic_vector(3downto0); m4:INstd_logic_vector(3downto0); m5:INstd_logic_vector(3downto0); m6:INstd_logic_vector(3downto0); led:OUTstd_logic_vector(6downto0); q0:OUTstd_logic; q1:OUTstd_logic; q2:OUTstd_logic);enddisp;architectureBehavioralofdispisCOMPONENTsmkzxsym PORT( sclk:INstd_logic; q0:OUTstd_logic; q1:OUTstd_logic; q2:OUTstd_logic ); ENDCOMPONENT; COMPONENTshumaguan PORT( yiger:INstd_logic_vector(3downto0); led:OUTstd_logic_vector(6downto0) ); ENDCOMPONENT; COMPONENTduoguiyi PORT( m1:INstd_logic_vector(3downto0); m2:INstd_logic_vector(3downto0); m3:INstd_logic_vector(3downto0); m4:INstd_logic_vector(3downto0); m5:INstd_logic_vector(3downto0); m6:INstd_logic_vector(3downto0); pxr0:INstd_logic; pxr1:INstd_logic; pxr2:INstd_logic; yigec:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; signalzbq0:std_logic; signalzbq1:std_logic; signalzbq2:std_logic; signalyige:std_logic_vector(3downto0); beginq0<=zbq0; q1<=zbq1; q2<=zbq2;Inst_smkzxsym:smkzxsymPORTMAP( sclk=>zsclk, q0=>zbq0, q1=>zbq1, q2=>zbq2 );Inst_shumaguan:shumaguanPORTMAP( yiger=>yige, led=>led ); Inst_duoguiyi:duoguiyiPORTMAP( m1=>m1, m2=>m2, m3=>m3, m4=>m4, m5=>m5, m6=>m6, pxr0=>zbq0, pxr1=>zbq1, pxr2=>zbq2, yigec=>yige );endBehavioral;Company:--Engineer:----CreateDate:15:57:1203/06/2014--DesignName:--ModuleName:smkzxsym-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitysmkzxsymisport(sclk:instd_logic; q0:outstd_logic; q1:outstd_logic; q2:outstd_logic);endsmkzxsym;architectureBehavioralofsmkzxsymissignalold_s,q:std_logic_vector(2downto0);beginq0<=q(0); q1<=q(1);q2<=q(2);process(sclk) begin ifrising_edge(sclk)then ifold_s<7then old_s<=old_s+1; else old_s<=(others=>'0'); endif; endif; q<=old_s; endprocess; endBehavioral;Company:--Engineer:----CreateDate:15:57:5703/06/2014--DesignName:--ModuleName:shumaguan-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityshumaguanisport(yiger:instd_logic_vector(3downto0); led:outstd_logic_vector(6downto0));endshumaguan;architectureBehavioralofshumaguanisbeginprocess(yiger)begin caseyigeris when"0000"=>led<="0000001"; when"0001"=>led<="1001111"; when"0010"=>led<="0010010"; when"0011"=>led<="0000110"; when"0100"=>led<="1001100"; when"0101"=>led<="0100100"; when"0110"=>led<="0100000"; when"0111"=>led<="0001111"; when"1000"=>led<="0000000"; when"1001"=>led<="0000100"; when"1111"=>led<="1111110"; whenothers=>led<="1111111"; endcase; endprocess;endBehavioral;Company:--Engineer:----CreateDate:15:59:1903/06/2014--DesignName:--ModuleName:duoguiyi-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:--Revision0.01-FileCreated--AdditionalComments:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityduoguiyiisport(m1:instd_logic_vector(3downto0); m2:instd_logic_vector(3downto0); m3:instd_logic_vector(3downto0);m4:instd_logic_vector(3downto0);m5:instd_logic_vector(3downto0);m6:instd_logic

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論