欢迎来到天天文库
浏览记录
ID:35247535
大小:151.30 KB
页数:8页
时间:2019-03-22
《刘敦峰fpga专周报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、大规模集成电路专周报告班级:11612姓名:刘敦峰学号:44数字频率计的设计1.1实验目的:1.1.1设计一个计数范在围0~1MHz的数字频率计。1.2频率测量的原理1.2.1测量被测信号在单位时间内的脉冲计数个数,数学表达式为F=N/t,其中:F为被测信号频率N为脉冲个数T为单位时间由公式可知,当t=1s时,待测信号的计数值,即为它的频率。1.2.2测量方法直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数计数。直接法结构框图为:被测信号测量结果计数放大整形标准时钟分频图1.2.1直接测量法的结构框图1.3数字频率计系
2、统模块划分结构数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在八个数码管上。首先将系统分成四个模块来分别设计仿真。以下是本设计的顶层模块框图:图3.1模块化划分后的结构●锁相环模块clk_100:调用内部的PLL模块,将输入的50MHz系统时钟倍频到100MHz。●1秒基准时钟产生模块:用100MHz的系统时钟,通过计数产生1S的门限信号。●十进制计数模块cnt10:对输入的待测信号进行十进制计数。●数码管驱动模块scsn_led:将待测信号的频率值,经过本模块译码,送数
3、码管显示。1.顶层模块。2.锁相环模块clk_100。该模块主要完成对系统的50MHz的时钟进行倍频到100MHz。通过调用IPCore的PLL模块实现。该模块定义输入端口如下:●inclk0:输入50MHz的系统时钟信号。●c0::100MHz时钟信号输出。3.1秒基准时钟产生模块。本模块主要对100MHz的时钟进行分频产生1HZ的频率。及1S时钟。用于对待测时钟的门限计数。本模块写在顶层模块中。4.十进制计数模块cnt10。本模块是一个带进位输入输出的十进制计数模块。完成对待测信号在1S内的计数。其计数结果即为待测信号频率值。该模块定义输入端口如
4、下:●clock:输入的待测信号。●rst:高电平复位端。●cin:进位输入端。●cout:进位输出端。●dout:计数结果。5.数码管驱动模块scsn_led。该模块将计数值送至数码管显示,由1khz的时钟驱动。该模块定义输入端口如下:●clk_1k:1khz的动态扫描时钟信号。●rstn:低电平复位端。●d:数据输入端●dig:数码管段选●seg:数码管位选6.仿真测试波形如下图:当测试信号为1MHz时:当测试信号为10MHz时:附:设计模块Verilog HDL源程序/**************************************
5、**********10进制计数器模块************************************************/modulecnt10(clock,rst,cin,cout,dout);inputclock;//计数时钟inputcin;//进位输入inputrst;//复位信号outputcout;//进位输出output[3:0]dout;//计数输出reg[3:0]counter;assigndout=counter;assigncout=cin&&(counter>=4'd9);//进位输出always@(posedg
6、eclockorposedgerst)beginif(rst)counter<=4'd0;elseif(cin)beginif(cout)counter<=4'd0;elsecounter<=counter+1'b1;endendendmodulemodulefreqtest(clock,rstn,freq_input,dig,seg,text_clk);inputclock;//系统时钟50MHz输入inputrstn;//系统复位:低有效inputfreq_input;//被测试信号输入output[7:0]dig;//数码管选择输出引脚outp
7、ut[7:0]seg;//数码管段输出引脚outputtext_clk;//功能测试时钟5MHzregrst;//内部复位信号reg[26:0]counter;//时钟分频计数器reg[31:0]freq_result;//频率测量结果寄存器wire[31:0]pre_freq;//脉冲计数寄存器wiredivide_clk;//1Hz闸门信号wireclk_scan;//数码管扫描显示时钟wirecout1,cout2,cout3,cout4,cout5,cout6,cout7;wireclk_100;//100MHzassignclk_scan=
8、counter[15];//数码管动态扫描时钟1KHz/**************************
此文档下载收益归作者所有