第一篇:實驗五正弦信號發生器設計
實驗五正弦信號發生器設計
一、實驗目的1.熟悉利用QuartusII及其LPM_ROM與FPGA硬件資源的使用方法;
2.掌握LPM模塊的重要功能;
3.熟悉MegaWizard Plug-In Manager的使用方法。
二、實驗設備
計算機,QuartusII 6.0 版軟件,JTAG下載線,EDA實驗掛箱(EP1C6Q240C8)。
三、實驗原理
設計一8位寬、1024點的正弦信號發生器。
正弦信號發生器的結構由四個部分組成:
1.計數器或地址發生器(10位地址線);
2.正弦信號數據ROM(存放正弦波的采樣數據,采樣頻率20MHz:8位數據線、10位地址線);
3.VHDL頂層設計;
4.D/A轉換器(8位)。
四、實驗步驟和內容
1.在QuartusII上利用MegaWizard Plug-In Manager功能,調用LPM_ROM函數定制8位寬、1024點ROM,并進行初始化。然后對設計實體進行編輯、編譯、綜合、適配、仿真。
2.利用QuartusII文本編輯器設計10位二進制計數器,做為地址發生器,對設計實體進行編輯、編譯、綜合、適配、仿真。
3.利用層次化設計方法設計一8位寬、1024點的正弦信號發生器。
4.D/A轉換器采用試驗箱配備的DAC0832。
5.引腳鎖定和硬件下載測試。引腳鎖定后進行編譯、下載和硬件測試實驗。將實驗過程和實驗結果寫進實驗報告。
6.使用SignalTap II對設計的正弦信號發生器進行實測。采樣時鐘使用系統時鐘20MHz。
7.使用在系統存儲器數據讀寫編輯器對設計的正弦信號發生器進行實測,觀測結果;
8.實驗報告。將實驗原理、設計過程、編譯仿真波形和分析結果、硬件測試實驗結果寫進實驗報告。
五、思考題
如何實現對輸出正弦信號的頻率和相位可調?
第二篇:簡易正弦信號發生器的設計
實驗六 簡易正弦信號發生器的設計
一、實驗目的1.進一步熟悉Quatus軟件的使用方法;
2.掌握邏輯分析儀的使用方法;
3.掌握LPM-ROM的使用方法;
二、實驗內容
定制LPM-ROM模塊,并利用其設計一個簡易的正弦信號發生器,該信號發生器由以下三部分組成:
(1)計數器或地址信號發生器;
(2)正弦信號數據存儲器ROM(6位地址線,8位數據線),含有128個8位波形數據(一個正弦波形周期)。
(3)VHDL頂層程序設計
注意:本實驗中未給正弦信號波形接D/A轉換器,因而采用邏輯分析儀進行觀察,具體觀察方法見教材208頁。
本實驗中待測信號為ar和q。時鐘選擇clk;時能信號為en,高電平觸發。
三、實驗記錄
1.VHDL語言程序
2.仿真波形
3.邏輯分析儀觀察結果。
四、問題討論
1.總結宏功能模塊的應用環境,可實現哪些設計?
2.設計一個方波生成器。
第三篇:信號發生器設計(推薦)
模擬課程設計題
信號發生器設計
設計一個能夠輸出正弦波、三角波和矩形波的信號源電路,電路形式自行選擇。輸出信號的頻率可通過開關進行設定,具體要求如下:
(1)輸出信號的頻率范圍為100~800Hz,步進為100Hz。(60分)
(2)要求輸出信號無明顯失真,特別是正弦波信號。(30分)
評分標準:
(1)范圍滿足設計要求得滿分,否則酌情扣分。
(2)輸出信號無明顯失真可滿分,有明顯失真酌情扣分。
發揮部分(附加10分):
進一步擴大輸出信號范圍和減小步進頻率。
第四篇:EDA課程設計——基于DDS的正弦信號發生器設計(模版)
頂層文件 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DDS IS
PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
EN:IN STD_LOGIC;
RESET:IN STD_LOGIC;
CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY DDS;ARCHITECTURE BEHAVE OF DDS IS
COMPONENT SUM99 IS
PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
EN:IN STD_LOGIC;
RESET:IN STD_LOGIC;
CLK:IN STD_LOGIC;
OUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT SUM99;
COMPONENT REG1 IS
PORT(D:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT REG1;
COMPONENT ROM IS
PORT(CLK:IN STD_LOGIC;
ADDR:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
OUTP:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));
END COMPONENT ROM;
COMPONENT REG2 IS
PORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);
CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));
END COMPONENT REG2;
SIGNAL S1:STD_LOGIC_VECTOR(9 DOWNTO 0);
SIGNAL S2:STD_LOGIC_VECTOR(9 DOWNTO 0);
SIGNAL S3:STD_LOGIC_VECTOR(8 DOWNTO 0);
BEGIN
U0:SUM99
PORT MAP(K=>K,EN=>EN,RESET=>RESET,CLK=>CLK,OUT1=>S1);
U1:REG1 PORT MAP(D=>S1,CLK=>CLK,Q=>S1);
U2:ROM PORT MAP(ADDR=>S2,CLK=>CLK,OUTP=>S3);
U3:REG2 PORT MAP(D=>S3,CLK=>CLK,Q=>Q);END ARCHITECTURE BEHAVE;
正弦查找表 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM IS PORT(ADDR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);CLK:IN STD_LOGIC;OUTP:OUT SIGNED(7 DOWNTO 0));END ENTITY ROM;ARCHITECTURE ART OF ROM IS BEGIN PROCESS(CLK)IS BEGIN IF(CLK'EVENT AND CLK='1')THEN CASE ADDR IS WHEN “0000000”=>OUTP<=“00000000”;WHEN “0000001”=>OUTP<=“00000010”;WHEN “0000010”=>OUTP<=“00000011”;WHEN “0000011”=>OUTP<=“00000101”;WHEN “0000100”=>OUTP<=“00000110”;
WHEN “0000101”=>OUTP<=“00001000”;WHEN “0000110”=>OUTP<=“00001001”;WHEN “0000111”=>OUTP<=“00001011”;WHEN “0001000”=>OUTP<=”00001101“;WHEN ”0001001“=>OUTP<=”00001110“;WHEN ”0001010“=>OUTP<=”00010000“;WHEN ”0001011“=>OUTP<=”00010001“;WHEN ”0001100“=>OUTP<=”00010011“;WHEN ”0001101“=>OUTP<=”00010100“;WHEN ”0001110“=>OUTP<=”00010110“;WHEN ”0001111“=>OUTP<=”00010111“;WHEN ”0010000“=>OUTP<=”00011001“;WHEN ”0010001“=>OUTP<=”00011011“;
WHEN ”0010010“=>OUTP<=”00011100“;WHEN ”0010011“=>OUTP<=”00011110“;WHEN ”0010100“=>OUTP<=”00011111“;WHEN ”0010101“=>OUTP<=”00100001“;WHEN ”0010110“=>OUTP<=”00100010“;WHEN ”0010111“=>OUTP<=”00100100“;WHEN ”0011000“=>OUTP<=”00100101“;WHEN ”0011001“=>OUTP<=”00100111“;
WHEN ”0011010“=>OUTP<=”00101001“;WHEN ”0011011“=>OUTP<=”00101010“;WHEN ”0011100“=>OUTP<=”00101100“;WHEN ”0011101“=>OUTP<=”00101101“;WHEN ”0011110“=>OUTP<=”00101111“;WHEN ”0011111“=>OUTP<=”00110000“;WHEN ”0100000“=>OUTP<=”00110010“;WHEN ”0100001“=>OUTP<=”00110011“;WHEN ”0100010“=>OUTP<=”00110101“;WHEN ”0100011“=>OUTP<=”00110110“;WHEN ”0100100“=>OUTP<=”00111000“;WHEN ”0100101“=>OUTP<=”00111001“;WHEN ”0100110“=>OUTP<=”00111011“;WHEN ”0100111“=>OUTP<=”00111100“;WHEN ”0101000“=>OUTP<=”00111110“;WHEN ”0101001“=>OUTP<=”00111111“;WHEN ”0101010“=>OUTP<=”01000001“;WHEN ”0101011“=>OUTP<=”01000011“;WHEN ”0101100“=>OUTP<=”01000100“;WHEN ”0101101“=>OUTP<=”01000110“;WHEN ”0101110“=>OUTP<=”01000111“;WHEN ”0101111“=>OUTP<=”01001001“;
WHEN ”0110000“=>OUTP<=”01001010“;WHEN ”0110001“=>OUTP<=”01001100“;WHEN ”0110010“=>OUTP<=”01001101“;WHEN ”0110011“=>OUTP<=”01001111“;WHEN ”0110100“=>OUTP<=”01010000“;WHEN ”0110101“=>OUTP<=”01010001“;WHEN ”0110110“=>OUTP<=”01010011“;WHEN ”0110111“=>OUTP<=”01010100“;WHEN ”0111000“=>OUTP<=”01010110“;WHEN ”0111001“=>OUTP<=”01010111“;WHEN ”0111010“=>OUTP<=”01011001“;WHEN ”0111011“=>OUTP<=”01011010“;WHEN ”0111100“=>OUTP<=”01011100“;WHEN ”0111101“=>OUTP<=”01011101“;WHEN ”0111110“=>OUTP<=”01011111“;WHEN ”0111111“=>OUTP<=”01100000“;WHEN ”1000000“=>OUTP<=”01100010“;WHEN ”1000001“=>OUTP<=”01100011“;WHEN ”1000010“=>OUTP<=”01100100“;WHEN ”1000011“=>OUTP<=”01100110“;WHEN ”1000100“=>OUTP<=”01100111“;WHEN ”1000101“=>OUTP<=”01101001“;
WHEN ”1000110“=>OUTP<=”01101010“;WHEN ”1000111“=>OUTP<=”01101100“;WHEN ”1001000“=>OUTP<=”01101101“;WHEN ”1001001“=>OUTP<=”01101110“;WHEN ”1001010“=>OUTP<=”01110000“;WHEN ”1001011“=>OUTP<=”01110001“;WHEN ”1001100“=>OUTP<=”01110011“;WHEN ”1001101“=>OUTP<=”01110100“;WHEN ”1001110“=>OUTP<=”01110101“;WHEN ”1001111“=>OUTP<=”01110111“;WHEN ”1010000“=>OUTP<=”01111000“;WHEN ”1010001“=>OUTP<=”01111010“;WHEN ”1010010“=>OUTP<=”01111011“;WHEN ”1010011“=>OUTP<=”01111100“;WHEN ”1010100“=>OUTP<=”01111110“;WHEN ”1010101“=>OUTP<=”01111111“;WHEN ”1010110“=>OUTP<=”10000000”;WHEN “1010111”=>OUTP<=“10000010”;WHEN “1011000”=>OUTP<=“10000011”;WHEN “1011001”=>OUTP<=“10000100”;WHEN “1011010”=>OUTP<=“10000110”;WHEN “1011011”=>OUTP<=“10000111”;
WHEN “1011100”=>OUTP<=“10001000”;WHEN “1011101”=>OUTP<=“10001010”;WHEN “1011110”=>OUTP<=“10001011”;WHEN “1011111”=>OUTP<=“10001100”;WHEN “1100000”=>OUTP<=“10001110”;WHEN “1100001”=>OUTP<=“10001111”;WHEN “1100010”=>OUTP<=“10010000”;WHEN “1100011”=>OUTP<=“10010010”;WHEN “1100100”=>OUTP<=“10010011”;WHEN “1100101”=>OUTP<=“10010100”;WHEN “00001100110”=>OUTP<=“10010101”;WHEN “1100111”=>OUTP<=“10010111”;WHEN “1101000”=>OUTP<=“10011000”;WHEN “1101001”=>OUTP<=“10011001”;WHEN “1101010”=>OUTP<=“10011010”;WHEN “1101011”=>OUTP<=“10011100”;WHEN “1101100”=>OUTP<=“10011101”;WHEN “1101101”=>OUTP<=“10011110”;WHEN “1101110”=>OUTP<=“10011111”;WHEN “1101111”=>OUTP<=“10100001”;WHEN “1110000”=>OUTP<=“10100010” WHEN “1110001”=>OUTP<=“10100011”;
WHEN “1110010”=>OUTP<=“10100100”;WHEN “1110011”=>OUTP<=“10100101”;WHEN “1110100”=>OUTP<=“10100111”;WHEN “1110101”=>OUTP<=“10101000”;WHEN “1110110”=>OUTP<=“10101001”;WHEN “1110111”=>OUTP<=“10101010”;WHEN “1111000”=>OUTP<=“10101011”;WHEN “1111001”=>OUTP<=“10101100”;WHEN “1111010”=>OUTP<=“10101110”;WHEN “1111011”=>OUTP<=“10101111”;WHEN “1111100”=>OUTP<=“10110000”;WHEN “1111101”=>OUTP<=“10110001”;WHEN “1111110”=>OUTP<=“10110010”;WHEN “1111111”=>OUTP<=“10110011”;WHEN OTHERS=>OUTP<=“ 00000000”;
END CASE;
END IF;END PROCESS;END ARCHITECTURE ART;
DAC 0832的VHDL程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DAC0832 IS PORT(CLK:IN STD_LOGIC;
RST:IN STD_LOGIC;
ILE:OUT STD_LOGIC;
CONT:OUT STD_LOGIC;DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY;ARCHITECTURE BEHAVE OF DAC0832 IS SIGNAL Q:INTEGER RANGE 0 TO 63;SIGNAL DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN
PROCESS(CLK)
BEGIN
IF RST='1'THEN Q<=0;ELSIF CLK'EVENT AND CLK='1'THEN
IF DATA=“11111111”THEN DATA<=“00000000”;
ELSE DATA<=DATA+1;
END IF;
ELSE Q<=Q+1;
END IF;
END PROCESS;ILE<='1';CONT<='0';DATA_OUT<=DATA;END ARCHITECTURE BEHAVE;
頻率控制字 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY REG0 IS
PORT(CLK:IN STD_LOGIC;
LOCK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG0;ARCHITECTURE ART OF REG0 IS BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
IF LOCK='1'THEN
Q<=“0000011111”;
END IF;
END IF;
END PROCESS;END ARCHITECTURE ART;
相位寄存器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG1 IS
PORT(D:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG1;ARCHITECTURE BEHAVE OF REG1 IS BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
Q<=D;
END IF;
END PROCESS;END ARCHITECTURE BEHAVE;
輸出數據寄存器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG2 IS PORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);
CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY REG2;ARCHITECTURE BEHAVE OF REG2 IS BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
Q<=D;
END IF;
END PROCESS;END ARCHITECTURE BEHAVE;
相位累加器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SUM99 IS
PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
CLK:IN STD_LOGIC;
EN:IN STD_LOGIC;
RESET:IN STD_LOGIC:
OUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY SUM99;ARCHITECTURE BEHAVE OF SUM99 IS
SIGNAL TEMP:STD_LOGIC_VECTOR(9 DOWNTO 0);BEGIN
PROCESS(CLK,EN,RESET)IS
BEGIN
IF RESET='1'THEN
TEMP<=“0000000000”;
ELSE
IF CLK'EVENT AND CLK='1'THEN
IF EN='1'THEN
TEMP<=TEMP+K;
END IF;
END IF;
END IF;
OUT1<=TEMP;
END PROCESS;END ARCHITECTURE BEHAVE;
圖1.頂層電路原理圖
圖2.dds波形仿真圖
圖3.rom波形仿真圖
圖4.相位寄存器reg1仿真波形圖
圖5.寄存器reg2的波形仿真
圖6.相位累加器仿真波形圖
圖7.優化過程及對比波形(A——H)
圖A
圖B
圖C
圖D
圖E 23
圖F
圖G
圖H
第五篇:簡易信號發生器設計
《單片機原理及應用》課程設計任務書 課程設計題目:簡易信號發生器設計
一、設計目的和要求
(一)、設計目的通過設計簡易信號發生器,完成系統設計、編碼、調試及維護工作的實踐,了解單片機應用系統的一般設計思路,熟悉和掌握硬件系統和軟件設計的一般方法。
(二)、設計要求
1.設定功能:能通過按鍵設定信號類型、頻率
2.顯示功能:通過數碼管或液晶顯示當前波形類型和頻率。
3.計數功能:能設定自動輸出多少個周期該波形后停止輸出,直到再次按下觸發按鈕
二、設計內容及步驟
1.系統分析,完成系統分析報告
2.根據的系統結構圖、課程實驗,查閱資料,確定系統各個模塊的譯碼電路和地址范圍以及其它硬件型號,詳細畫出系統硬件原理圖。
3.程序流程圖,編制程序。
4.調試修改顯示子模塊、鍵盤掃描子模塊、定時器中斷子模塊和主程序
5.編寫課程設計報告
內容包括:題目、摘要、目錄、正文、結論、致謝、參考文獻等。學生在完成上述全部工作之后,應將全部內容以先后順序寫成設計報告一份,闡述整個設計內容,要求重點突出、特色鮮明、語言簡練、文字通暢,字跡工整。報告要求在專用報告書上書寫。
6.完成課程設計報告,設計報告字數不得少于3000 字撰寫要求如下: ·設計任務
·問題定義、理論分析
·理論設計(程序功能結構、算法說明和程序框圖)
·上機調試(實驗環境、實驗說明和程序清單)
·結果分析
·心得體會
三、進度安排
按教學計劃規定,單片機原理及應用課程設計總學時為一周,其進度及時間大致分配如下:
序號 設計內容天數(約占比例)查閱資料(約占8%)確定設計思路(約占15%)畫出硬件圖、確定各個模塊的電路實現方法(約占27%)編寫程序(約占25%)調試修改各子模塊和主程序(約占15%)總結設計過程,編寫課程設計報告1(約占10%)