【電子行業(yè)】電子秒表_第1頁
【電子行業(yè)】電子秒表_第2頁
【電子行業(yè)】電子秒表_第3頁
【電子行業(yè)】電子秒表_第4頁
【電子行業(yè)】電子秒表_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 隨心編輯 ,值得下刪有! YOUR COMPANY NAME IS HERE 專業(yè)I專注I精心I卓越 【電子行業(yè)】電子秒表 XXXX年XX月XX日 XXXXXXXX集團(tuán)企業(yè)有限公司 電子科技大學(xué) 基于FPGA的電子秒表的設(shè)計 學(xué)院:物理電子學(xué)院 摘要 本文主要介紹了如何利用 VHDL語言在PFGA開發(fā)板上開發(fā)一個具有啟動、 停止、分段和復(fù)位功能的電子秒表,著重介紹了電子秒表的基本原理和實現(xiàn)方案 以及在Xilinx公司的ISE軟件開發(fā)平臺上利用 VHDL語言編程實現(xiàn),使用 ModelSim 仿真軟件對VHDL程序做了實時仿真,并完成了綜合布局布線,最 終下載到芯片上實現(xiàn)功能。 關(guān)鍵詞:FPGA

2、,VHDL,ISE,自頂向下。 目錄 電子科技大學(xué)1 摘要2 第一章引言5 第二章 FPGA和VHDL簡介以及開發(fā)流程6 2.1 FPGA 概述6 2.2 FPGA開發(fā)環(huán)境簡介 7 2.2.1 VHDL語言簡介7 2.2.2 VHDL語言的開發(fā)流程 9 第三章數(shù)字秒表的設(shè)計 12. 3.1 實驗任務(wù)及要求1.2. 3.2系統(tǒng)需求和解決方案1.3. 3.2.1分頻器設(shè)計1.4. 3.2.2消抖電路設(shè)計1.4. 3.2.3控制模塊.15. 3.2.4 計數(shù)器1.6. 3.2.5模塊設(shè)計之?dāng)?shù)據(jù)鎖存器16 326八選一多路復(fù)用電路1.7 327掃描段選電路 1.7. 328數(shù)碼管段選電路 18. 第四

3、章數(shù)字秒表仿真實驗結(jié)果20. 4.1 分頻器仿真 2Q. 4.2 段選電路仿真 20. 4.3 模八計數(shù)器 2Q. 4.4 計數(shù)器程序仿真 21. 4.5 鎖存器程序仿真 21. 4.6 多路復(fù)用器程序仿真 2.1. 4.7 按鍵消抖程序仿真 22. 參考文獻(xiàn)23. 第一章引言 秒表是體育競賽中不可或缺的一個工具, 其可以直觀的衡量運動員能力,考 量運動員的水平,目前,用于控制秒表的秒表控制系統(tǒng)主要有PLC控制器,單 片機控制其和PLD控制器等多種形式。其中PLC控制器的特點為編程方便,容 易擴(kuò)展輸入輸出通路,但系統(tǒng)硬件成本較高了單片機控制其的特點為可塑性強, 控制模式靈活多樣,單系統(tǒng)組成除單

4、片機外,還需要較多外圍電路。而使用VHDL 語言設(shè)計秒表控制系統(tǒng)的方法,則可將程序下載到可編程邏輯器件中組成實際電 路,從而實現(xiàn)了數(shù)字系統(tǒng)硬件的軟件化,不僅非常發(fā)辮,而且非常實用。 第二章FPGA和VHDL簡介以及開發(fā)流程 可編程邏輯器件(PLD , Programmable Logic Devices)是大規(guī)模集成電 路技術(shù)發(fā)展的產(chǎn)物,它使數(shù)字系統(tǒng)的設(shè)計從電路級深入到了芯片級,大大提高了 系統(tǒng)的可靠性,而且結(jié)合EDA技術(shù),只需在計算機上修改和更新程序就可以實 現(xiàn)硬件功能重構(gòu)與性能升級,不需要額外的修改硬件電路,使硬件設(shè)計成為軟件 設(shè)計,方便快捷,提高了實現(xiàn)的靈活性,產(chǎn)品的開發(fā)設(shè)計周期大大縮短

5、,開發(fā)程 度顯著降低。其中應(yīng)用最廣泛的是現(xiàn)場編程門陣列(FPGA,F(xiàn)ield Programmable Gate Array )和復(fù)雜可編程邏輯器件(CPLD, Complex Programmable Logic Device )1。 20世紀(jì)70年代發(fā)展起來的可編程邏輯器件的發(fā)展大致經(jīng)歷了這樣的過程: 由70年代初期的只能完成簡單數(shù)字邏輯功能的可編程只讀存貯器( PROM )、 紫外線可按除只讀存貯器(EPROM )、電可擦除只讀存貯器(EEPROM)和PLA, 然后到70年代80年代初的只用于規(guī)模較小的數(shù)字電路的較復(fù)雜可編程芯片 PLA和GAL,再到80年代中期的功能齊全、能實現(xiàn)較大規(guī)模

