eda信號發(fā)生器的設(shè)計_第1頁
eda信號發(fā)生器的設(shè)計_第2頁
eda信號發(fā)生器的設(shè)計_第3頁
eda信號發(fā)生器的設(shè)計_第4頁
eda信號發(fā)生器的設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.1 引言簡易多功能信號發(fā)生器是信號發(fā)生器的一種,在生產(chǎn)實踐和科研領(lǐng)域中有著廣泛的應(yīng)用。在研制、生產(chǎn)、測試和維修各種電子元件、部件以及整機設(shè)備時,都需要有信號源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號并加到被測器件或設(shè)備上,用其他儀器觀察、測量被測儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號發(fā)生器是電子測量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號,如正弦波,三角波,方波和鋸齒波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。在本設(shè)計中它能夠產(chǎn)生多種波形,如正弦波,三角波,方波和鋸齒波等,并能實現(xiàn)對各種波頻率和幅度的改變。正因為其在生活中應(yīng)用的重要性,人們它做了大量的研究

2、,總結(jié)出了許多實現(xiàn)方式??梢曰贔PGA 、VHDL、單片機、DOS技能、數(shù)字電路等多種方法實現(xiàn)。本設(shè)計是采用VHDL來實現(xiàn)的簡易多功能信號發(fā)生器。它能產(chǎn)生正弦波,三角波,方波和鋸齒波。且對各種波形的要求如下:(1)根據(jù)按鍵選擇不同的波形(實現(xiàn)正弦波,三角波,方波和鋸齒波);(2)各波形的頻率范圍為100Hz-20KHz;(3)各波形頻率可調(diào)(通過按鍵控制頻率的變化,步進(jìn)值為500Hz);(4)用LED數(shù)碼管實時顯示輸出波形的頻率值;(5)用按鍵控制實現(xiàn)輸出信號的幅度調(diào)節(jié)(幅度調(diào)節(jié)為2.5V和5V)。2 EDA技術(shù)介紹2.1 EDA介紹EDA是電子設(shè)計自動化(Electronic Design

3、 Automation)縮寫。EDA技術(shù)是以計算機為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。 硬件描述語言HDL是相對于一般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實現(xiàn)相應(yīng)邏輯

4、功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL1。幾乎所有適于大學(xué)生做的數(shù)字邏輯電路實驗都可以在計算機上利用EDA (Electronic Design Automatic電子設(shè)計自動化)軟件進(jìn)行設(shè)計、仿真,只有極少量外部配件不能在計算機上進(jìn)行仿真。因此,在實驗前期階段,即實驗預(yù)習(xí)階段的主要應(yīng)用工具是EDA軟件,利用EDA軟件可以設(shè)計、仿真實驗課題,進(jìn)行虛擬實驗。通過虛擬實驗使實驗者在進(jìn)入真實實驗前就能對預(yù)做的實驗有相當(dāng)?shù)牧私?,甚至可以預(yù)測到實驗的結(jié)果。這樣在實際做實驗時,可以把許多設(shè)計型實驗的

5、難度降低,同時能有更多的時間讓實驗者動手做實驗,研究問題,提高實驗效率。當(dāng)前數(shù)字電路設(shè)計已由計算機輔助設(shè)計進(jìn)入到以計算機為主的設(shè)計時代。2.2 VHDL基本介紹VHDL是一種主要的硬件描述語言之一,硬件描述語言(HDL)是各種描述方法中最能體現(xiàn)EDA優(yōu)越性的描述方法。所謂硬件描述語言,實際上就是一種描述工具,其描述的對象就是待設(shè)計電路系統(tǒng)的邏輯功能,實現(xiàn)該功能的算法,選用的電路結(jié)構(gòu)以及其他各種約束條件等。通常要求HDL既能描述系統(tǒng)的行為,又能描述系統(tǒng)的結(jié)構(gòu)。VHDL語言是美國國防部與20世紀(jì)80年代后期,出于軍事工業(yè)需要開發(fā)的。1984年VHDL被IEEE確定為標(biāo)準(zhǔn)的硬件描述語言。1993年I

