函数发生器设计和原理
- 格式:pdf
- 大小:634.06 KB
- 文档页数:7
实例学习Robei芯片设计系列 Copyright © Robei
十.函数发生器
1.实验目的
用verilog硬件编程语言编写函数发生器,并用Robei软件进行仿真分析。
2.实验原理
本次试验主要是针对递增函数、递减函数、三角波函数、阶梯函数、方波函数五个函数设计模块,并进行仿真实验。
时钟clk上升沿触发有效,reset低电平复位。
sel是函数选择端,当sel=0时,产生递增函数;当sel=1时,产生递减函数;当sel=2时,产生三角波函数;当sel=3时,产生阶梯函数;当sel=4时,产生方波函数。
3.实验内容
3.1函数发生器模型设计
1) 新建一个模型,名为fun,类型为module,具备3 输入1 输出,每个引脚的属性和名称如下图2-10-1所示。
图2-10-1 函数发生器的引脚属性 实例学习Robei芯片设计系列 Copyright © Robei
图2-10-2 函数发生器的界面图
2) 添加代码。点击模型下方的Code添加代码。
代码: reg sign;
reg [6:0]cnt;
always @(negedge reset or posedge clk)
begin
case(sel)
3'b000:
begin
if(!reset)
q<=0;
else if(q==8'b1111_1111)
q<=0;
else 实例学习Robei芯片设计系列 Copyright © Robei
q<=q+1;
end
3'b001:
if(!reset)
q<=0;
else if(q==8'b0000_0000)
q<=8'b1111_1111;
else
q<=q-1;
3'b010:
begin
if(!reset)
q<=0;
else //posedge clk
if(sign) // increment
begin
if(q==8'b1111_1110)
begin
q<=8'b1111_1111;
sign<=0;
end
else
begin
q<=q+1;
end 实例学习Robei芯片设计系列 Copyright © Robei
end
else //sign==0 ,decrement
begin
if(q==8'b0000_0001)
begin
q<=8'b0000_0000;
sign<=1;
end
else
begin
q<=q-1;
end
end
end
3'b011:
begin
if(!reset)
q<=0;
else //posedge clk
if (q==8'b1111_1111)
q<=8'b0000_0000;
else
q<=q+16; // the step is 16
end
实例学习Robei芯片设计系列 Copyright © Robei
3'b100:
begin
if(!reset)
q<=0; cnt<=0;
else //posedge clk
// increment
if (cnt<63)
cnt<=cnt+1;
else
begin
cnt<=0;
q<=~q; // the step is 16
end
end
default: q<=8'bx;
endcase
end
3) 保存模型(存储文件夹路径不能有空格和中文),运行并检查有无错误输出。
3.2 fun_test测试文件的设计
1)新建一个3输入1 输出的fun _test测试文件,记得将Module Type设置为 “testbench”,各个引脚配置如图2-10-3所示。
实例学习Robei芯片设计系列 Copyright © Robei
图2-10-3 fun_test的引脚属性
2) 另存为测试文件。将测试文件保存到上面创建的模型所在的文件夹下。
3) 添加模型。在Toolbox工具箱的Current栏里会出现模型,单击该模型并在 fun_test上添加,并连接引脚,如下图2-10-4所示:
图2-10-4 fun_test的界面图
4) 输入激励。点击测试模块下方的“Code”,输入激励算法。激励代码用 $finish 结束。 测试代码: always #2 clk=~clk; initial begin clk=0; reset=0; #2 sel=3'b000; #1 reset=1; #100 reset=0; #2 sel=3'b001; #1 reset=1; #100 reset=0; #2 sel=3'b010; #1 reset=1; #100 reset=0; #2 sel=3'b011; 实例学习Robei芯片设计系列 Copyright © Robei
#1 reset=1; #100 reset=0; #4 sel=3'b100; #1 reset=1; #100 reset=0; #2 sel=3'b111; #4 $finish; end
5)执行仿真并查看波形。查看输出信息。检查没有错误之后查看波形。点击右侧 Workspace 中的信号,进行添加并查看分析仿真结果。如图2-10-5所示:
图2-10-5
4.问题与思考
思考在本实验的基础上,设计可产生正弦波(sin_wave)、锯齿波(swat_wave)、矩形波(squr_wave)、三角波(trig_wave)四种信号的波形发生器,能够实现信号的转换并且频率可调;设计的频率计以1Hz为基准信号,测量的范围是1Hz—9999Hz,测量的结果以四位十进制的形式输出