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

上传人:b****5 文档编号:8400728 上传时间:2023-01-31 格式:DOCX 页数:9 大小:385.50KB
下载 相关 举报
FPGA实验 8位数码显示频率计设计.docx_第1页
第1页 / 共9页
FPGA实验 8位数码显示频率计设计.docx_第2页
第2页 / 共9页
FPGA实验 8位数码显示频率计设计.docx_第3页
第3页 / 共9页
FPGA实验 8位数码显示频率计设计.docx_第4页
第4页 / 共9页
FPGA实验 8位数码显示频率计设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

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

《FPGA实验 8位数码显示频率计设计.docx》由会员分享,可在线阅读,更多相关《FPGA实验 8位数码显示频率计设计.docx(9页珍藏版)》请在冰豆网上搜索。

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

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.完成频率计设计、仿真和硬件实现。

实验程序:

modulefrequence(

inputclk,//50MHZ基准频率

inputCLK_X,//待测信号

inputrst,

outputreg[31:

0]freq_out//频率输出

);

reg[31:

0]cnt1,num;//cnt1,分频作用,产生脉宽一秒基准时钟//num,用来计算1s内待测信号所发出的脉冲数用来计数

regsec;//sec用来产生周期为2s,脉宽1s基准时钟

regstate;//和sec共同为使能信号

/****产生占空比为50%,周期为2s的单位脉冲sec****/

always@(posedgeclk)

begin

if(cnt1==50_000_000)//50000000分频,产生脉宽1s脉宽基准时钟(要基准时钟为50M)

begin

cnt1<=0;

sec<=~sec;

end

else

cnt1<=cnt1+1;

end

/****统计待测信号在单位时间1s内产生的脉冲数****/

always@(posedgeCLK_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:

beginfreq_out<=num;state<=1;end//读取脉冲数(由于freq为reg型,在下一次sec低电平到来之前,会一直保持当前值不变)

1:

num<=0;//将num清零,为下一个sec高电平期间脉冲数的统计做准备//

endcase

end//如果待测时钟频,比1秒脉宽的基准时钟还小,才会出现一只增数字的情况,即num未来的及清零

end

end

endmodule

 

modulenewclk(clk,reset,clk_out);

inputclk,reset;

outputclk_out;

regclk_out;

reg[100:

0]count;

parameterN=5000;//分频产生1KHZ脉的时钟

always@(posedgeclk)

if(!

reset)

begin

count<=1'b0;

clk_out<=1'b0;

end

else

if(count

begin

count<=count+1'b1;

end

else

begin

count<=1'b0;

clk_out<=~clk_out;

end

endmodule

 

moduleshili(outputreg[6:

0]h1,

input[3:

0]c,

inputclk

);

always@(c)

begin

case(c[3:

0])

4'b0000:

h1<='b1000000;

4'b0001:

h1<='b1111001;

4'b0010:

h1<='b0100100;

4'b0011:

h1<='b0110000;

4'b0100:

h1<='b0011001;

4'b0101:

h1<='b0010010;

4'b0110:

h1<='b0000010;

4'b0111:

h1<='b1111000;

4'b1000:

h1<='b0000000;

4'b1001:

h1<='b0010000;

4'b1010:

h1<='b0001000;

4'b1011:

h1<='b0000011;

4'b1100:

h1<='b1000110;

4'b1101:

h1<='b0100001;

4'b1110:

h1<='b0000110;

4'b1111:

h1<='b0001110;

default:

h1<='b1000000;

endcase

end

endmodule

 

moduletop_sevev(output[63:

0]H,//H必须为wire行变量

input[31:

0]freq,

inputclk

);

shiliseven_0(H[7:

0],freq[3:

0],clk);//八个七段数码管的模块的实例化

shiliseven_1(H[15:

8],freq[7:

4],clk);

shiliseven_2(H[23:

16],freq[11:

8],clk);

shiliseven_3(H[31:

24],freq[15:

12],clk);

shiliseven_4(H[39:

32],freq[19:

16],clk);

shiliseven_5(H[47:

40],freq[23:

20],clk);

shiliseven_6(H[55:

48],freq[27:

24],clk);

shiliseven_7(H[63:

56],freq[31:

28],clk);

endmodule

 

原理图:

实验结果:

1000Hz的测量结果

100000Hz的测量结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1