

图4 分频器流程
Fig 4 Frequency divider flow
3.1.3 仿真
模块编译成功,只能说明设计符合一定的语法规范,但其是否满足设计者的功能要求并不能保证,这需要设计者通过仿真对设计进行验证。仿真的目的就是在软件环境下,验证电路的行为和设想中的电路功能是否一致。
仿真就是对设计项目进行全面彻底的测试,以确保设计项目的功能和时序特性,以及最后的硬件器件的功能与原设计相吻合。仿真可分为功能仿真和时序仿真。功能仿真只测试设计项目的逻辑行为,而时序仿真则既测试逻辑行为,也测试实际器件在最差条件下设计项目真是运行情况。所以,我们的模块的真确性必须通过仿真的视线之后,再来判断其程序的正确性。以下图6就是分频器的仿真[11]波形图。
图5分频器仿真波形
Fig 5 Simulation waveform of the frequency divider
从波形图我们可以看出当实现本模块后,周期明显变大,从而使每一次的实现有一定的空白时间,便于我们观察,而N次分频使得时钟的周期选择可以更具灵活性[16]。
3.2 寄存器模块
本模块的主要功能是将累加器中SUMOUT输出的信号进行一次的存储,使得同步性更好,而更重要的是本模块将会为前面的累加模块提供一个反馈信号,因此此模块中的端口D的输出,也将会作为一个输入。
图6 相位寄存模块
Fig6 The phase deposit of the module
3.2.1 输入输出信号说明
根据总体框图,得到等待判别模块的输入/输出信号,对输入输出信号的详细说明如下:
输入信号说明:
CLK:给出一个冲击脉冲,当CLK=1时表示分频器启动了,将输出一个高电平进行分频,当CLKIN=0时,将输出一个低电平,分频器在等待状态。CLK采用1位2进制来表示。则用VHDL语句定义为CLK:IN SDT_LOGIC。在模块的单独模拟之中需要进行一个时钟周期的设置。而在最后的顶层模块的设计当中则会由分频器的脉冲进行输入。
C: 是一个15位的输入,它接受的是来自累加器的输入,在一个上升沿的时候将数据寄存入寄存器当中,这样保证了同步。用VHDL语句定义为C: IN STD_LOGIC_VECTOR(14 DOWNTO 0)
输出信号说明:
D:输出信号,这是一个经过了一个时钟沿后的输出,即可以保持数据的同步,又可以使信号作为一个输出。D采用15位2进制来表示,并即作为输入又作为输出,用VHDL定义为B:BUFFER OUT SDT_LOGIC_VECTOR(14 DOWNTO 0)。
3.3 累加模块
本模块是整个实验的重点,作为一个累加模块,将反馈的信号与输入信号的累加是非常重要的,它将决定整个输出信号的步长,从而决定这个波形的输出的频率。而在本模块中,累加器的加法位数一般会设计成芯片中的所存储的列表的大小,而在本实验中存储列表的大小是32K,因此这个模块的累加位数是15位,反馈这个端口(BACKSUM)的位数必须是15位,而输入暂时设计成10位[17]。
图7 相位累加器模块。
Fig7 The phase accumulator of the module.
3.3.1 输入输出信号说明
输入信号说明:
CLK:给出一个冲击脉冲,当CLK=1时表示分频器启动了,将输出一个高电平进行分频,当CLKIN=0时,将输出一个低电平,分频器在等待状态。CLK采用1位2进制来表示。则用VHDL语句定义为CLK:IN SDT_LOGIC。在模块的单独模拟之中需要进行一个时钟周期的设置。而在最后的顶层模块的设计当中则会由分频器的脉冲进行输入。
BACKSUM: 是一个15位的输入,它接受的是来自后面级联的寄存器的输入,并作为一个反馈在一个上升沿的时候将数据寄输入到累加器当中,这样保证累加器的相位在上一冲击脉冲的输入的波位置。用VHDL语句定义为BACKSUM: IN STD_LOGIC_VECTOR(14 DOWNTO 0)
FERCON: 是一个9位的输入,它接受的是来自前面级联的寄存器的输入,并作为累加器步进的步长在一个上升沿的时候将数据寄输入到累加器当中,这样保证累加器的相位在上一冲击脉冲的输入保持统一步长。用VHDL语句定义为FERCON: IN STD_LOGIC_VECTOR(9 DOWNTO 0)
RESET:作为一个重置信号主要是为了在高电平时将信号重置归零,在低电平时继续运行程序CLK采用1位2进制来表示。则用VHDL语句定义为RESET:IN SDT_LOGIC
图 8累加模块流程
Fig 8 Accumulation module flow
3.3.3 仿真
模块编译成功,只能说明设计符合一定的语法规范,但其是否满足设计者的功能要求并不能保证,这需要设计者通过仿真对设计进行验证。仿真的目的就是在软件环境下,验证电路的行为和设想中的电路功能是否一致[18]。
仿真操作前必须利用QuartusII波形编辑器建立一个矢量波形文件(.VWF)作为仿真激励。VWF文件将仿真驶入矢量和仿真输出描述称为波形的图形来实现仿真,但也可以将仿真激励矢量用文本表达,即文本方式的矢量文件(.vec)。转贴于 酷文网-论文下载中心 http://www.coolwen.net