6、電路設(shè)計的可編程 邏輯器件CPLD和FPGA,最后到90年代的器件編程和器件測試技術(shù)在這一發(fā) 展進(jìn)程中,PLD的結(jié)構(gòu)配置和功能得到改善、集成度越來越高、速度和靈活性 得到了很大的提高2。 目前,可編程器件的發(fā)展速度極快,工作頻率可達(dá)數(shù)百兆赫茲,片上邏輯資 源已達(dá)數(shù)百萬門,可以嵌入功能強大的32位微處理器構(gòu)成片上可編程邏輯系統(tǒng): SOPC (System On Programmable Chip)。 2.1 FPGA 概述 FPGA是2 0世紀(jì)9 0年代發(fā)展起來的, 其密度已超過2 5X10 門水平, 內(nèi)部門延時小于3ns。這種期間完成某種特定的功能是完全由用戶通過軟件進(jìn) 行配置和編程來實現(xiàn)的,

7、而且可以反復(fù)編寫,它具有芯片邏輯資源豐富、成本低、 功耗低等優(yōu)勢。此外,它的另一個突出特點是現(xiàn)場變成,在FPGA工作的現(xiàn)場, 可以不痛過計算機把存于FPGA外的ROM中的變成數(shù)據(jù)加載給FPGA,通過簡 單的設(shè)備就能改變FPGA中的編程數(shù)據(jù),從而改變 FPGA執(zhí)行的邏輯功能。這 種方法也叫做ICR (In Circuit Reconfiguration ,在電路上直接配置)編程。 FPGA的這個特點為工程技術(shù)人員維修、改進(jìn)、更新電路邏輯功能提供了方便。 大部分FPGA采用基于SRAM的查找表(LUT, Look-Up-Table )結(jié)構(gòu)。 查找表本質(zhì)上就是一個RAM。若邏輯函數(shù)具有n個輸入項的的

8、話,就需要由輸 入個數(shù)為n、容易為2n個位的RAM單元存放函數(shù)值,RAM的地址線器輸入線 的作用,地址即輸入線的作用,地址即輸入變量, RAM輸出為邏輯函數(shù)值。每 輸入一個信號進(jìn)行邏輯運算就等于輸入一個地址進(jìn)行查表, 地址所對應(yīng)的內(nèi)容就 是輸出。 2.2 FPGA開發(fā)環(huán)境簡介 2.2.1 VHDL語言簡介 本次設(shè)計中的變成采用的是VHDL語言。 VHDL 語言是一種硬件描述語言(HardwareDeseriptionLanguage,HDL), 主要用在可編程邏輯器件(CPLD/FPGA )和專用集成電路(ASIC)兩個領(lǐng)域。 寫好的VHDL程序既可以下載到可編程邏輯器件中實現(xiàn)電路功能 ,又可

9、以提交到 工廠用于ASIC芯片的流片。 VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、能和接口。VHDL程序結(jié)構(gòu)的 特點是將一項工程設(shè)計或設(shè)計實體(可以是元件、路模塊或系統(tǒng))分成外部和內(nèi) 部兩部分,外部即可視部分,對設(shè)計實體和端口引腳進(jìn)行聲明; 內(nèi)部即不可視部 分,描述模塊的功能和算法。VHDL從實體與外部的接口以及實體內(nèi)部的功能與 結(jié)構(gòu)這兩個方面來描述實體,其對實體描述的示意圖圖片1所示,常用的VHDL 程序結(jié)構(gòu)圖片 2。設(shè)計實體定義成功后就可生成共享功能模塊。在頂層綜合或 其他設(shè)計中就可以直接調(diào)用這個實體模塊。 這種將設(shè)計實體分成內(nèi)外部分的概念 是VHDL系統(tǒng)設(shè)計的基本點。 圖片1對實體描述的

10、示意圖 圖片 2常用VHDL結(jié)構(gòu)示意圖 應(yīng)用VHDL語言進(jìn)行工程設(shè)計有很多優(yōu)點3。 具有更強的行為描述能力 VHDL的硬件描述能力很強,可以用于從門級、電路級直至系統(tǒng)級的描述、 仿真、綜合和調(diào)試,從邏輯功能和行為上描述和設(shè)計大規(guī)模系統(tǒng), 避開了具體期 間內(nèi)部結(jié)構(gòu)4。 支持層次化和模塊化設(shè)計 這是運用ISE工具進(jìn)行了電路和系統(tǒng)設(shè)計區(qū)別于傳統(tǒng)設(shè)計方法的重要方面, 簡化了系統(tǒng)設(shè)計,優(yōu)化了系統(tǒng)結(jié)構(gòu),提高了系統(tǒng)可靠性 5。 可仿真和可綜合 仿真是指代碼模擬硬件的行為,綜合是指將代碼轉(zhuǎn)化成客物理實現(xiàn)的電路結(jié) 構(gòu)。所有的VHDL語句都能用于仿真,但有一部分 VHDL語句不能進(jìn)行綜合、 翻譯成與之對應(yīng)的硬件電

