FPGA-测试频率实验报告

上传人:M****1 文档编号:470423038 上传时间:2022-09-11 格式:DOC 页数:9 大小:712KB
返回 下载 相关 举报
FPGA-测试频率实验报告_第1页
第1页 / 共9页
FPGA-测试频率实验报告_第2页
第2页 / 共9页
FPGA-测试频率实验报告_第3页
第3页 / 共9页
FPGA-测试频率实验报告_第4页
第4页 / 共9页
FPGA-测试频率实验报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《FPGA-测试频率实验报告》由会员分享,可在线阅读,更多相关《FPGA-测试频率实验报告(9页珍藏版)》请在金锄头文库上搜索。

1、 西 南 科 技 大 学电工学,电子技术学生实验报告课程名称 FPGA现代数字系统设计 实验名称 4位十进制频率计设计 姓 名 邓 彪 班 级 电子0902 指导老师 评 分 2012年4月10日1. 实验目的:设计4位十进制频率计,学习较复杂的数字系统设计方法。2. 实验原理: 根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这清0个信号可以由一个测频控制信号发生器产生,即图5-1中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_E

2、N能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的EN使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。3. 实验内容:1、根据例5-1(10进制计数器,用于计算分频结果,并连接数码管显示)、例5-2(测频控制器,使得频率计能自动测频

3、)、例5-3(锁存器,将频率计的每位数锁存后输出)以及4位十进制频率计的工作原理写出频率计的顶层文件(或者原理图),并给出其测频时序波形,及其分析。在测试时候添加以下两个模块: (1)DE2上有两个时钟源,分别是(50MHZ ,PIN_N2),(27MHz,PIN_D13),编写一个分频模块,分别产生测频器的clk(8Hz)和 f_in(频率任意定)时钟,用于连接在DE2上进行测试。(2)编写数码显示模块led7s,用于显示频率计数的结果显示。2、频率计设计硬件验证。编译、综合和适配频率计顶层设计文件,并编程下载进入目标器件中。4. 实验步骤:1. 构建一个工程名是我的学号f_test。2、输

4、入cnt10d的Verilog文本,将设计的Verilog程序输入,并存盘名为cnt10d.v,将波形文件存盘为cnt10d.vwf。module cnt10d(clk,rst,en,cq,cout); input clk; input rst; input en; output3:0 cq; output cout; reg3:0 cq; reg cout; always(posedge clk or posedge rst) begin if(rst) cq=4b0000; else if(en) begin if(cq9) begin cq=cq+1b1;cout=1b0; end el

5、se begin cq=4b0000; coutstart-start annlysis & elaboration对程序进行初步的分析4、对仿真工具设定为功能仿真,并将激励文件调入,提取功能仿真的网表。5、进行功能仿真和时序仿真,并对结果进行分析。 功能仿真: 时序仿真:6、仿照工程cnt10d的设计方法,再分别设计testctl、reg4、div27、decl7s和div8模块,并分别对testctl、decl7s、reg4进行功能仿真和时序仿真,对仿真结果进行分析。(程序及仿真见附录)7、频率计设计硬件验证。编译、综合和适配频率计顶层设计文件,并编程下载进入目标器件中。8、用原理图方式将

6、各模块连接起来。9、锁定引脚(附四)并进行全编译。10、如果编译没有错误,准备下载5.实验结果:连接下载后,数码管显示5885,与预期结果相同。附录:1. 测频控制器,使得频率计能自动测频module testctl(clkk,cnt_en,rst_cnt,load);input clkk; / 1HZoutput cnt_en;output rst_cnt;output load;reg div2clk;wire cnt_en;reg rst_cnt;wire load;always(posedge clkk) div2clk=div2clk; always (clkk or div2clk

7、) beginif(!clkk & !div2clk) rst_cnt=1b1;else rst_cnt=1b0;endassign load = div2clk;assign cnt_en = div2clk; endmodule仿真图:2. 锁存器,将频率计的每位数锁存后输出module reg4(clk,cq,led );input clk;input3:0 cq;output3:0 led;reg3:0 led;always(posedge clk)led=cq;endmodule仿真图:3. 七段数码管显示程序module decl7s(a,led7s );input3:0 a;ou

8、tput6:0 led7s;reg6:0 led;always(a)begincase(a)4b0000:led6:0=7b1000000;4b0001:led6:0=7b1111001;4b0010:led6:0=7b0100100;4b0011:led6:0=7b0110000;4b0100:led6:0=7b0011001;4b0101:led6:0=7b0010010;4b0110:led6:0=7b0000010;4b0111:led6:0=7b1111000;4b1000:led6:0=7b0000000;4b1001:led6:0=7b0011000;default:led6:0

9、=7b1111111;endcaseendassign led7s=led;endmodule仿真图:4. 将27MHz的时钟分频为1Hzmodulediv_27_1(clk,Q);inputclk;outputQ;regQ;reg23:0count;always (posedge clk)beginif(count=13499999)beginQ=Q;count=0;endelsecount=count+1;endendmodule5. 将50MHz的时钟分频为5885H zmodulediv_50_test(clk,Q2);inputclk;outputQ2;regQ2;reg15:0count;always (posedge clk)beginif(count=4248)beginQ2=Q2;count=0;endelsecount=count+1;endendmodule

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

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