電子科技大學(xué)電子技術(shù)綜合實(shí)驗(yàn)秒表實(shí)驗(yàn)報(bào)告_第1頁(yè)
電子科技大學(xué)電子技術(shù)綜合實(shí)驗(yàn)秒表實(shí)驗(yàn)報(bào)告_第2頁(yè)
電子科技大學(xué)電子技術(shù)綜合實(shí)驗(yàn)秒表實(shí)驗(yàn)報(bào)告_第3頁(yè)
電子科技大學(xué)電子技術(shù)綜合實(shí)驗(yàn)秒表實(shí)驗(yàn)報(bào)告_第4頁(yè)
電子科技大學(xué)電子技術(shù)綜合實(shí)驗(yàn)秒表實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

30/30現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)電子秒表設(shè)計(jì)學(xué)生姓名:xxx學(xué)號(hào):xxxxxxxxx指導(dǎo)老師:劉曦學(xué)院:xxxxxxxx提交時(shí)間:2015年5月摘要 本文介紹了使用VHDL開(kāi)發(fā)FPGA的一般流程,重點(diǎn)介紹了電子秒表的設(shè)計(jì)。該設(shè)計(jì)以VHDL作為硬件開(kāi)發(fā)語(yǔ)言,以ISE作為軟件開(kāi)發(fā)平臺(tái),準(zhǔn)確地實(shí)現(xiàn)了秒表計(jì)數(shù)、清零、暫停等功能,并使用ModelSim仿真軟件對(duì)VHDL程序?qū)崿F(xiàn)了仿真,完成了綜合布局布線,最終將程序下載到芯片Spartan-3A,測(cè)試結(jié)果良好。關(guān)鍵字:FPGAVHDLISEModelSim電子秒表

