毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

VHDL直接数字频率合成器DDS设计MATLAB仿真(6)

时间:2022-05-11 22:40来源:毕业论文
data2 clr result q clk 图 5。1 频率预置与调节电路示意图 下面是程序的关键部分功能的阐述: 这个程序主要用了三个过程来实现,分别为P1,P2,P3; p1:process(clk

data2

clr result q

clk

图 5。1 频率预置与调节电路示意图

    下面是程序的关键部分功能的阐述:

    这个程序主要用了三个过程来实现,分别为P1,P2,P3;

 p1:process(clk,clear,en,result)

  begin

   if(clear='1')then

     q<="00000000";

   elsif(clk'event and clk='1')then

       if(en='1')then

         q<=result;

       end if;

   end if;

  end process p1;

    P1程序部分是用于确定系统是否已清零。如果系统已清零,就把计数器置零;如果系统没有处在清零状态,那么就在时钟信号上升沿时刻,把暂存值赋值给输出。

p2: process(q,data2)

variable result9,p:unsigned(8 downto 0);

variable data1: unsigned (7 downto 0);

begin

data1:=q;

result9:=’0’data1+data2;

p:=”011111111”;

if(result9<=9)then

   result<=result((7 downto 0);

else

   result<=”00000000”;

   flag<=not flag;

end if;

end process p2;

    P2程序部分,采取了添加一个中间变量比较的方式,把中间变量和中间结果比较,这样可以防止累加过程中结果产生溢出。如果得到的数值超出范围,那么就进行清零,并把零赋值到输出端。通过这种方式,我们能够完成频率控制。

p3:process(flag)

  variable i:integer;

  begin

   if(flag'event and flag=('1'or'0'))then

     for i in 0 to 15 loop

     end loop;   

   end if; 

   if (i=16)then

      q<="00000000";

   end if; 

  end process p3;

end leijia;

    在完成程序编写并能够编译运行后,打开QUARTUS中FILES栏的CREAT SYMBOL FILES FOR CURRENT FILE 命令得到一个封装好的模块(如图5。2所示),这样这个模块就可以在BLOCK原理图中使用。文献综述

图5。2频率预置与调节电路模块

5。3相位累加器的实现

    相位累加器的VHDL语言程序如下:

  process(datapha)

  variable result9:std_logic_vector(8 downto 0);

  constant b:std_logic_vector:="011111111";

  begin

   if(clear='1')then

   output<="00000000";

   elsif(clear='0')then

     result9:='0'&input+datapha;

      if(result9>b)then

       result9:=result9-b;

       output<=result9(7 downto 0);

       else output<=result9(7 downto 0);

      end if;

   end if;

 end process;

   process(clk)

    begin

    if(clk'event and clk='1')then

     p<=output;

    end if;

   end process;

end add;

    在相位累加器中,datapha为频率控制字;result1为中间暂存变量;b为引入的比较量;clear为清零端;clk为时钟端;output为最终输出结果。给清零端赋值为1时,那么系统处于清零状态,输出为0,给清零端赋值0,不断累加频率控制字,如果产生了溢出,就减去模值。不断循环,最终能够获得稳定的输出。 VHDL直接数字频率合成器DDS设计MATLAB仿真(6):http://www.youerw.com/tongxin/lunwen_93704.html

------分隔线----------------------------
推荐内容