XX大学课程设计报告设计题目:任意整数分频器的设计姓名:XX学号:XX院系:信息工程学院专业:电子信息科学与技术年级:XXXX年XX月XX日任意整数分频器时序电路设计中需要各种各样的分频器来获得不同频率的时钟,其中以整数分频器最为常见。整数分频可以简单的使用模n计数器实现,即随驱动时钟跳动n次后就输出一个进位脉冲,然后立即被清零或置位,再开始新一轮的循环的计数器。用VHDL硬件描述语言实现任意整数的分频器。本设计主要利用计数器完成题目要求。利用仿真工具Modelsim仿真及Quartus综合验证该程序的正确性。一、设计要求:1.查找相关资料理解常见的数字分频方法。2.使用Verilog或VHDL完成任意整数分频器的编码。3.在QuartusII中使用原理图或代码形式,进行分频器设计。4.在QuartusII或ModelSim中完成仿真分析。二、设计思路:任意整数分频器由两部分构成,奇数分频器和偶数分频器。其中偶数分频器由以下四部分构成:1、时钟信号2、频率字(选择为4位)3、计数器4、反相器。奇数分频器则由两个偶数分频器加一个异或门构成。根据设计要求:定义输入信号为时钟信号clk,输入频率字D,计数器为temp1,temp2,temp3,中间输出信号为division2,division4,out1,最终输出信号是FOUT,其中偶频输出信号就是out1,奇频输出信号就是division2XORdivision4。偶分频:输入一个任意偶数,每来一个上升沿,temp1加一,设定其在temp1=1时开始反转,实现高低电平的转换,即out1=notout1,当temp1等于输入D/2时,temp1又归为1,又开始了新一轮的计数,这样就完成了分频。奇分频:输入一个任意奇数D,奇分频是用两个偶分频异或完成的,因此我们使用了这样一种方法,两个偶分频周期为2D倍,一个在上升沿来到时反转电平,另一个在下降沿到来时反转电平,并且两个分频的反转时刻错开D/2。即每来一个上升沿,temp1=temp1+1,当temp1=1时,division2=notdivision2,当temp1=D时,temp1=temp1+1每来一个下降沿,temp2=temp2+1,当temp2=1+(conv_integer(D)-1)/2时,division4=notdivision4,当temp2=D时,temp2=temp2+1。这样最终两个偶分频异或的结果即为我们所要得到奇分频。三、设计VHDL文件在quartus2中新建工程,编写设计文件。此次设计有四个进程来实现,具体流程图可参考modelsim仿真的信号传输图。四、编译仿真:1、在quartus2中波形仿真:输入一个任意偶数34,得到如下波形:输入一个任意奇数11,得到如下波形:2、在modelsim中仿真:输入一个任意偶数8,可得波形:可得跟踪信号图:输入一个任意奇数11,可得波形图:可得跟踪信号图:结论:通过利用quartus2的全程编译仿真综合以及第三方工具modelsim的仿真,我们可以看到以上波形的实现,从而验证了VHDL文件的正确性。五、编译综合后可得RTL图如下:六、实验体会本次实验受益匪浅,刚刚写分频器时,用了一种很麻烦的算法,错误百出,后来在一本辅导书上发现了一种简单的奇频算法,即将两个偶频异或,后来经过几次改正,在quartus2中编译仿真顺利通过。后来在modelsim中仿真,发现又出现了错误,经过几次编译发现原来是计数器temp1,temp2,temp3的定义范围过小,改正之后,顺利通过。这次作分频器,不仅培养了我独自搜索资料解决问题的能力,也使我学会了使用modelsim,同时认识到modelsim这款仿真软件的严谨,让我明白不管是做什么,都一定要踏实认真。