基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)_第1頁(yè)
基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)_第2頁(yè)
基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)_第3頁(yè)
基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)_第4頁(yè)
基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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)介

1、鄭州輕工業(yè)學(xué)院電子技術(shù)課程設(shè)計(jì) 題 目 _基于FPGA的計(jì)數(shù)器設(shè)計(jì)_ _ 學(xué)生姓名 _ XXX_ 專業(yè)班級(jí) _電子信息工程10-01班_ 學(xué) 號(hào) _5401001030XXX_ 院 (系) 電氣信息工程學(xué)院_ _ 指導(dǎo)教師 _杜海明 耿鑫_ 完成時(shí)間 2013年06月22日_ 鄭州輕工業(yè)學(xué)院 課 程 設(shè) 計(jì) 任 務(wù) 書(shū)題目 基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)_ 專業(yè)、班級(jí) 電子信息工程 學(xué)號(hào) 姓名 _ 主要內(nèi)容、基本要求、主要參考資料等:主要內(nèi)容:要求學(xué)生使用硬件描述語(yǔ)言(Verilog 或者VHDL)設(shè)計(jì)基于FPGA的計(jì)數(shù)器的源程序。實(shí)現(xiàn)如下功能:顯示1個(gè)0-9999的四位計(jì)數(shù)器;四位七段數(shù)碼

2、管的譯碼與顯示。理解數(shù)碼管的譯碼原理,同時(shí)需要做一個(gè)分頻器,理解時(shí)鐘分頻的原理及意義。基本要求:1、學(xué)會(huì)quartusII的使用,掌握FPGA 的程序設(shè)計(jì)方法。2、掌握硬件描述語(yǔ)言語(yǔ)法。 3、程序設(shè)計(jì)完成后要求在quartusII中實(shí)現(xiàn)功能仿真。主要參考資料:1、褚振勇. FPGA設(shè)計(jì)及應(yīng)用(第三版)M.西安電子科技大學(xué)出版社.2012,42、陳懷琛.MATLAB及在電子信息課程中的應(yīng)用M.北京:電子工業(yè)出版社.2008,1完 成 期 限: 2013.6.212013.6.25 指導(dǎo)教師簽名: _ 課程負(fù)責(zé)人簽名: _ 2013年 6月 18日基于FPGA的計(jì)數(shù)器程序設(shè)計(jì)目 錄基于FPGA的計(jì)

3、數(shù)器的程序設(shè)設(shè)計(jì)i摘 要i1 緒論11.1 FPGA簡(jiǎn)介11.2 硬件描述語(yǔ)言VHDL特點(diǎn)11.3 軟件開(kāi)發(fā)工具Quartus II 簡(jiǎn)介22 整體設(shè)計(jì)方案33 各個(gè)模塊的設(shè)計(jì)和功能的具體分析43.1 分頻器設(shè)計(jì)43.1.1 設(shè)計(jì)原理43.1.2 源程序及其仿真波形43.1.3 RTL電路圖63.2 計(jì)數(shù)器設(shè)計(jì)63.2.1 計(jì)數(shù)器及其應(yīng)用63.2.2 計(jì)數(shù)器源程序及其仿真73.3 鎖存器設(shè)計(jì)93.3.1 鎖存器及其應(yīng)用93.3.2 16位鎖存器源程序及其仿真波形93.4 顯示部分設(shè)計(jì)103.4.1 七段數(shù)碼管顯示原理103.4.2 七段數(shù)碼管源程序及其仿真114 計(jì)數(shù)器頂層設(shè)計(jì)134.1.1

