正弦信号发生器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正弦信号发生器设计

一:实验目的

1.进一步熟悉Quartus2的使用;

2.学会用case语句设计正弦信号;

3.掌握DAC0832的使用以及运用示波器观察波形。

二:实验原理

简易正弦信号发生器的结构由如下四部分组成:

1.‘计数器或地址信号发生器

2.正弦信号数据存储器ROM,但在本实验中,为了简便起见,我们采用case 语句直接将数据在程序中给出,而无需调用子模块ROM。并且我们选择的是128个的8位波形数据(一个正弦波形周期)。

3.VHDL顶层程序设计。

4.8位D/A(此实验器件选择DAC0832)。

与每个周期的波形数据点的个数(实地址发生器的时钟CLK的输入频率 f

验中选择了64个),以及D/A输出的频率f的关系是:f=f

/64

波形频率受以下因素制约:

1)D/A的最高工作频率

2)FPGA的工作频率

三:实验步骤

1.程序的编辑:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity sin1 is

port(rst,clk:in std_logic;

q:buffer std_logic_vector(7 downto 0) ); end;

architecture one of sin1 is

signal q1:integer range 0 to 127:=0;

begin

process(clk)

begin

if rst='0' then q<="00000000";

elsif clk'event and clk='1' then

if q1=127 then q1<=0;

else q1<=q1+1;

end if;

case q1 is

when 0=>q<="10000000";

when 1=>q<="10000110";

when 2=>q<="10001100";

when 3=>q<="10010010";

when 4=>q<="10011000";

when 5=>q<="10001110";

when 6=>q<="10100101";

when 7=>q<="10101010";

when 8=>q<="10110000";

when 9=>q<="10110110";

when 10=>q<="10111100";

when 11=>q<="11000001";

when 12=>q<="11000110";

when 13=>q<="11001011";

when 14=>q<="11010000";

when 15=>q<="11010101";

when 16=>q<="11011010";

when 17=>q<="11011110";

when 18=>q<="11100010";

when 19=>q<="11100110";

when 20=>q<="11101010";

when 21=>q<="11101101";

when 22=>q<="11110000";

when 23=>q<="11110011";

when 24=>q<="11110101";

when 25=>q<="11111000";

when 26=>q<="11111010";

when 27=>q<="11111011";

when 28=>q<="11111101";

when 29=>q<="11111110";

when 31=>q<="11111111"; when 32=>q<="11111111"; when 33=>q<="11111111"; when 34=>q<="11111110"; when 35=>q<="11111110"; when 36=>q<="11111101"; when 37=>q<="11111011"; when 38=>q<="11111010"; when 39=>q<="11111000"; when 40=>q<="11110101"; when 41=>q<="11110011"; when 42=>q<="11110000"; when 43=>q<="11101101"; when 44=>q<="11101010"; when 45=>q<="11100110"; when 46=>q<="11100010"; when 47=>q<="11011110"; when 48=>q<="11011010"; when 49=>q<="11010101"; when 50=>q<="11010000"; when 51=>q<="11001011"; when 52=>q<="11000110"; when 53=>q<="11000001"; when 54=>q<="10111100"; when 55=>q<="11010110"; when 56=>q<="10110000"; when 57=>q<="10101010"; when 58=>q<="10100101"; when 59=>q<="10011110"; when 60=>q<="10011000"; when 61=>q<="10010010"; when 62=>q<="10001100"; when 63=>q<="10000110"; when 64=>q<="01111111"; when 65=>q<="01111001"; when 66=>q<="01110011"; when 67=>q<="01101101"; when 68=>q<="01100111"; when 69=>q<="01100001"; when 70=>q<="01011010"; when 71=>q<="01010101"; when 72=>q<="01001111"; when 73=>q<="01001001";

相关文档
最新文档