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

上传人:b****0 文档编号:12810754 上传时间:2023-04-22 格式:DOCX 页数:9 大小:149.99KB
下载 相关 举报
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位数码显示频率计设计(4学时)

实验目的^

设计8位频率计,学习较复杂的数字系统的设计方法。

实验原理及内容二

根据频率的定义和频率测量的基本原理。

测定信号的频率必换有一个脉宽为1秒的输入信号脉冲计数允许

的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作好准备。

实验步骤:

i设]十生成1秒时钟信号“CLK

2•设计测频控制信号发生器一

3■设#1秒计磁值锁存器--

4•设计32位一进制计数器一彳设计十六进制7段译码器一

FTCTRL;REG32B;COUNTER32BDecoder

6■设计生成lKHz或lOKHz待测信号一Fin7•気成频率计设计、仿真和妓件实现.

频率计电路框图

 

频率计测频控制器FTCTRL测控时序图

 

实验目的:

实验原理及内容:

根据频率的定义和频率测量的基本原理。

测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计

数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,

为下一测频计数周期作好准备。

CLK

FTCTRL;

REG32B;

COUNTER32B

Decoder

实验步骤:

1•设计生成1秒时钟信号--

2•设计测频控制信号发生器--

3•设计1秒计数值锁存器--

4•设计32位二进制计数器--

5•设计十六进制7段译码器--

6•设计生成1KHz或10KHz待测信号--Fin

7•完成频率计设计、仿真和硬件实现。

实验程序:

modulefrequenee(

rst,

inputoutputreg[31:

0]freq_out//频率输出

);

reg[31:

0]cnt1,num;//cnt1,分频作用,产生脉宽一秒基准时钟//

num,用来计算1s内待测信号所发出的脉冲数用来计数

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

always@(posedgeclk)

begin

if(cnt仁=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

endendmodule

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

end

endmodule

moduleshili(outputreg[6:

0]h1,

input[3:

0]c,

inputclk

);

count<=1'b0;

clk_out<=~clk_out;

 

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

endendmodule

//H必

moduletop_sevev(output[63:

0]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的测量结果

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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