【正文】
正文一、設(shè)計思路 II平臺,利用DDS(直接數(shù)字信號合成)技術(shù),采用VHDL語言,設(shè)計一波形信號發(fā)生器。首先根據(jù)對各波形的幅度進行采樣,獲得各波形的波形數(shù)據(jù)表,然后FPGA根據(jù)輸入的時鐘(頻率可根據(jù)要求可變)作為地址信號,從FPGA數(shù)據(jù)線上輸出相應(yīng)的波形數(shù)據(jù),再送入實驗板上的D/A轉(zhuǎn)換芯片進行轉(zhuǎn)換為模擬信號,最后送入濾波電路濾波后輸出。:由斜降鋸齒波模塊(dj)、斜升鋸齒波模塊(dz)、方波模塊(fb)、三角波模塊(jcb)、階梯波模塊(jtb)、6選1選擇器(xz)正弦波模塊(zx)以及、譯碼顯示模塊(ym)組成。二、設(shè)計輸入文件與調(diào)試 用4個100分頻器串接實現(xiàn)。library ieee。use 。use 。 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 clk39。event and clk=39。139。 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。(鋸齒波)波形數(shù)據(jù)產(chǎn)生模塊設(shè)計采用255~0循環(huán)加法計數(shù)器實現(xiàn)。設(shè)計思路是: reset 是復(fù)位信號, 要首先考慮。tmp 是引進的一個中間變量。通過賦值給輸出值。clk 是時鐘信號, 當(dāng)復(fù)位信號有效時, 輸出為‘1’, 輸出最大值設(shè)為“255”,最小值設(shè)為“0”,從“0”開始, 當(dāng)時鐘檢測到有上升沿的時候, 輸出就會呈現(xiàn)遞減的趨勢, 減“1”。LIBRARY IEEE。USE IEEE. 。USE IEEE. 。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=39。039。THEN tmp:=11111111。 ELSIF clk39。EVENT AND clk=39。139。THEN IF tmp=00000000THEN Tmp:=11111111。 ELSE tmp:=tmp1。 END IF。END IF。 q=tmp。 END PROCESS。END behave。(鋸齒波)波形數(shù)據(jù)產(chǎn)生模塊設(shè)計采用0~255 循環(huán)加法計數(shù)器實現(xiàn)。與遞減相反。LIBRARY IEEE。USE IEEE. 。USE 。ENTITY dz IS PORT (clk,reset: IN STD_LOGIC。 q:OUT STD_LOGIC_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=39。039。THEN tmp:=00000000。 ELSIF clk39。EVENT AND clk=39。139。THEN IF tmp=11111111THEN tmp:=00000000。 ELSE tmp:=tmp+1。 END IF。 END IF。q=tmp。 END PROCESS。END behave。采用高/ 低電平實現(xiàn), 用t 來控制方波的周期, 用a 的值來控制輸出到底是高電平還是低電平。LIBRARY IEEE。USE IEEE. 。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 t: INTEGER range 0 to 31。 BEGIN IF reset=39。039。THEN A=39。039。 ELSIF clk39。EVENT AND cl