目錄第一章引言————————————————————————————4第二章基于FPGA的VHDL設(shè)計(jì)流程——————————————————4 2.1時(shí)間的概念及計(jì)時(shí)方法————————————————————42.2VHDL語(yǔ)言簡(jiǎn)介———————————————————————4 2.2.1VHDL語(yǔ)言特點(diǎn)————————————————————-4 2.2.2VHDL語(yǔ)言優(yōu)勢(shì)————————————————————-6 2.3FPGA簡(jiǎn)介—————————————————————————6 2.3.1FPGA的主要特點(diǎn)———————————————————-62.3.2FPGA的開(kāi)發(fā)流程————————————————————6第三章電子秒表的軟件開(kāi)發(fā)環(huán)境———————————————————63.1ModelSim簡(jiǎn)介————————————————————————73.1.1ModelSim的特點(diǎn)————————————————————-7 3.2ISE簡(jiǎn)介——————————————————————————-7第四章電子秒表的設(shè)計(jì)與實(shí)現(xiàn)————————————————————-74.1實(shí)驗(yàn)任務(wù)——————————————————————————94.2實(shí)驗(yàn)條件——————————————————————————94.3系統(tǒng)需求和解決方案—————————————————————94.4各模塊的實(shí)現(xiàn)————————————————————————94.4.1分頻器————————————————————————分頻得到1KHz的時(shí)鐘信號(hào)—————————————分頻得到100Hz的時(shí)鐘信號(hào)————————————104.4.2輸入控制電路—————————————————————11 防抖電路————————————————————11 控制電路————————————————————114.4.3計(jì)數(shù)模塊———————————————————————十進(jìn)制計(jì)數(shù)器——————————————————六進(jìn)制計(jì)數(shù)器——————————————————134.4.4鎖存器————————————————————————134.4.5顯示模塊———————————————————————掃描器—————————————————————數(shù)據(jù)選擇器———————————————————七段譯碼器———————————————————144.5分配引腳和下載實(shí)現(xiàn)————————————————————-144.6實(shí)驗(yàn)結(jié)果及仿真——————————————————————-15第五章結(jié)論———————————————————————————155.1實(shí)驗(yàn)結(jié)論—————————————————————————155.2心得體會(huì)—————————————————————————15參考文獻(xiàn)———————————————————————————16致謝—————————————————————————————16附錄————————————————————————————17引言隨著現(xiàn)代電子科技的發(fā)展,各種新型的電子產(chǎn)品層出不窮,而高精度的電子秒表作為電子產(chǎn)品的一部分,在人們的日常生產(chǎn)、生活中發(fā)揮著極其重要的作用。本文主要任務(wù)是針對(duì)設(shè)計(jì)的要求,基于FPGA利用硬件描述語(yǔ)言VHDL完成秒表的設(shè)計(jì),并且通過(guò)仿真、分析、綜合從而實(shí)現(xiàn)計(jì)數(shù)、清零、暫停等功能。該系統(tǒng)具有高速、精確、可靠、抗干擾性強(qiáng)和現(xiàn)場(chǎng)可編程等優(yōu)點(diǎn),且系統(tǒng)成本非常低廉,適用于大規(guī)模地生產(chǎn)和應(yīng)用?;贔PGA的VHDL設(shè)計(jì)流程2.1時(shí)間的概念及計(jì)時(shí)方法時(shí)間是物理學(xué)中的七個(gè)基本量綱之一,符號(hào)t。在國(guó)際單位制(SI)中,時(shí)間的額吉本單位是秒,符號(hào)s,在1967年召開(kāi)的第13屆國(guó)際度量衡大會(huì)對(duì)秒的定義是:銫133原子基態(tài)的兩個(gè)超精細(xì)能階間跳躍對(duì)應(yīng)輻射的9,192,631,770個(gè)周期的持續(xù)時(shí)間。這個(gè)定義提到的銫原子必須在絕對(duì)零度是靜止的,而且在地面上的環(huán)境是零磁場(chǎng)。在這樣的情況下被定義的秒,在天文學(xué)上的歷書時(shí)所定義的秒是等效的。中國(guó)古代的計(jì)時(shí)器有太陽(yáng)鐘和機(jī)械鐘兩種。太陽(yáng)鐘是以太陽(yáng)的投影和方位來(lái)計(jì)時(shí)的。代表有土圭、圭表、日晷等。而由于地球軌道偏心率以及地球傾角的影響,真太陽(yáng)時(shí)和平太陽(yáng)時(shí)是不一致的,機(jī)械鐘應(yīng)運(yùn)而生,代表有水鐘、沙漏等。時(shí)間已經(jīng)走到21世紀(jì),為了更加精確的測(cè)量時(shí)間,現(xiàn)代人使用了很多方法。最常用的包括有機(jī)械時(shí)鐘和電子時(shí)鐘。本文介紹的電子秒表便是電子時(shí)鐘的一種。我們將基于FPGA和EDA軟件來(lái)制作一款秒表,已達(dá)到計(jì)時(shí)的目的。2.2VHDL語(yǔ)言簡(jiǎn)介 VHDL語(yǔ)言是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。它在80年代的后期出現(xiàn)。最初是由美國(guó)國(guó)防部開(kāi)發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開(kāi)發(fā)周期的一種使用范圍較小的設(shè)計(jì)語(yǔ)言。VHDL翻譯成中文就是超高速集成電路硬件描述語(yǔ)言,主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中。它在中國(guó)的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來(lái)設(shè)計(jì)ASIC。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式、描述風(fēng)格以及語(yǔ)法是十分類似于一般的計(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)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。2.2.1VHDL語(yǔ)言特點(diǎn)與其他硬件描述語(yǔ)言相比,VHDL具有以下特點(diǎn):功能強(qiáng)大、設(shè)計(jì)靈活VHDL具有功能強(qiáng)大的語(yǔ)言結(jié)構(gòu),可以用簡(jiǎn)潔明確的源代碼來(lái)描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計(jì)描述功能,層層細(xì)化,最后可直接生成電路級(jí)描述。VHDL支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì),這是其他硬件描述語(yǔ)言所不能比擬的。VHDL還支持各種設(shè)計(jì)方法,既支持自底向上的設(shè)計(jì),又支持自頂向下的設(shè)計(jì);既支持模塊化設(shè)計(jì),又支持層次化設(shè)計(jì)。支持廣泛、易于修改由于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)范的硬件描述語(yǔ)言,大多數(shù)EDA工幾乎都支持VHDL,這為VHDL的進(jìn)一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計(jì)過(guò)程中,主要的設(shè)計(jì)文件是用VHDL編寫的源代碼,因?yàn)閂HDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計(jì)。強(qiáng)大的系統(tǒng)硬件描述能力VHDL具有多層次的設(shè)計(jì)描述功能,既可以描述系統(tǒng)級(jí)電路,又可以描述門級(jí)電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級(jí)描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準(zhǔn)確地建立硬件電路模型。VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來(lái)較大的自由度,使設(shè)計(jì)人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。獨(dú)立于器件的設(shè)計(jì)、與工藝無(wú)關(guān)設(shè)計(jì)人員用VHDL進(jìn)行設(shè)計(jì)時(shí),不需要首先考慮選擇完成設(shè)計(jì)的器件,就可以集中精力進(jìn)行設(shè)計(jì)的優(yōu)化。當(dāng)設(shè)計(jì)描述完成后,可以用多種不同的器件結(jié)構(gòu)來(lái)實(shí)現(xiàn)其功能。很強(qiáng)的移植能力VHDL是一種標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,同一個(gè)設(shè)計(jì)描述可以被不同的工具所支持,使得設(shè)計(jì)描述的移植成為可能。易于共享和復(fù)用VHDL采用基于庫(kù)(Library)的設(shè)計(jì)方法,可以建立各種可再次利用的模塊。這些模塊可以預(yù)先設(shè)計(jì)或使用以前設(shè)計(jì)中的存檔模塊,將這些模塊存放到庫(kù)中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用,可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間進(jìn)行交流和共享,減少硬件電路設(shè)計(jì)。2.2.2VHDL語(yǔ)言優(yōu)勢(shì) (1)與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。強(qiáng)大的行為描述能力是避開(kāi)具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。(2)VHDL豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。(3)VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場(chǎng)需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。(4)對(duì)于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級(jí)網(wǎng)表。(5)VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。2.3FPGA簡(jiǎn)介 FPGA是英文FieldProgrammableGateArray的縮寫,即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專門集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。 FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊IOB(InputOutputBlock)和內(nèi)部連線(Interconnect)三個(gè)部分。2.3.1FPGA的主要特點(diǎn) (1)采用FPGA設(shè)計(jì)ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。 (3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 (4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。 (5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。2.3.2FPGA的開(kāi)發(fā)流程 FPGA開(kāi)發(fā)一般可分為以下七部分:1、文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件2、功能仿真:將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對(duì)簡(jiǎn)單的設(shè)計(jì)可以跳過(guò)這一步,只在布線完成以后,進(jìn)行時(shí)序仿真)3、邏輯綜合:將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語(yǔ)言綜合成最簡(jiǎn)的布爾表達(dá)式。邏輯綜合軟件會(huì)生成.edf(edif)的EDA工業(yè)標(biāo)準(zhǔn)文件。4、布局布線:將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放到PLD/FPGA內(nèi)。5、時(shí)序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫后仿真)6、編程下載:確認(rèn)仿真無(wú)誤后,將文件下載到芯片中7、硬件測(cè)試:硬件測(cè)試的目的是為了在更真實(shí)的環(huán)境中檢驗(yàn)HDL設(shè)計(jì)的運(yùn)行情況,特別是對(duì)于HDL程序設(shè)計(jì)上不是十分規(guī)范,語(yǔ)義上含有一定歧義的程序。電子秒表的軟件開(kāi)發(fā)環(huán)境本章主要介紹項(xiàng)目中將要用到了一系列軟件,包括用于VHDL語(yǔ)言編寫和編譯的ISE軟件和用于程序仿真的仿真軟件ModelSim。3.1ModelSim簡(jiǎn)介 Mentor公司的ModelSim是業(yè)界最優(yōu)秀的HDL語(yǔ)言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無(wú)關(guān),便于保護(hù)IP核,個(gè)性化的圖形界面和用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段,是FPGA/ASIC設(shè)計(jì)的首選仿真軟件。3.1.1ModelSim的特點(diǎn)·RTL和門級(jí)優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺(tái)跨版本仿真;·單內(nèi)核VHDL和Verilog混合仿真;·源代碼模版和助手,項(xiàng)目管理;·集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、SignalSpy、虛擬對(duì)象VirtualObject、Memory窗口、Assertion窗口、源碼窗口顯示信號(hào)值、信號(hào)條件斷點(diǎn)等眾多調(diào)試功能;·C和Tcl/Tk接口,C調(diào)試;·對(duì)SystemC的直接支持,和HDL任意混合;·支持SystemVerilog的設(shè)計(jì)功能;·對(duì)系統(tǒng)級(jí)描述語(yǔ)言的最全面支持,SystemVerilog,SystemC,PSL;·ASICSignoff?!た梢詥为?dú)或同時(shí)進(jìn)行行為(behavioral)、RTL級(jí)、和門級(jí)(gate-level)的代碼。3.2ISE簡(jiǎn)介 ISEt是Xilinx公司提供的集成化FPGA開(kāi)發(fā)軟件,它的主要功能包括設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)和下載。(1)設(shè)計(jì)輸入ISE軟件提供的設(shè)計(jì)輸入工具包括用于HDL代碼輸入和報(bào)告查看的ISE文本編輯器(TextEditor),用于原理圖編輯的工具ECS(EngineeringCaptureSystem),用于PCORE的COREGenerator,用于狀態(tài)機(jī)設(shè)計(jì)的StateCAD,以及用于約束文件編輯的ConstraintEditor等。(2)綜合ISE的綜合工具不但包括了Xilinx自身提供的綜合工具xsr,同時(shí)還可以集成MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify。(3)仿真ISE本身自帶了圖形化波形編輯功能的仿真工具HDLBencher,同時(shí)又提供了使用ModelTechnology公司的ModelSim進(jìn)行仿真的接口。(4)實(shí)現(xiàn)ISE的實(shí)現(xiàn)功能包括了翻譯(Translate)、映射(Map)、布局布線(PlaceandRoute)等。(5)下載下載功能包括了BitGen,用于將布局布線后的設(shè)計(jì)文件轉(zhuǎn)換為比特流(Bitstream)文件。還包括了iMPACT功能,用于進(jìn)行設(shè)備配置和通信,控制將程序燒寫到FPGA芯片中去。使用ISE進(jìn)行FPGA開(kāi)發(fā)大致可以分為3個(gè)步驟。(1)設(shè)計(jì)輸入和仿真設(shè)計(jì)輸入(DesignEntry)是指以HDL代碼、原理圖、波形圖以及狀態(tài)機(jī)的形式輸入設(shè)汁源文件,而設(shè)計(jì)仿真(Simdmion)是指通過(guò)仿真工具對(duì)設(shè)計(jì)的整體模塊或局部模塊進(jìn)行仿真來(lái)檢驗(yàn)設(shè)計(jì)的功能和性能。(2)用戶約束條件、綜合和實(shí)現(xiàn)用戶約束條件(UserConstraints)的作用是對(duì)綜合、實(shí)現(xiàn)過(guò)程進(jìn)行控制,滿足速度、面積、引腳位置等需求。編輯約束條件又包括了4個(gè)子項(xiàng),意義分別為:創(chuàng)建時(shí)間約束、配置引腳、創(chuàng)建面積約束、以文本方式編輯約束。綜合(Synthesize)是FPGA設(shè)計(jì)流程中的重要環(huán)節(jié),綜合結(jié)果的優(yōu)劣直接影響到設(shè)計(jì)的最終性能。ISE自帶的綜合工具是XST,同時(shí)它也支持Synplify/SynplifyPro等第三方綜合工具,但是由于Xilinx對(duì)于其器件的底層最為了解,所以使用XST綜合往往會(huì)得到比較滿意的結(jié)果。綜合包含了3個(gè)子項(xiàng),意義分別為:查看綜合報(bào)告、查看綜合器件的RTL級(jí)原理圖和檢查語(yǔ)法。實(shí)現(xiàn)(Implementation)過(guò)程也包含了3個(gè)子項(xiàng),ImplementDesign項(xiàng)所對(duì)應(yīng)的子項(xiàng),意義分別是:翻譯、映射和布局布線。需要注意,進(jìn)行實(shí)現(xiàn)步驟之前必須進(jìn)行約束條件的編輯,否則實(shí)現(xiàn)可能會(huì)出錯(cuò)。(3)硬件編程硬件編程(Programming)是指生成編輯比特流文件bit,并將其下載到FPGA芯片內(nèi)部的過(guò)程。硬件編程對(duì)應(yīng)圖2--5所示的GenerateProgrammingFile項(xiàng)。電子表秒的設(shè)計(jì)與實(shí)現(xiàn)4.1實(shí)驗(yàn)任務(wù)設(shè)計(jì)一個(gè)秒表,秒表的計(jì)時(shí)范圍為00’00”00~59’59”99。有兩個(gè)按鈕開(kāi)關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開(kāi)始計(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ù)位歸零。4.2實(shí)驗(yàn)條件 我們將利用EDA軟件和HDL語(yǔ)言在EEC-FPGA實(shí)驗(yàn)板上完成秒表的設(shè)計(jì)與實(shí)現(xiàn),實(shí)驗(yàn)板原理如圖1所示。在項(xiàng)目開(kāi)始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。設(shè)計(jì)方案以及系統(tǒng)需求必須按照設(shè)計(jì)要求并根據(jù)客觀條件來(lái)確定。