11、路,并在邏輯器件上實現(xiàn)。VHDL強大的仿真及按摩功 能是設(shè)計者能在系統(tǒng)設(shè)計的各個階段都能十分方便地對數(shù)字系統(tǒng)進(jìn)行仿真驗證。 系統(tǒng)設(shè)計與硬件結(jié)構(gòu)無關(guān) VHDL語言對設(shè)計的描述具有相對獨立性, 設(shè)計者可以進(jìn)行獨立的設(shè)計,可 以不懂硬件的結(jié)構(gòu),也不比了解最終設(shè)計實現(xiàn)的目標(biāo)期間是什么。 具有很強的移植能力 VHDL語言描述的設(shè)計通用性好,可以被支持 VHDL標(biāo)準(zhǔn)的不同工具所支 持,具有很強的移植能力。 VHDL本身的生命周期長 VHDL的硬件描述與工藝無關(guān),不會因工藝變化而過時,而且與工藝技術(shù)有 關(guān)的參數(shù)可以用VHDL提供的屬性加以描述,當(dāng)生產(chǎn)工藝改變時,只需修改程 序中相應(yīng)屬性參數(shù)即可。 VHDL語

12、言具有很強大的語言功能、硬件描述能力和抑制能力及設(shè)計與器件 支持無關(guān)的特性,并且 VHDL語言程序易于共享和復(fù)用,因此得到了十分廣泛 的應(yīng)用。 222 VHDL語言的開發(fā)流程 采用VHDL語言對硬件電路進(jìn)行描述的過程中應(yīng)該遵循一定的流程。通常 情況下,其流程圖片 3所示 圖片 3采用VHDL語言進(jìn)行硬件電路設(shè)計的流程圖 從圖片 3的流程圖可以看出,采用VHDL語言進(jìn)行硬件電路設(shè)計的開發(fā)步 驟主要包括以下幾步: 接受電路設(shè)計任務(wù) 在進(jìn)行硬件電路系統(tǒng)設(shè)計之前,首先作出總體設(shè)計方案,然后給出相應(yīng)的硬 件電路系統(tǒng)設(shè)計徽標(biāo),最后將總體方案中各部分電路設(shè)計任務(wù)和要求下達(dá)給相應(yīng) 的設(shè)計部門。 確定電路具體功

13、能 設(shè)計人員要具體分析電路的設(shè)計要求,確定其要實現(xiàn)的具體功能。 劃分模塊、編寫程序 利用VHDL語言設(shè)計硬件電路通常采用自頂向下的設(shè)計方法,從電路設(shè)計 的總體要求出發(fā),先確定頂層模塊的設(shè)計,然后將頂層模塊劃分為不同的完成一 定邏輯功能的子功能模塊,最后再詳細(xì)設(shè)計子功能模塊。模塊劃分的好壞將會直 接影響到最終的電路設(shè)計,設(shè)計人員在這一步應(yīng)該花費一定的時間, 保證模塊劃 分的最優(yōu)化。 VHDL語言程序模擬 VHDL語言程序模擬即功能仿真,是利用仿真軟件對設(shè)計的邏輯功能進(jìn)行綜 合、優(yōu)化和布局布線驗證,可以在設(shè)計的早起發(fā)現(xiàn)電路設(shè)計上的缺陷和錯誤,節(jié) 省設(shè)計時間、縮短開發(fā)周期。 綜合、優(yōu)化和布局布線 綜

14、合的作用簡單的說就將電路設(shè)計的較高級抽象層次的VHDL語言描述轉(zhuǎn) 化成底層電路表示。優(yōu)化的作用是將電路設(shè)計的時延縮到最小和有效利用資源。 布局布線的作用是將通過綜合和優(yōu)化所得到的邏輯規(guī)劃到一個邏輯器件的邏輯 結(jié)構(gòu),然后講個邏輯單元放置到相應(yīng)優(yōu)化的位置,最后再進(jìn)行邏輯單元之間、邏 輯單元和I/O之間的布線,以消除布線延遲。 布局布線后的程序模擬 布局布線后的程序模擬又稱后仿真,既實驗設(shè)計的邏輯功能,又驗證時序。 如果時序不能滿足要求,就需要回到前面的步驟重新進(jìn)行操作。 生成器件編程文件和進(jìn)行器件編程 顧名思義,器件編程是針對可編程邏輯器件進(jìn)行的操作, 具體過程是:將設(shè) 計描述經(jīng)過、編譯、綜合、優(yōu)

