网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > FPGA > 正文

多功能波形发生器VHDL程序与仿真

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
p; end if;
    end if;
    end if;
    end if;
    if count1=12499999 then count1:=0;                       --调方波A的占空比
    if zu='1' then
    if z<63 then z<=z+1;
    else z<=63;
    end if;
    elsif zd='1' then
    if z>0 then z<=z-1;
    else z<=0;
    end if;
    end if;
    else count1:=count1+1;
    end if;
    if count0=3249999 then count0:=0;
    --up、down对4种波形幅度调节,u0、d0进一步对方波进行幅度调节
    if u0='1' then
    if amp0<"11111111" then amp0<=amp0+1;
    else amp0<="11111111";
    end if;
    elsif d0='1' then
    if amp0>"00000000" then amp0<=amp0-1;
    else amp0<="00000000";
    end if;
    elsif up='1' then
    if amp<"11111111" then amp<=amp+1;
    else amp<="11111111";
    end if;
    elsif down='1' then
    if amp>"00000000" then amp<=amp-1;
    else amp<="00000000";
    end if;
    end if;
    else count0:=count0+1;
    end if;
    end if;
    end if;
    end if;
    end process;
    a<=amp;                        --将幅值输出。
    cov_a:process(clk,amp,amp0)
    --主要实现各波形幅度值到BCD码的转化,由于方波和其他三种波形的幅度调节方式、精
    --度不同,因此对幅度的处理方式分两种:“sss="00010" or sw='1'”是判断输出波形是否为
    --方波(A或B),bcd00,bcd10,bcd20,bcd30是本进程的输出。
    variable count : integer range 0 to 50004225;
    variable counter : integer range 0 to 500055;
    variable count1,count0 : integer range 0 to 4999999;
    begin
    if rising_edge(clk) then
    if sss="00010" or sw='1' then count0:=0;                                   --方波
    if count1=4999999 then count1:=0; bcd0<=0; bcd1<=0; bcd2<=0; bcd3<=0;
    count:=(conv_integer(amp))*(conv_integer(amp0))*769; --幅值运算
    elsif count1=4999900 then count1:=count1+1;
    bcd00<=bcd0; bcd10<=bcd1; bcd20<=bcd2; bcd30<=bcd3;  --数据输出
    else count1:=count1+1;                         --二进制码到BCD码的数据转换
    if count>9999999 then count:=count-10000000; bcd0<=bcd0+1;
    elsif count>999999 then count:=count-1000000; bcd1<=bcd1+1;
    elsif count>99999 then count:=count-100000; bcd2<=bcd2+1;
    elsif count>9999 then count:=count-10000; bcd3<=bcd3+1;
    else null;
    end if;
    end if;
    else count1:=0;            
  • 下一篇资讯: 电子时钟VHDL程序与仿真
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师