4、基于VHDL的自頂向下的設(shè)計(jì)方法134.3.2頂層設(shè)計(jì)源文件及其仿真波形13總 結(jié)16參考文獻(xiàn)17附 錄1818基于FPGA的計(jì)數(shù)器的程序設(shè)設(shè)計(jì)摘 要 本文介紹了一種基于FPGA的,由頂層到底層設(shè)計(jì)的數(shù)字頻率計(jì)。本文主要包括該頻率計(jì)的設(shè)計(jì)基礎(chǔ)和實(shí)現(xiàn)方法以及譯碼與顯示等內(nèi)容, 描述了它的設(shè)計(jì)平臺(tái)、工作原理和軟硬件實(shí)現(xiàn)。本設(shè)計(jì)主要有分頻器、四位計(jì)數(shù)器、16位鎖存器以及數(shù)碼管顯示電路。計(jì)數(shù)器設(shè)計(jì)采用VHDL硬件描述語(yǔ)言編程,極大地減少了硬件資源的占用,仿真與分析結(jié)果表明,該數(shù)字頻率計(jì)性能優(yōu)異,軟件設(shè)計(jì)語(yǔ)言靈活,硬件簡(jiǎn)單,速度快。關(guān)鍵詞 FPGA 計(jì)數(shù)器 VHDL1 緒論1.1 FPGA簡(jiǎn)介FPGA(

5、FieldProgrmable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。 自1985 年Xilinx 公司推出第一片中大規(guī)?,F(xiàn)場(chǎng)可編程邏輯器件(FP2GA) 至今,FPGA 已經(jīng)歷了十幾年的歷。在這十幾年的過(guò)程中,可編程器件有了驚人的發(fā)展:從最初的1200 個(gè)可利用門(mén),到今天的25 萬(wàn)可利用門(mén),規(guī)模增大了200 多倍; FPGA 供應(yīng)商也從Xilinx 的一枝獨(dú)秀,到今天近20 個(gè)廠商的分庭抗?fàn)?/p>

6、;FPGA 從單一的基于SRAM結(jié)構(gòu)到今天各種結(jié)構(gòu)類型的出現(xiàn),都充分體現(xiàn)了可編程器件這一巨大市場(chǎng)的吸引力。FPGA 不僅可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問(wèn)題,而且其開(kāi)發(fā)周期短、開(kāi)發(fā)軟件投入少、芯片價(jià)格不斷降低。由于目前電子產(chǎn)品生命周期相對(duì)縮短,相近功能產(chǎn)品的派生設(shè)計(jì)增多等特點(diǎn),促使FPGA 越來(lái)越多地取代了ASIC 的市場(chǎng),特別是對(duì)國(guó)內(nèi)眾多的科研單位來(lái)說(shuō),小批量、多品種的產(chǎn)品需求,使得FPGA 成為首選。1.2 硬件描述語(yǔ)言VHDL特點(diǎn) 功能強(qiáng)大、設(shè)計(jì)靈活。VHDL具有功能強(qiáng)大的語(yǔ)言結(jié)構(gòu),可以用簡(jiǎn)潔明確的源代碼來(lái)描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計(jì)描述功能,層層細(xì)化,最后可直接生成

7、電路級(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編寫(xiě)的源代碼,因?yàn)閂HDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計(jì)。強(qiáng)大的系統(tǒng)硬件描述能力。VHDL具有多層次的設(shè)計(jì)描述功能,既可以描述系統(tǒng)級(jí)電路,又可以描述門(mén)級(jí)電路。而描述既可以采用行為描述、寄存器

8、傳輸描述或結(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ì)描述的移植成為可能。1.3 軟件開(kāi)發(fā)工具Quartus II 簡(jiǎn)介Altera的Quartu

9、s II 設(shè)計(jì)軟件提供了完整的多平臺(tái)設(shè)計(jì)環(huán)境,它可以輕易滿足各種特定設(shè)計(jì)的需要,也是單芯片可編程系統(tǒng) (SOPC) 設(shè)計(jì)的綜合性環(huán)境和SOPC開(kāi)發(fā)的基本設(shè)計(jì)工具,并為Altera DSP開(kāi)發(fā)包進(jìn)行系統(tǒng)模型設(shè)計(jì)提供了集成綜合環(huán)境。Quartus II設(shè)計(jì)工具完全支持VHDL、Verilog的設(shè)計(jì)流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。Quartus II 包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(AnalysisSynthesis)、適配器(Fitter)、裝配器(Assembler)、時(shí)序分析器(Timing Analyzer)、設(shè)計(jì)輔助模塊(Design Assis

10、tant)等。可以通過(guò)選擇 Start Compilation (Processing 菜單)來(lái)運(yùn)行所有的編譯器模塊。 若要單獨(dú)運(yùn)行各個(gè)模塊,可以通過(guò)選擇 Start(Processing 菜單),然后從 Start 子菜單中為模塊選擇相應(yīng)的指令。此外,還可以通過(guò)選擇 Compiler Tool (Tools 菜單)并在 Compiler Tool窗口中運(yùn)行該模塊來(lái)啟動(dòng)編譯器模塊。 在 Compiler Tool 窗口中,可以打開(kāi)該模塊的設(shè)置文件或報(bào)告文件,還可以打開(kāi)其它相關(guān)窗口。Quartus II支持層次化的設(shè)計(jì),可以在一個(gè)新的編輯輸入環(huán)境中對(duì)使用不同輸入設(shè)計(jì)方式完成的模塊進(jìn)行調(diào)試,從而解

