FPGA实验—— 8位数码显示频率计设计.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA实验—— 8位数码显示频率计设计

哈尔滨理工大学软件学院实验报告课 程 FPGA题 目 8位数码显示频率计设计(4学时)班 级 集成12-2班专 业 集成电路设计与集成系统 学 生学 号1214020227 2014年 10 月22日实验三 8位数码显示频率计设计实验目的: 设计8位频率计,学习较复杂的数字系统的设计方法。实验原理及内容: 根据频率的定义和频率测量的基本原理。 测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作好准备。实验步骤: 1.设计生成1秒时钟信号-- CLK 2.设计测频控制信号发生器-- FTCTRL; 3.设计1秒计数值锁存器 -- REG32B; 4.设计32位二进制计数器-- COUNTER32B 5.设计十六进制7段译码器-- Decoder 6.设计生成1KHz或10KHz待测信号-- Fin 7.完成频率计设计、仿真和硬件实现。 实验程序:module frequence ( inputclk, // 50MHZ基准频率 input CLK_X, // 待测信号 input rst , output reg [31:0]freq_out //频率输出 ); reg [31:0] cnt1,num; //cnt1,分频作用,产生脉宽一秒基准时钟//num,用来计算1s内待测信号所发出的脉冲数用来计数 reg sec; //sec用来产生周期为2s,脉宽1s基准时钟 reg state; // 和sec 共同为使能信号 /**** 产生占空比为50%,周期为2s的单位脉冲sec ****/always @ (posedge clk) begin if(cnt1==50_000_000) //频,产生脉宽1s脉宽基准时钟(要基准时钟为50M) begin cnt1=0; sec=~sec; end else cnt1=cnt1+1;end/**** 统计待测信号在单位时间1s内产生的脉冲数 ****/always @ (posedge CLK_X ) begin if (!rst) begin freq_out=0; num=0; state=1; end else begin if(sec) // sec为高电平期间(1s),统计待测信号产生的脉冲数 begin num=num+1; state=0; end else // sec为低电平期间(1s),读取待测信号产生的脉冲数 begin case(state) 0: begin freq_out=num; state=1; end // 读取脉冲数(由于freq为reg型,在下一次sec低电平到来之前,会一直保持当前值不变) 1: num=0; // 将num清零,为下一个sec高电平期间脉冲数的统计做准备 // endcase end //如果待测时钟频,比1秒脉宽的基准时钟还小,才会出现一只增数字的情况,即num未来的及清零 endendendmodulemodule newclk(clk,reset,clk_out);input clk,reset;output clk_out;reg clk_out;reg[100:0] count; parameter N = 5000; //分频产生1K HZ脉的时钟always @ (posedge clk) if(!reset) begin count = 1b0; clk_out = 1b0; end else if ( count N/2-1) begin count = count + 1b1; end else begin count = 1b0; clk_out = ~clk_out; end endmodulemodule shili(output reg[6:0]h1, input [3:0]c, input clk ); always@(c) begincase(c[3:0]) 4b0000:h1=b1000000;4b0001:h1=b1111001;4b0010:h1=b0100100;4b0011:h1=b0110000;4b0100:h1=b0011001;4b0101:h1=b0010010;4b0110:h1=b0000010;4b011

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档