课程设计报告模板(4)

2019-03-10 18:58

卢思萌 信1411011001频率计设计 第 - 16 - 页 共 46 页

4.3门控模块gate_control

门控模块实现检测外界量程的选择,并且根据量程输出控制6位BCD码十进

制计算器的计数时钟,以及在测量完一次信号频率后,计数器计数值清零。计数器的清零要与后级寄存器的锁存时刻做很好的时序配合。应该实在计数器测量完一次信号频率后,首先将数据锁存到寄存器,然后再将计数器值清零,这样可以惊醒下一次测量。

门控模块的结构框图如图4.3.1所示

图4.3.1 门控模块结构框图

根据模块实现的功能设计Verilog HDL源代码如下: module gate_control(

SW0,SW1,SW2, f1hz,f10hz,f100hz, Latch_EN, Counter_Clr, Counter_EN,

dp_s1hz,dp_s10hz,dp_s100hz

);

- 16 -

output Latch_EN; output Counter_Clr; output Counter_EN; output

dp_s1hz,dp_s10hz,dp_s100hz;

input SW0,SW1,SW2; input f1hz,f10hz,f100hz;

reg dp_s1hz,dp_s10hz,dp_s100hz; reg fref; reg wire_1; reg wire_2;

//初始化输入以及中间量 initial begin

fref <= 1'b0; wire_1 <= 1'b0; wire_2 <= 1'b0; end

//根据不同的外界量程选择,选择相应的计数基时钟

always @(SW0 or SW1 or SW2 or f1hz or f10hz or f100hz) begin

if(SW2 == 1'b1) begin

fref <= f100hz;

{dp_s1hz,dp_s10hz,dp_s100hz} <= 3'b001; end

else if(SW1 == 1'b1) begin

fref <= f10hz;

{dp_s1hz,dp_s10hz,dp_s100hz} <= 3'b010; end

else if(SW0 == 1'b1) begin

fref <= f1hz;

{dp_s1hz,dp_s10hz,dp_s100hz} <= 3'b100; end end

//根据不同的计数基时钟,提供输出相应的计数器计数值的清除脉冲与锁存器锁存脉冲

always @(posedge fref) begin

wire_1 <= ! wire_1; end

always @(negedge fref) begin

wire_2 <= wire_1; end

assign Counter_EN = wire_1; assign Latch_EN = (! Counter_EN) & wire_2;

assign Counter_Clr = (! Counter_EN) & (! Latch_EN) | (! wire_2); endmodule

卢思萌 信1411011001频率计设计 第 - 18 - 页 共 46 页

该模块定义输入端如下: ● SW0、SW1、SW2:量程选择开关 ● flhz:1Hz的标准时钟输入 ● fl0hz:10Hz的标准时钟输入 ● fl00hz:100Hz的标准时钟输入 该模块定义输入端口如下:

● Latch_EN:用来是能寄存器所存数据 ● Counter_Clr:用于计数器的清零 ● Counter_EN:用于使能计数器开始计数

● dp_s1hz:选择999999Hz量程时,用于控制显示中的小数点位置 ● dp_s10hz:选择9999.99Hz量程时,用于控制显示中的小数点位置 ● dp_s100hz:选择99.9999Hz量程时,用于控制显示中的小数点位置

在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图4.3.2所示。

图4.3.2 门控模块的仿真波形

- 18 -

卢思萌 信1411011001频率计设计 第 - 19 - 页 共 46 页

4.4分频模块fdiv

分频模块在系统全局时钟的驱动下,经过分频得到系统中所需要的多种频率成分的时钟信号。

分频模块的结构框图如图4.4.1所示。

图4.4.1 分频模块结构框图

根据模块实现的功能设计Verilog HDL源代码如下: module

fdiv(clk,f1hz,f10hz,f100hz,f1khz);

output f1hz,f10hz,f100hz,f1khz; input clk;

reg f1hz,f10hz,f100hz,f1khz; integer

cnt1=0,cnt2=0,cnt3=0,cnt4=0; always @(posedge clk) begin

//if(cnt1<9999) //实际系统分

频值

if(cnt1 < 2) //仿真时的分频值 begin

f1khz <= 1'b0;

cnt1 = cnt1 + 1;

end else begin

f1khz <= 1'b1; cnt1 = 0; end

- 19 -

卢思萌 信1411011001频率计设计 第 - 20 - 页 共 46 页

end else begin

f10hz <= 1'b1; cnt3 = 0; end

end

always @(posedge f1khz) begin

//if(cnt2<9) //实际系统分

频值

if(cnt2 < 2) //仿真时的分频值 begin

f100hz <= 1'b0; cnt2 = cnt2 + 1; end else begin

f100hz <= 1'b1; cnt2 = 0; end

end

always @(posedge f10hz) begin

//if(cnt4<9) //实际系统分

频值

if(cnt4 < 2) //仿真时的分频值 begin

f1hz <= 1'b0; cnt4 = cnt4 + 1; end else begin

f1hz <= 1'b1; cnt4 = 0; end

end

always @(posedge f100hz) begin

//if(cnt3<9) //实际系统分

频值

该模块定义输入端口如下: ● Clk:全局系统时钟信号 该模块定义输出端口如下: ● F1hz:输出1Hz的时钟信号 ● F10hz:输出1Hz的时钟信号

if(cnt3 < 2) //仿真时的分频值 begin

f10hz <= 1'b0; cnt3 = cnt3 + 1;

end endmodule

- 20 -


课程设计报告模板(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:传染病护理学复习题及答案11

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

马上注册会员

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