15、化和布局布線的結(jié)果,經(jīng)過一定的映射轉(zhuǎn)化成一個 器件編程所用的數(shù)據(jù)文件格式,然后通過燒片器或者下載電纜將數(shù)據(jù)文件下載到 指定的可編程邏輯器件中去的過程。 第三章數(shù)字秒表的設(shè)計 3.1實驗任務(wù)及要求 秒表的計時范圍為00 00 ” 00 59 59 ” 99。 有兩個按鈕開關(guān)Start/Stop和Split/Reset ,控制秒表的啟動、停止、分段 和復(fù)位:在秒表已經(jīng)被復(fù)位的情況下,按下“ Start/Stop ”鍵,秒表開始計時。 在秒表正常運行的情況下,如果按下“ Start/Stop ”鍵,則秒表暫停計時;再次 按下該鍵,秒表繼續(xù)計時。 在秒表正常運行的情況下,如果按下“Split/Rese

16、t ”鍵,顯示停止在按鍵 時的時間,但秒表仍然在計時;再次按下該鍵,秒表恢復(fù)正常顯示。在秒表暫停 計時的情況下,按下“ Split/Reset ”鍵,秒表復(fù)位歸零。 秒表實物圖如圖片4。 圖片4秒表實物圖 秒表電路設(shè)計總框圖如圖片5。 圖片5秒表設(shè)計總框圖 3.2系統(tǒng)需求和解決方案 首先根據(jù)設(shè)計的要求明確設(shè)計的目的,并根據(jù)設(shè)計需求制定相應(yīng)的設(shè)計方 法,設(shè)計出不同的設(shè)計模塊,如圖二示,在設(shè)計一個秒表電路時,根據(jù)ISE的使 用說明,需要先設(shè)計各個不同的子模塊,然后進(jìn)行模塊的綜合。根據(jù)我們的習(xí)慣 我們可以按照從左到右的順序依次建立模塊并進(jìn)行組合。設(shè)計電路時遵循從上到 下的設(shè)計原則,首先從系統(tǒng)設(shè)計入手

17、,在頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計, 頂層的 每個子模塊均可完成一個獨立的功能,子模塊在調(diào)試成功后可生成一個默認(rèn)的符 號,工上一層使用。分模塊的設(shè)計可設(shè)計為分頻器電路,按鍵消抖電路,控制電 路,計數(shù)電路,鎖存電路,掃描和顯示電路。 1、分頻器 對產(chǎn)生的時鐘信號的48MHz晶體振蕩器進(jìn)行分頻,先產(chǎn)生1KHz產(chǎn)生時間 基準(zhǔn)信號,用以控制8個數(shù)碼管以掃描方式顯示計時結(jié)果。 再對1KHz的分頻信號再進(jìn)行10分頻,從而產(chǎn)生100Hz的基準(zhǔn)信號,用 于秒表最后一位的顯示。 2、按鍵消抖電路 在按鍵按下時,F(xiàn)PGA的輸入為低電平;松開按鍵時,F(xiàn)PGA的輸入為高電 平,但是在按下按鍵和松開按鍵的瞬間會出現(xiàn)抖動現(xiàn)象

18、, 影響秒表的運行,因此 需要按鍵消抖電路,用以消除按鍵輸入信號抖動的影響,輸出單脈沖。 3、控制器 控制計數(shù)器的開始、暫停以及復(fù)位 4、計數(shù)器 對時間基準(zhǔn)脈沖進(jìn)行計數(shù),完成10進(jìn)制,6進(jìn)制的計數(shù)功能,并在最后把 他們進(jìn)行綜合,組成兩個60進(jìn)制,一個100進(jìn)制的計數(shù)器。 5、數(shù)據(jù)鎖存器 鎖存數(shù)據(jù)使顯示并保持暫停。 6、的 包括掃描計數(shù)器、數(shù)據(jù)選擇器和 7段譯碼器,控制8個數(shù)碼管以掃描方式 顯示計時結(jié)果。 321分頻器設(shè)計 始終分頻模塊 始終分頻模塊的功能是將輸入的外部信號時鐘進(jìn)行分頻,從而產(chǎn)生用來消除 都懂得1kHZ信號和用于秒表內(nèi)部定時技術(shù)的100Hz的時鐘信號以及用來顯示 數(shù)碼管電路的1k