6、EEE對VHDL進(jìn)行了修正,增加了部分新的VHDL命令與屬性,增強了對系統(tǒng)的描述能力。VHDL涵蓋面廣,抽象描述強,支持硬件的設(shè)計,驗證,綜合和測試。VHDL能在多級別上對同一邏輯功能進(jìn)行描述。VHDL的基本結(jié)構(gòu)包含一個實體和一個結(jié)構(gòu)體,而完整的VHDL結(jié)構(gòu)還包括配置,程序包與庫。各種硬件描述語言中,VHDL的描述能力最強,因此運用VHDL 進(jìn)行復(fù)雜電路設(shè)計時,往往采用自頂向下結(jié)構(gòu)化的設(shè)計方法。2.3 設(shè)計工具簡介Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Lan

7、guage)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三放EDA工具。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是

8、一種綜合性的開發(fā)平臺。Maxplus II 作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用

9、的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。 Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設(shè)計要求,其中包括支持基于Internet的協(xié)作設(shè)計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計功能,增添 了FastFit編譯選項,推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。3 設(shè)計流程3.1設(shè)計思想及原理圖基于VHDL語言設(shè)計一個簡易多功能信號發(fā)生器,通過選入輸入信號,可以輸出正弦波、三角波

10、、方波和鋸齒波四種波形信號。信號發(fā)生器的控制模塊可以用數(shù)據(jù)選擇器實現(xiàn),四種信號的信號選擇可以用4選1數(shù)據(jù)選擇器實現(xiàn)。同時本設(shè)計使用原理圖的方法,對正弦波、三角波、方波和鋸齒波和4選1數(shù)據(jù)選擇器元件進(jìn)行調(diào)用。簡易多功能信號發(fā)生器的原理圖如下:圖1 簡易多功能信號發(fā)生器原理圖原理圖本設(shè)計的主題思想是各個模塊分別產(chǎn)生相應(yīng)的波形,再通過一個4選1數(shù)據(jù)選擇器輸出相應(yīng)的波形。通過其他按鍵控制波形的頻率和幅度的變化。3.2 正弦波、三角波、方波和鋸齒波的實現(xiàn)3.2.1正弦波設(shè)計 正弦波的產(chǎn)生思想是將對模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后

11、的模擬信號接入示波器即可顯示正弦波形。產(chǎn)生正弦波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity sin2 isport(clock,sel:in std_logic;dout4:out integer range 0 to 255);end sin2;architecture bhv of sin2 istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,254,252,249,245,239,233,225

12、,217,207,197,186,174,162,150,137,124,112,99,87,75,64,53,43,34,26,19,13,8,4,1,0,0,1,4,8,13,19,26,34,43,53,64,75,87,99,112,124,137,150,162,174,186,197,207,217,225,233,239,245,249,252,254,255);signal address:integer range 0 to 63;begin process(clock) begin if clock'event and clock='1' then

