




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.正文一、設(shè)計(jì)思路1.基于QUASTUS II平臺(tái),利用DDS(直接數(shù)字信號(hào)合成)技術(shù),采用VHDL語言,設(shè)計(jì)一波形信號(hào)發(fā)生器。首先根據(jù)對(duì)各波形的幅度進(jìn)行采樣,獲得各波形的波形數(shù)據(jù)表,然后FPGA根據(jù)輸入的時(shí)鐘(頻率可根據(jù)要求可變)作為地址信號(hào),從FPGA數(shù)據(jù)線上輸出相應(yīng)的波形數(shù)據(jù),再送入實(shí)驗(yàn)板上的D/A轉(zhuǎn)換芯片進(jìn)行轉(zhuǎn)換為模擬信號(hào),最后送入濾波電路濾波后輸出。2.實(shí)驗(yàn)整體框圖如下:由斜降鋸齒波模塊(dj)、斜升鋸齒波模塊(dz)、方波模塊(fb)、三角波模塊(jcb)、階梯波模塊(jtb)、6選1選擇器(xz)正弦波模塊(zx)以及、譯碼顯示模塊(ym)組成。二、設(shè)計(jì)輸入文件與調(diào)試;1.分頻器
2、 用4個(gè)100分頻器串接實(shí)現(xiàn)。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity fenpin isport (clk: in std_logic; clkfen: out std_logic); end fenpin;architecture fenpin of fenpin issignal clk_mid: std_logic;begin process(clk) variable data:integer range 0 to 99; begin if clkevent and
3、 clk=1 then if data=99 then data:=0; clk_mid=not clk_mid; else data:=data+1;end if;nd if;clkfen=clk_mid;end process;end fenpin;2.遞減(鋸齒波)波形數(shù)據(jù)產(chǎn)生模塊設(shè)計(jì)采用2550循環(huán)加法計(jì)數(shù)器實(shí)現(xiàn)。設(shè)計(jì)思路是: reset 是復(fù)位信號(hào), 要首先考慮。tmp 是引進(jìn)的一個(gè)中間變量。通過賦值給輸出值。clk 是時(shí)鐘信號(hào), 當(dāng)復(fù)位信號(hào)有效時(shí), 輸出為1, 輸出最大值設(shè)為“255”,最小值設(shè)為“0”,從“0”開始, 當(dāng)時(shí)鐘檢測(cè)到有上升沿的時(shí)候, 輸出就會(huì)呈現(xiàn)遞減的趨勢(shì), 減“1
4、”。LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;USE IEEE. STD_LOGIC_UNSIGNED.ALL;ENTITY dj IS PORT (clk,reset: IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END dj;ARCHITECTURE behave OF dj ISBEGIN PROCESS (clk,reset) VARIABLE tmp: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN IF reset=0THEN tmp:=11111111; E
5、LSIF clkEVENT AND clk=1THEN IF tmp=00000000THEN Tmp:=11111111; ELSE tmp:=tmp-1; END IF;END IF; q=tmp; END PROCESS;END behave;3.遞增(鋸齒波)波形數(shù)據(jù)產(chǎn)生模塊設(shè)計(jì)采用0255 循環(huán)加法計(jì)數(shù)器實(shí)現(xiàn)。與遞減相反。LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dz IS PORT (clk,reset: IN STD_LOGIC; q:OUT STD_LOGIC
6、_VECTOR (7 DOWNTO 0);END dz;ARCHITECTURE behave OF dz ISBEGIN PROCESS (clk,reset) VARIABLE tmp: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN IF reset=0THEN tmp:=00000000; ELSIF clkEVENT AND clk=1THEN IF tmp=11111111THEN tmp:=00000000; ELSE tmp:=tmp+1; END IF; END IF;q=tmp; END PROCESS;END behave;4.方波波形數(shù)據(jù)產(chǎn)生模
7、塊設(shè)計(jì)采用高/ 低電平實(shí)現(xiàn), 用cnt 來控制方波的周期, 用a 的值來控制輸出到底是高電平還是低電平。LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY fb IS PORT (clk,reset: IN STD_LOGIC; q:OUT INTEGER RANGE 0 TO 255);END fb; ARCHITECTURE behave OF fb ISSIGNAL a: BIT;BEGIN PROCESS (clk,reset) VARIABLE cnt: INTEGER range 0 to 31; BEGIN IF reset=0THE
8、N A=0; ELSIF clkEVENT AND clk=1THEN IF cnt31 THENCnt:=cnt+1; ELSE cnt:=0; a=NOT a;END IF; END IF; END PROCESS; Process (clk,a) BEGINIF clkEVENT AND clk=1THEN IF a=1THEN Q=255; ELSE Q=0; END IF; END IF;END PROCESS;END behave;5.三角波波形數(shù)據(jù)產(chǎn)生模塊設(shè)計(jì)采用02550 循環(huán)加/ 減法計(jì)數(shù)器實(shí)現(xiàn)。LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.AL
9、L;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jcb IS PORT (clk,reset: IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END jcb;ARCHITECTURE behave OF jcb ISBEGIN PROCESS (clk,reset) VARIABLE tmp: STD_LOGIC_VECTOR (7 DOWNTO 0); VARIABLE a: STD_LOGIC; BEGIN IF reset=0THEN tmp:=00000000; ELSIF clkEVENT AND
10、 clk=1THEN IF a=0THENIF tmp=11111110THEN tmp:=11111111; a:=1; ELSE tmp:=tmp+1; END IF;ELSE IF tmp=00000001THEN tmp:=00000000; a:=0;ELSE tmp:=tmp-1; END IF; END IF;END IF;q=tmp; END PROCESS;END behave6.階梯波形數(shù)據(jù)產(chǎn)生模塊設(shè)計(jì)可采用八進(jìn)制計(jì)數(shù)器實(shí)現(xiàn), 每次階梯常數(shù)為32 。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_uns
11、igned.all;entity jtb isport(clk,reset:in std_logic;q:out std_logic_vector(7 downto 0);end jtb;architecture a of jtb isbeginprocess(clk,reset)variable tmp:std_logic_vector(7 downto 0);beginif reset=0 thentmp:=00000000;else if clkevent and clk=1 thenif tmp=11111111 thentmp:=00000000;elsetmp:=tmp+16;en
12、d if;end if;end if;q=tmp;end process;end a;7.正弦波波形數(shù)據(jù)產(chǎn)生模塊設(shè)計(jì)采用描點(diǎn)法來描述正弦波,在仿真波形中可以看到輸入輸出引腳設(shè)置, 其中clk 輸入時(shí)鐘端口, reset 為輸入復(fù)位端口, d 為整數(shù)輸出端口, 一個(gè)周期選取64 個(gè)點(diǎn), 計(jì)算出64 個(gè)常數(shù)后, 查表輸出5 。復(fù)位信號(hào)的級(jí)別高于其它信號(hào), 而且低電平是有效電平, 所以整個(gè)程序的工作狀態(tài)應(yīng)處于高電平狀態(tài)。當(dāng)時(shí)鐘檢測(cè)到上升沿時(shí),計(jì)數(shù)器計(jì)數(shù), 描點(diǎn)工作開始。沒達(dá)到最大值之前,一直自加, 否則就自動(dòng)轉(zhuǎn)為“0”。那么首先要確定這64 個(gè)點(diǎn)。然后在程序里用case 語句來擇。library i
13、eee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zx is port(clk:in std_logic; reset:in std_logic; q:out std_logic_vector(7 downto 0);end zx;architecture behav of zx is signal b:integer range 0 to 63; signal d:integer range 0 to 255;beginprocess(clk)
14、begin if reset=0then b=0; elsif clkevent and clk=1 then if b=63 then b=0; else bddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; end case; end process; qqqqqqqNULL; END CASE; END PROCESS; END behave; 9譯碼library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;use ieee.s
15、td_logic_unsigned.all;entity ym is port( clk,rst :in std_logic; data :in std_logic_vector(7 downto 0); sel :out std_logic_vector(2 downto 0); data_disp:out std_logic_vector(6 downto 0);end ym;architecture RTL of ym issignal count :integer range 9 downto 0;signal temp :integer range 4 downto 0;signal
16、 number_h,number_t,number_l:integer range 0 to 9;begin process(data,clk,rst)beginif(rst=0)then number_h=0; number_t=0; number_l=200 AND to_integer(unsigned(data)-200=50)then number_h=2; number_t=5; number_l=200 AND to_integer(unsigned(data)-200=40)then number_h=2; number_t=4; number_l=200 AND to_int
17、eger(unsigned(data)-200=30)then number_h=2; number_t=3; number_l=200 AND to_integer(unsigned(data)-200=20)then number_h=2; number_t=2; number_l=200 AND to_integer(unsigned(data)-200=10)then number_h=2; number_t=1; number_l=200)then number_h=2; number_t=0; number_l=100 AND to_integer(unsigned(data)-1
18、00=90)then number_h=1; number_t=9; number_l=100 AND to_integer(unsigned(data)-100=80)then number_h=1; number_t=8; number_l=100 AND to_integer(unsigned(data)-100=70)then number_h=1; number_t=7; number_l=100 AND to_integer(unsigned(data)-100=60)then number_h=1; number_t=6; number_l=100 AND to_integer(
19、unsigned(data)-100=50)then number_h=1; number_t=5; number_l=100 AND to_integer(unsigned(data)-100=40)then number_h=1; number_t=4; number_l=100 AND to_integer(unsigned(data)-100=30)then number_h=1; number_t=3; number_l=100 AND to_integer(unsigned(data)-100=20)then number_h=1; number_t=2; number_l=100
20、 AND to_integer(unsigned(data)-100=10)then number_h=1; number_t=1; number_l=100)then number_h=1; number_t=0; number_l=90)then number_h=0; number_t=9; number_l=80)then number_h=0; number_t=8; number_l=70)then number_h=0; number_t=7; number_l=60)then number_h=0; number_t=6; number_l=50)then number_h=0
21、; number_t=5; number_l=40)then number_h=0; number_t=4; number_l=30)then number_h=0; number_t=3; number_l=20)then number_h=0; number_t=2; number_l=10)then number_h=0; number_t=1; number_l=to_integer(unsigned(data)-10;elsenumber_h=0;number_t=0;number_l=to_integer(unsigned(data);end if;end process;proc
22、ess( clk,rst,temp,number_h,number_l) begin if(clkevent and clk=1)then if(temp=2)then temp=0; else tempsel=001; countsel=010; countsel=100; countNULL; end case;end process;process(count)begin case count iswhen 0=data_dispdata_dispdata_dispdata_dispdata_dispdata_dispdata_dispdata_dispdata_dispdata_dispnull;end case;end process;end RTL;1.遞減鋸齒波仿真結(jié)果三、仿真與驗(yàn)證結(jié)果2.遞增鋸齒波仿真結(jié)果3.方波仿真結(jié)果4.階梯波仿真結(jié)果5、三角波仿真結(jié)果6.正弦波仿真結(jié)果四、設(shè)計(jì)結(jié)論運(yùn)用VHDL 語言進(jìn)行智能函數(shù)發(fā)生器功能的設(shè)計(jì)具有以下優(yōu)勢(shì): 信號(hào)發(fā)生器的功能測(cè)試與仿真實(shí)驗(yàn)結(jié)果表明, 時(shí)序和波形正確, 達(dá)到了設(shè)計(jì)的功能要求
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)煙草總公司電子交易專用合同
- 工程借款合同借款合同
- 宣傳服務(wù)合同協(xié)議
- 國(guó)外勞動(dòng)合同樣本
- 公司承包經(jīng)營(yíng)合同法律規(guī)定
- 通訊設(shè)備采購(gòu)安裝合同
- 河南工業(yè)和信息化職業(yè)學(xué)院《信息管理專業(yè)研究方法論與創(chuàng)新教育》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津美術(shù)學(xué)院《生物統(tǒng)計(jì)與田間試驗(yàn)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州華商職業(yè)學(xué)院《泰國(guó)社會(huì)與文化》2023-2024學(xué)年第二學(xué)期期末試卷
- 錦州醫(yī)科大學(xué)《電路電子技術(shù)與數(shù)學(xué)邏輯》2023-2024學(xué)年第二學(xué)期期末試卷
- 小學(xué)數(shù)學(xué)最新人教版三年級(jí)下冊(cè)第一單元《位置與方向(一)》單元測(cè)試題(答案解析)
- 細(xì)胞生物學(xué)(全套1047張課件)
- 人機(jī)料法環(huán)五要素如何管理
- 20級(jí)大學(xué)物理(下)A卷期終試卷及答案解析-南京理工大學(xué)
- 新北師大版(2022) 選擇性必修第三冊(cè) Unit 8 Literature Lesson 1 The Last Leaf 教案
- 地震應(yīng)急預(yù)案及應(yīng)急演練腳本
- 道教系統(tǒng)諸神仙位寶誥全譜
- 二十四節(jié)氣文化融入幼兒園食育的有效途徑
- 統(tǒng)計(jì)過程控制SPC培訓(xùn)資料
- 回字格+米字格練字模版(A4最大利用率)
- 食品經(jīng)營(yíng)操作流程圖
評(píng)論
0/150
提交評(píng)論