19、HZ時鐘信號。該模塊的外部輸入信號源是實驗板晶振產(chǎn)生的 48MHz的時鐘信號。在該模塊中須將48MHz信號經(jīng)過模48000的計數(shù)器分頻, 可以提到1kHz信號,可將該信號送到計數(shù)模塊部分經(jīng)過模十計數(shù)器分頻,然后 可得到計數(shù)精度為0.01秒的。如圖片 6 圖片6分頻器引腳示意圖 將48MHz晶振信號分頻至1kHz 322 消抖電路設(shè)計 由于秒表采用按鍵的輸入方式,按鍵產(chǎn)生的時間和持續(xù)的時間的長短是隨機 的,存在各種原因引起的電平抖動現(xiàn)象,因此需要在每個開關(guān)后面加一個按鍵輸 入模塊。按鍵輸入模塊的作用是保證系統(tǒng)能捕捉到輸入脈沖,并保證每按一鍵, 只形成一個寬度為模塊時鐘周期的脈沖,按鍵消抖電路如圖

20、片7 圖片7消抖電路引腳示意圖 3.2.3 控制模塊 該模塊主要用來完成數(shù)字時鐘的適中設(shè)定功能,可用兩個按鈕開關(guān)完成秒表 的啟/停和復(fù)位。如圖片 8 圖片8控制電路引腳示意圖 控制電路的設(shè)計參照下圖片9 圖片 9控制電路的設(shè)計圖 根據(jù)秒表電路總框架圖可知,該模塊一共三個輸入三個輸出,三個輸出對應(yīng) 四個狀態(tài),四個狀態(tài)可分別對應(yīng)“ 00”、“01”、“10”、“11 ”。每個狀態(tài)對應(yīng)決 定三個輸出狀態(tài)值,從而控制電路。 324計數(shù)器 秒表技術(shù)模塊主要是用于實現(xiàn)秒表的定時計數(shù)功能。由于秒表的輸入時鐘信 號為1kHz時鐘源,首先對1kHz進(jìn)行十分頻得到100Hz時鐘源,即最小精度 為0.01秒。該電路

21、除了 1kHz的時鐘源輸入還有用于控制清零復(fù)位信號reset 和使能的enable。秒表的計數(shù)模塊的輸出信號就是秒表的即時信息,包括百分 秒的個位信號、百分秒的十位信號、秒個位、秒十位、分個位、分十位,并將輸 出信號與鎖存器相連,做為鎖存器的輸入信號。將6個計數(shù)器并聯(lián)實現(xiàn)這個功能。 利用分頻器得到0.01s的方波信號,以此作為每一個計數(shù)器的clk,計數(shù)器計算 上升沿,得到輸出與進(jìn)位,此計數(shù)器的進(jìn)位作為下一個計數(shù)器的使能控制端 enable,依次類推。一共有7個計數(shù)器,第1、2、4、7個計數(shù)器是十進(jìn)制, 第5、8個計數(shù)器是6進(jìn)制。其中reset為復(fù)位清零信號,enable為計數(shù)使能信 號,計數(shù)器

22、有模10和模6計數(shù)器,其引腳電路圖如 圖片10計數(shù)器引腳示意圖 3.2.5 模塊設(shè)計之?dāng)?shù)據(jù)鎖存器 數(shù)據(jù)鎖存器,在使能en=1時,將計數(shù)器傳送來的數(shù)據(jù)正常傳輸至輸出口從 而正常顯示,en=0時,不能將計數(shù)器傳出來的數(shù)據(jù)正常送至輸出,而是將之前 輸入送至輸出,一直顯示因此不能正常顯示,但此時仍能正常計數(shù),當(dāng) en再次 等于1時,顯示將回歸原來的狀態(tài)。鎖存器的輸入為計數(shù)器的輸出,鎖存器引腳 示意圖如 圖片11數(shù)據(jù)鎖存器引腳示意圖 326 八選一多路復(fù)用電路 將從模八計數(shù)器送來的輸入做為地址端,鎖存器送來的信號做為選擇端,即 該電路有九個輸入一個輸出。其引腳示意圖如圖片12 圖片12八選一引腳示意圖

23、327 掃描段選電路 將八選一多路復(fù)用電路的輸出做為該模塊的輸入,本次試驗選用的FPGA實驗板 對應(yīng)的數(shù)碼管顯示電路為共陽極數(shù)碼管,故段選電路為低電平顯示有效,將輸入 的二進(jìn)制數(shù)翻譯為數(shù)碼管顯示效果即該電路的功能,其電路原理圖如 圖片13掃描段選引腳示意圖 328 數(shù)碼管段選電路 本次試驗使用的FPGA電路板中的數(shù)碼管為低電平有效使能,則直接賦值 ncs= 1改功能實現(xiàn)在top模塊中,要實現(xiàn)的數(shù)碼管顯示效果如圖片14 圖片14數(shù)碼管顯示效果圖 八個數(shù)碼管則需要一個模為八的計數(shù)器循環(huán)掃描賦值使每個數(shù)碼管都可以 顯示,由于人眼有“視覺暫留”效應(yīng),1kHz給人的效果就是持續(xù)顯示。該模塊 輸出會送至兩