11、決原理圖與HDL混合輸入設(shè)計(jì)的問(wèn)題。在設(shè)計(jì)輸入之后,Quartus II的編譯器將給出設(shè)計(jì)輸入的錯(cuò)誤報(bào)告??梢允褂肣uartus II帶有的RTL Viewer觀察綜合后的RTL圖。Quartus II自動(dòng)設(shè)計(jì)的各主要處理環(huán)節(jié)和設(shè)計(jì)流程,包括設(shè)計(jì)輸入編輯、設(shè)計(jì)分析與綜合、適配、編譯文件匯編(裝配)、時(shí)序參數(shù)提取以及編程下載幾個(gè)步驟。2 整體設(shè)計(jì)方案設(shè)計(jì)基于FPGA的計(jì)數(shù)器,要求顯示1個(gè)0-9999的四位計(jì)數(shù)器,可以由4個(gè)模為10的十進(jìn)制計(jì)數(shù)器級(jí)聯(lián)而成,所以可以顯示的頻率范圍是1-9999HZ。因此,頻率計(jì)的功能分割成四個(gè)模塊:分頻計(jì),計(jì)數(shù)器,輸出鎖存器和譯碼顯示電路。各個(gè)模塊均用VHDL語(yǔ)言描

12、述并用quartus2進(jìn)行仿真。本設(shè)計(jì)采用數(shù)控分頻計(jì),可以對(duì)信號(hào)實(shí)現(xiàn)不同分頻比,輸出信號(hào)作為計(jì)數(shù)器輸入。鎖存器由一個(gè)外部脈沖控制可以控制顯示部分顯示周期。當(dāng)系統(tǒng)正常工作時(shí),輸入信號(hào)標(biāo)提供頻率,經(jīng)過(guò)分頻器分頻,產(chǎn)生計(jì)數(shù)信號(hào)送入計(jì)數(shù)器模塊,計(jì)數(shù)模塊對(duì)輸入的脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù)數(shù)結(jié)束后,將計(jì)數(shù)結(jié)果送入鎖存器中,保證系統(tǒng)可以穩(wěn)定顯示數(shù)據(jù),計(jì)數(shù)結(jié)果能夠顯示在七段數(shù)碼顯示管上。clk11計(jì)數(shù)器分頻計(jì)鎖存器顯示電路ena0rest0clk2 圖1 設(shè)計(jì)方案 3 各個(gè)模塊的設(shè)計(jì)和功能的具體分析3.1 分頻器設(shè)計(jì)3.1.1 設(shè)計(jì)原理分頻器是指使輸出信號(hào)頻率為輸入信號(hào)頻率整數(shù)分之一的電子電路。在許多電子設(shè)備中如電子鐘

13、、頻率合成器等,需要各種不同頻率的信號(hào)協(xié)同工作,常用的方法是以穩(wěn)定度高的晶體振蕩器為主振源,通過(guò)變換得到所需要的各種頻率成分,分頻器是一種主要變換手段。早期的分頻器多為正弦分頻器,隨著數(shù)字集成電路的發(fā)展,脈沖分頻器(又稱數(shù)字分頻器)逐漸取代了正弦分頻器,即使在輸入輸出信號(hào)均為正弦波時(shí)也往往采用模數(shù)轉(zhuǎn)換數(shù)字分頻數(shù)模轉(zhuǎn)換的方法來(lái)實(shí)現(xiàn)分頻。正弦分頻器除在輸入信噪比低和頻率極高的場(chǎng)合已很少使用。數(shù)控分頻器的功能是在輸入端給定不同數(shù)據(jù)時(shí),將對(duì)輸入的時(shí)鐘信號(hào)有不同的分頻比,對(duì)于一個(gè)N分頻器,分頻出的時(shí)鐘周期是原時(shí)鐘周期的N倍,頻率變?yōu)樵瓉?lái)的1/N。對(duì)于一個(gè)8位計(jì)數(shù)器,如果輸入數(shù)DD,然后啟動(dòng)計(jì)數(shù)器工作,則

