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

2008年F题 简易多功能计数器 - 图文(8)

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

endmodule

/*====================================================== 文件名:period_BCD.v

功能:周期/时间间隔测量模块

======================================================*/

module period_BCD(rst,clk,curr_s,mode,signal_x,signal_div,sig_sel,clr, dec11,dec10,dec9,dec8,dec7,dec6,dec5,dec4,dec3,dec2,dec1,dec0);

//if mode=1 measure the period, else (mode=0) measure the interval.

input rst;

input clr; //clear the counter number reg input clk; input mode;

input signal_x,signal_div;

//output [48:0] cnt; output [2:0] curr_s; output sig_sel;

reg signal; reg sig_sel; reg [48:0] cnt;

reg [48:0] cnt_idle; reg [48:0] cnt_hold;

reg [2:0] curr_s,ns; reg clr_BCD;

parameter idle=3'b001;// When curr_s=1, the register is

transparent(latch=1),When curr_s=counting the num_out is latched. parameter counting=3'b010; parameter hold=3'b100;

//////判断被测信号是否需要分频(sig_sel状态机)/////////// always @ (sig_sel) //when the freq is very high, sig_sel=1; begin

if(sig_sel==1)

begin

signal=signal_div; end else

signal=signal_x; end

always @ (posedge clk) begin

if(rst==0 || mode==0) sig_sel<=0; else if (cnt>=1_0000_000 || cnt_hold>=1_0000_000 || cnt_idle>=1_0000_000) sig_sel<=0;

else if (curr_s==hold && sig_sel==0 && cnt<1_0000) sig_sel<=1; else

sig_sel<=sig_sel; end

//////////////////////主状态机/////////////////////////// always @ (posedge sgnal or negedge rst) begin

if(rst==0) curr_s<=idle; else

curr_s<=ns; end

always @ (curr_s) begin

case(curr_s)

idle: begin ns=counting; clr_BCD=0;end counting: begin ns=hold; clr_BCD=1; end hold:

if(mode==1) begin ns=idle; clr_BCD=1;

end //measure the period else if(mode==0) begin ns=hold; clr_BCD=1; end

default: begin ns=idle;clr_BCD=1; end endcase end

////////对主状态机的三种状态计数(计时)///////////////// always @ (posedge clk) begin

if(curr_s==idle) begin

if(cnt_idle>=32'b11111111_11111111_11111111_11111111) cnt_idle<=0; else

cnt_idle<=cnt_idle+1; end else

cnt_idle<=0; end

always @ (posedge clk) begin

if(curr_s==hold) begin

if(cnt_hold>=32'b11111111_11111111_11111111_11111111) cnt_hold<=0; else

cnt_hold<=cnt_hold+1; end else

cnt_hold<=0; end

always @ (posedge clk or negedge rst) begin if(!rst)

begin cnt<=0; end

else if(curr_s==counting) begin

if(cnt>=32'b11111111_11111111_11111111_11111111) cnt<=0; else

cnt<=cnt+1; end

else if (curr_s==hold) cnt<=cnt;

else if (curr_s==idle) cnt<=0; else

cnt<=cnt; end

//////////////宽度为12位的 BCD计数器////////////////////////// always @ (posedge clk or negedge clr_BCD or negedge rst) begin

if(rst==0 || clr_BCD==0) d0<=0; else if(curr_s==counting) begin

if(d0>=9)

begin d0<=0; cout0<=1;end else

begin d0<=d0+1;cout0<=0;end end

else if (curr_s==hold)

begin d0<=d0; cout0<=cout0;end // else if (curr_s==idle) // begin d0<=0; cout0<=0;end else d0<=d0; end

always @ (posedge cout9 or negedge clr_BCD or negedge rst) begin

if(rst==0 || clr_BCD==0) d10<=0; else begin

if(d10>=9)

begin d10<=0; cout10<=1;end else

begin d10<=d10+1;cout10<=0;end end end

.......//限于篇幅,省略部分BCD计数器的VERILOG描述

always @ (posedge cout10 or negedge clr_BCD or negedge rst) begin

if(rst==0 || clr_BCD==0) d11<=0; else begin

if(d11>=9)

begin d11<=0; cout11<=1;end else

begin d11<=d11+1;cout11<=0;end end end

////////////////////////////////////////////////////////////// always @ (posedge clk) //BCD计数器数值锁存 begin

if(curr_s==hold && clr!=0 ) begin

dec0<=d0; dec1<=d1; dec2<=d2; dec3<=d3; dec4<=d4; dec5<=d5; dec6<=d6; dec7<=d7; dec8<=d8; dec9<=d9; dec10<=d10; dec11<=d11; end

else if(clr==0) begin dec0<=0; dec1<=0; dec2<=0; dec3<=0; dec4<=0; dec5<=0; dec6<=0; dec7<=0; dec8<=0; dec9<=0; dec10<=0; dec11<=0; end else begin

dec0<=dec0; dec1<=dec1; dec2<=dec2; dec3<=dec3;

dec4<=dec4; dec5<=dec5; dec6<=dec6; dec7<=dec7; dec8<=dec8; dec9<=dec9; dec10<=dec10; dec11<=dec11; end end

endmodule

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2008年F题 简易多功能计数器 - 图文(8)在线全文阅读。

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