基于verilog语言的数字频率计设计

2020-02-21 16:07

实验五 数字频率计设计

一、实验目的

1、掌握简单的时序控制电路设计方法;

2、进一步掌握复杂数字电路设计中的层次设计方法; 3、掌握数字频率计的原理与设计方法;

二、硬件、软件要求

计算机、EDA实验箱、MAX+plus II软件,下载电缆

三、实验内容及实验原理 1、数字频率计原理:

1)系统组成框图如图1.5.1所示:

8位七段数码管模块 clkenclken a~g clr clr 测频时八位十数据 动态扫描 序控制 寄存器 显示电路 进制计sel2 数器 sel1 lock sel0 lock clk clk

800Hz时钟输入 分频器

8Hz时钟输入 fx被测信号输入

图1.5.1 频率计组成框图

其中,8位七段数码管模块为实验箱上电路模块,电路中有3-8译码器,故位选信号为3位二进制顺序编码;动态扫描显示电路可利用实验三的设计文件;数据寄存器是由32个D触发器构成,每四个为一组,每组保存一个BCD码,其时钟信号由测频时序控制模块提供,在本实验中需自行设计;八位十进制计数器模块可利用实验四的设计文件;测频时序控制模块在本实验中需要自行设计;分频器是将输入的800Hz显示扫描时钟进行分频得到所需的8Hz时钟,并接至测频时序控制模块,本实验中需自行设计。 2)测频时序控制模块原理:

该模块为频率计控制电路的核心,完成各模块的协调工作,按照时钟节拍完成测频功能。其原理图如图1.5.2所示:

图1.5.2 测频时序控制逻辑电路图

其仿真波形如图1.5.3所示:

图1.5.3 测频时序控制仿真波形

2、设计要求:

1)采用原理图或Verilog语言完成各模块的设计。对本次实验所设计的测频时序控制模块、数据寄存器模块、时钟分频模块进行时序仿真,记录设计文件和仿真波形。

2)频率计顶层文件采用原理图设计,将各功能模块进行连接,并对整个频率计顶层设计进行仿真,最后下载至实验箱,完成实际信号的频率测量,记录顶层文件和仿真结果。 四、回答问题

1、简述测频时序控制电路中各元件的作用和该模块的工作原理; 2、分析该频率计的测量数据周期;

3、提出设计方案,说明如何缩短无用的延时时间?

4、根据本实验的基本原理,试分析如何设计完成信号周期的测量?

(我叫尉世乾,下面是我编写的程序,各个程序都是以.V格式存储,用Quartus II 7.2 (32-Bit)编译,大家既然来看这个东西,应该都清楚是怎么回事儿。至于程序的解释,我建议大家先看一下吧,最近忙着考试,写程序的时候也没有加注释。)

/*************************总程序*********************/ module plj(clk1,fx,dataout,sel); input clk1,fx;

output[6:0]dataout; output[2:0]sel;

wire clk2,clk3,lock,clr,clken; wire[3:0]

dataout1,dataout2,dataout3,dataout4,dataout5,dataout6,dataout7,d

ataout8;

wire[3:0]

dataout11,dataout12,dataout13,dataout14,dataout15,dataout16,dat

aout17,dataout18;

fenpin1 m1(clk1,clk2); fenpin2 m2(clk2,clk3);

pltj m3(clk3,clken,clr,lock); bwjsq m4

(fx,clr,clken,dataout1,dataout2,dataout3,dataout4,dataout5,dataout6

,dataout7,dataout8,); lock m5

(lock,dataout1,dataout2,dataout3,dataout4,dataout5,dataout6,datao

ut7,dataout8,dataout11,dataout12,dataout13,dataout14,dataout15,

dataout16,dataout17,dataout18); dtsm m6

(clk2,dataout11,dataout12,dataout13,dataout14,dataout15,dataout1

6,dataout17,dataout18,sel,dataout); endmodule

/***********************从50MHZ里分出

800HZ************************************/ module fenpin1(clk1,clk2); input clk1; output clk2; reg clk2;

reg[14:0]count;

always@(posedge clk1) begin if(count==15'd31249) begin count<=15'd0; clk2<=~clk2; end else count<=count+1'd1; end

endmodule

/****************将八百HZ分出8hz****************************/ module fenpin2(clk1,clk2); input clk1; output clk2; reg clk2;

reg[5:0] count;

always@(posedge clk1) begin if(count==6'd49) begin count<=6'd0; clk2<=~clk2; end else count<=count+1'b1; end endmodule

/***********频率调节器(核心部件)********/ module pltj(clk,clken,clr,lock); input clk;

output clken,clr,lock; reg[2:0]count1; reg clken,clr,lock; always@(posedge clk) begin if(count1==3'd7) begin count1<=3'd0; clken=~clken; end else count1<=count1+1'd1; if(count1==0 && clken==0) lock<=1; else if(count1==4 && clken==0) clr<=1; else begin lock<=0; clr<=0; end end

endmodule

/*************一位计数器***************/ module jsq(clk,reset,clken,dataout,co); input clk,reset,clken; output[3:0] dataout; output co;

reg[3:0] dataout; reg co;

always@(posedge clk or posedge reset) begin if(reset) begin dataout<=4'd0; co<=0; end else if(clken) begin if(dataout==4'd9) begin dataout<=4'd0; co<=1; end else begin dataout<=dataout+1'b1; co<=0; end end end

endmodule

/***********************八位计数器****************************/ module bwjsq

(clk,reset,clken,dataout1,dataout2,dataout3,dataout4,dataout5,datao

ut6,dataout7,dataout8,co8); input clk,reset,clken; output co8; output[3:0]

dataout1,dataout2,dataout3,dataout4,dataout5,dataout6,dataout7,d

ataout8;


基于verilog语言的数字频率计设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:急危重症护理学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: