频率计实验报告频率计实验报告xx011014Word文件下载.docx

上传人:b****0 文档编号:13889246 上传时间:2022-10-14 格式:DOCX 页数:19 大小:17.71KB
下载 相关 举报
频率计实验报告频率计实验报告xx011014Word文件下载.docx_第1页
第1页 / 共19页
频率计实验报告频率计实验报告xx011014Word文件下载.docx_第2页
第2页 / 共19页
频率计实验报告频率计实验报告xx011014Word文件下载.docx_第3页
第3页 / 共19页
频率计实验报告频率计实验报告xx011014Word文件下载.docx_第4页
第4页 / 共19页
频率计实验报告频率计实验报告xx011014Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

频率计实验报告频率计实验报告xx011014Word文件下载.docx

《频率计实验报告频率计实验报告xx011014Word文件下载.docx》由会员分享,可在线阅读,更多相关《频率计实验报告频率计实验报告xx011014Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

频率计实验报告频率计实验报告xx011014Word文件下载.docx

③控制信号产生模块control.v:

通过1Hz时钟,产生频率计所需的使能信号en,同步清零信号reset,锁存信号la,生成一个3秒钟的频率计数周期;

④十分频模块div_10.v:

若量程选择信号sw_2为高电平,则待测信号需进行十分频;

⑤计数器模块counter.v:

频率计的核心部分,包括四位十进制计数器,以及对应七段译码器的译码器。

这里我把实验指导书中的译码模块整合在了里面,原因是认为在这个设计中单做一个译码模块意义不大,整合在里面翻倒方便一些;

⑥信号锁存模块lat.v:

当锁存信号la为高电平时,锁存输出持续显示;

⑦顶层模块div.v:

进行各分立模块的功能综合;

2模块分述

(1)待测信号产生模块

代码:

modulesignalinput(testmode,sysclk,sigin);

input[1:

0]testmode;

//00,01,10,11分别代表4种频率,分别为3125,6250,50,12500Hz,使用SW1~SW0来控制

inputsysclk;

//系统时钟50M

outputsigin;

//输出待测信号

reg[20:

0]state;

0]divide;

regsigin;

initial

begin

sigin=0;

state=21"

b[***********]000;

divide=21"

b000000_1111_1010_0000000;

end

always@(testmode)

case(testmode[1:

0])

2"

b00:

divide=21"

d16000;

//3125Hz

b01:

d8000;

//6250Hz

b10:

d1000000;

//50Hz

b11:

d4000;

//12500Hz

endcase

always@(posedgesysclk)//按divide分频

if(state==0)

sigin=~sigin;

state=state+21"

b0_00__0000_0000_0000_0000_10;

if(state==divide)

state=27"

b000_0000_0000_0000_0000_0000_0000;

endmodule

可以看出大致由两部分构成:

频率选择、分频。

通过testmode的值先进行选择所需的频率,然后进行分频。

(2)1Hz时钟产生模块

moduleclk_1hz(sysclk,clk);

outputclk;

regclk;

reg[31:

0]counter;

counter

clk

always@(posedgesysclk)

if(counter==32"

d24999999)

elsecounter

把实验板上的50MHz时钟进行50M倍分频,得到1Hz时钟。

(3)控制信号产生模块

modulecontrol(clk_1hz,en,reset,la);

inputclk_1hz;

outputen,reset,la;

reg[2:

0]state=3"

b000;

regen;

regreset;

regla;

parameters0=3"

b000,s1=3"

b001,s2=3"

b010;

always@(posedgeclk_1hz)

case(state)

s0:

begin

en

reset

la

state

s1:

s2:

通过1Hz时钟产生3个控制信号,用了一个简单的状态转移,在3秒周期内,第一秒使能信号en为高电平进行计数,第二三秒锁存信号为高电平,第三秒清零。

为了验证正确性,单独进行了仿真,波形图如下图

可见功能正确。

(4)十分频模块

modulediv_10(sigin,sw_2,sigout,led);

inputsigin,sw_2;

outputsigout,led;

regsigout;

reg[3:

always@(posedgesigin)begin

if(sw_2)begin

if(counter==4"

d4)begin

sigout

assignled=sw_2?

1:

0;

当sw_2信号为高电平时,对信号进行10分频,并使led信号为1。

(5)计数器模块

modulecounter(sigin,en,reset,clr,hex0,hex1,hex2,hex3);

inputsigin,en,reset,clr;

0]q0;

0]q1;

0]q2;

0]q3;

output[6:

0]hex0;

0]hex1;

0]hex2;

0]hex3;

always@(posedgesiginorposedgeresetornegedgeclr)begin

if(reset||(!

clr))begin

q0

q1

q2

q3

elseif(en)begin

if(q0==4"

d9)begin

if(q1==4"

if(q2==4"

elseq2

elseq1

elseq0

elsebegin{q0,q1,q2,q3}

assignhex0=(q0==4"

d0)?

7"

b1000000:

(q0==4"

d1)?

b1111001:

d2)?

b0100100:

d3)?

b0110000:

d4)?

b0011001:

d5)?

b0010010:

d6)?

b0000010:

d7)?

b1111000:

d8)?

b0000000:

d9)?

b0010000:

b0;

assignhex1=(q1==4"

(q1==4"

assignhex2=(q2==4"

(q2==4"

assignhex3=(q3==4"

(q3==4"

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

当前位置:首页 > IT计算机

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

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