14、經(jīng)過(guò)D倍的時(shí)鐘周期計(jì)數(shù)器溢出時(shí),輸出full變?yōu)楦唠娖剑僖詅ull為敏感信號(hào),對(duì)fout進(jìn)行取反操作,如此N=2D。計(jì)數(shù)一次后,再重新計(jì)數(shù),反復(fù)進(jìn)行直至輸入被賦予新值。對(duì)于數(shù)控分頻數(shù)器,裝載不同的計(jì)數(shù)初始值時(shí),會(huì)有不同頻率的溢出信號(hào),從而得到不同的輸出。數(shù)控分頻器是利用計(jì)數(shù)值可并行預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成的。3.1.2 源程序及其仿真波形LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT ( CLK : IN STD_LOGIC;DD : IN STD_LOGIC

15、_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF DVF ISSIGNAL FULL : STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK = '1' THENIF CNT8 = "11111111" THENCNT8 := DD; -當(dāng)CNT8計(jì)數(shù)計(jì)滿時(shí),輸入數(shù)據(jù)D被同步預(yù)置給計(jì)數(shù)器CNT8FULL <

16、= '1' -同時(shí)使溢出標(biāo)志信號(hào)FULL輸出為高電平ELSE CNT8 := CNT8 + 1; -否則繼續(xù)作加1計(jì)數(shù)FULL <= '0' -且輸出溢出標(biāo)志信號(hào)FULL為低電平END IF;END IF;END PROCESS P_REG ;P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULL'EVENT AND FULL = '1' THENCNT2 := NOT CNT2; -如果溢出標(biāo)志信號(hào)FULL為高電平,D觸發(fā)器輸出取反IF CNT2 = '1

17、9; THEN FOUT <= '1' ELSE FOUT <= '0'END IF; END IF; END PROCESS P_DIV ;END;圖2 分頻器仿真波形3.1.3 RTL電路圖圖3 分頻器RTL電路圖3.2 計(jì)數(shù)器設(shè)計(jì)3.2.1 計(jì)數(shù)器及其應(yīng)用計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)器在數(shù)字系統(tǒng)中主要是對(duì)脈沖的個(gè)數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測(cè)量、計(jì)數(shù)和控制的功能,同時(shí)兼有分頻功能,計(jì)數(shù)器是由基本的計(jì)數(shù)單元和一些控制門(mén)所組成,計(jì)數(shù)單元?jiǎng)t由一系列具有存儲(chǔ)信息功能的各類觸發(fā)器構(gòu)成,這些觸發(fā)器有RS觸發(fā)器、T觸發(fā)器、D觸發(fā)器

18、及JK觸發(fā)器等。計(jì)數(shù)器在數(shù)字系統(tǒng)中應(yīng)用廣泛,如在電子計(jì)算機(jī)的控制器中對(duì)指令地址進(jìn)行計(jì)數(shù),以便順序取出下一條指令,在運(yùn)算器中作乘法、除法運(yùn)算時(shí)記下加法、減法次數(shù),又如在數(shù)字儀器中對(duì)脈沖的計(jì)數(shù)等等。計(jì)數(shù)器可以用來(lái)顯示產(chǎn)品的工作狀態(tài),一般來(lái)說(shuō)主要是用來(lái)表示產(chǎn)品已經(jīng)完成了多少份的折頁(yè)配頁(yè)工作。它主要的指標(biāo)在于計(jì)數(shù)器的位數(shù),常見(jiàn)的有3位和4位的。很顯然,3位數(shù)的計(jì)數(shù)器最大可以顯示到999,4位數(shù)的最大可以顯示到9999。在數(shù)字電子技術(shù)中應(yīng)用的最多的時(shí)序邏輯電路。計(jì)數(shù)器不僅能用于對(duì)時(shí)鐘脈沖計(jì)數(shù),還可以用于分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。但是并無(wú)法顯示計(jì)算結(jié)果,一般都是要通過(guò)外接LCD