圖1實(shí)驗(yàn)板原理圖4.3系統(tǒng)需求和解決方案 根據(jù)實(shí)驗(yàn)板原理圖可以發(fā)現(xiàn),數(shù)碼管為共陽(yáng)極輸出,因此,為了能夠使八盞數(shù)碼管同時(shí)顯示時(shí)間,我們需要設(shè)置一個(gè)掃描顯示控制模塊以進(jìn)行掃頻。由于計(jì)時(shí)精度精確到0.01秒,因此根據(jù)數(shù)據(jù)采集定理,分頻后的頻率應(yīng)至少為計(jì)時(shí)精度的兩倍,即200赫茲。由于實(shí)驗(yàn)板僅具備48MHz晶振,因此需要設(shè)計(jì)一個(gè)分頻器對(duì)時(shí)鐘信號(hào)進(jìn)行分頻。根據(jù)設(shè)計(jì)要求,需要具備可以暫停計(jì)時(shí)的功能,因此秒表系統(tǒng)中需要加入一個(gè)鎖存器模塊以對(duì)數(shù)據(jù)進(jìn)行鎖存??紤]到實(shí)際按鍵過(guò)程中經(jīng)常出現(xiàn)按鍵抖動(dòng)的情況,這對(duì)精確計(jì)時(shí)造成了極大的危害,因此,在計(jì)時(shí)系統(tǒng)中需要具備按鍵消抖模塊。此外,由于秒表工作時(shí)具備4種不同的狀態(tài),因此,狀態(tài)控制模塊也是必不可少的。按照以上需求,可以得到整個(gè)電路的原理圖如下圖所示:圖2系統(tǒng)模塊圖從原理圖可知,系統(tǒng)需要以下模塊:1.分頻器:對(duì)晶體振蕩器產(chǎn)生的時(shí)鐘進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。2.計(jì)數(shù)器:對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。3.數(shù)據(jù)鎖存器:鎖存數(shù)據(jù),使顯示保持暫停。4.控制器:控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位,產(chǎn)生鎖存器的使能信號(hào)。5.掃描顯示的控制電路:包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和七段譯碼器,控制8個(gè)數(shù)碼管以掃描方式,顯示結(jié)果。6.按鍵消抖電路:消除按鍵輸入信號(hào),輸出單脈沖。4.4各模塊的實(shí)現(xiàn)4.4.1分頻器 XC3S200A芯片的外部有源晶振頻率為48MHz,而計(jì)時(shí)器的最小單位為0.01s,即100Hz。考慮到系統(tǒng)的穩(wěn)定性,本設(shè)計(jì)選擇了1KHz的信號(hào)作為各模塊的時(shí)鐘信號(hào),即對(duì)晶振信號(hào)進(jìn)行1/48000、1/480000分頻。分頻得到1KHz的時(shí)鐘信號(hào)對(duì)晶振時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù),標(biāo)志位選擇信號(hào)的上升沿:對(duì)每個(gè)上升沿,計(jì)數(shù)器加1;當(dāng)計(jì)數(shù)達(dá)到23999時(shí),下個(gè)上升沿計(jì)數(shù)器,當(dāng)前電平取反,此時(shí)獲得即為1KHZ的信號(hào),源程序見(jiàn)附錄2.仿真結(jié)果如下圖所示,時(shí)鐘周期為48000。圖31KHz信號(hào)仿真圖分頻得到100Hz的時(shí)鐘信號(hào)對(duì)晶振時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù),標(biāo)志位選擇信號(hào)的上升沿:對(duì)每個(gè)上升沿,計(jì)數(shù)器加1;當(dāng)計(jì)數(shù)達(dá)到239999時(shí),下個(gè)上升沿計(jì)數(shù)器,當(dāng)前電平取反,此時(shí)獲得即為100HZ的信號(hào),獲得100HZ的源程序見(jiàn)附錄3。仿真結(jié)果如圖4所示,時(shí)鐘周期剛好為480000。圖4100Hz信號(hào)仿真圖輸入控制電路輸入控制模塊的功能是識(shí)別有效地按鍵輸入和實(shí)現(xiàn)輸入的按鍵信號(hào)對(duì)電子秒表不同狀態(tài)的控制。,秒表的狀態(tài)可分為計(jì)數(shù)開(kāi)/關(guān),顯示鎖定開(kāi)/關(guān)和清零。考到有兩個(gè)輸入按鍵,所以必須有輸入控制電路,同時(shí)考慮到按下按鍵以及松開(kāi)按鍵會(huì)出現(xiàn)抖動(dòng),所以必須設(shè)計(jì)防抖動(dòng)電路。即按鍵輸入信號(hào),必須先經(jīng)過(guò)防抖電路,然后進(jìn)入控制電路。防抖電路由于按鍵輸入,在按下過(guò)程中電平可能會(huì)有一個(gè)不確定的抖動(dòng)狀態(tài)。由于識(shí)別的有效按鍵電平為持續(xù)的低電平,在此設(shè)計(jì)一個(gè)計(jì)數(shù)器,具體思路為:當(dāng)輸入為低電平時(shí)候開(kāi)始計(jì)數(shù);當(dāng)輸入轉(zhuǎn)為高電平時(shí)計(jì)數(shù)清零;初始輸出值為‘0’;當(dāng)?shù)碗娖匠掷m(xù)三個(gè)時(shí)鐘周期,即計(jì)數(shù)為“10”時(shí),停止計(jì)數(shù),改變輸出的狀態(tài)(即‘0’變‘1’,‘1’變‘0’)。這種設(shè)計(jì)把一個(gè)瞬時(shí)信號(hào)變?yōu)槌掷m(xù)信號(hào),簡(jiǎn)化了之后的模塊對(duì)信號(hào)的處理。去抖電路程序見(jiàn)附錄4??刂齐娐穲D5控制電路狀態(tài)圖兩個(gè)去抖動(dòng)電路傳入兩個(gè)信號(hào),將其組合成一個(gè)2bit輸入(Start/Stop為高位,Split/Reset為低位),分別代表4個(gè)狀態(tài):①“00”狀態(tài):鎖定關(guān),計(jì)數(shù)關(guān),清零關(guān),輸出“111”;②“10”狀態(tài):鎖定關(guān),計(jì)數(shù)開(kāi),清零關(guān),輸出“101”;③“11”狀態(tài):鎖定開(kāi),計(jì)數(shù)開(kāi),清零關(guān),輸出“001”;④“01”狀態(tài):鎖定關(guān),計(jì)數(shù)關(guān),清零開(kāi),輸出“110”;處在“01”狀態(tài)時(shí),過(guò)一個(gè)時(shí)鐘周期自動(dòng)回到“00”狀態(tài)。狀態(tài)圖如圖5所示。源程序?yàn)橐?jiàn)附錄5。4.4.3計(jì)數(shù)模塊由設(shè)計(jì)指標(biāo)可知,秒表由六位顯示最大計(jì)時(shí)為59min59s99,所以需要4個(gè)10進(jìn)制計(jì)數(shù)器,還有兩個(gè)6進(jìn)制計(jì)數(shù)器。其中有暫定,以及鎖存的功能,所以需要每個(gè)計(jì)數(shù)器還需對(duì)應(yīng)一個(gè)鎖存器才能完成暫定以及鎖存的功能。十進(jìn)制計(jì)數(shù)器計(jì)數(shù)器遷入端每識(shí)別一個(gè)上升沿,就依次從“0000”計(jì)數(shù)到“1001”。當(dāng)計(jì)數(shù)變?yōu)椤?001”時(shí),進(jìn)位端從‘1’變?yōu)椤?’,在下個(gè)遷入的上升沿“1001”變?yōu)椤?000”,進(jìn)位端恢復(fù)‘1’。如此,將進(jìn)位端連入下一級(jí)的遷入端時(shí),可以實(shí)現(xiàn)低位由9變?yōu)?時(shí)高位進(jìn)1。當(dāng)清零信號(hào)有效時(shí),計(jì)數(shù)器強(qiáng)制將計(jì)數(shù)值變?yōu)椤?000”。源程序?yàn)橐?jiàn)附錄.2六進(jìn)制計(jì)數(shù)器六進(jìn)制計(jì)數(shù)范圍是“0000”到“0110”,在“0110”時(shí)進(jìn)位端發(fā)生變低,之后計(jì)數(shù)變?yōu)椤?000”,進(jìn)位端恢復(fù)高電平。對(duì)于六進(jìn)制來(lái)說(shuō),三個(gè)二進(jìn)制位就能夠滿足計(jì)數(shù)需要,但是考慮到后面譯碼器的輸入均為四個(gè)二進(jìn)制位,所以計(jì)數(shù)用4bit,方便譯碼。源程序?yàn)橐?jiàn)附錄7。4.4.4鎖存器鎖存器實(shí)現(xiàn)電子秒表的顯示鎖定功能。其輸入時(shí)鐘為外部時(shí)鐘(1kHz)。當(dāng)鎖定信號(hào)無(wú)效時(shí),在每個(gè)時(shí)鐘上升沿將輸入的數(shù)據(jù)信號(hào)輸出;當(dāng)鎖定信號(hào)有效時(shí),輸出的數(shù)據(jù)信號(hào)保持當(dāng)前值,無(wú)視輸入數(shù)據(jù)的改變,源程序見(jiàn)附錄8。4.4.5顯示模塊顯示模塊主要完成顯示掃描和編碼翻譯的功能。其中需要用到掃描器,多路選擇器和譯碼器,時(shí)鐘信號(hào)連接一個(gè)掃描器,用計(jì)數(shù)原理輸出3bit掃描信號(hào)。該信號(hào)一方面接到外部的3-8譯碼器中,實(shí)現(xiàn)對(duì)八位數(shù)碼管的掃描;另一方面選擇信號(hào)接入一個(gè)4bit8輸入1輸出的多路選擇器中,把數(shù)碼管和相應(yīng)位的數(shù)字信號(hào)聯(lián)系起來(lái)。多路選擇器的信號(hào)輸出接譯碼器,把二進(jìn)制信號(hào)編譯成數(shù)碼管上顯示的十進(jìn)制數(shù)。掃描器掃描器實(shí)現(xiàn)了八位數(shù)碼管共用一組輸入數(shù)據(jù)的可能性,其原理圖如圖6所示。其通過(guò)一個(gè)計(jì)數(shù)器,在每個(gè)時(shí)鐘信號(hào)的上升沿,其輸出的三位二進(jìn)制信號(hào)加一,從“000”計(jì)數(shù)到“111”。當(dāng)輸出為“111”時(shí),下一個(gè)時(shí)鐘上升沿輸出變?yōu)椤?00”,源程序見(jiàn)附錄9。圖6掃描電路原理圖數(shù)據(jù)選擇器多路選擇器輸入八組四位數(shù)據(jù)信號(hào)和一組三位掃描信號(hào),通過(guò)掃描信號(hào)的狀態(tài)選擇相應(yīng)的數(shù)據(jù)信號(hào)進(jìn)行輸出源程序,源程序見(jiàn)附錄10。七段譯碼器譯碼器對(duì)四位二進(jìn)制輸入數(shù)據(jù)進(jìn)行處理,將其轉(zhuǎn)化成適合于數(shù)碼管顯示的八位二進(jìn)制數(shù)據(jù),如圖7所示。源程序見(jiàn)附錄11。圖7七段譯碼器電路圖分配引腳和下載實(shí)現(xiàn)全部仿真通過(guò)后,就運(yùn)行ISE的設(shè)計(jì)實(shí)現(xiàn),然后再打開(kāi)XILINXPACE,在里面分配引腳,即實(shí)現(xiàn)設(shè)計(jì)的輸入輸出端口與實(shí)際芯片的輸入輸出端口的對(duì)應(yīng)連接。比如七段LED管的控制信號(hào)就連接到實(shí)際電路的七個(gè)引腳。 總的電路圖如圖8所示圖8電子秒表總電路圖實(shí)驗(yàn)結(jié)果在成功下載并運(yùn)行后,進(jìn)行了各按鈕功能的檢測(cè)(包括計(jì)數(shù)、暫停、復(fù)位、清零等功能的檢查),以及與標(biāo)準(zhǔn)時(shí)間進(jìn)行了對(duì)比,符合實(shí)驗(yàn)預(yù)估的各項(xiàng)指標(biāo),如圖9所示。圖9實(shí)驗(yàn)結(jié)果第五章結(jié)論5.1實(shí)驗(yàn)結(jié)論本文主要介紹了利用VHDL語(yǔ)言完成基于FPGA的數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)。詳細(xì)介紹了測(cè)量原理,設(shè)計(jì)方案以及各模塊的設(shè)計(jì)過(guò)程及其實(shí)現(xiàn)的功能,并對(duì)設(shè)計(jì)中遇到的問(wèn)題作了分析和處理;利用ISE和ModelSim對(duì)設(shè)計(jì)進(jìn)行了仿真,分析,綜合,并最終下載到芯片中,實(shí)現(xiàn)了預(yù)計(jì)的各項(xiàng)指標(biāo)。5.2心得體會(huì)經(jīng)過(guò)這次的課程設(shè)計(jì),我對(duì)課題設(shè)計(jì)的基本流程有了一定的認(rèn)識(shí)。原本以為VHDL是無(wú)法掌握的語(yǔ)言,剛開(kāi)始的時(shí)候不知道從何下手,所以進(jìn)度會(huì)非常慢人也比較著急。但是后來(lái)靜下心一個(gè)模塊的設(shè)計(jì),自己的自信心也開(kāi)始建立了,經(jīng)過(guò)一周的努力和實(shí)踐發(fā)現(xiàn)掌握XILINXISE軟件的基本語(yǔ)言和操作時(shí)可以實(shí)現(xiàn)的。在老師給的指導(dǎo)下,我學(xué)習(xí)了軟件的操作、基本的語(yǔ)句、正規(guī)的編程方法,把原來(lái)所學(xué)的書本知識(shí)和實(shí)踐相聯(lián)系。將秒表這個(gè)看似很大的工程,分成若干個(gè)小塊各擊破,最終通過(guò)了老師的驗(yàn)收。所以做這個(gè)秒表最重要的就是耐心和毅力,只一步堅(jiān)持就一定會(huì)得到自己滿意的結(jié)果。而在通過(guò)時(shí)序邏輯編寫電路的各個(gè)模塊過(guò)程中建立起了學(xué)習(xí)編程語(yǔ)言的濃厚興趣。在設(shè)計(jì)中也深刻體會(huì)到了清晰編程思路和適當(dāng)注釋的重要性。為以后更好的學(xué)習(xí)VHDL打下了基礎(chǔ),通過(guò)這次課程設(shè)計(jì),我意識(shí)到了對(duì)這門課程掌握還有一定的不足,比如經(jīng)常嵌套多層if,導(dǎo)致電路過(guò)于復(fù)雜,邏輯混亂軟件最終無(wú)法達(dá)到最終目的。因?yàn)閭€(gè)人能力和知識(shí)的限制,還有許多的知識(shí)我不了解。參考文獻(xiàn)[1].閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,1998.[2].JohnF.Wakerly數(shù)字設(shè)計(jì)原理與實(shí)踐第四版機(jī)械工業(yè)出版社[3].徐文波/田耘XillinxFPGA開(kāi)發(fā)使用教程清華大學(xué)出版社[4]..致謝首先必須感謝的是劉曦老師對(duì)我的教導(dǎo),在實(shí)驗(yàn)過(guò)程中對(duì)我的幫助,在此對(duì)劉曦老師致于最衷心的感謝。其次感謝我的同學(xué)們,在我遇到問(wèn)題時(shí),能給我分析以及解決。附錄附錄1電子秒表的頂層文件--Deviceutilizationsummary:SelectedDevice:3s200aft256-4NumberofSlices:57outof17923%--NumberofSliceFlipFlops:81outof35842%--Numberof4inputLUTs:108outof35843%--NumberofIOs:14--NumberofbondedIOBs:14outof1957%--NumberofGCLKs:3outof2412%libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitytop4isport(clk_in:instd_logic:='0';clr_in,start_in:instd_logic:='0'; shuma:outstd_logic_vector(6downto0); xuan:outstd_logic_vector(3downto0));endtop4;architectureBehavioraloftop4issignala,b,c,d,e,f,a1,b1,c1,d1,e1,f1:std_logic_vector(3downto0);signalclk_in_1k:std_logic;signalclr_out,start_out:std_logic;signalkong0,kong1,kong2:std_logic;COMPONENTfenpin PORT( clk:INstd_logic; clk_1k:OUTstd_logic ); ENDCOMPONENT; COMPONENTxiaodou PORT( clk:INstd_logic; key_in1:INstd_logic; key_in2:INstd_logic; key_out_start:OUTstd_logic; key_out_reset:OUTstd_logic ); ENDCOMPONENT; COMPONENTsuocun PORT( msec0:INstd_logic_vector(3downto0); msec1:INstd_logic_vector(3downto0); second0:INstd_logic_vector(3downto0); second1:INstd_logic_vector(3downto0); minute0:INstd_logic_vector(3downto0); minute1:INstd_logic_vector(3downto0); con:INstd_logic; omsec0:OUTstd_logic_vector(3downto0); omsec1:OUTstd_logic_vector(3downto0); osecond0:OUTstd_logic_vector(3downto0); osecond1:OUTstd_logic_vector(3downto0); ominute0:OUTstd_logic_vector(3downto0); ominute1:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT;COMPONENTxianshikongzhi PORT( clk_1k:INstd_logic; msec0:INstd_logic_vector(3downto0); msec1:INstd_logic_vector(3downto0); second0:INstd_logic_vector(3downto0); second1:INstd_logic_vector(3downto0); minute0:INstd_logic_vector(3downto0); minute1:INstd_logic_vector(3downto0); shumaguan:OUTstd_logic_vector(6downto0); n:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTkongzhi PORT( clk_1k:INstd_logic; rst:INstd_logic; state:INstd_logic; kongclr:OUTstd_logic; kongen:OUTstd_logic; kongnormal:OUTstd_logic ); ENDCOMPONENT;COMPONENTjishu PORT( clk_1k:INstd_logic; clr:INstd_logic; cou:INstd_logic; msec0:OUTstd_logic_vector(3downto0); msec1:OUTstd_logic_vector(3downto0); second0:OUTstd_logic_vector(3downto0); second1:OUTstd_logic_vector(3downto0); minute0:OUTstd_logic_vector(3downto0); minute1:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; beginInst_fenpin:fenpinPORTMAP( clk=>clk_in, clk_1k=>clk_in_1k ); Inst_xiaodou:xiaodouPORTMAP( clk=>clk_in_1k, key_in1=>start_in, key_in2=>clr_in, key_out_start=>start_out, key_out_reset=>clr_out );Inst_suocun:suocunPORTMAP( msec0=>a, msec1=>b, second0=>c, second1=>d, minute0=>e, minute1=>f, con=>kong2, omsec0=>a1, omsec1=>b1, osecond0=>c1, osecond1=>d1, ominute0=>e1, ominute1=>f1 ); Inst_xianshikongzhi:xianshikongzhiPORTMAP( clk_1k=>clk_in_1k, msec0=>a1, msec1=>b1, second0=>c1, second1=>d1, minute0=>e1, minute1=>f1, shumaguan=>shuma, n=>xuan );Inst_kongzhi:kongzhiPORTMAP( clk_1k=>clk_in_1k, rst=>clr_out, state=>start_out, kongclr=>kong0, kongen=>kong1, kongnormal=>kong2 );Inst_jishu:jishuPORTMAP( clk_1k=>clk_in_1k, clr=>kong0, cou=>kong1, msec0=>a, msec1=>b, second0=>c, second1=>d, minute0=>e, minute1=>f );endBehavioral;附錄2分頻得到1KHZ時(shí)鐘信號(hào)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityfenpinisport(clk:instd_logic;clk_1k:outstd_logic);endfenpin;architectureBehavioraloffenpinis --signalcount:integerrange0to47999:=0; signalcount:std_logic_vector(15downto0):=(others=>'0');signalcl:std_logic:='1';begin process(clk) begin ifrising_edge(clk)then ifcount=47999then count<=(others=>'0'); else count<=count+1; endif; else count<=count; endif; endprocess; --cl<='1'whencount=47999else'0'; clk_1k<=count(15);endBehavioral;附錄3消抖電路libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityxiaodouisport(clk,key_in1,key_in2:instd_logic;key_out_start,key_out_reset:outstd_logic);endxiaodou;architectureBehavioralofxiaodouissignalcnt,cnt1:std_logic_vector(1downto0);signalk1,k2,k3,k4:std_logic;beginprocess(key_in1,clk)beginifclk'eventandclk='0'thenifcnt=3then k1<='1'; elsek1<='0'; cnt<=cnt+1; endif; k2<=k1;endif;ifkey_in2='0'thencnt<="00";endif;endprocess;process(key_in2,clk)beginifclk'eventandclk='0'thenifcnt1=3then k3<='1'; elsek3<='0'; cnt1<=cnt1+1; endif; k4<=k3;endif;ifkey_in1='0'thencnt1<="00";endif;endprocess;key_out_start<=(notk1)andk2;key_out_reset<=(notk3)andk4;endBehavioral;附錄4鎖存程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitysuocunisport(msec0,msec1,second0,second1,minute0,minute1:instd_logic_vector(3downto0);con:instd_logic; omsec0,omsec1,osecond0,osecond1,ominute0,ominute1:outstd_logic_vector(3downto0));endsuocun;architectureBehavioralofsuocunissignala,b,c,d,e,f:std_logic_vector(3downto0);beginprocess(con,msec0,msec1,second0,second1,minute0,minute1)beginifcon='1'thena<=msec0; b<=msec1; c<=second0; d<=second1; e<=minute0; f<=minute1;endif;endprocess;omsec0<=a;omsec1<=b;osecond0<=c;osecond1<=d;ominute0<=e;ominute1<=f; endBehavioral;附錄5顯示控制程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityxianshikongzhiisport(clk_1k:instd_logic;msec0,msec1,second0,second1,minute0,minute1:instd_logic_vector(3downto0);shumaguan:outstd_logic_vector(6downto0):="1000000"; n:outstd_logic_vector(3downto0));endxianshikongzhi;architectureBehavioralofxianshikongzhiissignalweixuan:std_logic_vector(3downto0):="0000";signalnumber:std_logic_vector(2downto0):="000";signalxianshi:std_logic_vector(6downto0):="1000000";signalshu:std_logic_vector(3downto0):="0000";beginp1:process(clk_1k,number)beginifrising_edge(clk_1k)then number<=number+1; endif; endprocess;process(number,msec0,msec1,second0,second1,minute0,minute1)begincasenumberiswhen"000"=>weixuan<="0000"; when"001"=>weixuan<="0001"; when"010"=>weixuan<="0010"; when"011"=>weixuan<="0011"; when"100"=>weixuan<="0100"; when"101"=>weixuan<="0101"; when"110"=>weixuan<="0110"; when"111"=>weixuan<="0111"; whenothers=>weixuan<="1111";endcase;endprocess;n<=weixuan;process(weixuan)begincaseweixuaniswhen"0000"=>shu<=msec0;when"0001"=>shu<=msec1;when"0010"=>shu<="1111";when"0011"=>shu<=second0;when"0100"=>shu<=second1;when"0101"=>shu<="1111";when"0110"=>shu<=minute0;when"0111"=>shu<=minute1;whenothers=>shu<="0000";endcase;endprocess;p2:process(shu)begincaseshuiswhen"0000"=>xianshi<="1000000"; when"0001"=>xianshi<="1111001"; when"0010"=>xianshi<="0100100"; when"0011"=>xianshi<="0110000"; when"0100"=>xianshi<="0011001"; when"0101"=>xianshi<="0010010"; when"0110"=>xianshi<="0000010"; when"0111"=>xianshi<="1111000"; when"1000"=>xianshi<="0000000"; when"1001"=>xianshi<="0010000"; whenothers=>xianshi<="0111111";endcase;endprocess;shumaguan<=xianshi;endBehavioral;附錄6控制程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitykongzhiisport(clk_1k,rst,state:instd_logic;kongclr,kongen,kongnormal:outstd_logic);endkongzhi;ar

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論