今天在搞频率计的时候发发现一个问题:原程序如下:
module Fxprocess (Fx_count,Fs_count,Fh_count,Fx_valu,Fx_Duty);
input [31:0] Fx_count;
input [31:0] Fs_count;
input [31:0] Fh_count;
output [31:0] Fx_valu;
output [7:0] Fx_Duty;
parameter Fs = 50_000_000; //板载标准频率50MHz
reg [31:0] Fx_valu;
reg [7:0] Fx_Duty;
always @(Fx_count or Fs_count or Fh_count)
begin
Fx_valu <= Fs/Fs_count*Fx_count;
Fx_Duty <= Fh_count/Fs_count*100;
end
endmodule
1)、在之前的计数模块里面我是设计了一个
十进制计数器来计算Fs_count、Fx_count、Fh_count
假设我之前的计算模块得到的值分别是50_000_000、1000、25_000_000
经过 Fx_valu <= Fs/Fs_count*Fx_count;
Fx_Duty <= Fh_count/Fs_count*100;
计算后输出居然是都是0,真是郁闷啊。
2)、要是在之前的计数模块里面我是设计了一个
二进制计数器来计算Fs_count、Fx_count、Fh_count
经过 Fx_valu <= Fs/Fs_count*Fx_count;
Fx_Duty <= Fh_count/Fs_count*100;
计算后就可以得出正确的输出。
不知是什么原因,有知道的给我指点下!
此帖出自
小平头技术问答
一周热门 更多>