赞
踩
1.时间之间的换算:
1s=1000ms
1ms=1000us
1us=1000ns
1ns=1000ps
1ps=1000fs
2.频率之间的换算
1Ghz=1000Mhz
1Mhz=1000Kz
1khz=1000hz
例:计算50Mhz的周期T方式如下
T=1/f=1/50Mhz=1/50*10^6= 0.00000002 s*10^9=20ns
三、简单计算周期方法
1\x(Mhz) * 1000 = y(ns)
1.Design Source
- //time_top.v
-
- module time_top(
- input clk, //定义一个时钟信号输入
- input reset, //定义个一复位按钮
- output time_en //定义一个时间输出
- );
-
- reg [15:0]cnt_num=0; //建立一个16位的计数器
-
- always @(posedge clk) begin //若在时钟的上升沿,则运行该循环
- if (reset) begin
- cnt_num<=16'd0;
- end
- else if (cnt_num==299) begin
- cnt_num<=16'd0;
- end
- else begin
- cnt_num=cnt_num+16'd1;
- end
- end
- assign time_en = (cnt_num==16'd299)?16'd1:16'd0; //cnt_num是否等于预设值,若到则赋值1,否则赋值0
-
-
- endmodule
2.simulation Sources
- //TB_time_top
-
- module TB_time_top(
-
- );
-
- reg clk1;
- reg reset1;
- wire time_en1;
-
- initial begin //初始化各个信号
- clk1=0;
- reset1=1;
- #1000;
- reset1=0;
- end
-
- always #50 clk1=~clk1; //创建一个矩形波信号
-
- time_top inst_time_top( //实例化设计文件,该处函数名必须和设计文件中的函数名相同
- .clk(clk1),
- .reset(reset1),
- .time_en(time_en1)
- );
- endmodule
最终右键设置仿真器,选择Questa
若有错误,根据错误提示进行修改,一般有提示错误,基本上为代码问题,仔细检查
右键inst,将实例化的波形图添加到波形列表中,之后点击下图红圈内的Restart将波形图进行重置
重置完成后,此时波形图为空,之后在下图命令框中输入run 10ms 让其程序跑10ms,之后查看inst_time_en中两个相邻的上升沿的波形图,若与预期一致,则说明该程序无错误,否则,查看时钟设置第模块,查找错误。
结果:两个time_en上升沿时间间隔与预期相同,此时说明结果正确
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。