19、或LED屏才能顯示。3.2.2 計(jì)數(shù)器源程序及其仿真(1) 十進(jìn)制計(jì)數(shù)器加數(shù)的合法設(shè)計(jì)范圍為0到9,故當(dāng)輸入的加數(shù)大于9的時(shí)候要將其統(tǒng)一變換成0。本實(shí)驗(yàn)采用一個(gè)帶有異步復(fù)位和同步時(shí)鐘使能的十進(jìn)制加法計(jì)數(shù)器,這種計(jì)數(shù)器有許多實(shí)際的用處。如果rst為“1”,將對(duì)時(shí)鐘清零;如果為1,且有clk信號(hào),則允許計(jì)數(shù)器就數(shù),若計(jì)數(shù)器小于9,計(jì)數(shù)器加1,否則清零。第二個(gè)if語(yǔ)句功能是當(dāng)計(jì)數(shù)器cqi的只達(dá)到9時(shí)產(chǎn)生進(jìn)位溢出信號(hào)。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port

20、 (rst,clk,ena:in std_logic; cout: out std_logic; outy :out std_logic_vector(3 downto 0);end cnt10;architecture behv of cnt10 isbeginprocess (rst,ena,clk)variable cqi :std_logic_vector(3 downto 0);beginif rst='1' then cqi :=(others =>'0');elsif clk'event and clk='1' the

21、nif ena ='1' thenif cqi < 9 then cqi:=cqi+1;cout<='0'elsif cqi=9 thencqi :=(others =>'0');cout<='1'end if;elsif ena='0' then cqi:=(others =>'0');end if;end if;outy <=cqi;end process;end behv;圖4 十進(jìn)制計(jì)數(shù)器仿真波形(2)四位計(jì)數(shù)器下面是一含計(jì)數(shù)使能、異步復(fù)位功能的4位計(jì)數(shù)器

22、, rst是異步清信號(hào),高電平有效。library ieee;use ieee.std_logic_1164.all;entity cnt10_4 isport(clkk,rst,ena:in std_logic; d:out std_logic_vector(15 downto 0);end entity;architecture one of cnt10_4 iscomponent cnt10 port (rst,clk,ena:in std_logic; cout: out std_logic; outy :out std_logic_vector(3 downto 0);end com

23、ponent;signal e:std_logic_vector(3 downto 0);beginu1:cnt10 port map(clk=>clkk,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3 downto 0);u2:cnt10 port map(clk=>e(0),rst=>rst,ena=>ena,cout=>e(1),outy=>d(7 downto 4);u3:cnt10 port map(clk=>e(1),rst=>rst,ena=>ena,cout=>e(

24、2),outy=>d(11 downto 8);u4:cnt10 port map(clk=>e(2),rst=>rst,ena=>ena,cout=>e(3),outy=>d(15 downto 12);end architecture one;3.3 鎖存器設(shè)計(jì)3.3.1 鎖存器及其應(yīng)用所謂鎖存器,就是輸出端的狀態(tài)不會(huì)隨輸入端的狀態(tài)變化而變化,僅在有鎖存信號(hào)時(shí)輸入的狀態(tài)被保存到輸出,直到下一個(gè)鎖存信號(hào)到來(lái)時(shí)才改變。典型的鎖存器邏輯電路是D 觸發(fā)器電路。在LED和數(shù)碼管顯示方面,要維持一個(gè)數(shù)據(jù)的顯示,往往要持續(xù)的快速的刷新。尤其是在四段八位數(shù)碼管等這些要選

25、通的顯示設(shè)備上。在人類能夠接受的刷新頻率之內(nèi),大概每三十毫秒就要刷新一次。這就大大占用了處理器的處理時(shí)間,消耗了處理器的處理能力,還浪費(fèi)了處理器的功耗。鎖存器的使用可以大大的緩解處理器在這方面的壓力。當(dāng)處理器把數(shù)據(jù)傳輸?shù)芥i存器并將其鎖存后,鎖存器的輸出引腳便會(huì)一直保持?jǐn)?shù)據(jù)狀態(tài)直到下一次鎖存新的數(shù)據(jù)為止。這樣在數(shù)碼管的顯示內(nèi)容不變之前,處理器的處理時(shí)間和IO引腳便可以釋放??梢钥闯?,處理器處理的時(shí)間僅限于顯示內(nèi)容發(fā)生變化的時(shí)候,這在整個(gè)顯示時(shí)間上只是非常少的一個(gè)部分。而處理器在處理完后可以有更多的時(shí)間來(lái)執(zhí)行其他的任務(wù)。這就是鎖存器在LED和數(shù)碼管顯示方面的作用:節(jié)省了寶貴的MCU時(shí)間。3.3.2

26、 16位鎖存器源程序及其仿真波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b is port (load: in std_logic; din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0);end reg16b;architecture art of reg16b isbegin process(load,din) begin if load'event a

27、nd load='1'then dout<=din; end if; end process;end architecture art;圖5 鎖存器波形3.4 顯示部分設(shè)計(jì)3.4.1 七段數(shù)碼管顯示原理對(duì)于人機(jī)交互式單片機(jī)系統(tǒng)來(lái)說(shuō),不僅需要響應(yīng)用戶輸入,同時(shí)也需要將一些測(cè)控信息輸出顯示。這些顯示信息可以提供實(shí)時(shí)的數(shù)據(jù)或圖形結(jié)果,以便于掌握系統(tǒng)的狀態(tài)并進(jìn)行分析處理。目前,最常用的是LED數(shù)碼管顯示。其成本低廉、使用簡(jiǎn)便,可以顯示數(shù)字或幾個(gè)特定的字符。數(shù)碼管數(shù)碼管的一種是半導(dǎo)體發(fā)光器件,數(shù)碼管可分為七段數(shù)碼管和八段數(shù)碼管,區(qū)別在于八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元,其

28、基本單元是發(fā)光二極管。數(shù)碼管通過(guò)對(duì)其不同的管腳輸入相對(duì)圖6 七段數(shù)碼管原理的電流,使其發(fā)亮,從而顯示出數(shù)字能夠顯示 時(shí)間、日期、溫度等所有可用數(shù)字表示的參數(shù)的器件。在電器特別是家電領(lǐng)域應(yīng)用極為廣泛,如顯示屏、空調(diào)、熱水器、冰箱等等。絕大多數(shù)熱水器用的都是數(shù)碼管,其他家電也用液晶屏與熒光屏。7段共陽(yáng)極LED數(shù)碼管是由7個(gè)條形發(fā)光二極管和一個(gè)小數(shù)點(diǎn)位構(gòu)成,其引腳配置,如圖所示,其內(nèi)部結(jié)構(gòu),如圖所示。從圖中可以看出,其中7個(gè)發(fā)光二極管構(gòu)成字形“8”,可以用來(lái)顯示數(shù)字,另一個(gè)發(fā)光二極管構(gòu)成小數(shù)點(diǎn)。因此,這種數(shù)碼管有時(shí)也被稱為8段LED數(shù)碼管顯示器。LED數(shù)碼管及引腳圖資料LED數(shù)碼管實(shí)際上是由七個(gè)發(fā)光

29、管組成8字形構(gòu)成的,加上。這些段分別由字母a,b,c,d,e,f,g來(lái)表示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會(huì)發(fā)亮,以形成我們眼睛看到的 2個(gè)8數(shù)碼管字樣了。如:顯示一個(gè)“2”字,那么應(yīng)當(dāng)是a亮b亮g亮e亮d亮f不亮c不亮。表1 七段LED段碼表字符共陰極共陽(yáng)極字符共陰極共陽(yáng)極03FHC0HA77H88H106HF9HB7CH83H25BHA4HC39HC6H34FHB0HD5EHA1H466H99HE79H86H56DH92HF71H8EH67DH82HH76H09H707HF8HP73H8CH87FH80HU3EHC1H96FH90H滅00HFFH在實(shí)際的應(yīng)用中,使用單個(gè)LED數(shù)

30、碼管的情況比較少,經(jīng)常需要同時(shí)使用多個(gè)LED數(shù)碼管來(lái)顯示大于1位的數(shù)據(jù)或字符串。以4個(gè)LED數(shù)碼管并列使用的情況為例。這4個(gè)數(shù)碼管可以顯示-9999999之間的任何數(shù)字,也可以同時(shí)顯示4個(gè)字符構(gòu)成的字符串??梢?jiàn)使用多個(gè)LED數(shù)碼管可以大大擴(kuò)展顯示的信息量。3.4.2 七段數(shù)碼管源程序及其仿真library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led_controller isport(d:in std_logic_vector(3 downto 0);a:out std_logic_ve

31、ctor(6 downto 0);end led_controller;architecture one of led_controller isbegin process(d)begincase d iswhen "0000"=> a<= "0111111"when "0001"=> a<= "0000110"when "0010"=> a<= "1011011"when "0011"=> a<= &quo

32、t;1001111"when "0100"=> a<= "1100110"when "0101"=> a<= "1101101"when "0110"=> a<= "1111101"when "0111"=> a<= "0000111"when "1000"=> a<= "1111111"when "1001"

33、;=> a<= "1101111"when "1010"=> a<= "1110111"when "1011"=> a<= "1111100"when "1100"=> a<= "0111001"when "1101"=> a<= "1011110"when "1110"=> a<= "1111001"wh

34、en "1111"=> a<= "1110001"when others => null;end case;end process;end;圖7 七段數(shù)碼管仿真波形4 計(jì)數(shù)器頂層設(shè)計(jì)4.1.1 基于VHDL的自頂向下的設(shè)計(jì)方法所謂自頂向下設(shè)計(jì)方法,就是采用可完全獨(dú)立于芯片廠商及其產(chǎn)品結(jié)構(gòu)的描述語(yǔ),在功能級(jí)對(duì)設(shè)計(jì)產(chǎn)品進(jìn)行定義,并結(jié)合功能仿真技術(shù),以確保設(shè)計(jì)的正確性,能定義完成后,利用邏輯綜合技術(shù),把功能描述轉(zhuǎn)換成某一具體結(jié)構(gòu)芯片的網(wǎng)表文件,輸出給廠商的布局布線器進(jìn)行布局布線。布局布線結(jié)果還可反標(biāo)回同一仿真器,進(jìn)行包括功能和時(shí)序的后驗(yàn)證,以

35、保證布局布線所帶來(lái)的門(mén)延時(shí)和線延時(shí)不會(huì)影響設(shè)計(jì)的性能。自頂向下設(shè)計(jì)方法的優(yōu)越性是顯而易見(jiàn)的。首先,由于功能描述可完全獨(dú)立于芯片結(jié)構(gòu),在設(shè)計(jì)的最初階段,設(shè)計(jì)師可不受芯片結(jié)構(gòu)的約束,集中精力進(jìn)行產(chǎn)品設(shè)計(jì),避免了傳統(tǒng)設(shè)計(jì)方法所帶來(lái)的重新再設(shè)計(jì)風(fēng)險(xiǎn),大大縮短了設(shè)計(jì)周期。其次,設(shè)計(jì)的再利用得到保證。目前的電子產(chǎn)品正向模塊化發(fā)展,所謂模塊化就是對(duì)以往設(shè)計(jì)成果進(jìn)行修改,組合和再利用,產(chǎn)生全新的或派生設(shè)計(jì),而自頂向下設(shè)計(jì)方法的功能描述可與芯片結(jié)構(gòu)無(wú)關(guān)。因此可以以一種IP的方式進(jìn)行存檔,以便將來(lái)的重新利用。 第三,設(shè)計(jì)規(guī)模大大提高。簡(jiǎn)單的語(yǔ)言描述即可完成復(fù)雜的功能,而不需要手工繪圖。第四,芯片選擇更加靈活。設(shè)計(jì)

36、師可在較短的時(shí)間內(nèi)采用各種結(jié)構(gòu)芯片來(lái)完成同一功能描述,從而在設(shè)計(jì)規(guī)模、速度、芯片價(jià)格及系統(tǒng)性能要求等方面進(jìn)行平衡,選擇最佳結(jié)果。4.1.2頂層設(shè)計(jì)源文件及其仿真波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;use ieee.std_logic_signed;entity ccnntt isport(ena0,rst0:in std_logic; clk1,clk2:in std_logic; ledout:out std_logic_vect

37、or(27 downto 0);din: in std_logic_vector(7 downto 0);end entity;architecture one of ccnntt iscomponent DVF port ( clk:in std_logic; DD : in std_logic_vector(7 downto 0); fout: out std_logic;component cnt10_4port(clkk,rst,ena:in std_logic; d:out std_logic_vector(15 downto 0);end component;component r

38、eg16b port(load: in std_logic; din : in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0);end component;component led_controllerport(d:in std_logic_vector(3 downto 0); a:out std_logic_vector(6 downto 0);end component;signal y:std_logic;signal b,h:std_logic_vector(15 downto 0);signal leds:st

溫馨提示

  • 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)論