13、if address>63 then address<=0; else if sel='1' then address<=address+1; dout4<=(mem(address)/2; else address<=address+1; dout4<=mem(address); end if; end if; end if;end process;end bhv;3.2.2正弦波的仿真在Quartus II軟件輸入上述代碼,再通過編譯和時序仿真,可得到如下的仿真波形。圖2 正弦波時序仿真圖上圖中的輸出制式模擬信號各采樣點的數(shù)字編碼,由于沒

14、有經(jīng)過數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示正弦波形了。3.2.3三角波設(shè)計三角波的產(chǎn)生思想是將對模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號接入示波器即可顯示三角波形。產(chǎn)生三角波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity sanjiao isport(clock,sel:in std_logic;dout3:out integer range 0 to 255);end sanjiao;architecture

15、bhv of sanjiao istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(0,8,16,24,32,40,48,56, 64,72,80,88,96,104,112,120, 128,136,144,152,160,168,176,184, 192,200,208,216,224,232,240,248, 255,248,240,232,224,216,208,200, 192,184,176,168,160,152,144,136, 128,120,112,104,96

16、,88,80,72, 64,56,48,40,32,24,16,8);signal address:integer range 0 to 63;begin process(clock) begin if clock'event and clock='1' then if address>63 then address<=0; else if sel='1' then address<=address+1; dout3<=(mem(address)/2; else address<=address+1; dout3<=m

17、em(address); end if; end if; end if;end process;end bhv;3.2.4三角波的仿真在Quartus II軟件輸入上述代碼,再通過編譯和時序仿真,可得到如下的仿真波形。圖3 三角波仿真圖仿真圖上圖中的輸出制式模擬信號各采樣點的數(shù)字編碼,由于沒有經(jīng)過數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示三角波形了。3.2.5方波設(shè)計方波波的產(chǎn)生思想是將對模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號接入示波器即可顯示方波波形。產(chǎn)生方波的VHDL代碼如下:l

18、ibrary ieee;use ieee.std_logic_1164.all;entity fangbo isport(clock,sel:in std_logic;dout1:out integer range 0 to 255);end fangbo;architecture bhv of fangbo istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,

19、255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);signal address:integer range 0 to 63;begin process(clock) begin if clock'event and clock='1' then if address>63 then address<=0; else if sel='1&#

