77范文网 - 专业文章范例文档资料分享平台

频率计实验报告 - 2010011014

来源:网络收集 时间:2019-08-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

数字逻辑与处理器基础

实验三 频率计 实验报告

实验目的:

掌握频率计的原理和设计方法。

实验工具:

1 Verilog语言 2 Quartus II 9.0 3 DE2实验板

实验设计:

1 总体思路以及模块总述

设计的基本思路是按照实验指导书上给出的原理图划分模块。

① 待测信号产生模块signalinput.v:由指导书给出,用于产生待测信号sigin; ② 1Hz时钟产生模块clk_1hz.v:通过实验板50MHz产生1Hz时钟clk_1hz;

③ 控制信号产生模块control.v:通过1Hz时钟,产生频率计所需的使能信号en,同

步清零信号reset,锁存信号la,生成一个3秒钟的频率计数周期;

④ 十分频模块div_10.v:若量程选择信号sw_2为高电平,则待测信号需进行十分频; ⑤ 计数器模块counter.v:频率计的核心部分,包括四位十进制计数器,以及对应七段

译码器的译码器。这里我把实验指导书中的译码模块整合在了里面,原因是认为在这个设计中单做一个译码模块意义不大,整合在里面翻倒方便一些; ⑥ 信号锁存模块lat.v:当锁存信号la为高电平时,锁存输出持续显示; ⑦ 顶层模块div.v:进行各分立模块的功能综合;

2 模块分述

(1) 待测信号产生模块

代码:

module signalinput(testmode,sysclk,sigin);

input [1:0] testmode;//00,01,10,11分别代表4种频率,分别为3125,6250,50,12500Hz,使用SW1~SW0来控制

input sysclk;//系统时钟50M output sigin;//输出待测信号

reg[20:0] state; reg[20:0] divide; reg sigin;

initial begin sigin=0;

state=21'b000000000000000000000; divide=21'b000000_1111_1010_0000000; end

always@(testmode) begin

case(testmode[1:0])

2'b00:divide=21'd16000; //3125Hz 2'b01:divide=21'd8000; //6250Hz 2'b10:divide=21'd1000000; //50Hz 2'b11:divide=21'd4000; //12500Hz endcase end

always@(posedge sysclk)//按divide分频 begin

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; end endmodule

可以看出大致由两部分构成:频率选择、分频。通过testmode的值先进行选择所需的频率,然后进行分频。

(2) 1Hz时钟产生模块

代码:

module clk_1hz(sysclk,clk); input sysclk; output clk; reg clk;

reg [31:0] counter;

initial begin

counter<=32'd00000000; clk<=0;

end

always@(posedge sysclk) begin

if(counter==32'd24999999) begin

clk<=~clk;

counter<=32'd00000000; end

else counter<=counter+32'd1; end

endmodule

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

(3) 控制信号产生模块

代码:

module control(clk_1hz,en,reset,la); input clk_1hz;

output en,reset,la; reg [2:0] state=3'b000; reg en; reg reset; reg la;

parameter s0=3'b000,s1=3'b001,s2=3'b010;

always@(posedge clk_1hz) begin

case(state) s0:begin en<=1; reset<=0; la<=0; state<=s1; end s1:begin en<=0;

reset<=0; la<=1; state<=s2; end s2:begin

la<=1; reset<=1; en<=0;

state<=s0; end endcase end endmodule

通过1Hz时钟产生3个控制信号,用了一个简单的状态转移,在3秒周期内,第一秒使能信号en为高电平进行计数,第二三秒锁存信号为高电平,第三秒清零。为了验证正确性,单独进行了仿真,波形图如下图

可见功能正确。

(4) 十分频模块

代码:

module div_10(sigin,sw_2,sigout,led); input sigin,sw_2; output sigout,led; reg sigout;

reg [3:0] counter;

always@(posedge sigin) begin if(sw_2) begin

if(counter==4'd4) begin sigout<=~sigout; counter<=4'd0; end

else counter<=counter+4'd1; end end

assign led=sw_2?1:0; endmodule

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

(5) 计数器模块

代码:

module counter(sigin,en,reset,clr,hex0,hex1,hex2,hex3); input sigin,en,reset,clr; reg [3:0] q0; reg [3:0] q1;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库频率计实验报告 - 2010011014在线全文阅读。

频率计实验报告 - 2010011014.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/687988.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: