3.2 QuartusII的开发环境
QuartusII是Altera提供的FPGA/CPLD集成开发环境。QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MaxPlusII的更新换代产品,其界面友好,使用便捷。
QuartusII完全支持Verilog、VHDL的设计流程,其内部嵌有Verilog、VHDL逻辑综合器。QuartusII也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、DC-FPGA,并能直接调用这些工具。
同样,QuartusII具备仿真功能,同时也支持第三方的仿真软件,如ModelSim。
QuartusII编译器支持的硬件描述语言有VHDL、Verilog、SystemVerilog及AHDL,AHDL是Altera公司自己设计、订制的硬件描述语言,是一种以结构描述方式为主的硬件描述语言。
图3-2上排所示的是QuartusII编译设计主控界面,显示了QuartusII自动设计的设计流程和各主要处理环节,包括了设计输入编辑、设计分析与综合、适配、编程文件汇编、时序参数提取以及编程下载几个步骤。图3-2下排的流程框图,是和上面QuartusII设计流程相对应的EDA标准开发流程。
图3-2 QuartusII设计流程
3.3 基于FPGA信号发生器的实现
本章中需要进行的设计要求可以实现两路波形,一路正弦波,一路方波(两路波形同频)。并要求频率可调,频率步进1Hz,方波占空比可调,调整范围:1%~99%可调,步进1%。在第2章中我们已经知道了DDS的工作原理,这里就不再赘述了。正弦信号的产生还是基于DDS的基本原理,自然DDS的几个基本结构都是要具备的。
那么下面分成相位累加模块、正弦波形数据ROM、方波发生模块、波形选择模块等几个模块来介绍本章需要进行的设计要求。
3.3.1 正弦相位累加模块
相位累加器的结构如图3-3所示。它是实现DDS的核心,由一个N位字长的加法器和一个由固定时钟脉冲取样的N位相位寄存器组成。将相位寄存器的输出和外部输入的频率控制字K作为加法器的输入,在时钟脉冲到达时,相位寄存器对上一个时钟周期内相位加法器的值与频率控制字K之和进行采样,作为相位累加器在此刻时钟的输出。相位累加器输出的高M位作为波形存储器查询表的地址,从波形存储器中读出相应的幅度值送到数/模转换器。波形存储器存储的数据不同,则输出的波形不同。按照要求,可用两个波形存储器分别存储正弦波和方波的数据,这可以输出两种波形:正弦波和方波。
图3-3 相位累加器结构图
当DDS正常工作时,在标准参考频率源的控制下,相位累加器不断进行相位线性累加(每次累加值为频率控制字K),当相位累加器积满时就会产生一次溢出,从而完成一个周期性的动作,这个周期就是DDS合成信号的频率周期。
根据式(2-7)显而易见,当 =1时输出最小频率,即频率分辨率为 。式中,根据设计要求,频率步进为1Hz,即频率分辨率≤1Hz,这里取1Hz,相位累加器模块中所选用的时钟频率为8KHz,那么根据上述公式,N可选用13,易得:
满足设计要求。频率范围要求在1Hz~1KHz可调,那么频率控制字应选用10位。根据以上设计要求,采用Verilog编程可设计出相位累加器模块,具体程序如下所示:
module add_13(f8khz,sum,ina,o);
input f8khz;
input[9:0]ina;//ina是输入的频率
output sum;
output o;
reg o;
reg[12:0]sum;
reg[9:0]cnt=0;
always @(posedge f8khz)
begin
if(cnt!==ina)
begin
cnt=ina;
sum=0;
end
else
if(sum>=7999-cnt)
begin
sum=sum+cnt-7999;
end
else
begin
sum=sum+cnt;
end
if(cnt<=100 && cnt>1) 基于FPGA的信号发生器设计(5):http://www.751com.cn/tongxin/lunwen_7039.html