刘敦峰FPGA专周报告.docx_第1页
刘敦峰FPGA专周报告.docx_第2页
刘敦峰FPGA专周报告.docx_第3页
刘敦峰FPGA专周报告.docx_第4页
刘敦峰FPGA专周报告.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大规模集成电路专周报告 班级:11612 姓名:刘敦峰 学号:44 数字频率计的设计1.1 实验目的: 1.1.1设计一个计数范在围01MHz的数字频率计。1.2频率测量的原理 1.2.1测量被测信号在单位时间内的脉冲计数个数,数学表达式为F = N / t ,其中:F为被测信号频率N为脉冲个数T为单位时间由公式可知,当t=1s时,待测信号的计数值,即为它的频率。1.2.2测量方法直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数计数。直接法结构框图为:被测信号 测量结果计 数放大整形标准时钟分 频图1.2.1 直接测量法的结构框图1.3数字频率计系统模块划分结构数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在八个数码管上。首先将系统分成四个模块来分别设计仿真。以下是本设计的顶层模块框图:图3.1 模块化划分后的结构 锁相环模块clk_100:调用内部的PLL模块,将输入的50MHz系统时钟倍频到100MHz。 1秒基准时钟产生模块:用100MHz的系统时钟,通过计数产生1S的门限信号。 十进制计数模块cnt10:对输入的待测信号进行十进制计数。 数码管驱动模块scsn_led:将待测信号的频率值,经过本模块译码,送数码管显示。1.顶层模块。2.锁相环模块clk_100。该模块主要完成对系统的50MHz的时钟进行倍频到100MHz。通过调用IP Core的PLL模块实现。该模块定义输入端口如下: inclk0:输入50MHz的系统时钟信号。 c0::100MHz时钟信号输出。3. 1秒基准时钟产生模块。本模块主要对100MHz的时钟进行分频产生1HZ的频率。及1S时钟。用于对待测时钟的门限计数。本模块写在顶层模块中。4. 十进制计数模块cnt10。本模块是一个带进位输入输出的十进制计数模块。完成对待测信号在1S内的计数。其计数结果即为待测信号频率值。该模块定义输入端口如下: clock:输入的待测信号。 rst:高电平复位端。 cin:进位输入端。 cout:进位输出端。 dout:计数结果。 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 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 clock;/系统时钟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,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(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;endassign 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);cnt10 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);endmodule7.专周总结:通过“数字频率计的设计”,书本知识与实际的融会贯通,我学到了很多:熟悉了加法器的设计,乘法器的设计,计数器的设计,选择器的设计;专周从刚开始没头绪,到从模块设计,到程序的书写,到波形的仿真,到网表生成,到引脚的定义,基本熟悉了秒表的设计过程;从最基本的verilogHDL语言的基本要数,到行为语句的熟

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论