20、39; then address<=address+1; dout1<=(mem(address)/2; else address<=address+1; dout1<=mem(address); end if; end if; end if; end process;end bhv; 3.2.6方波的仿真在Quartus II軟件輸入上述代碼,再通過編譯和時序仿真,可得到如下的仿真波形。圖4 三角波仿真圖仿真圖上圖中的輸出制式模擬信號各采樣點的數(shù)字編碼,由于沒有經(jīng)過數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示三角波形了。3.2.7鋸齒波設(shè)

21、計鋸齒波的產(chǎn)生思想是將對模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號接入示波器即可顯示鋸齒波形。產(chǎn)生鋸齒波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity juchi isport(clock,sel:in std_logic;dout2:out integer range 0 to 255);end juchi;architecture bhv of juchi istype mem_type is array(0 to 63) of integer r

22、ange 0 to 255;constant mem:mem_type:=(0,4,8,12,16,20,24,28, 32,36,40,44,48,52,56,60, 64,68,72,76,80,84,88,92, 96,100,104,108,112,116,120,124, 128,132,136,140,144,148,152,156, 160,164,168,172,176,180,184,188, 192,198,200,204,208,212,216,220, 224,228,234,238,242,246,250,255);signal address:integer ran

23、ge 0 to 63;begin process(clock) begin if clock'event and clock='1' then if address>63 then address<=0; else if sel='1' then address<=address+1; dout2<=(mem(address)/2; else address<=address+1; dout2<=mem(address); end if; end if; end if;end process;end bhv;3.2.8

24、鋸齒波的仿真在Quartus II軟件輸入上述代碼,再通過編譯和時序仿真,可得到如下的仿真波形。圖5 正弦波未分頻時仿真圖仿真圖上圖中的輸出制式模擬信號各采樣點的數(shù)字編碼,由于沒有經(jīng)過數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示鋸齒波波形了。3.3各個控制單元的實現(xiàn)3.3.1頻率控制單元頻率控制單元包括按鍵輸入識別模塊、分頻數(shù)產(chǎn)生模塊和分頻模塊。其器件圖分別如圖6、圖7和圖8所示。在按鍵輸入識別模塊中共有4個輸入端。其中一個時鐘輸入端,以一個頻率調(diào)節(jié)輸入端,一個使系統(tǒng)輸出波形的頻率為最大的控制輸入端和一個使系統(tǒng)輸出波形的頻率為最小的控制輸入端。本課程設(shè)計要求輸出波

25、形的頻率在每按一次相應(yīng)的按鍵時,就增加或減少500Hz。而實驗室的硬件設(shè)備上的按鍵都是撥碼是按鍵,即按鍵按下后一直有效,這顯然不能滿足要求。于是按鍵輸入識別模塊中用如下的代碼實現(xiàn)按鍵沒按一次都能有效的功能。if button0='0' and button1='1' then if cnt=40 then cnt<=0; else cnt<=cnt+1; end if; elsif button0='1' and button1='0' then if cnt=40 then cnt<=0; else cnt&l

26、t;=cnt+1; end if;以上代碼實現(xiàn)的只是頻率增長的功能,同理就可以實現(xiàn)頻率減小的功能。圖8分頻數(shù)模塊圖7分頻數(shù)模塊圖6輸入端識別模塊當(dāng)按下按鍵輸入識別模塊中分別使整個系統(tǒng)輸出最大和最小頻率的波形的控制輸入端時 ,在按相應(yīng)的使頻率增減的按鍵則實現(xiàn)頻率從最大或最小開始增加或減少的功能。在分頻數(shù)產(chǎn)生模塊中有一個輸入端接收從按鍵輸入識別模塊中輸出地對頻率的控制信號的輸入端,一個分頻數(shù)輸出端,四個相應(yīng)的接數(shù)碼管以顯示系統(tǒng)輸出信號的頻率的輸出端。當(dāng)分頻數(shù)產(chǎn)生模塊的輸入端接收從按鍵輸入識別模塊中輸出地對頻率的控制信號后,便產(chǎn)生相應(yīng)的分頻數(shù)送到輸出端,同時將與分頻數(shù)相應(yīng)頻率送到與數(shù)碼管相接的輸出端

27、。其VHDL代碼見本課程設(shè)計的附錄。在分頻模塊中有一個系統(tǒng)時鐘輸入端,一個分頻數(shù)輸入端和一個頻率輸出端。分頻器的功能主要是根據(jù)分頻數(shù)產(chǎn)生相應(yīng)的輸出頻率。3.3.2波形輸出控制單元波形輸出控制單元中只包括一個數(shù)據(jù)選擇器模塊。其器件圖如圖9所示圖9 數(shù)據(jù)選擇器模塊在該模塊為4選1的數(shù)據(jù)選擇器,包括4個數(shù)據(jù)輸入端,一個數(shù)據(jù)選擇輸入端和一個數(shù)據(jù)輸出端。其功能是根據(jù)數(shù)據(jù)選擇輸入端輸入的數(shù)據(jù)來選擇相應(yīng)的數(shù)據(jù)送到輸出端。從而實現(xiàn)數(shù)據(jù)的選擇輸出。3.4硬件測試本課程設(shè)計是簡易多功能信號發(fā)生器,其總共有6個輸入端和6個輸出端。具體的輸入輸出端可見圖1中所示。根據(jù)引腳所鎖定圖將系統(tǒng)中的各個輸入輸出端口鎖定到合適的

28、引腳上。需要注意的是本系統(tǒng)用到了數(shù)碼管顯示,所以應(yīng)該選定實驗箱的模式6。另外,本實驗輸入的時鐘頻率是12MHz。當(dāng)引腳鎖定完畢后,將程序下載到試驗箱中,連好示波器,在輸入端輸入相應(yīng)的值即可得到相應(yīng)的輸出波形。具體的硬件仿真波形如下:在clk端輸入12MHz的時鐘信號,當(dāng)圖1的原理圖中的bx1.0輸入“00”時得到的是方波波形,如圖10所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實現(xiàn)波形頻率的改變。在clk端輸入12MHz的時鐘信號,當(dāng)圖1的原理圖中的bx1.0輸入“01”時得到的是鋸齒波波形,如圖11所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹

29、的方法可以實現(xiàn)波形頻率的改變。在clk端輸入12MHz的時鐘信號,當(dāng)圖1的原理圖中的bx1.0輸入“11”時得到的是正弦波波形,如圖12所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實現(xiàn)波形頻率的改變。附錄方波library ieee;use ieee.std_logic_1164.all;entity fangbo isport(clock,sel:in std_logic;dout1:out integer range 0 to 255);end fangbo;architecture bhv of fangbo istype mem_type is array

30、(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);signal address:integer range 0 to 63;beginproce

31、ss(clock)beginif clock'event and clock='1' thenif address>63 thenaddress<=0;elseif sel='1' thenaddress<=address+1;dout1<=(mem(address)/2;elseaddress<=address+1;dout1<=mem(address);end if;end if;end if;end process;end bhv;正弦波library ieee;use ieee.std_logic_1164.a

32、ll;entity sin2 isport(clock,sel:in std_logic;dout4:out integer range 0 to 255);end sin2;architecture bhv of sin2 istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,254,252,249,245,239,233,225,217,207,197,186,174,162,150,137,124,112,99,87,75,64,53,43,34,26,19,13,8

33、,4,1,0,0,1,4,8,13,19,26,34,43,53,64,75,87,99,112,124,137,150,162,174,186,197,207,217,225,233,239,245,249,252,254,255);signal address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 thenaddress<=0;elseif sel='1' thenaddress<=ad