24、個模塊,一個模塊為八選一多路復(fù)用器,另一個是位選電路。 229模塊間綜合 從宏觀角度觀看,看一看出秒表電路只有48Mhz晶振,按鍵開關(guān) key_s_s,key_s_r,三個輸入和ncs,sei,seg三位片選七段碼輸出,需要用程序 在內(nèi)部把各個模塊聯(lián)系起來,總架構(gòu)圖如 圖片15秒表總結(jié)構(gòu)圖 第四章數(shù)字秒表仿真實驗結(jié)果 編寫各個模塊的 4.1分頻器仿真 仿真結(jié)果如圖片 testbe nch文件,進(jìn)行仿真,得到仿真波形 16和圖片 17 圖片16分頻器仿真圖形一 圖片17分頻器仿真圖形二 4.2段選電路仿真 仿真圖形如圖片 4.3模八計數(shù)器 18。 圖片18段選截圖仿真 仿真圖形如圖片19 圖片1

25、9模八計時器仿真圖形 4.4計數(shù)器程序仿真 仿真圖形如圖片20和圖片 21 圖片20計數(shù)器仿真圖形一 圖片21計數(shù)器仿真圖形二 4.5鎖存器程序仿真 仿真圖形如圖片22 圖片22鎖存器仿真截圖 4.6多路復(fù)用器程序仿真 仿真圖形如圖片23 圖片23多路復(fù)用器仿真圖形 4.7按鍵消抖程序仿真 仿真圖形如圖片24 圖片 24按鍵消抖電路仿真圖形 4.8控制程序仿真 仿真圖形如圖片25 圖片25控制電路仿真圖形 參考文獻(xiàn) 謝謝閱讀!! 隨心編輯,值得下載擁有! 專業(yè) I專注I精心I卓越 1 張義和,張顯著.AltiumDesigner完全電路設(shè)計.FPGA篇=M,北京:中國電力 出版社,2008:2

26、-11 2 LUShaoqiang.FPGAwillgraduallyreplaeeASICandASSPJ.EIeetronproduetion world,2000,(9):26 一 28 3詹仙寧,田耕。VHDL開發(fā)精解與實例剖析M.北京:電子工業(yè)出版社,2009:5 一 18 4趙鑫,蔣亮,齊兆群,等.VHDL與數(shù)字電路設(shè)計M北京:機械工業(yè)出版社, 2005:4 一 7 王振紅.VHDL與數(shù)字電路設(shè)計與應(yīng)用實踐教程M.北京:機械工業(yè)出版 社,2006:204 一 208 附錄 1分頻計數(shù)器: -Compa ny: -Engin eer: -Create Date:09:36:59 03

27、11/2014 -Desig n Name: -Module Name:devide_fre - Behavioral -Project Name: -Target Devices: -Tool vers ions: -Descripti on: -Depe nden cies: -Revisio n: -Revision 0.01 - File Created -Additi onal Comme nts: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_U

28、NSIGNED.ALL; -Uncomment the following library declaration if instantiating -any Xilinx primitives in this code. -library UNISIM; en tity devide_fre is Port ( clki : in STD_LOGIC; clko : out STD_LOGIC); end devide_fre; architecture Behavioral of devide_fre is signal stage : stdogic_vector(15 downto 0

29、); begi n process(clki) beg in if risin g_edge(clki) the n if stage=47999 then stage0); else stage=stage+1; end if; end if; end process; clko=stage(15); end Behavioral; 2.消抖電路的程序為 -Compa ny: -use UNISIM.VCompo nen ts.all; -Engin eer: -Create Date:13:50:50 0311/2014 -Desig n Name: tremble - Behaviora

30、l -Module Name: -Project Name: -Target Devices: -Tool vers ions: -Descripti on: -Depe nden cies: -Revisio n: -Revision 0.01 - File Created -Additi onal Comme nts: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -Uncomment the following librar

31、y declaration if instantiating -any Xilinx primitives in this code. -library UNISIM; en tity tremble is Port ( clk_1k : in STD_LOGIC; start_stop : in STD_LOGIC; split_reset : in STD_LOGIC; start_stop_p : out STD_LOGIC; split_reset_p : out STD_LOGIC); end tremble; architecture Behavioral of tremble i

