刘敦峰FPGA专周报告

上传人:m**** 文档编号:508385821 上传时间:2023-04-20 格式:DOCX 页数:8 大小:132.80KB
返回 下载 相关 举报
刘敦峰FPGA专周报告_第1页
第1页 / 共8页
刘敦峰FPGA专周报告_第2页
第2页 / 共8页
刘敦峰FPGA专周报告_第3页
第3页 / 共8页
刘敦峰FPGA专周报告_第4页
第4页 / 共8页
刘敦峰FPGA专周报告_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《刘敦峰FPGA专周报告》由会员分享,可在线阅读,更多相关《刘敦峰FPGA专周报告(8页珍藏版)》请在金锄头文库上搜索。

1、大规模集成电路专周报告 班级:11612 姓名:刘敦峰 学号:44 数字频率计的设计1.1 实验目的:设计一个计数范在围01MHz的数字频率计。1.2频率测量的原理测量被测信号在单位时间内的脉冲计数个数,数学表达式为F = N / t ,其中:F为被测信号频率N为脉冲个数T为单位时间由公式可知,当t=1s时,待测信号的计数值,即为它的频率。测量方法直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数计数。直接法结构框图为:被测信号 测量结果计 数放大整形标准时钟分 频图1.2.1 直接测量法的结构框图1.3数字频率计系统模块划分结构数字频率计中的CPLD/FPGA是

2、频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在八个数码管上。首先将系统分成四个模块来分别设计仿真。以下是本设计的顶层模块框图:图3.1 模块化划分后的结构 锁相环模块clk_100:调用内部的PLL模块,将输入的50MHz系统时钟倍频到100MHz。 1秒基准时钟产生模块:用100MHz的系统时钟,通过计数产生1S的门限信号。 十进制计数模块cnt10:对输入的待测信号进行十进制计数。 数码管驱动模块scsn_led:将待测信号的频率值,经过本模块译码,送数码管显示。1.顶层模块。2.锁相环模块clk_100。该模块主要完成对系统的50MHz的时

3、钟进行倍频到100MHz。通过调用IP Core的PLL模块实现。该模块定义输入端口如下: inclk0:输入50MHz的系统时钟信号。 c0::100MHz时钟信号输出。3. 1秒基准时钟产生模块。本模块主要对100MHz的时钟进行分频产生1HZ的频率。及1S时钟。用于对待测时钟的门限计数。本模块写在顶层模块中。4. 十进制计数模块cnt10。本模块是一个带进位输入输出的十进制计数模块。完成对待测信号在1S内的计数。其计数结果即为待测信号频率值。该模块定义输入端口如下: clock:输入的待测信号。 rst:高电平复位端。 cin:进位输入端。 cout:进位输出端。 dout:计数结果。

4、5. 数码管驱动模块scsn_led。 该模块将计数值送至数码管显示,由1khz的时钟驱动 。该模块定义输入端口如下: clk_1k:1khz的动态扫描时钟信号。 rstn:低电平复位端。 d:数据输入端 dig:数码管段选 seg:数码管位选6.仿真测试波形如下图:当测试信号为1MHz时:当测试信号为10MHz时:附:设计模块VerilogHDL源程序/*10进制计数器模块*/module cnt10(clock,rst,cin,cout,dout);input clock;/计数时钟input cin;/进位输入input rst;/复位信号output cout;/进位输出output

5、3:0 dout;/计数输出reg3:0 counter;assign dout = counter;assign cout = cin & (counter = 4d9);/进位输出always (posedge clock or posedge rst)beginif(rst)counter = 4d0;else if(cin)beginif(cout)counter = 4d0;elsecounter = counter + 1b1;endendendmodulemodule freqtest(clock,rstn,freq_input,dig,seg,text_clk);input c

6、lock;/系统时钟50MHz输入inputrstn;/系统复位 :低有效input freq_input; /被测试信号输入 output7:0dig;/数码管选择输出引脚output7:0 seg;/数码管段输出引脚output text_clk; /功能测试时钟 5MHzreg rst;/内部复位信号reg 26:0 counter; /时钟分频计数器reg 31:0 freq_result; /频率测量结果寄存器wire 31:0 pre_freq; /脉冲计数寄存器wire divide_clk; /1Hz闸门信号wire clk_scan;/数码管扫描显示时钟wire cout1,

7、cout2,cout3,cout4,cout5,cout6,cout7;wire clk_100;/100MHzassign clk_scan = counter15;/数码管动态扫描时钟 1KHz/*时钟分频模块:产生1HZ的基准时钟*/always (posedge clk_100 or negedge rstn) beginif(!rstn)counter = 27d0;else if (divide_clk) counter = 27d0; else counter = 27d100000000);/*锁存测试结果模块*/always (posedge clk_100) beginif

8、(divide_clk)freq_result = pre_freq;end/*产生计数器复位信号*/always (posedge clk_100 or negedge rstn) beginif(!rstn)rst = 1b0;else if(divide_clk)rst = 1b1;elserst = 1b0;end/*功能测试信号产生模块*/reg 24:0cnt;always (posedge clk_100 or negedge rstn)beginif(!rstn)cnt = 25d0;else if(cnt=25d9)cnt = 25d0;elsecnt = cnt+1b1;e

9、ndassign text_clk = (cnt=25d4) ? 1b0 : 1b1;/*模块例化*/cnt10 u1(.clock(freq_input),.rst(rst),.cin(1b1) ,.cout(cout1),.dout(pre_freq3:0);cnt10 u2(.clock(freq_input),.rst(rst),.cin(cout1),.cout(cout2),.dout(pre_freq7:4);cnt10 u3(.clock(freq_input),.rst(rst),.cin(cout2),.cout(cout3),.dout(pre_freq11:8);cnt

10、10 u4(.clock(freq_input),.rst(rst),.cin(cout3),.cout(cout4),.dout(pre_freq15:12);cnt10 u5(.clock(freq_input),.rst(rst),.cin(cout4),.cout(cout5),.dout(pre_freq19:16);cnt10 u6(.clock(freq_input),.rst(rst),.cin(cout5),.cout(cout6),.dout(pre_freq23:20);cnt10 u7(.clock(freq_input),.rst(rst),.cin(cout6),.cout(cout7),.dout(pre_freq27:24);cnt10 u8(.clock(freq_input),.rst(rst),.cin(cout7),.cout(), .dout(pre_freq31:28);scan_led u9(.clk_1k(clk_scan),.rstn(rstn),.d(freq_result),.dig(dig),.seg(seg);clk_100 U10(.inclk0(clock),.c0(clk_100);endmodule

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号