码迷,mamicode.com
首页 > 其他好文 > 详细

简易信号发生器的设计

时间:2019-03-22 22:40:50      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:quartus   else   www   地址   易信   批评   mic   效果   pos   

     晚上写了一个简易的信号发生器的程序,上机验证成功,通过了 Signal Tap II验证。

     Mif 文件的数据是通过  mif_maker2010 这个软件生成的,它的使用教程通过这个链接可以找到:https://www.cnblogs.com/qidaiymm/p/6007704.html

     硬件环境为:DE1-SOC

     软件环境为:Quartus II_15.0

     可以通过四个拨码开关来进行波形及频率的切换,那个ROM-1 PORT的使用我就不介绍了

     实现的效果为:

     技术图片

    技术图片

  技术图片

代码如下:

模块1:

module control_freq(
  clk,
  rst_n,
  key_in,
  fout
);
input clk;
input rst_n;
input[1:0] key_in;
output fout;
reg[3:0] cnt;
reg clk_2,clk_4;
reg fout;
always@(posedge clk or negedge rst_n) 
  if(!rst_n)
    begin
      cnt<=4‘d0;
  clk_2<=0;
  end
  else if(cnt==4‘d1)
    begin
      cnt<=4‘d0;
  clk_2<=~clk_2;
  end
  else
    cnt<=cnt+1‘b1;
always@(posedge clk_2 or negedge rst_n)
  if(!rst_n)
    clk_4<=0;
  else
    clk_4<=~clk_4;
always@(posedge clk or negedge rst_n)
 begin
   if(!rst_n)
   fout<=0;
 else
   begin
    case(key_in)
      0:fout<=clk_2;
    1:fout<=clk_4;
    default:;
      endcase
     end
 end
 
endmodule
 
模块2:
module sw_control(
  clk,
  rst_n,
  data_out,
  sw
);
input clk;
input rst_n;
input[1:0] sw;
output[7:0] data_out;   //数据输出
reg[7:0] address;
wire[7:0] q1,q2,q3;       //地址寄存器
reg[7:0] data_out;
always@(posedge clk or negedge rst_n)
  if(!rst_n)
    address <= 8‘d0;
  else if(address==255)
    address <=8‘d0;
  else
    address <= address +1‘b1;
 
san_jiao_xing san_jiao_xing(
 .address(address),
 .clock(clk),
 .q(q1)
);
sin sin(
   .address(address),
 .clock(clk),
 .q(q2)
);
fang_bo fang_bo(
   .address(address),
 .clock(clk),
 .q(q3)  
);
always@(posedge clk or negedge rst_n)
  begin
    if(!rst_n)
      data_out<=8‘d0;
    else
      begin
        case(sw)
      0:data_out<=q1;
    1:data_out<=q2;
    2:data_out<=q3;
    default:data_out<=8‘d0;
        endcase
      end
  end
endmodule
 
//顶层模块
module AD_pulse_signal_generator(
  clk,
  rst_n,
  key_in,
  sw,
  data_out
);
input clk;
input rst_n;
input[1:0] key_in;
input[1:0] sw;
output[7:0] data_out;
control_freq u1(
  .clk(clk),
  .rst_n(rst_n),
  .key_in(key_in),
  .fout(fout)
);
sw_control u2(
  .clk(fout),
  .rst_n(rst_n),
  .data_out(data_out),
  .sw(sw)
);
endmodule
 
欢迎各位朋友批评指正~

 

简易信号发生器的设计

标签:quartus   else   www   地址   易信   批评   mic   效果   pos   

原文地址:https://www.cnblogs.com/571328401-/p/10581519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!