32、s signal cnt1 :stdogic_vector(1 downto 0); signal cnt2 :stdogic_vector(1 downto 0); signal k1, k2, k3, k4 : std_logic; begi n process(clk_1k, start_stop) beg in if clk_1kevent and clk_1k=0 then if cn t1=3 the n k1=1; else k1=0; cn t1=cnt1+1; end if; k2=k1; end if; if start_stop=0 the n cnt1=00; end

33、if; end process; start_stop_p=no t(k1) and k2; process(clk_1k, split_reset) beg in if clk_1kevent and clk_1k=0 then if cn t2=3 then k3=1; else k3=0; cn t2=cnt2+1; end if; k4=k3; end if; if split_reset=0 the n cnt2=00; end if; end process; split_reset_p if ctrl_in = 10 the n n ew_state = 01; else new

34、_state case ctrl_in is when 10 = new_state n ew_state n ew_state case ctrl_in is when 10 = new_state n ew_state n ew_state if ctrl_in = 01 the n n ew_state = 01; else n ew_state = 11; end if; end case; end process; p2: process(clk_1k) beg in if falling_edge(clk_1k) then state coun t_clear = 1; count

35、_en = 1; latch_e n coun t_clear = O; count_en = 1; latch_e n coun t_clear = O; count_en = O; latch_e n coun t_clear = 0; count_en = 1; latch_e n = 0; end case; end process; end Behavioral; 4.計數(shù)器程序為: -Compa ny: -Engin eer: -Create Date:09:56:00 0311/2014 -Desig n Name: -Module Name:calculate_time - B

36、ehavioral -Project Name: -Target Devices: -Tool vers ions: -Descripti on: -Depe nden cies: -Revisio n: -Revision 0.01 - File Created -Additi onal Comme nts: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -Uncomment the following library decl

37、aration if instantiating -any Xilinx primitives in this code. -library UNISIM; -use UNISIM.VCompo nen ts.all; en tity calculate_time is Port ( clk_1k : in STD_LOGIC; coun t_clear_p: in stdo gic count_en_p: in std_logic; min tus_b : out STD_LOGIC_VECTOR(3 DOWNTO 0); min tus_t : out STD_LOGIC_vector(3

38、 DOWNTO 0); sec ond_b : out STD_LOGIC_vector(3 DOWNTO 0); sec ond_t : out STD_LOGIC_vector(3 DOWNTO 0); us_b : out STD_LOGIC_vector(3 DOWNTO 0); us_t : out STD_LOGIC_vector(3 DOWNTO 0) ); end calculate_time; architecture Behavioral of calculate_time is sig nal mi ntus_b1 : STD_LOGIC_VECTOR(3 DOWNTO

39、0); sig nal min tus_t1 : STD_LOGIC_vector(3 DOWNTO 0); sig nal seco nd_b1 : STD_LOGIC_vector(3 DOWNTO 0); sig nal seco nd_t1 : STD_LOGIC_vector(3 DOWNTO 0); sig nal us_b1 : STD_LOGIC_vector(3 DOWNTO 0); SIGNAL us_t1 : STD_LOGIC_vector(3 DOWNTO 0); sig nal primary : STD_LOGIC_vector(3 DOWNTO 0); begi

40、 n process(clk_1k) beg in if risin g_edge(clk_1k) the n if coun t_clear_p=1 the n mi ntus_b1=0000; mi ntus_t1=0000; seco nd_b1=0000; seco nd_t1=0000; us_t1=0000; us_b1=0000; elsif count_en _p=1 the n if primary=9 the n primary0); if us_b1=9 then us_b1=0000; if us_t仁9 the n us_t1=0000; if sec on d_b1

41、=9 the n seco nd_b1=0000; if sec on d_t1=5 the n seco nd_t1=0000; if min tus_b1=9 the n mi ntus_b1=0000; if min tus_t1=5 the n mi ntus_t1=0000; else min tus_t1=mi ntus_t1+1; end if; else min tus_b1=min tus_b1+1; end if; else sec on d_t1=sec on d_t1+1; end if; else sec on d_b1=sec on d_b1+1; end if;

42、else us_t1=us_t1+1; end if; else us_b1=us_b1+1; end if; else primary=primary+1; end if; end if; end if; end process; min tus_b=mi ntus_b1; mi ntus_t=mi ntus_t1; second_b=second_b1; sec on d_t=sec on d_t1; us_t=us_t1; us_b=us_b1; end Behavioral; 5鎖存器程序如下 -Compa ny: -Engin eer: -Create Date:17:11:35 0