34、dress+1;dout4<=(mem(address)/2;elseaddress<=address+1;dout4<=mem(address);end if;end if;end if;end process;end bhv;鋸齒波library ieee;use ieee.std_logic_1164.all;entity juchi isport(clock,sel:in std_logic;dout2:out integer range 0 to 255);end juchi;architecture bhv of juchi istype mem_type is

35、array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,198,200,204,208,212,216,220,224,228,234,238,242,246,250,255);signal

36、 address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 thenaddress<=0;elseif sel='1' thenaddress<=address+1;dout2<=(mem(address)/2;elseaddress<=address+1;dout2<=mem(address);end if;end if;end if;end process;end bhv;

37、三角波library ieee;use ieee.std_logic_1164.all;entity sanjiao isport(clock,sel:in std_logic;dout3:out integer range 0 to 255);end sanjiao;architecture bhv of sanjiao istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,

38、136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,255,248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8);signal address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 t

39、henaddress<=0;elseif sel='1' thenaddress<=address+1;dout3<=(mem(address)/2;elseaddress<=address+1;dout3<=mem(address);end if;end if;end if;end process;end bhv;按鍵輸入識別模塊library ieee;use ieee.std_logic_1164.all;entity aa isport(clk:in std_logic;btn:in std_logic_vector(1 downto 0)

40、;highh:in std_logic;loww:in std_logic;addr:out integer range 0 to 40);end aa;architecture bhv of aa issignal cnt:integer range 0 to 40 :=0;signal button0,button1,button2,button3:std_logic;beginprocess(highh,loww,clk,button0,button1)beginif clk'event and clk='1' thenbutton0<=btn(0);but

41、ton1<=button0;button2<=btn(1);button3<=button2;if highh='1' thencnt<=40;elsif loww='1' thencnt<=0;elseif button0='0' and button1='1' thenif cnt=40 thencnt<=0;elsecnt<=cnt+1;end if;elsif button0='1' and button1='0' thenif cnt=40 the

42、ncnt<=0;elsecnt<=cnt+1;end if;elsif button2='0' and button3='1' thenif cnt=0 thencnt<=40;elsecnt<=cnt-1;end if;elsif button2='1' and button3='0' thenif cnt=0 thencnt<=40;elsecnt<=cnt-1;end if;end if;end if;end if;end process;addr<=cnt;end bhv;分頻模塊

43、library ieee;use ieee.std_logic_1164.all;entity fenpin isport(shu:in integer range 0 to 937;clk:in std_logic;clock:out std_logic);end fenpin;architecture bhv of fenpin issignal num:integer range 0 to 937;signal i:integer range 0 to 937:=0;signal temp:std_logic:='0'beginprocess(clk,i,temp)beg

44、inif clk'event and clk='1' thenif i=shu theni<=0;temp<=not temp;elsei<=i+1;end if;end if;clock<=temp;end process;end bhv;分頻數(shù)產(chǎn)生模塊library ieee;use ieee.std_logic_1164.all;entity pinlv isport(address:in integer range 0 to 40;shu:out integer range 0 to 937;wan,qian,bai,shi,ge:out

45、 std_logic_vector(3 downto 0);end pinlv;architecture bhv of pinlv isbeginprocess(address)begincase address iswhen 0=>shu<=937;wan<="ZZZZ"qian<="ZZZZ"bai<="0001"shi<="0000"ge<="0000"when 1=>shu<=172;wan<="ZZZZ"q

46、ian<="ZZZZ"bai<="0101"shi<="0000"ge<="0000"when 2=>shu<=93;wan<="ZZZZ"qian<="0001"bai<="0000"shi<="0000"ge<="0000"when 3=>shu<=62;wan<="ZZZZ"qian<="00

47、01"bai<="0101"shi<="0000"ge<="0000"when 4=>shu<=46;wan<="ZZZZ"qian<="0010"bai<="0000"shi<="0000"ge<="0000"when 5=>shu<=37;wan<="ZZZZ"qian<="0010"bai<=

48、"0101"shi<="0000"ge<="0000"when 6=>shu<=31;wan<="ZZZZ"qian<="0011"bai<="0000"shi<="0000"ge<="0000"when 7=>shu<=26;wan<="ZZZZ"qian<="0011"bai<="0101"

49、shi<="0000"ge<="0000"when 8=>shu<=24;wan<="ZZZZ"qian<="0100"bai<="0000"shi<="0000"ge<="0000"when 9=>shu<=20;wan<="ZZZZ"qian<="0100"bai<="0101"shi<="00

50、00"ge<="0000"when 10=>shu<=18;wan<="ZZZZ"qian<="0101"bai<="0000"shi<="0000"ge<="0000"when 11=>shu<=16;wan<="ZZZZ"qian<="0101"bai<="0101"shi<="0000"ge<

51、="0000"when 12=>shu<=15;wan<="ZZZZ"qian<="0110"bai<="0000"shi<="0000"ge<="0000"when 13=>shu<=28;wan<="ZZZZ"qian<="0110"bai<="0101"shi<="0000"ge<="0000&qu

52、ot;when 14=>shu<=13;wan<="ZZZZ"qian<="0111"bai<="0000"shi<="0000"ge<="0000"when 15=>shu<=12;wan<="ZZZZ"qian<="0111"bai<="0101"shi<="0000"ge<="0000"when 16=>

53、;shu<=11;wan<="ZZZZ"qian<="1000"bai<="0000"shi<="0000"ge<="0000"when 17=>shu<=11;wan<="ZZZZ"qian<="1000"bai<="0101"shi<="0000"ge<="0000"when 18=>shu<=10;wa

54、n<="ZZZZ"qian<="1001"bai<="0000"shi<="0000"ge<="0000"when 19=>shu<=10;wan<="ZZZZ"qian<="1001"bai<="0101"shi<="0000"ge<="0000"when 20=>shu<=9;wan<="000

55、1"qian<="0000"bai<="0000"shi<="0000"ge<="0000"when 21=>shu<=9;wan<="0001"qian<="0000"bai<="0101"shi<="0000"ge<="0000"when 22=>shu<=8;wan<="0001"qian<=

56、"0001"bai<="0000"shi<="0000"ge<="0000"when 23=>shu<=8;wan<="0001"qian<="0001"bai<="0101"shi<="0000"ge<="0000"when 24=>shu<=8;wan<="0001"qian<="0010"

57、bai<="0000"shi<="0000"ge<="0000"when 25=>shu<=7;wan<="0001"qian<="0010"bai<="0101"shi<="0000"ge<="0000"when 26=>shu<=7;wan<="0001"qian<="0011"bai<="00

58、00"shi<="0000"ge<="0000"when 27=>shu<=7;wan<="0001"qian<="0011"bai<="0101"shi<="0000"ge<="0000"when 28=>shu<=6;wan<="0001"qian<="0100"bai<="0000"shi<="0000"ge<="0000"when 29=>shu<=6;wan<="0001"qian<="0100"bai<="0101"shi<="0000"ge<="0000"when 30=>shu<

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論