43、311/2014 -Desig n Name: -Module Name:latcher - Behavioral -Project Name: -Target Devices: -Tool vers ions: -Descripti on: -Depe nden cies: -Revisio n: -Revision 0.01 - File Created -Additi onal Comme nts: library IEEE; use IEEE.STD_LOGIC_1164.ALL; en tity latcher is Port ( en : in STD_LOGIC; d5 : in

44、 STD_LOGIC_VECTOR (3 dow nto 0); d4 : in STD_LOGIC_VECTOR (3 dow nto 0); d3 : in STD_LOGIC_VECTOR (3 dow nto 0); d2 : in STD_LOGIC_VECTOR (3 dow nto 0); d1 : in STD_LOGIC_VECTOR (3 dow nto 0); d0 : in STD_LOGIC_VECTOR (3 dow nto 0); q5 : out STD_LOGIC_VECTOR (3 dow nto 0); q4 : out STD_LOGIC_VECTOR

45、(3 dow nto 0); q3 : out STD_LOGIC_VECTOR (3 dow nto 0); q2 : out STD_LOGIC_VECTOR (3 dow nto 0); q1 : out STD_LOGIC_VECTOR (3 dow nto 0); q0 : out STD_LOGIC_VECTOR (3 dow nto 0); end latcher; architecture Behavioral of latcher is begi n process(e n,d5,d4,d3,d2,d1,d0) beg in if en = 1 the n q5 = d5;

46、q4 = d4; q3 = d3; q2 = d2; q1 = d1; q0 display_stage display_stage display_stage display_stage display_stage display_stage display_stage display_stage_7 display_stage_7 display_stage_7 display_stage_7 display_stage_7 display_stage_7 display_stage_7 display_stage_7 display_stage_7 display_stage_7 dis

47、play_stage_70); begi n process(clk_1k) begi n if risin g_edge(clk_1k) the n eight_1=eight_1+1; end if; end process; eight=eight_1; end Behavioral; 總程序為: -Compa ny: -Engin eer: -Create Date:09:32:37 0311/2014 -Desig n Name: -Module Name:top - Behavioral -Project Name: -Target Devices: -Tool vers ions

48、: -Descripti on: -Depe nden cies: -Revisio n: -Revision 0.01 - File Created -Additi onal Comme nts: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -Uncomment the following library declaration if instantiating -any Xilinx primitives in this c

49、ode. -library UNISIM; -use UNISIM.VCompo nen ts.all; en tity top is Port ( clk_48m : in STD_LOGIC; start_stop : in STD_LOGIC; split_reset : in STD_LOGIC; display_s : out STD_LOGIC_vector(6 downto 0); display_b : out STD_LOGIC_vector(2 downto 0); n cs: out std_logic); end top; architecture Behavioral

50、 of top is COMPONENT devide_fre PORT( clki : IN std_logic; clko : OUT std_logic ); END COMPONENT; COMPONENT calculate_time PORT( clk_1k : IN std_logic; coun t_clear_p : IN stdo gic; count_en_p : IN std_logic; mi ntus_b : OUT stdo gic_vector(3 dow nto 0); mi ntus_t : OUT stdo gic_vector(3 dow nto 0);

51、 sec ond_b : OUT stdo gic_vector(3 dow nto 0); sec ond_t : OUT std_logic_vector(3 dow nto 0); us_b : OUT stdo gic_vector(3 dow nto 0); us_t : OUT stdo gic_vector(3 dow nto 0) ); END COMPONENT; COMPONENT latcher PORT( en : IN std_logic; d5 : IN std_logic_vector(3 downto 0); d4 : IN stdogic_vector(3 d

52、ownto 0); d3 : IN std_logic_vector(3 downto 0); d2 : IN std_logic_vector(3 downto 0); d1 : IN stdogic_vector(3 downto 0); d0 : IN std_logic_vector(3 downto 0); q5 : OUT std_logic_vector(3 dow nto 0); q4 : OUT std_logic_vector(3 dow nto 0); q3 : OUT std_logic_vector(3 dow nto 0); q2 : OUT std_logic_v

53、ector(3 dow nto 0); q1 : OUT std_logic_vector(3 dow nto 0); qO : OUT std_logic_vector(3 dow nto 0) ); END COMPONENT; COMPONENT eight_cou nter PORT( clk_1k : IN std_logic; eight : OUT stdo gic_vector(2 dow nto 0) ); END COMPONENT; COMPONENT scan_display PORT( eight : IN stdogic_vector(2 downto 0); se

54、c on d_b_p : IN stdo gic_vector(3 dow nto 0); sec on d_t_p : IN stdo gic_vector(3 dow nto 0); mi ntus_b_p : IN stdo gic_vector(3 dow nto 0); mi ntus_t_p : IN stdo gic_vector(3 dow nto 0); us_b_p : IN stdo gic_vector(3 dow nto 0); us_t_p : IN stdo gic_vector(3 dow nto 0); display_stage : OUT stdo gic_vector(3 dow nto 0) ); END COMPONENT; COMPONENT display_stage P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論